LyoKICogV2luZUNmZyByZXNvdXJjZXMKICogUG9ydHVndWVzZSBMYW5ndWFnZSBTdXBwb3J0CiAqCiAqIENvcHlyaWdodCAyMDAzIE1hcmNlbG8gRHVhcnRlCiAqIENvcHlyaWdodCAyMDA0IEFt6XJpY28gSm9z6SBNZWxvCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKgogKi8KCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFX0JSQVpJTElBTgoKSUREX0FCT1VUQ0ZHIERJQUxPR0VYIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiVmVyc+NvIGRvIFdpbmU6IixJRENfU1RBVElDLDExOSwxNyw1NSw4CiAgICBMVEVYVCAgICAgICAgICAgIkNWUyIsSURDX1dJTkVWRVIsMTc5LDE3LDU2LDgKICAgIENPTlRST0wgICAgICAgICBJREJfV0lORSxJRENfU1RBVElDLCJTdGF0aWMiLFNTX0JJVE1BUCB8IFNTX0NFTlRFUklNQUdFIHwgCiAgICAgICAgICAgICAgICAgICAgU1NfUkVBTFNJWkVJTUFHRSB8IFdTX0JPUkRFUiwxNSwxNywxNTcsMTExLCBXU19FWF9UUkFOU1BBUkVOVAogICAgTFRFWFQgICAgICAgICAgICJodHRwOi8vd3d3LndpbmVocS5vcmcvIixJRENfU1RBVElDLDExOSwzMSwxMDYsOAogICAgQ1RFWFQgICAgICAgICAgICJUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiIsCiAgICAgICAgICAgICAgICAgICAgSURDX1NUQVRJQywxMTksNDQsMTI0LDcyCkVORAoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0UKCklERF9BQk9VVENGRyBESUFMT0dFWCAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIlZlcnPjbyBXaW5lOiIsSURDX1NUQVRJQywxMTksMTcsNTUsOAogICAgTFRFWFQgICAgICAgICAgICJDVlMiLElEQ19XSU5FVkVSLDE3OSwxNyw1Niw4CiAgICBDT05UUk9MICAgICAgICAgSURCX1dJTkUsSURDX1NUQVRJQywiU3RhdGljIixTU19CSVRNQVAgfCBTU19DRU5URVJJTUFHRSB8CiAgICAgICAgICAgICAgICAgICAgU1NfUkVBTFNJWkVJTUFHRSB8IFdTX0JPUkRFUiwxNSwxNywxNTcsMTExLCBXU19FWF9UUkFOU1BBUkVOVAogICAgTFRFWFQgICAgICAgICAgICJodHRwOi8vd3d3LndpbmVocS5vcmcvIixJRENfU1RBVElDLDExOSwzMSwxMDYsOAogICAgQ1RFWFQgICAgICAgICAgICJUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiIsCiAgICAgICAgICAgICAgICAgICAgSURDX1NUQVRJQywxMTksNDQsMTI0LDcyCkVORAoKCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFX0JSQVpJTElBTgoKSUREX0FQUENGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgQ29uZmlndXJh5/VlcyBkYSBhcGxpY2Hn428gIixJRENfU1RBVElDLCA4LDQsMjQ0LDI0MAogICAgTFRFWFQgICAgICAgICAgICJXaW5lIHBvZGUgaW1pdGFyIHbhcmlvcyBlc3RpbG9zIGUgdmVyc/VlcyBkbyBXaW5kb3dzIHBhcmEgY2FkYSBhcGxpY2Hn428iLAogICAgICAgICAgICAgICAgICAgIElEQ19TVEFUSUMsMTUsMjAsMjI3LDIwCiAgICBDT05UUk9MICAgICAgICAgIkFwbGljYef1ZXMiLElEQ19BUFBfTElTVFZJRVcsIlN5c0xpc3RWaWV3MzIiLFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBMVlNfTElTVCB8IExWU19TSU5HTEVTRUwgfCBMVlNfU0hPV1NFTEFMV0FZUywKICAgICAgICAgICAgICAgICAgICAxNSw0MCwyMzAsMTQwCiAgICBQVVNIQlVUVE9OCSAgICAiQWRpY29uYXIgYXBsaWNh5+NvLi4uIixJRENfQVBQX0FEREFQUCwgOTAsMTg0LDc1LDE0CiAgICBQVVNIQlVUVE9OCSAgICAiUmVtb3ZlciBhcGxpY2Hn428iLElEQ19BUFBfUkVNT1ZFQVBQLCAxNzAsMTg0LDc1LDE0CiAgICBMVEVYVCAgICAgICAgICAgIlZlcnPjbyBkbyBXaW5kb3dzOiIsSURDX1NUQVRJQywxNywyMDQsNTgsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19XSU5WRVIsODMsMjAyLDE2Myw1NixDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AgICAgCiAgICBMVEVYVCAgICAgICAgICAgIlZlcnPjbyBkbyBET1M6IixJRENfU1RBVElDLDE3LDIyMyw1Nyw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX0RPU1ZFUiw4MywyMjQsMTYzLDU2LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUApFTkQKCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFCgpJRERfQVBQQ0ZHIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIiBDb25maWd1cmHn9WVzIGRhIGFwbGljYefjbyAiLElEQ19TVEFUSUMsIDgsNCwyNDQsMjQwCiAgICBMVEVYVCAgICAgICAgICAgIk8gV2luZSBwb2RlIGltaXRhciB24XJpb3MgZXN0aWxvcyBlIHZlcnP1ZXMgZG8gV2luZG93cyBwYXJhIGNhZGEgYXBsaWNh5+NvIiwKICAgICAgICAgICAgICAgICAgICBJRENfU1RBVElDLDE1LDIwLDIyNywyMAogICAgQ09OVFJPTCAgICAgICAgICJBcGxpY2Hn9WVzIixJRENfQVBQX0xJU1RWSUVXLCJTeXNMaXN0VmlldzMyIixXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgTFZTX0xJU1QgfCBMVlNfU0lOR0xFU0VMIHwgTFZTX1NIT1dTRUxBTFdBWVMsCiAgICAgICAgICAgICAgICAgICAgMTUsNDAsMjMwLDE0MAogICAgUFVTSEJVVFRPTgkgICAgIkFkaWNvbmFyIGFwbGljYefjby4uLiIsSURDX0FQUF9BRERBUFAsIDkwLDE4NCw3NSwxNAogICAgUFVTSEJVVFRPTgkgICAgIlJlbW92ZXIgYXBsaWNh5+NvIixJRENfQVBQX1JFTU9WRUFQUCwgMTcwLDE4NCw3NSwxNAogICAgTFRFWFQgICAgICAgICAgICJWZXJz428gV2luZG93czoiLElEQ19TVEFUSUMsMTcsMjA0LDU4LDgKICAgIENPTUJPQk9YICAgICAgICBJRENfV0lOVkVSLDgzLDIwMiwxNjMsNTYsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIlZlcnPjbyBET1M6IixJRENfU1RBVElDLDE3LDIyMyw1Nyw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX0RPU1ZFUiw4MywyMjQsMTYzLDU2LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUApFTkQKCgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRV9CUkFaSUxJQU4KCklERF9HUkFQSENGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgQ09OVFJPTAkgICAgIlByb2dyYW1hcyBEaXJlY3RYIHBvZGVtIGltcGVkaXIgcXVlIG8gbW91c2UgZGVpeGUgYSBqYW5lbGE/IixJRENfRFhfTU9VU0VfR1JBQiwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDM1LDIzMCw4CiAgICAKICAgIEdST1VQQk9YICAgICAgICAiIENvbmZpZ3VyYef1ZXMgZGUgamFuZWxhICIsSURDX1NUQVRJQyw4LDI1LDI0NCwxMjAKCiAgICAvKiBGSVhNRTogdGhlIHdvcmRpbmcgb2YgdGhpcyBleHBsYW5hdGlvbiBjb3VsZCBiZSBhIGxvdCBiZXR0ZXIgKi8KICAgIExURVhUICAgICAgICAgICAiVm9j6iBwb2RlIGVzY29saGVyIGVtdWxhdGFyIHVtYSDhcmVhIGRlIHRyYWJhbGhvLCBvbmRlIHRvZGFzIGFzIGphbmVsYXMgc+NvIGNvbmZpbmFkYXMgZW0gdW1hICd0ZWxhIHZpcnR1YWwnLCBvdSBwb2RlIHRlciB1bWEgamFuZWxhIGNvbG9jYWRhIG5hIHN1YSDhcmVhIGRlIHRyYWJhbGhvIHBhZHLjby4iLAogICAgICAgICAgICAgICAgICAgIElEQ19TVEFUSUMsMTUsNzMsMjI4LDI4CiAgICBMVEVYVCAgICAgICAgICAgIlRhbWFuaG8gZGEg4XJlYSBkZSB0cmFiYWxobzoiLElEQ19ERVNLVE9QX1NJWkUsMTUsMTE1LDEwMCw4LFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIlgiLElEQ19ERVNLVE9QX0JZLDE2NCwxMTUsOCw4LFdTX0RJU0FCTEVECiAgICBDT05UUk9MICAgICAgICAgIkVtdWxhciB1bWEg4XJlYSBkZSB0cmFiYWxobyB2aXJ0dWFsIixJRENfRU5BQkxFX0RFU0tUT1AsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSwxMDAsMjI4LDEwCgkJICAgIAogICAgRURJVFRFWFQgICAgICAgIElEQ19ERVNLVE9QX1dJRFRILDEyMCwxMTUsNDAsMTIsRVNfQVVUT0hTQ1JPTEwgfCBFU19OVU1CRVIgfCBXU19ESVNBQkxFRAogICAgRURJVFRFWFQgICAgICAgIElEQ19ERVNLVE9QX0hFSUdIVCwxNzMsMTE1LDQwLDEyLEVTX0FVVE9IU0NST0xMIHwgRVNfTlVNQkVSIHwgV1NfRElTQUJMRUQKCQkgICAgCkVORAoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0UKCklERF9HUkFQSENGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgQ09OVFJPTAkgICAgIk9zIHByb2dyYW1hcyBEaXJlY3RYIHBvZGVtIGltcGVkaXIgcXVlIG8gbW91c2UgZGVpeGUgYSBqYW5lbGE/IixJRENfRFhfTU9VU0VfR1JBQiwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDM1LDIzMCw4CiAgICAKICAgIEdST1VQQk9YICAgICAgICAiIENvbmZpZ3VyYef1ZXMgZGUgamFuZWxhICIsSURDX1NUQVRJQyw4LDI1LDI0NCwxMjAKCiAgICAvKiBGSVhNRTogdGhlIHdvcmRpbmcgb2YgdGhpcyBleHBsYW5hdGlvbiBjb3VsZCBiZSBhIGxvdCBiZXR0ZXIgKi8KICAgIExURVhUICAgICAgICAgICAiUG9kZSBlc2NvbGhlciBlbXVsYXIgdW1hIOFyZWEgZGUgdHJhYmFsaG8sIG9uZGUgdG9kYXMgYXMgamFuZWxhcyBz428gY29uZmluYWRhcyBhIHVtICdlY3LjIHZpcnR1YWwnLCBvdSBwb2RlIHRlciB1bWEgamFuZWxhIGNvbG9jYWRhIG5hIHN1YSDhcmVhIGRlIHRyYWJhbGhvIHByZWRlZmluaWRhLiIsCiAgICAgICAgICAgICAgICAgICAgSURDX1NUQVRJQywxNSw3MywyMjgsMjgKICAgIExURVhUICAgICAgICAgICAiVGFtYW5obyBkYSDhcmVhIGRlIHRyYWJhbGhvOiIsSURDX0RFU0tUT1BfU0laRSwxNSwxMTUsMTAwLDgsV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiWCIsSURDX0RFU0tUT1BfQlksMTY0LDExNSw4LDgsV1NfRElTQUJMRUQKICAgIENPTlRST0wgICAgICAgICAiRW11bGFyIHVtYSDhcmVhIGRlIHRyYWJhbGhvIHZpcnR1YWwiLElEQ19FTkFCTEVfREVTS1RPUCwiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDEwMCwyMjgsMTAKCQkgICAgCiAgICBFRElUVEVYVCAgICAgICAgSURDX0RFU0tUT1BfV0lEVEgsMTIwLDExNSw0MCwxMixFU19BVVRPSFNDUk9MTCB8IEVTX05VTUJFUiB8IFdTX0RJU0FCTEVECiAgICBFRElUVEVYVCAgICAgICAgSURDX0RFU0tUT1BfSEVJR0hULDE3MywxMTUsNDAsMTIsRVNfQVVUT0hTQ1JPTEwgfCBFU19OVU1CRVIgfCBXU19ESVNBQkxFRAoJCSAgICAKRU5ECgoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0VfQlJBWklMSUFOCgpJRERfRExMQ0ZHIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIlNvYnJlZXNjcmV2ZXIgRExMcyIsSURDX1NUQVRJQyw4LDQsMjQ0LDI0MAogICAgTFRFWFQgICAgICAgICAgICJCaWJsaW90ZWNhcyBwb2RlbSBzZXIgZXNwZWNpZmljYWRhcyBpbmRpdmlkdWFsbWVudGUgY29tbyAnYnVpbHRpbicgb3UgJ25hdGl2ZScuIFVtYSBlbnRyYWRhIERMTCBjb21vICIiKiIiIOkgcGVydGluZW50ZSBhIHRvZGFzIGFzIERMTHMgbuNvIGVzcGVjaWZpY2FkYXMgZXhwbGljaXRhbWVudGUuIgogICAgICAgICAgICAgICAgICAgICwgIElEQ19TVEFUSUMsMTUsMTcsMjI4LDMyCiAgICBDT05UUk9MICAgICAgICAgIlNvYnJlZXNjcmV2ZXIgRExMcyIsIElEQ19UUkVFX0RMTFMsICJTeXNUcmVlVmlldzMyIiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IFRWU19MSU5FU0FUUk9PVCB8IFRWU19IQVNMSU5FUyB8IFRWU19TSE9XU0VMQUxXQVlTIHwgVFZTX0hBU0JVVFRPTlMsIDE1LDUwLDE0MiwxODcKICAgIExURVhUICAgICAgICAgICAiT3JkZW0gZGUgY2FyZ2E6IixJRENfU1RBVElDLDE2Myw1MCw2MCw4CiAgICBDT05UUk9MICAgICAgICAgIkJ1aWx0aW4gKFdpbmUpIixJRENfUkFEX0JVSUxUSU4sIkJ1dHRvbiIsIEJTX0FVVE9SQURJT0JVVFRPTiB8IFdTX0dST1VQLDE2Myw2NSw3NSwxMAogICAgQ09OVFJPTCAgICAgICAgICJOYXRpdmUgKFdpbmRvd3MpIixJRENfUkFEX05BVElWRSwiQnV0dG9uIiwgQlNfQVVUT1JBRElPQlVUVE9OLDE2Myw4MCw3NSwxMAogICAgQ09OVFJPTCAgICAgICAgICJCdWlsdGluLCBOYXRpdmUiLElEQ19SQURfQlVJTFRJTl9OQVRJVkUsIkJ1dHRvbiIsIEJTX0FVVE9SQURJT0JVVFRPTiwxNjMsOTUsNzUsMTAKICAgIENPTlRST0wgICAgICAgICAiTmF0aXZlLCBCdWlsdGluIixJRENfUkFEX05BVElWRV9CVUlMVElOLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04sMTYzLDExMCw3NSwxMAogICAgQ09OVFJPTCAgICAgICAgICJEZXNhYmlsaXRhZGEiLElEQ19SQURfRElTQUJMRSwiQnV0dG9uIiwgQlNfQVVUT1JBRElPQlVUVE9OLDE2MywxMjUsNzUsMTAKICAgIFBVU0hCVVRUT04JICAgICJBZGljaW9uYXIgYXBsaWNh5+NvLi4uIixJRENfRExMU19BRERBUFAsMTYzLDE0NCw4MiwxNAogICAgUFVTSEJVVFRPTgkgICAgIlJlbW92ZXIgYXBsaWNh5+NvIixJRENfRExMU19SRU1PVkVBUFAsIDE2MywxNjQsODIsMTQKICAgIFBVU0hCVVRUT04JICAgICJBZGljaW9uYXIgY2FyZ2EgZGUgRExMOiIsSURDX0RMTFNfQURERExMLCAxNjMsMTg0LDgyLDE0CiAgICBDT01CT0JPWCAgICAgICAgSURDX0RMTExJU1QsMTYzLDIwNCw4MiwxNCxDQlNfRFJPUERPV04gfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUCB8IENCU19TT1JUIHwgQ0JTX0xPV0VSQ0FTRQogICAgUFVTSEJVVFRPTgkgICAgIlJlbW92ZXIgY2FyZ2EgZGUgRExMIixJRENfRExMU19SRU1PVkVETEwsMTYzLDIyNCw4MiwxNApFTkQKCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFCgpJRERfRExMQ0ZHIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIlNvYnJlZXNjcmV2ZXIgRExMcyIsSURDX1NUQVRJQyw4LDQsMjQ0LDI0MAogICAgTFRFWFQgICAgICAgICAgICJBcyBiaWJsaW90ZWNhcyBwb2RlbSBzZXIgZXNwZWNpZmljYWRhcyBpbmRpdmlkdWFsbWVudGUgY29tbyAnYnVpbHRpbicgb3UgJ25hdGl2ZScuIFVtYSBlbnRyYWRhIERMTCBjb21vICIiKiIiIOkgcGVydGluZW50ZSBhIHRvZGFzIGFzIERMTHMgbuNvIGVzcGVjaWZpY2FkYXMgZXhwbGljaXRhbWVudGUuIgogICAgICAgICAgICAgICAgICAgICwgIElEQ19TVEFUSUMsMTUsMTcsMjI4LDMyCiAgICBDT05UUk9MICAgICAgICAgIlNvYnJlZXNjcmV2ZXIgRExMcyIsIElEQ19UUkVFX0RMTFMsICJTeXNUcmVlVmlldzMyIiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IFRWU19MSU5FU0FUUk9PVCB8IFRWU19IQVNMSU5FUyB8IFRWU19TSE9XU0VMQUxXQVlTIHwgVFZTX0hBU0JVVFRPTlMsIDE1LDUwLDE0MiwxODcKICAgIExURVhUICAgICAgICAgICAiT3JkZW0gZGUgY2FyZ2E6IixJRENfU1RBVElDLDE2Myw1MCw2MCw4CiAgICBDT05UUk9MICAgICAgICAgIkJ1aWx0aW4gKFdpbmUpIixJRENfUkFEX0JVSUxUSU4sIkJ1dHRvbiIsIEJTX0FVVE9SQURJT0JVVFRPTiB8IFdTX0dST1VQLDE2Myw2NSw3NSwxMAogICAgQ09OVFJPTCAgICAgICAgICJOYXRpdmUgKFdpbmRvd3MpIixJRENfUkFEX05BVElWRSwiQnV0dG9uIiwgQlNfQVVUT1JBRElPQlVUVE9OLDE2Myw4MCw3NSwxMAogICAgQ09OVFJPTCAgICAgICAgICJCdWlsdGluLCBOYXRpdmUiLElEQ19SQURfQlVJTFRJTl9OQVRJVkUsIkJ1dHRvbiIsIEJTX0FVVE9SQURJT0JVVFRPTiwxNjMsOTUsNzUsMTAKICAgIENPTlRST0wgICAgICAgICAiTmF0aXZlLCBCdWlsdGluIixJRENfUkFEX05BVElWRV9CVUlMVElOLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04sMTYzLDExMCw3NSwxMAogICAgQ09OVFJPTCAgICAgICAgICJEZXNhYmlsaXRhZGEiLElEQ19SQURfRElTQUJMRSwiQnV0dG9uIiwgQlNfQVVUT1JBRElPQlVUVE9OLDE2MywxMjUsNzUsMTAKICAgIFBVU0hCVVRUT04JICAgICJBZGljaW9uYXIgYXBsaWNh5+NvLi4uIixJRENfRExMU19BRERBUFAsMTYzLDE0NCw4MiwxNAogICAgUFVTSEJVVFRPTgkgICAgIlJlbW92ZXIgYXBsaWNh5+NvIixJRENfRExMU19SRU1PVkVBUFAsIDE2MywxNjQsODIsMTQKICAgIFBVU0hCVVRUT04JICAgICJBZGljaW9uYXIgY2FyZ2EgZGUgRExMOiIsSURDX0RMTFNfQURERExMLCAxNjMsMTg0LDgyLDE0CiAgICBDT01CT0JPWCAgICAgICAgSURDX0RMTExJU1QsMTYzLDIwNCw4MiwxNCxDQlNfRFJPUERPV04gfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUCB8IENCU19TT1JUIHwgQ0JTX0xPV0VSQ0FTRQogICAgUFVTSEJVVFRPTgkgICAgIlJlbW92ZXIgY2FyZ2EgZGUgRExMIixJRENfRExMU19SRU1PVkVETEwsMTYzLDIyNCw4MiwxNApFTkQKCgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfTkVVVFJBTAoKSUREX1NZU1RFTUNGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiVW5pZGFkZXMiLElEQ19TVEFUSUMsOCw0LDI0NCwxMjAKICAgIExJU1RCT1ggICAgICAgICBJRENfTElTVF9EUklWRVMsMTUsMjMsMTc5LDkwLFdTX1ZTQ1JPTEwKICAgIFBVU0hCVVRUT04gICAgICAiJkFkaWNpb25hciIsSURDX0RSSVZFX0FERCwxOTcsMjIsNTAsMjIKICAgIFBVU0hCVVRUT04gICAgICAiJlJlbW92ZXIiLElEQ19EUklWRV9SRU1PVkUsMTk3LDUxLDUwLDIyCiAgICBQVVNIQlVUVE9OICAgICAgIiZFZGl0YXIiLElEQ19EUklWRV9FRElULDE5Nyw4MCw1MCwyMgpFTkQKCgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRV9CUkFaSUxJQU4KCklERF9EUklWRUNGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICJPdXRyYXMgdW5pZGFkZXMiLElEQ19TVEFUSUMsNywxMDcsMjQ2LDExMgogICAgTElTVEJPWCAgICAgICAgIElEQ19MSVNUX0RSSVZFUywxNCwxMTgsMjMyLDc2LExCU19TT1JUIHwgTEJTX05PSU5URUdSQUxIRUlHSFQgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgUFVTSEJVVFRPTiAgICAgICJBZGljaW9uYXIuLi4iLElEQ19CVVRUT05fQURELDE0LDE5OSwzNywxNAogICAgUFVTSEJVVFRPTiAgICAgICJSZW1vdmVyIixJRENfQlVUVE9OX1JFTU9WRSw1NSwxOTksMzcsMTQKICAgIFBVU0hCVVRUT04gICAgICAiRWRpdGFyLi4uIixJRENfQlVUVE9OX0VESVQsOTcsMTk5LDM3LDE0CiAgICBQVVNIQlVUVE9OICAgICAgIkF1dG9kZXRlY3Rhci4uLiIsSURDX0JVVFRPTl9BVVRPREVURUNULDE5NywxOTksNDksMTQKICAgIExURVhUCSAgICAiQVZJU086IFBhcmVjZSBxdWUgdm9j6iBu428gdGVtIHVtYSB1bmlkYWRlIEMgZGVmaW5pZGEuIENsaXF1ZSBlbSAnQWRpY2lvbmFyJyBwYXJhIGFkaWNpb25hciB1bWEuIiwgSURTX0RSSVZFX05PX0MsIDcsMjIzLDI1MCwxMTAKRU5ECgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRQoKSUREX0RSSVZFQ0ZHIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIk91dHJhcyB1bmlkYWRlcyIsSURDX1NUQVRJQyw3LDEwNywyNDYsMTEyCiAgICBMSVNUQk9YICAgICAgICAgSURDX0xJU1RfRFJJVkVTLDE0LDExOCwyMzIsNzYsTEJTX1NPUlQgfCBMQlNfTk9JTlRFR1JBTEhFSUdIVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBQVVNIQlVUVE9OICAgICAgIkFkaWNpb25hci4uLiIsSURDX0JVVFRPTl9BREQsMTQsMTk5LDM3LDE0CiAgICBQVVNIQlVUVE9OICAgICAgIlJlbW92ZXIiLElEQ19CVVRUT05fUkVNT1ZFLDU1LDE5OSwzNywxNAogICAgUFVTSEJVVFRPTiAgICAgICJFZGl0YXIuLi4iLElEQ19CVVRUT05fRURJVCw5NywxOTksMzcsMTQKICAgIFBVU0hCVVRUT04gICAgICAiQXV0b2RldGVjdGFyLi4uIixJRENfQlVUVE9OX0FVVE9ERVRFQ1QsMTk3LDE5OSw0OSwxNAogICAgTFRFWFQJICAgICJBVklTTzogUGFyZWNlIHF1ZSBu428gdGVtIHVtYSB1bmlkYWRlIEMgZGVmaW5pZGEuIENsaXF1ZSBlbSAnQWRpY2lvbmFyJyBwYXJhIGFkaWNpb25hciB1bWEuIiwgSURTX0RSSVZFX05PX0MsIDcsMjIzLDI1MCwxMTAKRU5ECgoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0VfQlJBWklMSUFOCgpJRERfQVVESU9DRkcgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUCSJEcml2ZXIgZGUg4XVkaW86ICIsSURDX1NUQVRJQywxMCwyMCw2MCw4CiAgICBDT01CT0JPWAlJRENfQVVESU9fRFJJVkVSLDcwLDE4LDg1LDg1LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgUFVTSEJVVFRPTgkiQXV0b2RldGVjdGFyIixJRENfQVVESU9fQVVUT0RFVEVDVCwxNzAsMjAsNDksMTQKRU5ECgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRQoKSUREX0FVRElPQ0ZHIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVAkiQ29udHJvbGFkb3Ig4XVkaW86ICIsSURDX1NUQVRJQywxMCwyMCw2MCw4CiAgICBDT01CT0JPWAlJRENfQVVESU9fRFJJVkVSLDcwLDE4LDg1LDg1LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgUFVTSEJVVFRPTgkiQXV0b2RldGVjdGFyIixJRENfQVVESU9fQVVUT0RFVEVDVCwxNzAsMjAsNDksMTQKRU5ECgoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX05FVVRSQUwKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFIApCRUdJTgogICAgSURTX1dJTkVfVkVSU0lPTiAgICAgICAgIkNWUyIKICAgIElEU19UQUJfR0VORVJBTCAgICAgICAgICJHZXJhbCIKICAgIElEU19UQUJfRExMUyAgICAgICAgICAgICJCaWJsaW90ZWNhcyIKICAgIElEU19UQUJfRFJJVkVTICAgICAgICAgICJVbmlkYWRlcyIKRU5ECg==