LyoKICogV2luZUNmZyByZXNvdXJjZXMKICogRnJlbmNoIExhbmd1YWdlIFN1cHBvcnQKICoKICogQ29weXJpZ2h0IDIwMDUtMjAwNiBKb25hdGhhbiBFcm5zdAogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICoKICovCgpMQU5HVUFHRSBMQU5HX0ZSRU5DSCwgU1VCTEFOR19ORVVUUkFMCgpJRFJfV0lORUNGRyBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgICBQT1BVUCAiIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiQ29uZmlndXJlciIsIElEQ19BVURJT19DT05GSUdVUkUKICAgIEVORApFTkQKCklERF9BQk9VVENGRyBESUFMT0dFWCAwLCAwLCAyNjAsIDI3MApTVFlMRSBXU19DSElMRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgUEFDS0FHRV9TVFJJTkcsSURDX1NUQVRJQywxMTksMTcsMTIwLDgKICAgIENPTlRST0wgICAgICAgICBJREJfV0lORSxJRENfU1RBVElDLCJTdGF0aWMiLFNTX0JJVE1BUCAsMTUsMTcsMTU3LDExMQogICAgTFRFWFQgICAgICAgICAgICJodHRwOi8vd3d3LndpbmVocS5vcmcvIixJRENfU1RBVElDLDExOSwzMSwxMDYsOAogICAgTFRFWFQgICAgICAgICAgICJUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiIsCiAgICAgICAgICAgICAgICAgICAgSURDX1NUQVRJQywxMTksNDQsMTI0LDcyCkVORAoKSUREX0FQUENGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgUGFyYW3odHJlcyBkZXMgYXBwbGljYXRpb25zICIsSURDX1NUQVRJQywgOCw0LDI0NCwyNDAKICAgIExURVhUICAgICAgICAgICAiV2luZSBwZXV0IGltaXRlciBkaWZm6XJlbnRlcyB2ZXJzaW9ucyBkZSBXaW5kb3dzIHBvdXIgY2hhcXVlIGFwcGxpY2F0aW9uLiAgQ2V0IG9uZ2xldCBlc3QgbGnpIGF1eCBvbmdsZXRzIEJpYmxpb3Ro6HF1ZXMgZXQgQWZmaWNoYWdlIHBvdXIgdm91cyBwZXJtZXR0cmUgZGUgY2hhbmdlciBkZXMgcGFyYW3odHJlcyBnbG9iYXV4IG91IHBhciBhcHBsaWNhdGlvbiBkYW5zIGNlcyBvbmdsZXRzLiIsCiAgICAgICAgICAgICAgICAgICAgSURDX1NUQVRJQywxNSwyMCwyMjcsNDAKICAgIENPTlRST0wgICAgICAgICAiQXBwbGljYXRpb25zIixJRENfQVBQX0xJU1RWSUVXLCJTeXNMaXN0VmlldzMyIixXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgTFZTX0xJU1QgfCBMVlNfU0lOR0xFU0VMIHwgTFZTX1NIT1dTRUxBTFdBWVMsCiAgICAgICAgICAgICAgICAgICAgMTUsNjAsMjMwLDE0MAogICAgUFVTSEJVVFRPTgkgICAgIiZBam91dGVyIHVuZSBhcHBsaWNhdGlvbi4uLiIsSURDX0FQUF9BRERBUFAsIDcwLDIwNCw4NSwxNAogICAgUFVTSEJVVFRPTgkgICAgIiZFbmxldmVyIHVuZSBhcHBsaWNhdGlvbiIsSURDX0FQUF9SRU1PVkVBUFAsIDE2MCwyMDQsODUsMTQKICAgIExURVhUICAgICAgICAgICAiVmVyc2lvbiBkZSAmV2luZG93czoiLElEQ19TVEFUSUMsMTcsMjI0LDcwLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfV0lOVkVSLDk1LDIyMiwxNTEsNTYsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QICAgIApFTkQKCklERF9HUkFQSENGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgUGFyYW3odHJlcyBkZXMgZmVu6nRyZXMgIixJRENfU1RBVElDLDgsNCwyNDQsMTgwCgogICAgQ09OVFJPTAkgICAgIlBlcm1ldHRyZSBhdXggYXBwbGljYXRpb25zIERpcmVjdFggZCdlbXDqY2hlciBsYSBzb3VyaXMgZGUgcXVpdHRlciBsZXVyIGZlbup0cmUiLElEQ19EWF9NT1VTRV9HUkFCLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTUsMTQsMjMwLDgKICAgIENPTlRST0wJICAgICJBY3RpdmVyIGxhIGRvdWJsZSBtaXNlIGVuIHRhbXBvbiBkdSBidXJlYXUiLElEQ19ET1VCTEVfQlVGRkVSLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTUsMjQsMjMwLDgKICAgIExURVhUIAkgICAgIlNpIGxlcyBmZW7qdHJlcyBzb250IGfpcullcyBwYXIgdm90cmUgZ2VzdGlvbm5haXJlIGRlIGZlbup0cmVzLCBlbGxlcyBhdXJvbnQgZGVzIGJvcmR1cmVzIHN0YW5kYXJkcywgZWxsZXMgcmVzcGVjdGVyb25zIHZvdHJlIGJ1cmVhdSB2aXJ0dWVsIGV0IGFwcGFyYe50cm9udCBkYW5zIGxhIGxpc3RlIGRlcyBmZW7qdGVzLiBcblxuU2kgbGVzIGZlbup0cmVzIG5lIHNvbnQgcGFzIGfpcullcywgZWxsZXMgc2Vyb250IGTpY29ubmVjdOllcyBkZSB2b3RyZSBnZXN0aW9ubmFpcmUgZGUgZmVu6nRyZXMuIENlY2kgc2lnbmlmaWUgcXUnZWxsZSBuZSBzZXJvbnQgcGFzIHBhcmZhaXRlbWVudCBpbnTpZ3LpZXMg4CB2b3RyZSBidXJlYXUsIG1haXMgcXVlIGwn6W11bGF0aW9uIHNlcmEgcGx1cyBwculjaXNlIGNlIHF1aSBwZXJtZXQg4CBjZXJ0YWlucyBwcm9ncmFtbWVzIGRlIG1pZXV4IGZvbmN0aW9ubmVyLiIsCiAgICAJCSAgICBJRENfU1RBVElDLDE1LDM3LDIyOCw4MAogICAgQ09OVFJPTAkgICAgIlBlcm1ldHRyZSBhdSBnZXN0aW9ubmFpcmUgZGUgZmVu6nRyZXMgZGUgY29udHJvbGxlciBsZXMgZmVu6nRyZXMiLElEQ19FTkFCTEVfTUFOQUdFRCwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDEzMiwyMzAsOAogICAgCiAgICAvKiBGSVhNRTogdGhlIHdvcmRpbmcgb2YgdGhpcyBleHBsYW5hdGlvbiBjb3VsZCBiZSBhIGxvdCBiZXR0ZXIgKi8KICAgIExURVhUICAgICAgICAgICAiVm91cyBhdmV6IGxlIGNob2l4IGVudHJlIGwn6W11bGF0aW9uIGQndW4gYnVyZWF1IFdpbmRvd3Mgb/kgdG91dGVzIGxlcyBmZW7qdHJlcyBkZSB2b3MgcHJvZ3JhbW1lIHN3aW5kb3dzIHNvbnQgY29uZmlu6WVzIG91IGJpZW4gZCdhZmZpY2hlciBsZXMgZmVu6nRyZXMgZGUgY2VzIHByb2dyYW1tZXMgc3VyIHZvdHJlIGJ1cmVhdSBzdGFuZGFyZC4iLAogICAgICAgICAgICAgICAgICAgIElEQ19TVEFUSUMsMTUsMTQ2LDIyOCwyOAogICAgTFRFWFQgICAgICAgICAgICJUYWlsbGUgZHUgYnVyZWF1OiIsSURDX0RFU0tUT1BfU0laRSwxNSwxMTUsNjAsOCxXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICJYIixJRENfREVTS1RPUF9CWSwxMjksMTE1LDgsOCxXU19ESVNBQkxFRAogICAgQ09OVFJPTCAgICAgICAgICJFbXVsZXIgdW4gYnVyZWF1IHZpcnR1ZWwiLElEQ19FTkFCTEVfREVTS1RPUCwiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDEwNSwyMzAsMTAKCQkgICAgCiAgICBFRElUVEVYVCAgICAgICAgSURDX0RFU0tUT1BfV0lEVEgsODQsMTE1LDQwLDEyLEVTX0FVVE9IU0NST0xMIHwgRVNfTlVNQkVSIHwgV1NfRElTQUJMRUQKICAgIEVESVRURVhUICAgICAgICBJRENfREVTS1RPUF9IRUlHSFQsMTM3LDExNSw0MCwxMixFU19BVVRPSFNDUk9MTCB8IEVTX05VTUJFUiB8IFdTX0RJU0FCTEVECiAKICAgIEdST1VQQk9YICAgICAgICAiIERpcmVjdDNEICIsSURDX1NUQVRJQyw4LDE4OSwyNDQsNTAKCiAgICBMVEVYVAkgICAgIlN1cHBvcnQgZHUgVmVydGV4IFNoYWRlcjogIixJRENfU1RBVElDLDE1LDIwMCwxMDAsMzAKICAgIENPTUJPQk9YCSAgICBJRENfRDNEX1ZTSEFERVJfTU9ERSwxMTAsMjAwLDEwMCw3MCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKCiAgICBDT05UUk9MICAgICAgICAgIlBlcm1ldHRyZSBsZSBQaXhlbCBTaGFkZXIgKHNpIHN1cHBvcnTpIHBhciBsZSBtYXTpcmllbCkiLElEQ19EM0RfUFNIQURFUl9NT0RFLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTUsMjE1LDIzMCwxMApFTkQKCklERF9ETExDRkcgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIFN1cmNsYXNzYWdlIGRlIERMTHMgIixJRENfU1RBVElDLDgsNCwyNDQsMjQwCiAgICBMVEVYVCAgICAgICAgICAgIklsIGVzdCBwb3NzaWJsZSBkZSBzcOljaWZpZXIgc2kgV2luZSBkb2l0IHV0aWxpc2VyIHVuZSB2ZXJzaW9uIG5hdGl2ZSAoaW1wb3J06WUgZGVwdWlzIFdpbmRvd3Mgb3UgaW5zdGFsbOllIHBhciBsJ2FwcGxpY2F0aW9uKSBvdSBiaWVuIHVuZSB2ZXJzaW9uIGluY2x1ZSAoZGlzdHJpYnXpZSBhdmVjIFdpbmUpIGRlIGNoYXF1ZSBETEwgKER5bmFtaWMgTGluayBMaWJyYXJpZXMpIHV0aWxpc+llIHBhciB1biBwcm9ncmFtbWUuIgogICAgICAgICAgICAgICAgICAgICwgSURDX1NUQVRJQywxNiwxNiwyMjAsMzIKICAgIExURVhUICAgICAgICAgICAiJk5vdXZlYXUgc3VjbGFzc2FnZSBwb3VyOiIsSURDX1NUQVRJQywxNiw1OCwxMDAsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19ETExDT01CTywxNiw2OCwxNDAsMTQsQ0JTX0RST1BET1dOIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AgfCBDQlNfU09SVCB8IENCU19MT1dFUkNBU0UKICAgIFBVU0hCVVRUT04gICAgICAiJkFqb3V0ZXIgc3VyY2xhc3NhZ2UiLElEQ19ETExTX0FERERMTCwgMTY0LDY4LDgyLDEzLEJTX0RFRlBVU0hCVVRUT04gCiAgICBMVEVYVCAgICAgICAgICAgIlN1cmNsYXNzYWdlcyBleGlzdGFudHM6IixJRENfU1RBVElDLDE2LDg2LDEwMCw4CiAgICBMSVNUQk9YICAgICAgICAgSURDX0RMTFNfTElTVCwxNiw5NiwxNDAsMTQwLFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBXU19WU0NST0xMCiAgICBQVVNIQlVUVE9OICAgICAgIiZFZGl0ZXIgc3VyY2xhc3NhZ2UiLElEQ19ETExTX0VESVRETEwsMTY0LDk2LDgyLDE0CiAgICBQVVNIQlVUVE9OICAgICAgIiZTdXBwcmltZXIgc3VyY2xhc3NhZ2UiLElEQ19ETExTX1JFTU9WRURMTCwxNjQsMTE0LDgyLDE0IApFTkQKCklERF9MT0FET1JERVIgRElBTE9HIERJU0NBUkRBQkxFIDgwLCA5MCwgMTEwLCA5MgpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRWRpdCBPdmVycmlkZSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgT3JkcmUgZGUgY2hhcmdlbWVudCAiLElEQ19TVEFUSUMsOCw0LDk0LDY2CiAgICBDT05UUk9MICAgICAgICAgIiZJbmNsdWUgKFdpbmUpIixJRENfUkFEX0JVSUxUSU4sIkJ1dHRvbiIsIEJTX0FVVE9SQURJT0JVVFRPTiB8IFdTX0dST1VQLDE2LDE0LDc1LDEwCiAgICBDT05UUk9MICAgICAgICAgIiZOYXRpdmUgKFdpbmRvd3MpIixJRENfUkFEX05BVElWRSwiQnV0dG9uIiwgQlNfQVVUT1JBRElPQlVUVE9OLDE2LDI0LDc1LDEwCiAgICBDT05UUk9MICAgICAgICAgIiZJbmNsdWUgcHVpcyBuYXRpdmUiLElEQ19SQURfQlVJTFRJTl9OQVRJVkUsIkJ1dHRvbiIsIEJTX0FVVE9SQURJT0JVVFRPTiwxNiwzNCw3NSwxMAogICAgQ09OVFJPTCAgICAgICAgICJOYXRpJnZlIHB1aXMgaW5jbHVlIixJRENfUkFEX05BVElWRV9CVUlMVElOLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04sMTYsNDQsNzUsMTAKICAgIENPTlRST0wgICAgICAgICAiJkTpc2FjdGl26SIsSURDX1JBRF9ESVNBQkxFLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04sMTYsNTQsNzUsMTAKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssOCw3NCw0NSwxNCxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICJBbm51bGVyIixJRENBTkNFTCw1Nyw3NCw0NSwxNCxXU19HUk9VUApFTkQKCklERF9EUklWRUNGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgQXNzaWduYXRpb24gZGVzIGxlY3RldXJzICIsSURDX1NUQVRJQyw4LDQsMjQ0LDI0MAogICAgQ09OVFJPTCAgICAgICAgICJMaXN0dmlldyIsSURDX0xJU1RfRFJJVkVTLCJTeXNMaXN0VmlldzMyIixMVlNfUkVQT1JUIHwgTFZTX0FVVE9BUlJBTkdFIHwgTFZTX0FMSUdOTEVGVCB8CiAgICAgICAgICAgICAgICAgICAgTFZTX1NJTkdMRVNFTCB8IFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AsIDE1LDE4LDIzMiw3NgogICAgUFVTSEJVVFRPTiAgICAgICImQWpvdXRlci4uLiIsSURDX0JVVFRPTl9BREQsMTUsOTgsMzcsMTQKICAgIFBVU0hCVVRUT04gICAgICAiJlN1cHByaW1lciIsSURDX0JVVFRPTl9SRU1PVkUsNTYsOTgsMzcsMTQKICAgIFBVU0hCVVRUT04gICAgICAiQXV0byZk6XRlY3Rpb24uLi4iLElEQ19CVVRUT05fQVVUT0RFVEVDVCwxOTEsOTgsNTUsMTQKCiAgICAvKiBlZGl0aW5nIGRyaXZlIGRldGFpbHMgKi8KICAgIExURVhUICAgICAgICAgICAiJkNoZW1pbjoiLElEQ19TVEFUSUMsMTUsMTIzLDI0LDkgICAgCiAgICBFRElUVEVYVCAgICAgICAgSURDX0VESVRfUEFUSCw0MywxMjAsMTU4LDEzLEVTX0FVVE9IU0NST0xMIHwgV1NfVEFCU1RPUAogICAgUFVTSEJVVFRPTiAgICAgICImUGFyY291cmlyLi4uIixJRENfQlVUVE9OX0JST1dTRV9QQVRILDIwNiwxMjAsNDAsMTMKICAgIAogICAgTFRFWFQgICAgICAgICAgICImVHlwZToiLElEQ19TVEFUSUNfVFlQRSwxNSwxMzgsMjEsMTAKICAgIENPTUJPQk9YICAgICAgICBJRENfQ09NQk9fVFlQRSw0MywxMzUsNzcsNjAsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICAKICAgIExURVhUICAgICAgICAgICAiTGFiZWwgZXQgbnVt6XJvIGRlIHPpcmllIixJRENfTEFCRUxTRVJJQUxfU1RBVElDLDE1LDE1NSw5NSwxMAogICAgCiAgICBQVVNIQlVUVE9OICAgICAgIiZBZmZpY2hhZ2UgYXZhbmPpIixJRENfQlVUVE9OX1NIT1dfSElERV9BRFZBTkNFRCwxODYsMTM2LDYwLDEzCiAgICBDT05UUk9MICAgICAgICAgIkF1dG9k6XRlY3Rpb24gZGVwdWlzIGxlICZsZWN0ZXVyOiIsSURDX1JBRElPX0FVVE9ERVRFQ1QsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT1JBRElPQlVUVE9OLDE1LDE2Niw5MywxMAogICAgRURJVFRFWFQgICAgICAgIElEQ19FRElUX0RFVklDRSwyNywxNzYsMTc0LDEzLEVTX0FVVE9IU0NST0xMCiAgICBQVVNIQlVUVE9OICAgICAgIlBhJnJjb3VyaXIuLi4iLElEQ19CVVRUT05fQlJPV1NFX0RFVklDRSwyMDYsMTc2LDQwLDEzCiAgICBDT05UUk9MICAgICAgICAgIkFzc2lnbmVyICZtYW51ZWxsZW1lbnQ6IixJRENfUkFESU9fQVNTSUdOLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9SQURJT0JVVFRPTiwxNSwxOTUsNjksMTAKCiAgICBMVEVYVCAgICAgICAgICAgIiZMYWJlbDoiLElEQ19TVEFUSUNfTEFCRUwsMzMsMjA4LDI5LDEyCiAgICBFRElUVEVYVCAgICAgICAgSURDX0VESVRfTEFCRUwsNjMsMjA1LDc4LDEzLEVTX0FVVE9IU0NST0xMIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJOsCBkZSBz6XJpZToiLElEQ19TVEFUSUNfU0VSSUFMLDMzLDIyNSwyOSwxMgogICAgRURJVFRFWFQgICAgICAgIElEQ19FRElUX1NFUklBTCw2MywyMjEsNzgsMTMsRVNfQVVUT0hTQ1JPTEwgfCBXU19UQUJTVE9QCgogICAgQ09OVFJPTCAgICAgICAgICJNb250cmVyIGxlcyBmaWNoaWVycyBjYWNo6XMiLElEQ19TSE9XX0RPVF9GSUxFUywiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDgsMjYwLDIzMCw4ICAgICAgICAgICAgICAgICAgICAKRU5ECgpJRERfQVVESU9DRkcgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIFPpbGVjdGlvbiBkdSBwaWxvdGUgIixJRENfU1RBVElDLDgsNCwyNDQsMTk1CiAgICBMVEVYVCAgICAgICAgICAgIlPpbGVjdGlvbm5leiB1biBwaWxvdGUgYXVkaW8gZW4gY29jaGFudCBsYSBjYXNlIGVuIHJlZ2FyZCBkdSBwaWxvdGUgZOlzaXLpLiAgROlzYWN0aXZleiBsZSBzb24gZW4gbmUgc+lsZWN0aW9ubmFudCBhdWN1biBwb2xvdGUuIExhIHPpbGVjdGlvbiBkZSBwaWxvdGVzIG11bHRpcGxlcyBuJ2VzdCBwYXMgcmVjb21tYW5k6S4gQ29uZmlndXJleiBsZSBwaWxvdGUgZW4gZWZmZWN0dWFudCB1biBjbGljayBkcm9pdCBkZXNzdXMuIixJRENfU1RBVElDLDE1LDIwLDIyNyw2MAogICAgQ09OVFJPTCAgICAgICAgICJNYXTpcmllbCIsSURDX0FVRElPX1RSRUUsIlN5c1RyZWVWaWV3MzIiLFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AsMTUsNjAsMTQwLDEzMCAKICAgIFBVU0hCVVRUT04JICAgICJQYW5uZWF1IGRlIGNvbmZpZ3VyYXRpb24iLElEQ19BVURJT19DT05UUk9MX1BBTkVMLDE2MCw2MCw4NiwxNAogICAgR1JPVVBCT1ggICAgICAgICIgRGlyZWN0U291bmQgIixJRENfU1RBVElDLDgsMjA1LDI0NCw2MAogICAgTFRFWFQJICAgICJBY2PpbOlyYXRpb24gbWF06XJpZWxsZTogIixJRENfU1RBVElDLDE1LDIxNSw5MCwxMAogICAgQ09NQk9CT1gJICAgIElEQ19EU09VTkRfSFdfQUNDRUwsMTAwLDIxMyw1MCw3MCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiVGF1eCBkJ+ljaGFudGlsbG9uYWdlIChk6WZhdXQpOiIsSURDX1NUQVRJQywxNSwyMzIsMTMwLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfRFNPVU5EX1JBVEVTLDExNywyMzAsMzgsNzYsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIkJpdHMgcGFyIOljaGFudGlsbG9uOiIsSURDX1NUQVRJQywxNjAsMjMyLDgwLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfRFNPVU5EX0JJVFMsMjIzLDIzMCwyNSw1NixDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIENPTlRST0wgICAgICAgICAiRW11bGF0aW9uIHBpbG90ZSIsSURDX0RTT1VORF9EUlZfRU1VTCwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDI1MCwyMzAsMTAKRU5ECgpJRERfREVTS1RPUF9JTlRFR1JBVElPTiBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgQXBwYXJlbmNlICIsSURDX1NUQVRJQyw4LDQsMjQ0LDEwNgogICAgTFRFWFQgICAgICAgICAgICJUaOhtZToiLElEQ19TVEFUSUMsMTUsMTYsMjMwLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfVEhFTUVfVEhFTUVDT01CTywxNSwyNCwyMzAsMTQsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBQVVNIQlVUVE9OICAgICAgIkluc3RhbGxlciB1biB0aOhtZS4uLiIsSURDX1RIRU1FX0lOU1RBTEwsMTUyLDM4LDkzLDE0CiAgICBMVEVYVCAgICAgICAgICAgIkNvdWxldXI6IixJRENfVEhFTUVfQ09MT1JURVhULDE1LDU0LDIzMCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX1RIRU1FX0NPTE9SQ09NQk8sMTUsNjIsMjMwLDE0LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJUYWlsbGU6IixJRENfVEhFTUVfU0laRVRFWFQsMTUsODAsMjMwLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfVEhFTUVfU0laRUNPTUJPLDE1LDg4LDIzMCwxNCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIEdST1VQQk9YICAgICAgICAiIERvc3NpZXJzIHN5c3TobWUgIixJRENfU1RBVElDLDgsMTE0LDI0NCwxMDAKICAgIENPTlRST0wgICAgICAgICAiTGlzdHZpZXciLElEQ19MSVNUX1NGUEFUSFMsIlN5c0xpc3RWaWV3MzIiLExWU19SRVBPUlQgfCBMVlNfQVVUT0FSUkFOR0UgfCBMVlNfQUxJR05MRUZUIHwKICAgICAgICAgICAgICAgICAgICAgTFZTX1NJTkdMRVNFTCB8IFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AsIDE1LDEyNiwyMzAsNjQKICAgIENPTlRST0wgICAgICAgICAiTGnpIOA6IixJRENfTElOS19TRlBBVEgsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YfFdTX1RBQlNUT1B8V1NfRElTQUJMRUQsMTUsMTk1LDUwLDEzCiAgICBFRElUVEVYVCAgICAgICAgIElEQ19FRElUX1NGUEFUSCw2NSwxOTUsMTQ1LDEzLEVTX0FVVE9IU0NST0xMfFdTX1RBQlNUT1B8V1NfRElTQUJMRUQKICAgIFBVU0hCVVRUT04gICAgICAiUGFyY291cmlyIixJRENfQlJPV1NFX1NGUEFUSCwyMTUsMTk1LDMwLDEzLFdTX0RJU0FCTEVECkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19XSU5FX1ZFUlNJT04gICAgICAgICJDVlMiCiAgICBJRFNfVEFCX0FQUExJQ0FUSU9OUyAgICAiQXBwbGljYXRpb25zIgogICAgSURTX1RBQl9ETExTICAgICAgICAgICAgIkJpYmxpb3Ro6HF1ZXMiCiAgICBJRFNfVEFCX0RSSVZFUyAgICAgICAgICAiTGVjdGV1cnMiCiAgICBJRFNfQ0hPT1NFX1BBVEggICAgICAgICAiVmV1aWxsZXogc+lsZWN0aW9ubmVyIGxlIHLpcGVydG9pcmUgZGUgZGVzdGluYXRpb24uIgogICAgSURTX0hJREVfQURWQU5DRUQgICAgICAgIkNhY2hlciBhdmFuY+lzIgogICAgSURTX1NIT1dfQURWQU5DRUQgICAgICAgIk1vbnRyZXIgYXZhbmPpcyIKICAgIElEU19OT1RIRU1FICAgICAgICAgICAgICIoUGFzIGRlIHRo6G1lKSIKICAgIElEU19UQUJfR1JBUEhJQ1MgICAgICAgICJBZmZpY2hhZ2UiCiAgICBJRFNfVEFCX0RFU0tUT1BfSU5URUdSQVRJT04gIkludOlncmF0aW9uIGF2ZWMgbGUgYnVyZWF1IgogICAgSURTX1RBQl9BVURJTyAgICAgICAgICAgIkF1ZGlvIgogICAgSURTX1RBQl9BQk9VVCAgICAgICAgICAgIkEgcHJvcG9zIgogICAgSURTX1dJTkVDRkdfVElUTEUgICAgICAgIkNvbmZpZ3VyYXRpb24gZGUgV2luZSIKICAgIElEU19XSU5FQ0ZHX1RJVExFX0FQUCAgICJDb25maWd1cmF0aW9uIGRlIFdpbmUgcG91ciAlcyIKICAgIElEU19USEVNRUZJTEUgICAgICAgICAgICJGaWNoaWVycyBkZSB0aOhtZXMiCiAgICBJRFNfVEhFTUVGSUxFX1NFTEVDVCAgICAiU+lsZWN0aW9ubmV6IHVuIGZpY2hpZXIgZGUgdGjobWUiCiAgICBJRFNfQVVESU9fTUlTU0lORyAgICAgICAiQXVjdW4gcGlsb3RlIGF1ZGlvIG4nZXN0IGFjdHVlbGxlbWVudCBk6WZpbmkuXG5cbkxlIHBpbG90ZSByZWNvbW1hbmTpIGEg6XTpIHPpbGVjdGlvbm7pIHBvdXIgdm91cy5cblZvdXMgcG91dmV6IHV0aWxpc2VyIGNlIHBpbG90ZSBvdSBlbiBz6WxlY3Rpb25uZXIgdW4gYXV0cmUgc2kgZGlzcG9uaWJsZS5cblxuVm91cyBkZXZleiBjbGlxdWVyIHN1ciBBcHBsaXF1ZXIgcG91ciBxdWUgbGEgc+lsZWN0aW9uIHByZW5uZSBlZmZldC4iCiAgICBJRFNfU0hFTExfRk9MREVSICAgICAgICAiRG9zc2llciBzeXN06G1lIgogICAgSURTX0xJTktTX1RPICAgICAgICAgICAgIkxp6SDgIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfRExMX1dBUk5JTkcgICAgICAgICAiTGEgbW9kaWZpY2F0aW9uIGRlIGwnb3JkcmUgZGUgY2hhcmdlbWVudCBkZSBjZXR0ZSBiaWJsaW90aOhxdWUgbidlc3QgcGFzIHJlY29tbWFuZOkuXG7KdGVzLXZvdXMgc/tyIGRlIHZvdWxvaXIgbGUgZmFpcmUgPyIKICAgIElEU19ETExfV0FSTklOR19DQVBUSU9OICJBdHRlbnRpb246IGJpYmxpb3Ro6HF1ZSBzeXN06G1lIgogICAgSURTX0RMTF9OQVRJVkUgICAgICAgICAgIm5hdGl2ZSIKICAgIElEU19ETExfQlVJTFRJTiAgICAgICAgICJpbmNsdWUiCiAgICBJRFNfRExMX05BVElWRV9CVUlMVElOICAibmF0aXZlLCBpbmNsdWUiCiAgICBJRFNfRExMX0JVSUxUSU5fTkFUSVZFICAiaW5jbHVlLCBuYXRpdmUiCiAgICBJRFNfRExMX0RJU0FCTEVEICAgICAgICAiZOlzYWN0aXbpZSIKRU5ECg==