LyoKICogV2luZUNmZyByZXNvdXJjZXMKICogQnVsZ2FyaWFuIExhbmd1YWdlIFN1cHBvcnQKICoKICogQ29weXJpZ2h0IDIwMDUgTWlsa28gS3JhY2hvdW5vdgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICoKICovCgpMQU5HVUFHRSBMQU5HX0JVTEdBUklBTiwgU1VCTEFOR19ERUZBVUxUCgpJRFJfV0lORUNGRyBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgICBQT1BVUCAiIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAizeDx8vDu6ergIiwgSURDX0FVRElPX0NPTkZJR1VSRQogICAgRU5ECkVORAoKSUREX0FCT1VUQ0ZHIERJQUxPR0VYIDAsIDAsIDI2MCwgMjcwClNUWUxFIFdTX0NISUxECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICBQQUNLQUdFX1NUUklORyxJRENfU1RBVElDLDExOSwxNywxMjAsOAogICAgQ09OVFJPTCAgICAgICAgIElEQl9XSU5FLElEQ19TVEFUSUMsIlN0YXRpYyIsU1NfQklUTUFQICwxNSwxNywxNTcsMTExCiAgICBMVEVYVCAgICAgICAgICAgImh0dHA6Ly93d3cud2luZWhxLm9yZy8iLElEQ19TVEFUSUMsMTE5LDMxLDEwNiw4Ci8qCiAgICBMVEVYVCAgICAgICAgICAgItLg5+gg4ejh6+ju8uXq4CDlIPHi7uHu5OXtIPHu9PLz5fAuIMzu5uXy5SDk4CD/IPDg5+/w7vHy8ODt/+Lg8uUg6C/o6+gg7/Du7OXt//LlIO/w6CDz8evu4uj/8uAg7eAgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCDv8+Hr6Orz4uDtIO7yIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiAtIOLl8PHo/yAyLjEg7eAg6+j25e3n4CDo6+ggKO/uIOLg+CDo5+Hu8CksIOru//LuIOgg5OAg5SDx6+Xk4uD54CDi5fDx6P8uIiwKKi8KICAgIExURVhUICAgICAgICAgICAiVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4iLAogICAgICAgICAgICAgICAgICAgIElEQ19TVEFUSUMsMTE5LDQ0LDEyNCw3MgpFTkQKCklERF9BUFBDRkcgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIM3g8fLw7unq4CDt4CDv8Ojr7ubl7ej/8uAgIixJRENfU1RBVElDLCA4LDQsMjQ0LDI0MAogCiAgICAvKiBGSVhNRTogTWFrZSB0aGUgZXhwbGFuYXRpb24gY29tcHJlaGVuc2libGUgKi8KICAgIExURVhUICAgICAgICAgICAiV2luZSDs7ublIOTgIOjs6PLo8OAg8ODn6+j37egg4uXw8ejoIO3gIFdpbmRvd3Mg5+Ag4vH/6u4g8ODn6+j37e4g7/Do6+7m5e3o5S4g0uDn6CDx8vDg7ej24CDlIPHi+vDn4O3gIPEg7eDx8vDu6ero8uUg4iDB6OHr6O7y5eroIOggw/Dg9Ojq4Cwg5+Ag5OAg7O7m5fLlIOTgIO/w7uzl7f/y5Swg7vHi5e0g7uH57vHo8fLl7O3o8uUsIOgg8e/l9uj06Pft6PLlIOfgIO/w6Ovu5uXt6P/y4CDt4PHy8O7p6uguIiwKICAgICAgICAgICAgICAgICAgICBJRENfU1RBVElDLDE1LDIwLDIyNyw1MAogICAgQ09OVFJPTCAgICAgICAgICJBcHBsaWNhdGlvbnMiLElEQ19BUFBfTElTVFZJRVcsIlN5c0xpc3RWaWV3MzIiLFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBMVlNfTElTVCB8IExWU19TSU5HTEVTRUwgfCBMVlNfU0hPV1NFTEFMV0FZUywKICAgICAgICAgICAgICAgICAgICAxNSw3MCwyMzAsMTEwCiAgICBQVVNIQlVUVE9OCSAgICAiJsTu4eDi/+3lIO3gIO/w6Ovu5uXt6OUuLi4iLElEQ19BUFBfQUREQVBQLCAxNSwyMDQsMTEyLDE0CiAgICBQVVNIQlVUVE9OCSAgICAiz/DlJuzg9eLg7eUg7eAg7/Do6+7m5e3o5S4uLiIsSURDX0FQUF9SRU1PVkVBUFAsIDEzMiwyMDQsMTEzLDE0CiAgICBMVEVYVCAgICAgICAgICAgIibC5fDx6P8g7eAgV2luZG93czoiLElEQ19TVEFUSUMsMTcsMjI2LDg4LDgKICAgIENPTUJPQk9YICAgICAgICBJRENfV0lOVkVSLDExMywyMjQsMTMzLDU2LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUCAgICAKRU5ECgpJRERfR1JBUEhDRkcgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICIgzeDx8vDu6ergIO3gIO/w7ufu8Pbo8uUgIixJRENfU1RBVElDLDgsNCwyNDQsODQKICAgIENPTlRST0wgICAgICLQ4Ofw5fjoIO3gIERpcmVjdFgg7/Do6+7m5e3o//LgIOTgIOfg6uv+9+Lg8iDs6Pjq4PLgIixJRENfRFhfTU9VU0VfR1JBQiwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDIwLDIzMCw4CiAgICBDT05UUk9MICAgICAiQWxsb3cgdGhlIHdpbmRvdyBtYW5hZ2VyIHRvICZkZWNvcmF0ZSB0aGUgd2luZG93cyIsSURDX0VOQUJMRV9ERUNPUkFURUQsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSwzMiwyMzAsOAogICAgQ09OVFJPTCAgICAgItPv8ODi6+Xt6OXy7iDt4CDv8O7n7vD26PLlIO7yIOzl7ejk5vrw4CDt4CDv8O7n7vD26CIsSURDX0VOQUJMRV9NQU5BR0VELCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTUsNDQsMjMwLDgKICAgIENPTlRST0wgICAgICLF7PPr6PDg6SDi6PDy8+Dr5e0g8ODh7vLl7SDv6+7yIixJRENfRU5BQkxFX0RFU0tUT1AsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICBCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDU2LDIzMCw4CiAgICBMVEVYVCAgICAgICAi0ODn7OXwIO3gIPDg4e7y7ej/IO/r7vI6IixJRENfREVTS1RPUF9TSVpFLDE1LDcwLDQ0LDgsV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICJYIixJRENfREVTS1RPUF9CWSwxMDksNzAsOCw4LFdTX0RJU0FCTEVECgkJICAgIAogICAgRURJVFRFWFQgICAgSURDX0RFU0tUT1BfV0lEVEgsNjQsNjgsNDAsMTIsRVNfQVVUT0hTQ1JPTEwgfCBFU19OVU1CRVIgfCBXU19ESVNBQkxFRAogICAgRURJVFRFWFQgICAgSURDX0RFU0tUT1BfSEVJR0hULDExNyw2OCw0MCwxMixFU19BVVRPSFNDUk9MTCB8IEVTX05VTUJFUiB8IFdTX0RJU0FCTEVECgogICAgR1JPVVBCT1ggICAgIiBEaXJlY3QzRCAiLElEQ19TVEFUSUMsOCw5NSwyNDQsNDkKICAgIExURVhUICAgICAgICLP7uTk8Prm6uAg7eAgVmVydGV4IFNoYWRlcjogIixJRENfU1RBVElDLDE1LDExMCw4MCwzMgogICAgQ09NQk9CT1ggICAgSURDX0QzRF9WU0hBREVSX01PREUsMTAwLDEwOCwxNDUsNzAsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBDT05UUk9MICAgICAi0ODn8OX46CBQaXhlbCBTaGFkZXIgKODq7iDx5SDv7uTk+vDm4CDu8iD14PDk8+Xw4CkiLElEQ19EM0RfUFNIQURFUl9NT0RFLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTUsMTI2LDIzMCwxMAoKICAgIEdST1VQQk9YICAgICIgU2NyZWVuICZSZXNvbHV0aW9uICIsSURDX1NUQVRJQyw4LDE1MSwyNDQsOTMKICAgIENPTlRST0wgICAgICIiLCBJRENfUkVTX1RSQUNLQkFSLCAibXNjdGxzX3RyYWNrYmFyMzIiLFdTX1RBQlNUT1AsMTIsMTYxLDE4NywxNQogICAgRURJVFRFWFQgICAgSURDX1JFU19EUElFRElULDIwNCwxNjEsMjMsMTMsRVNfTlVNQkVSfFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICJkcGkiLElEQ19TVEFUSUMsMjM1LDE2MywxMCw4CiAgICBMVEVYVCAgICAgICAiVGhpcyBpcyBhIHNhbXBsZSB0ZXh0IHVzaW5nIDEwIHBvaW50IFRhaG9tYSIsSURDX1JFU19GT05UX1BSRVZJRVcsMTUsMTgxLDIzMCw1NQpFTkQKCklERF9ETExDRkcgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIERMTCDn4Ozl7eggIixJRENfU1RBVElDLDgsNCwyNDQsMjQwCiAgICBMVEVYVCAgICAgICAgICAgIsLx/+rgIOTo7eDs6Pft7iDx4vrw5+Dt4CDh6OHr6O7y5ergIOzu5uUg5OAg4frk5SDu6uDn4O3gIOrg8u4g4uPw4OTl7eAgKO7x6OPz8OXt4CDu8iBXaW5lKSDo6+gg8e7h8fLi5e3gICji5+Xy4CDu8iBXaW5kb3dzIOjr6CDu8ejj8/Dl7eAg7vIg7/Do6+7m5e3o5fLuKS4iCiAgICAgICAgICAgICAgICAgICAgLElEQ19TVEFUSUMsMTYsMTYsMjIwLDMyCiAgICBMVEVYVCAgICAgICAgICAgIs3u4uAg4ejh6+ju8uX37eAg5+Ds/+3gOiIsSURDX1NUQVRJQywxNiw1OCwxMDAsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19ETExDT01CTywxNiw2OCwxNDAsMTQsQ0JTX0RST1BET1dOIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AgfCBDQlNfU09SVCB8IENCU19MT1dFUkNBU0UKICAgIFBVU0hCVVRUT04gICAgICAiJsTu4eDi6CIsSURDX0RMTFNfQURERExMLCAxNjQsNjgsODIsMTMsQlNfREVGUFVTSEJVVFRPTiAKICAgIExURVhUICAgICAgICAgICAi0fr55fHy4vPi4PnoIOfg7OXt6DoiLElEQ19TVEFUSUMsMTYsODYsMTAwLDgKICAgIExJU1RCT1ggICAgICAgICBJRENfRExMU19MSVNULDE2LDk2LDE0MCwxNDAsV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IFdTX1ZTQ1JPTEwKICAgIFBVU0hCVVRUT04gICAgICAiJtDl5ODq8ujw4OkiLElEQ19ETExTX0VESVRETEwsMTY0LDk2LDgyLDE0CiAgICBQVVNIQlVUVE9OICAgICAgIs/w5Sbs4PXt6CIsSURDX0RMTFNfUkVNT1ZFRExMLDE2NCwxMTQsODIsMTQgCkVORAoKSUREX0xPQURPUkRFUiBESUFMT0cgRElTQ0FSREFCTEUgODAsIDkwLCAxNjAsIDkyClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICLQ5eTg6vLo8ODt5SDt4CDn4Oz/7eAiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiINDl5CDt4CDn4PDl5uTg7eUgIixJRENfU1RBVElDLDgsNCwxNDQsNjYKICAgIENPTlRST0wgICAgICAgICAiJsLj8ODk5e3gIChXaW5lKSIsSURDX1JBRF9CVUlMVElOLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04gfCBXU19HUk9VUCwxNiwxNCwxMTUsMTAKICAgIENPTlRST0wgICAgICAgICAiJtHu4fHy4uXt4CAoV2luZG93cykiLElEQ19SQURfTkFUSVZFLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04sMTYsMjQsMTE1LDEwCiAgICBDT05UUk9MICAgICAgICAgIsIm4/Dg5OXt4Cwg7+7x6+Ug8e7h8fLi5e3gIixJRENfUkFEX0JVSUxUSU5fTkFUSVZFLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04sMTYsMzQsMTE1LDEwCiAgICBDT05UUk9MICAgICAgICAgItHuJuHx8uLl7eAsIO/u8evlIOLj8ODk5e3gIixJRENfUkFEX05BVElWRV9CVUlMVElOLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04sMTYsNDQsMTE1LDEwCiAgICBDT05UUk9MICAgICAgICAgIibH4OHw4O3oIixJRENfUkFEX0RJU0FCTEUsIkJ1dHRvbiIsIEJTX0FVVE9SQURJT0JVVFRPTiwxNiw1NCwxMTUsMTAKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMjgsNzQsNDUsMTQsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAizvLs5e3oIixJRENBTkNFTCw3Nyw3NCw0NSwxNCxXU19HUk9VUApFTkQKCklERF9EUklWRUNGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgz/Dl7eDx7vfi4O3lIO3gIPPx8vDu6fHy4uDy4CAiLElEQ19TVEFUSUMsOCw0LDI0NCwyNDAKICAgIENPTlRST0wgICAgICAgICAiTGlzdHZpZXciLElEQ19MSVNUX0RSSVZFUywiU3lzTGlzdFZpZXczMiIsTFZTX1JFUE9SVCB8IExWU19BVVRPQVJSQU5HRSB8IExWU19BTElHTkxFRlQgfAogICAgICAgICAgICAgICAgICAgIExWU19TSU5HTEVTRUwgfCBXU19CT1JERVIgfCBXU19UQUJTVE9QLCAxNSwxOCwyMzIsNzYKICAgIFBVU0hCVVRUT04gICAgICAiJsTu4eDi6C4uLiIsSURDX0JVVFRPTl9BREQsMTUsOTgsNDcsMTQKICAgIFBVU0hCVVRUT04gICAgICAiz/DlJuzg9e3oIixJRENfQlVUVE9OX1JFTU9WRSw2Niw5OCw0NywxNAogICAgUFVTSEJVVFRPTiAgICAgICImzvLq8OjpLi4uIixJRENfQlVUVE9OX0FVVE9ERVRFQ1QsMTk3LDk4LDQ5LDE0CgogICAgLyogZWRpdGluZyBkcml2ZSBkZXRhaWxzICovCiAgICBMVEVYVCAgICAgICAgICAgIibP+vI6IixJRENfU1RBVElDLDE1LDEyMywyMCw5ICAgIAogICAgRURJVFRFWFQgICAgICAgIElEQ19FRElUX1BBVEgsNDEsMTIwLDE2MCwxMyxFU19BVVRPSFNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIFBVU0hCVVRUT04gICAgICAiJsjn4eXw6C4uLiIsSURDX0JVVFRPTl9CUk9XU0VfUEFUSCwyMDYsMTIwLDQwLDEzCiAgICAKICAgIExURVhUICAgICAgICAgICAiJtLo7zoiLElEQ19TVEFUSUNfVFlQRSwxNSwxMzgsMjEsMTAKICAgIENPTUJPQk9YICAgICAgICBJRENfQ09NQk9fVFlQRSw0MSwxMzUsNzcsNjAsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICAKICAgIExURVhUICAgICAgICAgICAixfLo6uXyIOgg8eXw6OXtIO3u7OXwIixJRENfTEFCRUxTRVJJQUxfU1RBVElDLDE1LDE1NSw5NSwxMAogICAgCiAgICBQVVNIQlVUVE9OICAgICAgIuTu7/rr7ejy5evt6CDt4PHy8O7p6ugiLElEQ19CVVRUT05fU0hPV19ISURFX0FEVkFOQ0VELDE0NiwxMzYsMTAwLDEzCiAgICBDT05UUk9MICAgICAgICAgIs7y6vDo6SDu8iAm8/Hy8O7p8fLi7vLuOiIsSURDX1JBRElPX0FVVE9ERVRFQ1QsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT1JBRElPQlVUVE9OLDE1LDE2Niw5MywxMAogICAgRURJVFRFWFQgICAgICAgIElEQ19FRElUX0RFVklDRSwyNywxNzYsMTc0LDEzLEVTX0FVVE9IU0NST0xMCiAgICBQVVNIQlVUVE9OICAgICAgIsjnJuHl8OguLi4iLElEQ19CVVRUT05fQlJPV1NFX0RFVklDRSwyMDYsMTc2LDQwLDEzCiAgICBDT05UUk9MICAgICAgICAgIsfg5ODpICbw+vft7joiLElEQ19SQURJT19BU1NJR04sIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT1JBRElPQlVUVE9OLDE1LDE5NSw2OSwxMAoKICAgIExURVhUICAgICAgICAgICAiJsXy6Orl8joiLElEQ19TVEFUSUNfTEFCRUwsMzMsMjA4LDI5LDEyCiAgICBFRElUVEVYVCAgICAgICAgSURDX0VESVRfTEFCRUwsNjMsMjA1LDc4LDEzLEVTX0FVVE9IU0NST0xMIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICImze7s5fA6IixJRENfU1RBVElDX1NFUklBTCwzMywyMjUsMjksMTIKICAgIEVESVRURVhUICAgICAgICBJRENfRURJVF9TRVJJQUwsNjMsMjIxLDc4LDEzLEVTX0FVVE9IU0NST0xMIHwgV1NfVEFCU1RPUAoKICAgIENPTlRST0wgICAgICAgICAiz+7q4Ofi4Okg9ODp6+7i5fLlLCDn4O/u9+Lg+egg8SDy7vfq4CIsSURDX1NIT1dfRE9UX0ZJTEVTLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsOCwyNjAsMjMwLDgKRU5ECgpJRERfQVVESU9DRkcgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIMjn4e7wIO3gIOTw4Oni5fAgIixJRENfU1RBVElDLDgsNCwyNDQsMTk1CiAgICBMVEVYVCAgICAgICAgICAgIsjn4eXw5fLlIOfi8+ru4iDk8ODp4uXwIOrg8u4g8evu5ujy5SDu8uzl8urgIO3gIObl6+Dt6P8g7vIg4uDxIOTw4Oni5fAuIMzu5uUg5OAg5+Dh8ODt6PLlIOfi8+rgIOrg8u4g7eUg6Ofh5fDl8uUg7ejq4Or64iDk8ODp4uXwLiDI5+Ho8ODt5fLuIO3gIO/u4uX35SDu8iDl5OjtIOTw4Oni5fAg7eUg5SDv8OXv7vD69+jy5evt7i4gzO7m5SDk4CDt4PHy8O7o8uUg5PDg6eLl8OAg6uDy7iD58ODq7eXy5SDi+vD18yDt5ePuIPEg5OXx7ej/IOHz8u7tIO3gIOzo+Org8uAuIixJRENfU1RBVElDLDE1LDIwLDIyNyw1MAogICAgQ09OVFJPTCAgICAgICAgICLT8fLw7unx8uLgIixJRENfQVVESU9fVFJFRSwiU3lzVHJlZVZpZXczMiIsV1NfQk9SREVSIHwgV1NfVEFCU1RPUCwxNSw3MCwxNDAsMTIwCiAgICBQVVNIQlVUVE9OICAgICAgIiZUZXN0IFNvdW5kIixJRENfQVVESU9fVEVTVCwxNzAsNzAsNTksMTQKICAgIFBVU0hCVVRUT04gICAgICAiyu7t8vDu6+XtIO/g7eXrIixJRENfQVVESU9fQ09OVFJPTF9QQU5FTCwxNzAsOTAsNjksMTQKICAgIEdST1VQQk9YICAgICAgICAiIERpcmVjdFNvdW5kICIsSURDX1NUQVRJQyw4LDIwNSwyNDQsNjAKICAgIExURVhUCSAgICAi1eDw5PPl8O3uIPPx6u7w5e3o5TogIixJRENfU1RBVElDLDE1LDIxNSw5MCwxMAogICAgQ09NQk9CT1gJICAgIElEQ19EU09VTkRfSFdfQUNDRUwsMTAwLDIxMywxNTAsNzAsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIkRlZmF1bHQgJlNhbXBsZSBSYXRlOiIsSURDX1NUQVRJQywxNSwyMzIsNzAsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19EU09VTkRfUkFURVMsOTAsMjMwLDQyLDc2LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJEZWZhdWx0ICZCaXRzIFBlciBTYW1wbGU6IixJRENfU1RBVElDLDEzNywyMzIsODAsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19EU09VTkRfQklUUywyMjAsMjMwLDMwLDU2LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgQ09OVFJPTCAgICAgICAgICLR7vTy8+Xw7eAg5ezz6+D26P8iLElEQ19EU09VTkRfRFJWX0VNVUwsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSwyNTAsMjMwLDEwCkVORAoKSUREX0RFU0tUT1BfSU5URUdSQVRJT04gRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIML67fjl7SDi6OQgIixJRENfU1RBVElDLDgsNCwyNDQsMTA2CiAgICBMVEVYVCAgICAgICAgICAgItLl7OA6IixJRENfU1RBVElDLDE1LDE2LDEzMCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX1RIRU1FX1RIRU1FQ09NQk8sMTUsMjQsMTMwLDE0LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgUFVTSEJVVFRPTiAgICAgICLI7fHy4Ovo8ODpIPLl7OAuLi4iLElEQ19USEVNRV9JTlNUQUxMLDE1MiwyMyw5MywxNAogICAgTFRFWFQgICAgICAgICAgICLW4v/yOiIsSURDX1RIRU1FX0NPTE9SVEVYVCwxNSw0MCwxMTIsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19USEVNRV9DT0xPUkNPTUJPLDE1LDQ4LDExMiwxNCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAi0ODn7OXwOiIsSURDX1RIRU1FX1NJWkVURVhULDEzNSw0MCwxMTAsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19USEVNRV9TSVpFQ09NQk8sMTM1LDQ4LDExMCwxNCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiSXRlbToiLElEQ19TVEFUSUMsMTUsNjQsMTEyLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfU1lTUEFSQU1fQ09NQk8sMTUsNzQsMTEyLDEyMCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AgfCBDQlNfU09SVAogICAgTFRFWFQgICAgICAgICAgICJDb2xvcjoiLElEQ19TWVNQQVJBTV9DT0xPUl9URVhULDEzNSw2NCwyNSw4LFdTX0RJU0FCTEVECiAgICBQVVNIQlVUVE9OICAgICAgIiIsSURDX1NZU1BBUkFNX0NPTE9SLDEzNSw3NCwyNSwxMyxXU19ESVNBQkxFRCB8IEJTX09XTkVSRFJBVwogICAgTFRFWFQgICAgICAgICAgICJTaXplOiIsSURDX1NZU1BBUkFNX1NJWkVfVEVYVCwxNjYsNjQsMzAsOCxXU19ESVNBQkxFRAogICAgRURJVFRFWFQgICAgICAgIElEQ19TWVNQQVJBTV9TSVpFLDE2Niw3NCwyMywxMyxFU19BVVRPSFNDUk9MTCB8IFdTX1RBQlNUT1AgfCBXU19ESVNBQkxFRAogICAgQ09OVFJPTCAgICAgICAgICIiLElEQ19TWVNQQVJBTV9TSVpFX1VELFVQRE9XTl9DTEFTUyxVRFNfU0VUQlVERFlJTlQgfCBXU19ESVNBQkxFRCwxODcsNzQsMTUsMTMKICAgIFBVU0hCVVRUT04gICAgICAiRm9udCIsSURDX1NZU1BBUkFNX0ZPTlQsMjA4LDc0LDM3LDEzLFdTX0RJU0FCTEVECiAgICBHUk9VUEJPWCAgICAgICAgIiDP4O/q6CAiLElEQ19TVEFUSUMsOCwxMTQsMjQ0LDEwMAogICAgQ09OVFJPTCAgICAgICAgICJMaXN0dmlldyIsSURDX0xJU1RfU0ZQQVRIUywiU3lzTGlzdFZpZXczMiIsTFZTX1JFUE9SVCB8IExWU19BVVRPQVJSQU5HRSB8IExWU19BTElHTkxFRlQgfAogICAgICAgICAgICAgICAgICAgICBMVlNfU0lOR0xFU0VMIHwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCwgMTUsMTI2LDIzMCw2NAogICAgQ09OVFJPTCAgICAgICAgICLC8Prn6uAg6vrsOiIsSURDX0xJTktfU0ZQQVRILCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWHxXU19UQUJTVE9QfFdTX0RJU0FCTEVELDE1LDE5NSw1NSwxMwogICAgRURJVFRFWFQgICAgICAgICBJRENfRURJVF9TRlBBVEgsNzAsMTk1LDE0MCwxMyxFU19BVVRPSFNDUk9MTHxXU19UQUJTVE9QfFdTX0RJU0FCTEVECiAgICBQVVNIQlVUVE9OICAgICAgIsjn4e7wIixJRENfQlJPV1NFX1NGUEFUSCwyMTUsMTk1LDMwLDEzLFdTX0RJU0FCTEVECkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19UQUJfQVBQTElDQVRJT05TICAgICLP8Ojr7ubl7ej/IgogICAgSURTX1RBQl9ETExTICAgICAgICAgICAgIsHo4evo7vLl6ugiCiAgICBJRFNfVEFCX0RSSVZFUyAgICAgICAgICAi0/Hy8O7p8fLi4CIKICAgIElEU19DSE9PU0VfUEFUSCAgICAgICAgICLI5+Hl8OXy5SBVbml4IOTo8OXq8u7w6P8iCiAgICBJRFNfSElERV9BRFZBTkNFRCAgICAgICAi0erw6Okg5O7v+uvt6PLl6+3o8uUiCiAgICBJRFNfU0hPV19BRFZBTkNFRCAgICAgICAiz+7q4OboIOTu7/rr7ejy5evt6PLlIgogICAgSURTX05PVEhFTUUgICAgICAgICAgICAgIijh5ecg8uXs4CkiCiAgICBJRFNfVEFCX0dSQVBISUNTICAgICAgICAiw/Dg9Ojq4CIKICAgIElEU19UQUJfREVTS1RPUF9JTlRFR1JBVElPTiAiyO3y5ePw4Pbo/yIKICAgIElEU19UQUJfQVVESU8gICAgICAgICAgICLH4vPqIgogICAgSURTX1RBQl9BQk9VVCAgICAgICAgICAgIs7y7e7x7e4iCiAgICBJRFNfV0lORUNGR19USVRMRSAgICAgICAizeDx8vDu6eroIO3gIFdpbmUiCiAgICBJRFNfV0lORUNGR19USVRMRV9BUFAgICAizeDx8vDu6eroIO3gIFdpbmUg5+AgJXMiCiAgICBJRFNfVEhFTUVGSUxFICAgICAgICAgICAi1ODp6+7i5SDxIPLl7OgiCiAgICBJRFNfVEhFTUVGSUxFX1NFTEVDVCAgICAiyOfh5fDl8uUg9ODp6yDxIPLl7OAiCiAgICBJRFNfQVVESU9fTUlTU0lORyAgICAgICAizf/s4CDt4PHy8O7l7SDn4vPq7uIg5PDg6eLl8C5cblxux+Ag4uDxIOHl+OUg6Ofh8ODtIOTw4Oni5fAg7+4g7+7k8ODn4ejw4O3lLlxuzO7m5SDk4CDj7iDo5+/u6+fi4PLlIOjr6CDk4CDo5+Hl8OXy5SDk8PPjLlxuXG7S8P/h4uAg5OAg+fDg6u3l8uUg7eAgz+7y4vrw5OgsIOfgIOTgIOLr5eflIOIg8ejr4CDo5+Hu8OAuIgogICAgSURTX1NIRUxMX0ZPTERFUiAgICAgICAgIs/g7+rgIgogICAgSURTX0xJTktTX1RPICAgICAgICAgICAgIsLw+ufq4CDq+uwiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19ETExfV0FSTklORyAgICAgICAgICLP8O7s/+3g8uAg7eAg8OXk4CDt4CDn4PDl5uTg7eUg7eUg5SDv8OXv7vD69+jy5evt4C4g0ejj8/Dt6CDr6CDx8uUsIPflIOjx6uDy5SDk4CDt4O/w4OLo8uUg8u7i4D8iCiAgICBJRFNfRExMX1dBUk5JTkdfQ0FQVElPTiAiwu3o7ODt6OU6IPHo8fLl7O3gIOHo4evo7vLl6uAiCiAgICBJRFNfRExMX05BVElWRSAgICAgICAgICAi8e7h8fLi5e3gIgogICAgSURTX0RMTF9CVUlMVElOICAgICAgICAgIuLj8ODk5e3gIgogICAgSURTX0RMTF9OQVRJVkVfQlVJTFRJTiAgIvHu4fHy4uXt4Cwg4uPw4OTl7eAiCiAgICBJRFNfRExMX0JVSUxUSU5fTkFUSVZFICAi4uPw4OTl7eAsIPHu4fHy4uXt4CIKICAgIElEU19ETExfRElTQUJMRUQgICAgICAgICLn4OHw4O3l7eAiCiAgICBJRFNfREVGQVVMVF9TRVRUSU5HUyAgICAiRGVmYXVsdCBTZXR0aW5ncyIKICAgIElEU19FWEVDVVRBQkxFX0ZJTFRFUiAgICJXaW5lIFByb2dyYW1zICgqLmV4ZSwqLmV4ZS5zbylcMCouZXhlOyouZXhlLnNvXDAiCiAgICBJRFNfVVNFX0dMT0JBTF9TRVRUSU5HUyAiVXNlIGdsb2JhbCBzZXR0aW5ncyIKICAgIElEU19TRUxFQ1RfRVhFQ1VUQUJMRSAgICJTZWxlY3QgYW4gZXhlY3V0YWJsZSBmaWxlIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfU0hBREVSX01PREVfSEFSRFdBUkUgICAgIkhhcmR3YXJlIgogICAgSURTX1NIQURFUl9NT0RFX05PTkUgICAgICAgICJOb25lIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfRFJJVkVfVU5LTk9XTiAgICAgICAgICAgIkF1dG9kZXRlY3QiCiAgICBJRFNfRFJJVkVfRklYRUQgICAgICAgICAgICAgIkxvY2FsIGhhcmQgZGlzayIKICAgIElEU19EUklWRV9SRU1PVEUgICAgICAgICAgICAiTmV0d29yayBzaGFyZSIKICAgIElEU19EUklWRV9SRU1PVkFCTEUgICAgICAgICAiRmxvcHB5IGRpc2siCiAgICBJRFNfRFJJVkVfQ0RST00gICAgICAgICAgICAgIkNELVJPTSIKICAgIElEU19EUklWRV9MRVRURVJTX0VYQ0VFREVEICAiWW91IGNhbm5vdCBhZGQgYW55IG1vcmUgZHJpdmVzLlxuXG5FYWNoIGRyaXZlIG11c3QgaGF2ZSBhIGxldHRlciwgZnJvbSBBIHRvIFosIHNvIHlvdSBjYW5ub3QgaGF2ZSBtb3JlIHRoYW4gMjYiCiAgICBJRFNfU1lTVEVNX0RSSVZFX0xBQkVMICAgICAgIlN5c3RlbSBkcml2ZSIKICAgIElEU19DT05GSVJNX0RFTEVURV9DICAgICAgICAiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSBkcml2ZSBDP1xuXG5Nb3N0IFdpbmRvd3MgYXBwbGljYXRpb25zIGV4cGVjdCBkcml2ZSBDIHRvIGV4aXN0LCBhbmQgd2lsbCBkaWUgbWVzc2lseSBpZiBpdCBkb2Vzbid0LiBJZiB5b3UgcHJvY2VlZCByZW1lbWJlciB0byByZWNyZWF0ZSBpdCEiCiAgICBJRFNfQ09MX0RSSVZFTEVUVEVSICAgICAgICAgIkxldHRlciIKICAgIElEU19DT0xfRFJJVkVNQVBQSU5HICAgICAgICAiRHJpdmUgTWFwcGluZyIKICAgIElEU19OT19EUklWRV9DICAgICAgICAgICAgICAiWW91IGRvbid0IGhhdmUgYSBkcml2ZSBDLiBUaGlzIGlzIG5vdCBzbyBncmVhdC5cblxuUmVtZW1iZXIgdG8gY2xpY2sgJ0FkZCcgaW4gdGhlIERyaXZlcyB0YWIgdG8gY3JlYXRlIG9uZSFcbiIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0FDQ0VMX0ZVTEwgICAgICAgICAgICAgICJGdWxsIgogICAgSURTX0FDQ0VMX1NUQU5EQVJEICAgICAgICAgICJTdGFuZGFyZCIKICAgIElEU19BQ0NFTF9CQVNJQyAgICAgICAgICAgICAiQmFzaWMiCiAgICBJRFNfQUNDRUxfRU1VTEFUSU9OICAgICAgICAgIkVtdWxhdGlvbiIKICAgIElEU19EUklWRVJfQUxTQSAgICAgICAgICAgICAiQUxTQSBEcml2ZXIiCiAgICBJRFNfRFJJVkVSX0VTT1VORCAgICAgICAgICAgIkVzb3VuRCBEcml2ZXIiCiAgICBJRFNfRFJJVkVSX09TUyAgICAgICAgICAgICAgIk9TUyBEcml2ZXIiCiAgICBJRFNfRFJJVkVSX0pBQ0sgICAgICAgICAgICAgIkpBQ0sgRHJpdmVyIgogICAgSURTX0RSSVZFUl9OQVMgICAgICAgICAgICAgICJOQVMgRHJpdmVyIgogICAgSURTX0RSSVZFUl9BVURJT0lPICAgICAgICAgICJBdWRpbyBJTyAoU29sYXJpcykgRHJpdmVyIgogICAgSURTX0RSSVZFUl9DT1JFQVVESU8gICAgICAgICJDb3JlQXVkaW8gRHJpdmVyIgogICAgSURTX09QRU5fRFJJVkVSX0VSUk9SICAgICAgICJDb3VsZG4ndCBvcGVuICVzISIKICAgIElEU19TT1VORERSSVZFUlMgICAgICAgICAgICAiU291bmQgRHJpdmVycyIKICAgIElEU19ERVZJQ0VTX1dBVkVPVVQgICAgICAgICAiV2F2ZSBPdXQgRGV2aWNlcyIKICAgIElEU19ERVZJQ0VTX1dBVkVJTiAgICAgICAgICAiV2F2ZSBJbiBEZXZpY2VzIgogICAgSURTX0RFVklDRVNfTUlESU9VVCAgICAgICAgICJNSURJIE91dCBEZXZpY2VzIgogICAgSURTX0RFVklDRVNfTUlESUlOICAgICAgICAgICJNSURJIEluIERldmljZXMiCiAgICBJRFNfREVWSUNFU19BVVggICAgICAgICAgICAgIkF1eCBEZXZpY2VzIgogICAgSURTX0RFVklDRVNfTUlYRVIgICAgICAgICAgICJNaXhlciBEZXZpY2VzIgogICAgSURTX1VOQVZBSUxBQkxFX0RSSVZFUiAgICAgICJGb3VuZCBkcml2ZXIgaW4gcmVnaXN0cnkgdGhhdCBpcyBub3QgYXZhaWxhYmxlIVxuXG5SZW1vdmUgXCIlc1wiIGZyb20gcmVnaXN0cnk/IgogICAgSURTX1dBUk5JTkcgICAgICAgICAgICAgICAgICJXYXJuaW5nIgpFTkQK