LyoKICogV2luZUNmZyByZXNvdXJjZXMKICogRW5nbGlzaCBMYW5ndWFnZSBTdXBwb3J0CiAqCiAqIENvcHlyaWdodCAyMDAyIEphY28gR3JlZWZmCiAqIENvcHlyaWdodCAyMDAzIERpbWl0cmllIE8uIFBhdW4KICogQ29weXJpZ2h0IDIwMDMtMjAwNCBNaWtlIEhlYXJuCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKgogKi8KCkxBTkdVQUdFIExBTkdfRU5HTElTSCwgU1VCTEFOR19FTkdMSVNIX1VTCgpJRFJfV0lORUNGRyBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgICBQT1BVUCAiIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiQ29uZmlndXJlIiwgSURDX0FVRElPX0NPTkZJR1VSRQogICAgRU5ECkVORAoKSUREX0FCT1VUQ0ZHIERJQUxPR0VYIDAsIDAsIDI2MCwgMjcwClNUWUxFIFdTX0NISUxECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICBQQUNLQUdFX1NUUklORyxJRENfU1RBVElDLDExOSwxNywxMjAsOAogICAgQ09OVFJPTCAgICAgICAgIElEQl9XSU5FLElEQ19TVEFUSUMsIlN0YXRpYyIsU1NfQklUTUFQICwxNSwxNywxNTcsMTExCiAgICBMVEVYVCAgICAgICAgICAgImh0dHA6Ly93d3cud2luZWhxLm9yZy8iLElEQ19TVEFUSUMsMTE5LDMxLDEwNiw4CiAgICBMVEVYVCAgICAgICAgICAgIlRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uIiwKICAgICAgICAgICAgICAgICAgICBJRENfU1RBVElDLDExOSw0NCwxMjQsNzIKRU5ECgpJRERfQVBQQ0ZHIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIiBBcHBsaWNhdGlvbiBTZXR0aW5ncyAiLElEQ19TVEFUSUMsIDgsNCwyNDQsMjQwCiAgICBMVEVYVCAgICAgICAgICAgIldpbmUgY2FuIG1pbWljIGRpZmZlcmVudCBXaW5kb3dzIHZlcnNpb25zIGZvciBlYWNoIGFwcGxpY2F0aW9uLiAgVGhpcyB0YWIgaXMgbGlua2VkIHRvIHRoZSBMaWJyYXJpZXMgYW5kIEdyYXBoaWNzIHRhYnMgdG8gYWxsb3cgeW91IHRvIGNoYW5nZSBzeXN0ZW13aWRlIG9yIHBlci1hcHBsaWNhdGlvbiBzZXR0aW5ncyBpbiB0aG9zZSB0YWJzIGFzIHdlbGwuIiwKICAgICAgICAgICAgICAgICAgICBJRENfU1RBVElDLDE1LDIwLDIyNywzMAogICAgQ09OVFJPTCAgICAgICAgICJBcHBsaWNhdGlvbnMiLElEQ19BUFBfTElTVFZJRVcsIlN5c0xpc3RWaWV3MzIiLFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBMVlNfTElTVCB8IExWU19TSU5HTEVTRUwgfCBMVlNfU0hPV1NFTEFMV0FZUywKICAgICAgICAgICAgICAgICAgICAxNSw1MCwyMzAsMTUwCiAgICBQVVNIQlVUVE9OCSAgICAiJkFkZCBhcHBsaWNhdGlvbi4uLiIsSURDX0FQUF9BRERBUFAsIDkwLDIwNCw3NSwxNAogICAgUFVTSEJVVFRPTgkgICAgIiZSZW1vdmUgYXBwbGljYXRpb24iLElEQ19BUFBfUkVNT1ZFQVBQLCAxNzAsMjA0LDc1LDE0CiAgICBMVEVYVCAgICAgICAgICAgIiZXaW5kb3dzIFZlcnNpb246IixJRENfU1RBVElDLDE3LDIyNiw1OCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX1dJTlZFUiw4MywyMjQsMTYzLDU2LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUCAgICAKRU5ECgpJRERfR1JBUEhDRkcgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIFdpbmRvdyBzZXR0aW5ncyAiLElEQ19TVEFUSUMsOCw0LDI0NCwxODAKCiAgICBDT05UUk9MCSAgICAiQWxsb3cgRGlyZWN0WCBhcHBzIHRvIHN0b3AgdGhlIG1vdXNlIGxlYXZpbmcgdGhlaXIgd2luZG93IixJRENfRFhfTU9VU0VfR1JBQiwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDE0LDIzMCw4CiAgICBMVEVYVCAJICAgICJJZiB3aW5kb3dzIGFyZSBtYW5hZ2VkIGJ5IHlvdXIgd2luZG93IG1hbmFnZXIsIHRoZW4gdGhleSB3aWxsIGhhdmUgdGhlIHN0YW5kYXJkIGJvcmRlcnMsIHRoZXkgd2lsbCByZXNwZWN0IHlvdXIgdmlydHVhbCBkZXNrdG9wIGFuZCBhcHBlYXIgaW4geW91ciB3aW5kb3cgbGlzdC4gXG5cbklmIHRoZSB3aW5kb3dzIGFyZSB1bm1hbmFnZWQsIHRoZXkgd2lsbCBiZSBkaXNjb25uZWN0ZWQgZnJvbSB5b3VyIHdpbmRvdyBtYW5hZ2VyLiBUaGlzIHdpbGwgbWVhbiB0aGUgd2luZG93cyBkbyBub3QgaW50ZWdyYXRlIGFzIGNsb3NlbHkgd2l0aCB5b3VyIGRlc2t0b3AsIGJ1dCB0aGUgZW11bGF0aW9uIHdpbGwgYmUgbW9yZSBhY2N1cmF0ZSBzbyBpdCBjYW4gaGVscCBzb21lIHByb2dyYW1zIHRvIHdvcmsgYmV0dGVyLiIsCiAgICAJCSAgICBJRENfU1RBVElDLDE1LDM3LDIyOCw4MAogICAgQ09OVFJPTAkgICAgIkFsbG93IHRoZSB3aW5kb3cgbWFuYWdlciB0byBjb250cm9sIHRoZSB3aW5kb3dzIixJRENfRU5BQkxFX01BTkFHRUQsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSwxMTEsMjMwLDgKICAgIAogICAgTFRFWFQgICAgICAgICAgICJZb3UgY2FuIGVpdGhlciBjaG9vc2UgdG8gaGF2ZSBhbGwgV2luZG93cyBhcHBsaWNhdGlvbnMgY29uZmluZWQgdG8gYSBzaW5nbGUgd2luZG93IGFjdGluZyBhcyBhIHZpcnR1YWwgZGVza3RvcCwgb3IgdG8gaGF2ZSB0aGVtIGJlaGF2ZSBsaWtlIHlvdXIgb3RoZXIgYXBwbGljYXRpb25zLiIsCiAgICAgICAgICAgICAgICAgICAgSURDX1NUQVRJQywxNSwxMjUsMjI4LDI4CiAgICBMVEVYVCAgICAgICAgICAgIkRlc2t0b3Agc2l6ZToiLElEQ19ERVNLVE9QX1NJWkUsMTUsMTY3LDQ0LDgsV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiWCIsSURDX0RFU0tUT1BfQlksMTA4LDE2Nyw4LDgsV1NfRElTQUJMRUQKICAgIENPTlRST0wgICAgICAgICAiRW11bGF0ZSBhIHZpcnR1YWwgZGVza3RvcCIsSURDX0VOQUJMRV9ERVNLVE9QLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTUsMTUyLDIzMCwxMAoJCSAgICAKICAgIEVESVRURVhUICAgICAgICBJRENfREVTS1RPUF9XSURUSCw2NCwxNjcsNDAsMTIsRVNfQVVUT0hTQ1JPTEwgfCBFU19OVU1CRVIgfCBXU19ESVNBQkxFRAogICAgRURJVFRFWFQgICAgICAgIElEQ19ERVNLVE9QX0hFSUdIVCwxMTcsMTY3LDQwLDEyLEVTX0FVVE9IU0NST0xMIHwgRVNfTlVNQkVSIHwgV1NfRElTQUJMRUQKCiAgICBHUk9VUEJPWCAgICAgICAgIiBEaXJlY3QzRCAiLElEQ19TVEFUSUMsOCwxODksMjQ0LDUwCgogICAgTFRFWFQJICAgICJWZXJ0ZXggU2hhZGVyIFN1cHBvcnQ6ICIsSURDX1NUQVRJQywxNSwxOTksODAsMzAKICAgIENPTUJPQk9YCSAgICBJRENfRDNEX1ZTSEFERVJfTU9ERSwxMDAsMTk3LDE0NSw3MCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKCiAgICBDT05UUk9MICAgICAgICAgIkFsbG93IFBpeGVsIFNoYWRlciAoaWYgc3VwcG9ydGVkIGJ5IGhhcmR3YXJlKSIsSURDX0QzRF9QU0hBREVSX01PREUsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSwyMTYsMjMwLDEwCkVORAoKSUREX0RMTENGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgRExMIE92ZXJyaWRlcyAiLElEQ19TVEFUSUMsOCw0LDI0NCwyNDAKICAgIExURVhUICAgICAgICAgICAiRHluYW1pYyBMaW5rIExpYnJhcmllcyBjYW4gYmUgc3BlY2lmaWVkIGluZGl2aWR1YWxseSB0byBiZSBlaXRoZXIgYnVpbHRpbiAocHJvdmlkZWQgYnkgV2luZSkgb3IgbmF0aXZlICh0YWtlbiBmcm9tIFdpbmRvd3Mgb3IgcHJvdmlkZWQgYnkgdGhlIGFwcGxpY2F0aW9uKS4iCiAgICAgICAgICAgICAgICAgICAgLElEQ19TVEFUSUMsMTYsMTYsMjIwLDMyCiAgICBMVEVYVCAgICAgICAgICAgIk5ldyBvdmVycmlkZSBmb3IgbGlicmFyeToiLElEQ19TVEFUSUMsMTYsNTgsMTAwLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfRExMQ09NQk8sMTYsNjgsMTQwLDE0LENCU19EUk9QRE9XTiB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QIHwgQ0JTX1NPUlQgfCBDQlNfTE9XRVJDQVNFCiAgICBQVVNIQlVUVE9OICAgICAgIiZBZGQiLElEQ19ETExTX0FERERMTCwgMTY0LDY4LDgyLDEzLEJTX0RFRlBVU0hCVVRUT04gCiAgICBMVEVYVCAgICAgICAgICAgIkV4aXN0aW5nIG92ZXJyaWRlczoiLElEQ19TVEFUSUMsMTYsODYsMTAwLDgKICAgIExJU1RCT1ggICAgICAgICBJRENfRExMU19MSVNULDE2LDk2LDE0MCwxNDAsV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IFdTX1ZTQ1JPTEwKICAgIFBVU0hCVVRUT04gICAgICAiJkVkaXQiLElEQ19ETExTX0VESVRETEwsMTY0LDk2LDgyLDE0CiAgICBQVVNIQlVUVE9OICAgICAgIiZSZW1vdmUiLElEQ19ETExTX1JFTU9WRURMTCwxNjQsMTE0LDgyLDE0IApFTkQKCklERF9MT0FET1JERVIgRElBTE9HIERJU0NBUkRBQkxFIDgwLCA5MCwgMTEwLCA5MgpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRWRpdCBPdmVycmlkZSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgTG9hZCBPcmRlciAiLElEQ19TVEFUSUMsOCw0LDk0LDY2CiAgICBDT05UUk9MICAgICAgICAgIiZCdWlsdGluIChXaW5lKSIsSURDX1JBRF9CVUlMVElOLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04gfCBXU19HUk9VUCwxNiwxNCw3NSwxMAogICAgQ09OVFJPTCAgICAgICAgICImTmF0aXZlIChXaW5kb3dzKSIsSURDX1JBRF9OQVRJVkUsIkJ1dHRvbiIsIEJTX0FVVE9SQURJT0JVVFRPTiwxNiwyNCw3NSwxMAogICAgQ09OVFJPTCAgICAgICAgICJCdWkmbHRpbiB0aGVuIE5hdGl2ZSIsSURDX1JBRF9CVUlMVElOX05BVElWRSwiQnV0dG9uIiwgQlNfQVVUT1JBRElPQlVUVE9OLDE2LDM0LDc1LDEwCiAgICBDT05UUk9MICAgICAgICAgIk5hdGkmdmUgdGhlbiBCdWlsdGluIixJRENfUkFEX05BVElWRV9CVUlMVElOLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04sMTYsNDQsNzUsMTAKICAgIENPTlRST0wgICAgICAgICAiJkRpc2FibGUiLElEQ19SQURfRElTQUJMRSwiQnV0dG9uIiwgQlNfQVVUT1JBRElPQlVUVE9OLDE2LDU0LDc1LDEwCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDgsNzQsNDUsMTQsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiQ2FuY2VsIixJRENBTkNFTCw1Nyw3NCw0NSwxNCxXU19HUk9VUApFTkQKCklERF9EUklWRUNGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgRHJpdmUgbWFwcGluZ3MgIixJRENfU1RBVElDLDgsNCwyNDQsMjQwCiAgICBDT05UUk9MICAgICAgICAgIkxpc3R2aWV3IixJRENfTElTVF9EUklWRVMsIlN5c0xpc3RWaWV3MzIiLExWU19SRVBPUlQgfCBMVlNfQVVUT0FSUkFOR0UgfCBMVlNfQUxJR05MRUZUIHwKICAgICAgICAgICAgICAgICAgICBMVlNfU0lOR0xFU0VMIHwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCwgMTUsMTgsMjMyLDc2CiAgICBQVVNIQlVUVE9OICAgICAgIiZBZGQuLi4iLElEQ19CVVRUT05fQURELDE1LDk4LDM3LDE0CiAgICBQVVNIQlVUVE9OICAgICAgIiZSZW1vdmUiLElEQ19CVVRUT05fUkVNT1ZFLDU2LDk4LDM3LDE0CiAgICBQVVNIQlVUVE9OICAgICAgIkF1dG8mZGV0ZWN0Li4uIixJRENfQlVUVE9OX0FVVE9ERVRFQ1QsMTk3LDk4LDQ5LDE0CgogICAgLyogZWRpdGluZyBkcml2ZSBkZXRhaWxzICovCiAgICBMVEVYVCAgICAgICAgICAgIiZQYXRoOiIsSURDX1NUQVRJQywxNSwxMjMsMjAsOSAgICAKICAgIEVESVRURVhUICAgICAgICBJRENfRURJVF9QQVRILDQxLDEyMCwxNjAsMTMsRVNfQVVUT0hTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBQVVNIQlVUVE9OICAgICAgIiZCcm93c2UuLi4iLElEQ19CVVRUT05fQlJPV1NFX1BBVEgsMjA2LDEyMCw0MCwxMwogICAgCiAgICBMVEVYVCAgICAgICAgICAgIiZUeXBlOiIsSURDX1NUQVRJQ19UWVBFLDE1LDEzOCwyMSwxMAogICAgQ09NQk9CT1ggICAgICAgIElEQ19DT01CT19UWVBFLDQxLDEzNSw3Nyw2MCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIAogICAgTFRFWFQgICAgICAgICAgICJMYWJlbCBhbmQgc2VyaWFsIG51bWJlciIsSURDX0xBQkVMU0VSSUFMX1NUQVRJQywxNSwxNTUsOTUsMTAKICAgIAogICAgUFVTSEJVVFRPTiAgICAgICImU2hvdyBBZHZhbmNlZCIsSURDX0JVVFRPTl9TSE9XX0hJREVfQURWQU5DRUQsMTg2LDEzNiw2MCwxMwogICAgQ09OVFJPTCAgICAgICAgICJBdXRvZGV0ZWN0ICZmcm9tIERldmljZToiLElEQ19SQURJT19BVVRPREVURUNULCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9SQURJT0JVVFRPTiwxNSwxNjYsOTMsMTAKICAgIEVESVRURVhUICAgICAgICBJRENfRURJVF9ERVZJQ0UsMjcsMTc2LDE3NCwxMyxFU19BVVRPSFNDUk9MTAogICAgUFVTSEJVVFRPTiAgICAgICJCcm8md3NlLi4uIixJRENfQlVUVE9OX0JST1dTRV9ERVZJQ0UsMjA2LDE3Niw0MCwxMwogICAgQ09OVFJPTCAgICAgICAgICImTWFudWFsbHkgQXNzaWduOiIsSURDX1JBRElPX0FTU0lHTiwiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPUkFESU9CVVRUT04sMTUsMTk1LDY5LDEwCgogICAgTFRFWFQgICAgICAgICAgICImTGFiZWw6IixJRENfU1RBVElDX0xBQkVMLDMzLDIwOCwyOSwxMgogICAgRURJVFRFWFQgICAgICAgIElEQ19FRElUX0xBQkVMLDYzLDIwNSw3OCwxMyxFU19BVVRPSFNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiUyZlcmlhbDoiLElEQ19TVEFUSUNfU0VSSUFMLDMzLDIyNSwyOSwxMgogICAgRURJVFRFWFQgICAgICAgIElEQ19FRElUX1NFUklBTCw2MywyMjEsNzgsMTMsRVNfQVVUT0hTQ1JPTEwgfCBXU19UQUJTVE9QCgogICAgQ09OVFJPTCAgICAgICAgICJTaG93IGRvdCBmaWxlcyIsSURDX1NIT1dfRE9UX0ZJTEVTLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsOCwyNjAsMjMwLDgKRU5ECgpJRERfQVVESU9DRkcgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIERyaXZlciBTZWxlY3Rpb24gIixJRENfU1RBVElDLDgsNCwyNDQsMTk1CiAgICBMVEVYVCAgICAgICAgICAgIlNlbGVjdCBhIHNvdW5kIGRyaXZlciBieSBjaGVja2luZyB0aGUgYm94IG9mIHRoZSBkZXNpcmVkIGRyaXZlci4gIERpc2FibGUgc291bmQgYnkgbm90IHNlbGVjdGluZyBhbnkgZHJpdmVyLiBTZWxlY3Rpb24gb2YgbXVsdGlwbGUgZHJpdmVycyBpcyBub3QgcmVjb21tZW5kZWQuIENvbmZpZ3VyZSBhIGRyaXZlciBieSByaWdodC1jbGlja2luZyBvbiBpdC4iLElEQ19TVEFUSUMsMTUsMjAsMjI3LDMwCiAgICBDT05UUk9MICAgICAgICAgIkRldmljZXMiLElEQ19BVURJT19UUkVFLCJTeXNUcmVlVmlldzMyIixXU19CT1JERVIgfCBXU19UQUJTVE9QLDE1LDUwLDE0MCwxNDAgCiAgICBQVVNIQlVUVE9OICAgICAgIlRlc3QgU291bmQiLElEQ19BVURJT19URVNULDE3MCw1MCw1OSwxNAogICAgUFVTSEJVVFRPTgkgICAgIkNvbnRyb2wgUGFuZWwiLElEQ19BVURJT19DT05UUk9MX1BBTkVMLDE3MCw3MCw1OSwxNAogICAgR1JPVVBCT1ggICAgICAgICIgRGlyZWN0U291bmQgIixJRENfU1RBVElDLDgsMjA1LDI0NCw2MAogICAgTFRFWFQJICAgICJIYXJkd2FyZSBBY2NlbGVyYXRpb246ICIsSURDX1NUQVRJQywxNSwyMTUsOTAsMTAKICAgIENPTUJPQk9YCSAgICBJRENfRFNPVU5EX0hXX0FDQ0VMLDEwMCwyMTMsMTUwLDcwLENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJEZWZhdWx0IFNhbXBsZSBSYXRlOiIsSURDX1NUQVRJQywxNSwyMzIsNzAsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19EU09VTkRfUkFURVMsOTAsMjMwLDQyLDc2LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJEZWZhdWx0IEJpdHMgUGVyIFNhbXBsZToiLElEQ19TVEFUSUMsMTM3LDIzMiw4MCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX0RTT1VORF9CSVRTLDIyMCwyMzAsMzAsNTYsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBDT05UUk9MICAgICAgICAgIkRyaXZlciBFbXVsYXRpb24iLElEQ19EU09VTkRfRFJWX0VNVUwsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSwyNTAsMjMwLDEwCkVORAoKSUREX0RFU0tUT1BfSU5URUdSQVRJT04gRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIEFwcGVhcmFuY2UgIixJRENfU1RBVElDLDgsNCwyNDQsMTA2CiAgICBMVEVYVCAgICAgICAgICAgIlRoZW1lOiIsSURDX1NUQVRJQywxNSwxNiwxMzAsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19USEVNRV9USEVNRUNPTUJPLDE1LDI0LDEzMCwxNCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIFBVU0hCVVRUT04gICAgICAiSW5zdGFsbCB0aGVtZS4uLiIsSURDX1RIRU1FX0lOU1RBTEwsMTUyLDIzLDkzLDE0CiAgICBMVEVYVCAgICAgICAgICAgIkNvbG9yOiIsSURDX1RIRU1FX0NPTE9SVEVYVCwxNSw0MCwxMTIsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19USEVNRV9DT0xPUkNPTUJPLDE1LDQ4LDExMiwxNCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiU2l6ZToiLElEQ19USEVNRV9TSVpFVEVYVCwxMzUsNDAsMTEwLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfVEhFTUVfU0laRUNPTUJPLDEzNSw0OCwxMTAsMTQsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIkl0ZW06IixJRENfU1RBVElDLDE1LDY0LDExMiw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX1NZU1BBUkFNX0NPTUJPLDE1LDc0LDExMiwxMjAsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QIHwgQ0JTX1NPUlQKICAgIExURVhUICAgICAgICAgICAiQ29sb3I6IixJRENfU1lTUEFSQU1fQ09MT1JfVEVYVCwxMzUsNjQsMjUsOCxXU19ESVNBQkxFRAogICAgUFVTSEJVVFRPTiAgICAgICIiLElEQ19TWVNQQVJBTV9DT0xPUiwxMzUsNzQsMjUsMTMsV1NfRElTQUJMRUQgfCBCU19PV05FUkRSQVcKICAgIExURVhUICAgICAgICAgICAiU2l6ZToiLElEQ19TWVNQQVJBTV9TSVpFX1RFWFQsMTY2LDY0LDMwLDgsV1NfRElTQUJMRUQKICAgIEVESVRURVhUICAgICAgICBJRENfU1lTUEFSQU1fU0laRSwxNjYsNzQsMjMsMTMsRVNfQVVUT0hTQ1JPTEwgfCBXU19UQUJTVE9QIHwgV1NfRElTQUJMRUQKICAgIENPTlRST0wgICAgICAgICAiIixJRENfU1lTUEFSQU1fU0laRV9VRCxVUERPV05fQ0xBU1MsVURTX1NFVEJVRERZSU5UIHwgV1NfRElTQUJMRUQsMTg3LDc0LDE1LDEzCiAgICBQVVNIQlVUVE9OICAgICAgIkZvbnQiLElEQ19TWVNQQVJBTV9GT05ULDIwOCw3NCwzNywxMyxXU19ESVNBQkxFRAogICAgR1JPVVBCT1ggICAgICAgICIgU2hlbGwgRm9sZGVyICIsSURDX1NUQVRJQyw4LDExNCwyNDQsMTAwCiAgICBDT05UUk9MICAgICAgICAgIkxpc3R2aWV3IixJRENfTElTVF9TRlBBVEhTLCJTeXNMaXN0VmlldzMyIixMVlNfUkVQT1JUIHwgTFZTX0FVVE9BUlJBTkdFIHwgTFZTX0FMSUdOTEVGVCB8CiAgICAgICAgICAgICAgICAgICAgIExWU19TSU5HTEVTRUwgfCBXU19CT1JERVIgfCBXU19UQUJTVE9QLCAxNSwxMjYsMjMwLDY0CiAgICBDT05UUk9MICAgICAgICAgIkxpbmsgdG86IixJRENfTElOS19TRlBBVEgsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YfFdTX1RBQlNUT1B8V1NfRElTQUJMRUQsMTUsMTk1LDUwLDEzCiAgICBFRElUVEVYVCAgICAgICAgIElEQ19FRElUX1NGUEFUSCw2NSwxOTUsMTQ1LDEzLEVTX0FVVE9IU0NST0xMfFdTX1RBQlNUT1B8V1NfRElTQUJMRUQKICAgIFBVU0hCVVRUT04gICAgICAiQnJvd3NlIixJRENfQlJPV1NFX1NGUEFUSCwyMTUsMTk1LDMwLDEzLFdTX0RJU0FCTEVECkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19XSU5FX1ZFUlNJT04gICAgICAgICJDVlMiCiAgICBJRFNfVEFCX0FQUExJQ0FUSU9OUyAgICAiQXBwbGljYXRpb25zIgogICAgSURTX1RBQl9ETExTICAgICAgICAgICAgIkxpYnJhcmllcyIKICAgIElEU19UQUJfRFJJVkVTICAgICAgICAgICJEcml2ZXMiCiAgICBJRFNfQ0hPT1NFX1BBVEggICAgICAgICAiU2VsZWN0IHRoZSB1bml4IHRhcmdldCBkaXJlY3RvcnksIHBsZWFzZS4iCiAgICBJRFNfSElERV9BRFZBTkNFRCAgICAgICAiSGlkZSBBZHZhbmNlZCIKICAgIElEU19TSE9XX0FEVkFOQ0VEICAgICAgICJTaG93IEFkdmFuY2VkIgogICAgSURTX05PVEhFTUUgICAgICAgICAgICAgIihObyBUaGVtZSkiCiAgICBJRFNfVEFCX0dSQVBISUNTICAgICAgICAiR3JhcGhpY3MiCiAgICBJRFNfVEFCX0RFU0tUT1BfSU5URUdSQVRJT04gIkRlc2t0b3AgSW50ZWdyYXRpb24iCiAgICBJRFNfVEFCX0FVRElPICAgICAgICAgICAiQXVkaW8iCiAgICBJRFNfVEFCX0FCT1VUICAgICAgICAgICAiQWJvdXQiCiAgICBJRFNfV0lORUNGR19USVRMRSAgICAgICAiV2luZSBjb25maWd1cmF0aW9uIgogICAgSURTX1dJTkVDRkdfVElUTEVfQVBQICAgIldpbmUgY29uZmlndXJhdGlvbiBmb3IgJXMiCiAgICBJRFNfVEhFTUVGSUxFICAgICAgICAgICAiVGhlbWUgZmlsZXMiCiAgICBJRFNfVEhFTUVGSUxFX1NFTEVDVCAgICAiU2VsZWN0IGEgdGhlbWUgZmlsZSIKICAgIElEU19BVURJT19NSVNTSU5HICAgICAgICJUaGVyZSBpcyBubyBhdWRpbyBkcml2ZXIgY3VycmVudGx5IHNwZWNpZmllZCBpbiB0aGUgcmVnaXN0cnkuXG5cbkEgcmVjb21tZW5kZWQgZHJpdmVyIGhhcyBiZWVuIHNlbGVjdGVkIGZvciB5b3UuXG5Zb3UgY2FuIHVzZSB0aGlzIGRyaXZlciBvciBzZWxlY3QgYW5vdGhlciBkcml2ZXIgaWYgYXZhaWxhYmxlLlxuXG5Zb3UgbXVzdCBjbGljayBBcHBseSBmb3IgdGhlIHNlbGVjdGlvbiB0byB0YWtlIGVmZmVjdC4iCiAgICBJRFNfU0hFTExfRk9MREVSICAgICAgICAiU2hlbGwgRm9sZGVyIgogICAgSURTX0xJTktTX1RPICAgICAgICAgICAgIkxpbmtzIHRvIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfRExMX1dBUk5JTkcgICAgICAgICAiQ2hhbmdpbmcgdGhlIGxvYWQgb3JkZXIgb2YgdGhpcyBsaWJyYXJ5IGlzIG5vdCByZWNvbW1lbmRlZC5cbkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkbyB0aGlzPyIKICAgIElEU19ETExfV0FSTklOR19DQVBUSU9OICJXYXJuaW5nOiBzeXN0ZW0gbGlicmFyeSIKICAgIElEU19ETExfTkFUSVZFICAgICAgICAgICJuYXRpdmUiCiAgICBJRFNfRExMX0JVSUxUSU4gICAgICAgICAiYnVpbHRpbiIKICAgIElEU19ETExfTkFUSVZFX0JVSUxUSU4gICJuYXRpdmUsIGJ1aWx0aW4iCiAgICBJRFNfRExMX0JVSUxUSU5fTkFUSVZFICAiYnVpbHRpbiwgbmF0aXZlIgogICAgSURTX0RMTF9ESVNBQkxFRCAgICAgICAgImRpc2FibGVkIgogICAgSURTX0RFRkFVTFRfU0VUVElOR1MgICAgIkRlZmF1bHQgU2V0dGluZ3MiCiAgICBJRFNfRVhFQ1VUQUJMRV9GSUxURVIgICAiV2luZSBQcm9ncmFtcyAoKi5leGUsKi5leGUuc28pXDAqLmV4ZTsqLmV4ZS5zb1wwIgogICAgSURTX1VTRV9HTE9CQUxfU0VUVElOR1MgIlVzZSBnbG9iYWwgc2V0dGluZ3MiCiAgICBJRFNfU0VMRUNUX0VYRUNVVEFCTEUgICAiU2VsZWN0IGFuIGV4ZWN1dGFibGUgZmlsZSIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX1NIQURFUl9NT0RFX0hBUkRXQVJFICAgICJIYXJkd2FyZSIKICAgIElEU19TSEFERVJfTU9ERV9OT05FICAgICAgICAiTm9uZSIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0RSSVZFX1VOS05PV04gICAgICAgICAgICJBdXRvZGV0ZWN0IgogICAgSURTX0RSSVZFX0ZJWEVEICAgICAgICAgICAgICJMb2NhbCBoYXJkIGRpc2siCiAgICBJRFNfRFJJVkVfUkVNT1RFICAgICAgICAgICAgIk5ldHdvcmsgc2hhcmUiCiAgICBJRFNfRFJJVkVfUkVNT1ZBQkxFICAgICAgICAgIkZsb3BweSBkaXNrIgogICAgSURTX0RSSVZFX0NEUk9NICAgICAgICAgICAgICJDRC1ST00iCiAgICBJRFNfRFJJVkVfTEVUVEVSU19FWENFRURFRCAgIllvdSBjYW5ub3QgYWRkIGFueSBtb3JlIGRyaXZlcy5cblxuRWFjaCBkcml2ZSBtdXN0IGhhdmUgYSBsZXR0ZXIsIGZyb20gQSB0byBaLCBzbyB5b3UgY2Fubm90IGhhdmUgbW9yZSB0aGFuIDI2IgogICAgSURTX1NZU1RFTV9EUklWRV9MQUJFTCAgICAgICJTeXN0ZW0gZHJpdmUiCiAgICBJRFNfQ09ORklSTV9ERUxFVEVfQyAgICAgICAgIkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgZHJpdmUgQz9cblxuTW9zdCBXaW5kb3dzIGFwcGxpY2F0aW9ucyBleHBlY3QgZHJpdmUgQyB0byBleGlzdCwgYW5kIHdpbGwgZGllIG1lc3NpbHkgaWYgaXQgZG9lc24ndC4gSWYgeW91IHByb2NlZWQgcmVtZW1iZXIgdG8gcmVjcmVhdGUgaXQhIgogICAgSURTX0NPTF9EUklWRUxFVFRFUiAgICAgICAgICJMZXR0ZXIiCiAgICBJRFNfQ09MX0RSSVZFTUFQUElORyAgICAgICAgIkRyaXZlIE1hcHBpbmciCiAgICBJRFNfTk9fRFJJVkVfQyAgICAgICAgICAgICAgIllvdSBkb24ndCBoYXZlIGEgZHJpdmUgQy4gVGhpcyBpcyBub3Qgc28gZ3JlYXQuXG5cblJlbWVtYmVyIHRvIGNsaWNrIJFBZGSSIGluIHRoZSBEcml2ZXMgdGFiIHRvIGNyZWF0ZSBvbmUhXG4iCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19BQ0NFTF9GVUxMICAgICAgICAgICAgICAiRnVsbCIKICAgIElEU19BQ0NFTF9TVEFOREFSRCAgICAgICAgICAiU3RhbmRhcmQiCiAgICBJRFNfQUNDRUxfQkFTSUMgICAgICAgICAgICAgIkJhc2ljIgogICAgSURTX0FDQ0VMX0VNVUxBVElPTiAgICAgICAgICJFbXVsYXRpb24iCiAgICBJRFNfRFJJVkVSX0FMU0EgICAgICAgICAgICAgIkFMU0EgRHJpdmVyIgogICAgSURTX0RSSVZFUl9FU09VTkQgICAgICAgICAgICJFc291bkQgRHJpdmVyIgogICAgSURTX0RSSVZFUl9PU1MgICAgICAgICAgICAgICJPU1MgRHJpdmVyIgogICAgSURTX0RSSVZFUl9KQUNLICAgICAgICAgICAgICJKQUNLIERyaXZlciIKICAgIElEU19EUklWRVJfTkFTICAgICAgICAgICAgICAiTkFTIERyaXZlciIKICAgIElEU19EUklWRVJfQVVESU9JTyAgICAgICAgICAiQXVkaW8gSU8gKFNvbGFyaXMpIERyaXZlciIKICAgIElEU19EUklWRVJfQ09SRUFVRElPICAgICAgICAiQ29yZUF1ZGlvIERyaXZlciIKICAgIElEU19PUEVOX0RSSVZFUl9FUlJPUiAgICAgICAiQ291bGRuJ3Qgb3BlbiAlcyEiCiAgICBJRFNfU09VTkREUklWRVJTICAgICAgICAgICAgIlNvdW5kIERyaXZlcnMiCiAgICBJRFNfREVWSUNFU19XQVZFT1VUICAgICAgICAgIldhdmUgT3V0IERldmljZXMiCiAgICBJRFNfREVWSUNFU19XQVZFSU4gICAgICAgICAgIldhdmUgSW4gRGV2aWNlcyIKICAgIElEU19ERVZJQ0VTX01JRElPVVQgICAgICAgICAiTUlESSBPdXQgRGV2aWNlcyIKICAgIElEU19ERVZJQ0VTX01JRElJTiAgICAgICAgICAiTUlESSBJbiBEZXZpY2VzIgogICAgSURTX0RFVklDRVNfQVVYICAgICAgICAgICAgICJBdXggRGV2aWNlcyIKICAgIElEU19ERVZJQ0VTX01JWEVSICAgICAgICAgICAiTWl4ZXIgRGV2aWNlcyIKICAgIElEU19VTkFWQUlMQUJMRV9EUklWRVIgICAgICAiRm91bmQgZHJpdmVyIGluIHJlZ2lzdHJ5IHRoYXQgaXMgbm90IGF2YWlsYWJsZSFcblxuUmVtb3ZlIJMlc5QgZnJvbSByZWdpc3RyeT8iCiAgICBJRFNfV0FSTklORyAgICAgICAgICAgICAgICAgIldhcm5pbmciCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEQ19TWVNQQVJBTVNfQlVUVE9OICAgICAgICAgICAgIkNvbnRyb2xzIEJhY2tncm91bmQiCiAgICBJRENfU1lTUEFSQU1TX0JVVFRPTl9URVhUICAgICAgICJDb250cm9scyBUZXh0IgogICAgSURDX1NZU1BBUkFNU19ERVNLVE9QICAgICAgICAgICAiRGVza3RvcCIKICAgIElEQ19TWVNQQVJBTVNfTUVOVSAgICAgICAgICAgICAgIk1lbnUgQmFja2dyb3VuZCIKICAgIElEQ19TWVNQQVJBTVNfTUVOVV9URVhUICAgICAgICAgIk1lbnUgVGV4dCIKICAgIElEQ19TWVNQQVJBTVNfU0NST0xMQkFSICAgICAgICAgIlNjcm9sbGJhciIKICAgIElEQ19TWVNQQVJBTVNfU0VMRUNUSU9OICAgICAgICAgIlNlbGVjdGlvbiBCYWNrZ3JvdW5kIgogICAgSURDX1NZU1BBUkFNU19TRUxFQ1RJT05fVEVYVCAgICAiU2VsZWN0aW9uIFRleHQiCiAgICBJRENfU1lTUEFSQU1TX1RPT0xUSVAgICAgICAgICAgICJUb29sVGlwIEJhY2tncm91bmQiCiAgICBJRENfU1lTUEFSQU1TX1RPT0xUSVBfVEVYVCAgICAgICJUb29sVGlwIFRleHQiCiAgICBJRENfU1lTUEFSQU1TX1dJTkRPVyAgICAgICAgICAgICJXaW5kb3cgQmFja2dyb3VuZCIKICAgIElEQ19TWVNQQVJBTVNfV0lORE9XX1RFWFQgICAgICAgIldpbmRvdyBUZXh0IgogICAgSURDX1NZU1BBUkFNU19BQ1RJVkVfVElUTEUgICAgICAiQWN0aXZlIFRpdGxlIEJhciIKICAgIElEQ19TWVNQQVJBTVNfQUNUSVZFX1RJVExFX1RFWFQgIkFjdGl2ZSBUaXRsZSBUZXh0IgogICAgSURDX1NZU1BBUkFNU19JTkFDVElWRV9USVRMRSAgICAiSW5hY3RpdmUgVGl0bGUgQmFyIgogICAgSURDX1NZU1BBUkFNU19JTkFDVElWRV9USVRMRV9URVhUICJJbmFjdGl2ZSBUaXRsZSBUZXh0IgpFTkQKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBFbmdsaXNoIG5ldXRyYWwgcmVzb3VyY2VzCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKTEFOR1VBR0UgTEFOR19FTkdMSVNILCBTVUJMQU5HX05FVVRSQUwKSUREX0dSQVBIQ0ZHIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIiBXaW5kb3cgc2V0dGluZ3MgIixJRENfU1RBVElDLDgsNCwyNDQsMTEwCgogICAgQ09OVFJPTAkgICAgIkFsbG93IERpcmVjdFggYXBwcyB0byBzdG9wIHRoZSBtb3VzZSBsZWF2aW5nIHRoZWlyIHdpbmRvdyIsSURDX0RYX01PVVNFX0dSQUIsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSwxNCwyMzAsOAogICAgQ09OVFJPTAkgICAgIkFsbG93IHRoZSB3aW5kb3cgbWFuYWdlciB0byBtYW5hZ2UgY3JlYXRlZCB3aW5kb3dzIixJRENfRU5BQkxFX01BTkFHRUQsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSwzNCwyMzAsOAogICAgCiAgICAvKiBGSVhNRTogdGhlIHdvcmRpbmcgb2YgdGhpcyBleHBsYW5hdGlvbiBjb3VsZCBiZSBhIGxvdCBiZXR0ZXIgKi8KICAgIExURVhUICAgICAgICAgICAiWW91IGNhbiBjaG9vc2UgdG8gZW11bGF0ZSBhIHdpbmRvd3MgZGVza3RvcCwgd2hlcmUgYWxsIHRoZSB3aW5kb3dzIGFyZSBjb25maW5lZCB0byBvbmUgJ3ZpcnR1YWwgc2NyZWVuJywgb3IgeW91IGNhbiBoYXZlIHRoZSB3aW5kb3dzIHBsYWNlZCBvbiB5b3VyIHN0YW5kYXJkIGRlc2t0b3AuIiwKICAgICAgICAgICAgICAgICAgICBJRENfU1RBVElDLDE1LDUyLDIyOCwyOAogICAgTFRFWFQgICAgICAgICAgICJEZXNrdG9wIHNpemU6IixJRENfREVTS1RPUF9TSVpFLDE1LDk0LDQ0LDgsV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiWCIsSURDX0RFU0tUT1BfQlksMTA4LDk0LDgsOCxXU19ESVNBQkxFRAogICAgQ09OVFJPTCAgICAgICAgICJFbXVsYXRlIGEgdmlydHVhbCBkZXNrdG9wIixJRENfRU5BQkxFX0RFU0tUT1AsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSw3OSwyMzAsMTAKCQkgICAgCiAgICBFRElUVEVYVCAgICAgICAgSURDX0RFU0tUT1BfV0lEVEgsNjQsOTQsNDAsMTIsRVNfQVVUT0hTQ1JPTEwgfCBFU19OVU1CRVIgfCBXU19ESVNBQkxFRAogICAgRURJVFRFWFQgICAgICAgIElEQ19ERVNLVE9QX0hFSUdIVCwxMTcsOTQsNDAsMTIsRVNfQVVUT0hTQ1JPTEwgfCBFU19OVU1CRVIgfCBXU19ESVNBQkxFRAoKICAgIEdST1VQQk9YICAgICAgICAiIERpcmVjdDNEICIsSURDX1NUQVRJQyw4LDExOSwyNDQsMTIwCgogICAgTFRFWFQJICAgICJWZXJ0ZXggU2hhZGVyIFN1cHBvcnQ6ICIsSURDX1NUQVRJQywxNSwxMjksODAsMzAKICAgIENPTUJPQk9YCSAgICBJRENfRDNEX1ZTSEFERVJfTU9ERSwxMDAsMTI3LDE0NSw3MCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKCiAgICBDT05UUk9MICAgICAgICAgIkFsbG93IFBpeGVsIFNoYWRlciAoaWYgc3VwcG9ydGVkIGJ5IGhhcmR3YXJlKSIsSURDX0QzRF9QU0hBREVSX01PREUsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSwxNDQsMjMwLDEwCkVORAoKSUREX0RFU0tUT1BfSU5URUdSQVRJT04gRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIEFwcGVhcmFuY2UgIixJRENfU1RBVElDLDgsNCwyNDQsMTA2CiAgICBMVEVYVCAgICAgICAgICAgIlRoZW1lOiIsSURDX1NUQVRJQywxNSwxNiwxMzAsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19USEVNRV9USEVNRUNPTUJPLDE1LDI0LDEzMCwxNCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIFBVU0hCVVRUT04gICAgICAiSW5zdGFsbCB0aGVtZS4uLiIsSURDX1RIRU1FX0lOU1RBTEwsMTUyLDIzLDkzLDE0CiAgICBMVEVYVCAgICAgICAgICAgIkNvbG9yOiIsSURDX1RIRU1FX0NPTE9SVEVYVCwxNSw0MCwxMTIsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19USEVNRV9DT0xPUkNPTUJPLDE1LDQ4LDExMiwxNCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiU2l6ZToiLElEQ19USEVNRV9TSVpFVEVYVCwxMzUsNDAsMTEwLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfVEhFTUVfU0laRUNPTUJPLDEzNSw0OCwxMTAsMTQsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIkl0ZW06IixJRENfU1RBVElDLDE1LDY0LDExMiw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX1NZU1BBUkFNX0NPTUJPLDE1LDc0LDExMiwxMjAsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QIHwgQ0JTX1NPUlQKICAgIExURVhUICAgICAgICAgICAiQ29sb3I6IixJRENfU1lTUEFSQU1fQ09MT1JfVEVYVCwxMzUsNjQsMjUsOCxXU19ESVNBQkxFRAogICAgUFVTSEJVVFRPTiAgICAgICIiLElEQ19TWVNQQVJBTV9DT0xPUiwxMzUsNzQsMjUsMTMsV1NfRElTQUJMRUQgfCBCU19PV05FUkRSQVcKICAgIExURVhUICAgICAgICAgICAiU2l6ZToiLElEQ19TWVNQQVJBTV9TSVpFX1RFWFQsMTY2LDY0LDMwLDgsV1NfRElTQUJMRUQKICAgIEVESVRURVhUICAgICAgICBJRENfU1lTUEFSQU1fU0laRSwxNjYsNzQsMjMsMTMsRVNfQVVUT0hTQ1JPTEwgfCBXU19UQUJTVE9QIHwgV1NfRElTQUJMRUQKICAgIENPTlRST0wgICAgICAgICAiIixJRENfU1lTUEFSQU1fU0laRV9VRCxVUERPV05fQ0xBU1MsVURTX1NFVEJVRERZSU5UIHwgV1NfRElTQUJMRUQsMTg3LDc0LDE1LDEzCiAgICBQVVNIQlVUVE9OICAgICAgIkZvbnQiLElEQ19TWVNQQVJBTV9GT05ULDIwOCw3NCwzNywxMyxXU19ESVNBQkxFRAogICAgR1JPVVBCT1ggICAgICAgICIgU2hlbGwgRm9sZGVyICIsSURDX1NUQVRJQyw4LDExNCwyNDQsMTAwCiAgICBDT05UUk9MICAgICAgICAgIkxpc3R2aWV3IixJRENfTElTVF9TRlBBVEhTLCJTeXNMaXN0VmlldzMyIixMVlNfUkVQT1JUIHwgTFZTX0FVVE9BUlJBTkdFIHwgTFZTX0FMSUdOTEVGVCB8CiAgICAgICAgICAgICAgICAgICAgIExWU19TSU5HTEVTRUwgfCBXU19CT1JERVIgfCBXU19UQUJTVE9QLCAxNSwxMjYsMjMwLDY0CiAgICBDT05UUk9MICAgICAgICAgIkxpbmsgdG86IixJRENfTElOS19TRlBBVEgsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YfFdTX1RBQlNUT1B8V1NfRElTQUJMRUQsMTUsMTk1LDUwLDEzCiAgICBFRElUVEVYVCAgICAgICAgIElEQ19FRElUX1NGUEFUSCw2NSwxOTUsMTQ1LDEzLEVTX0FVVE9IU0NST0xMfFdTX1RBQlNUT1B8V1NfRElTQUJMRUQKICAgIFBVU0hCVVRUT04gICAgICAiQnJvd3NlIixJRENfQlJPV1NFX1NGUEFUSCwyMTUsMTk1LDMwLDEzLFdTX0RJU0FCTEVECkVORAo=