LyoKICogUnVzc2lhbiBMYW5ndWFnZSBTdXBwb3J0CiAqCiAqIENvcHlyaWdodCAyMDA5IFZsYWRpbWlyIFBhbmtyYXRvdgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgpMQU5HVUFHRSBMQU5HX1JVU1NJQU4sIFNVQkxBTkdfREVGQVVMVAoKSURNX0RFQlVHX1BPUFVQIE1FTlUKQkVHSU4KICAgIFBPUFVQICIiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImzvLr4OTq4CIsIElEX0RFQlVHCiAgICBFTkQKRU5ECgpJRERfQ1JBU0hfRExHIERJQUxPR0VYIDEwMCwgMTAwLCAyNzMsIDE3NQpTVFlMRSBEU19TRVRGT05UIHwgRFNfTU9EQUxGUkFNRSB8IERTX0ZJWEVEU1lTIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICLO+Ojh6uAg7/Du4/Dg7Oz7IgpGT05UIDgsICJUYWhvbWEiCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIiIsSURDX1NUQVRJQ19CRywwLDAsMjczLDUyLFdTX0JPUkRFUiwwCiAgICBMVEVYVCAgICAgICAgICAgIsIg7/Du4/Dg7OzlICVzIO7h7eDw8+bl7eAg8eXw/Ljn7eD/IO746OHq4CDoIO7t4CDk7uvm7eAg4fvy/CBcCiAgICAgICAgICAgICAgICAgICAg5+Dq8Pvy4C4gz/Do7e7x6Owg6Ofi6O3l7ej/IOfgIO3l8+Tu4fHy4u4uIiwKICAgICAgICAgICAgICAgICAgICBJRENfU1RBVElDX1RYVDEsMjcsMTAsMjI0LDMwCiAgICBMVEVYVCAgICAgICAgICAgIs746OHq4CDs7uPr4CDh+/L8IOL75+Lg7eAg7/Du4evl7O7pIOIg7/Du4/Dg7OzlIOjr6CDt5eTu8ODh7vLq7ukg4iBXaW5lLiBcCiAgICAgICAgICAgICAgICAgICAgwvsg7O7m5fLlIO/u8eXy6PL8IGh0dHA6Ly9hcHBkYi53aW5laHEub3JnIOgg7+7o8erg8vwg8e7i5fL7IO4g5+Dv8/Hq5SBcCiAgICAgICAgICAgICAgICAgICAg/fLu6SDv8O7j8ODs7PsuXG5cblwKICAgICAgICAgICAgICAgICAgICDF8evoIP3y4CDv8O7h6+Xs4CDt5SDv8Ojx8/Lx8uLz5fIg7+7kIFdpbmRvd3Mg6CDl+bgg7eUg4fvr4CDn4PDl4+jx8vDo8O7i4O3gLCBcCiAgICAgICAgICAgICAgICAgICAg4vsg7O7m5fLlIPHu7uH56PL8IO4g7eXpIO3gIGh0dHA6Ly9idWdzLndpbmVocS5vcmcuIixJRENfU1RBVElDX1RYVDIsMjcsNjAsMjI0LDEwMAogICAgREVGUFVTSEJVVFRPTiAgICLH4Orw+/L8IiwgSURPSywgMjA1LCAxNTEsIDYwLCAxNiwgV1NfVEFCU1RPUApFTkQKClNUUklOR1RBQkxFCkJFR0lOCiAgICBJRFNfQVVUT19DQVBUSU9OICAgICAizvjo4ergIFdpbmUiCiAgICBJRFNfSU5WQUxJRF9QQVJBTVMgICAiwu3z8vDl7e3o5SDu+Ojh6uggLSDv7uvz9+Xt+yDt5eLl8O375SDv4PDg7OXy8PsiCiAgICBJRFNfVU5JREVOVElGSUVEICAgICAiKO3l7u/w5eTl6+Xt7ikiCkVORAo=