LyoKICogV2luZUNmZyByZXNvdXJjZXMKICogRmlubmlzaCBMYW5ndWFnZSBTdXBwb3J0CiAqCiAqIENvcHlyaWdodCAyMDA1IEtpbW1vIE15bGx5dmlydGEKICogQ29weXJpZ2h0IDIwMDYgQW5zc2kgSGFubnVsYQogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICoKICovCgpMQU5HVUFHRSBMQU5HX0ZJTk5JU0gsIFNVQkxBTkdfREVGQVVMVAoKSURSX1dJTkVDRkcgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogICAgUE9QVVAgIiIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIkFzZXR1a3NldCIsIElEQ19BVURJT19DT05GSUdVUkUKICAgIEVORApFTkQKCklERF9BQk9VVENGRyBESUFMT0dFWCAwLCAwLCAyNjAsIDI3MApTVFlMRSBXU19DSElMRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgUEFDS0FHRV9TVFJJTkcsSURDX1NUQVRJQywxMTksMTcsMTIwLDgKICAgIENPTlRST0wgICAgICAgICBJREJfV0lORSxJRENfU1RBVElDLCJTdGF0aWMiLFNTX0JJVE1BUCAsMTUsMTcsMTU3LDExMQogICAgTFRFWFQgICAgICAgICAgICJodHRwOi8vd3d3LndpbmVocS5vcmcvIixJRENfU1RBVElDLDExOSwzMSwxMDYsOAogICAgTFRFWFQgICAgICAgICAgICJUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiIsCiAgICAgICAgICAgICAgICAgICAgSURDX1NUQVRJQywxMTksNDQsMTI0LDcyCkVORAoKSUREX0FQUENGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgU292ZWxsdXN0ZW4gYXNldHVrc2V0ICIsSURDX1NUQVRJQywgOCw0LDI0NCwyNDAKICAgIExURVhUICAgICAgICAgICAiV2luZSB2b2kgauRsaml0ZWxs5CBXaW5kb3dzaW4gZXJpIHZlcnNpb2l0YSBlcmkgc292ZWxsdWtzaWxsZS4gVORt5CB25GxpbGVodGkgdG9pbWlpIHloZGVzc+QgS2lyamFzdG90LSBqYSBHcmFmaWlra2EtduRsaWxlaHRpZW4ga2Fuc3NhIHNhbGxpZW4gc292ZWxsdXNrb2h0YWlzZXQgYXNldHVrc2V0LiIsCiAgICAgICAgICAgICAgICAgICAgSURDX1NUQVRJQywxNSwyMCwyMjcsMzAKICAgIENPTlRST0wgICAgICAgICAiU292ZWxsdWtzZXQiLElEQ19BUFBfTElTVFZJRVcsIlN5c0xpc3RWaWV3MzIiLFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBMVlNfTElTVCB8IExWU19TSU5HTEVTRUwgfCBMVlNfU0hPV1NFTEFMV0FZUywKICAgICAgICAgICAgICAgICAgICAxNSw1MCwyMzAsMTUwCiAgICBQVVNIQlVUVE9OCSAgICAiJkxpc+TkIHNvdmVsbHVzLi4uIixJRENfQVBQX0FEREFQUCwgOTAsMjA0LDc1LDE0CiAgICBQVVNIQlVUVE9OCSAgICAiJlBvaXN0YSBzb3ZlbGx1cyIsSURDX0FQUF9SRU1PVkVBUFAsIDE3MCwyMDQsNzUsMTQKICAgIExURVhUICAgICAgICAgICAiJldpbmRvd3NpbiB2ZXJzaW86IixJRENfU1RBVElDLDE3LDIyNiw1OCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX1dJTlZFUiw4MywyMjQsMTYzLDU2LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUCAgICAKRU5ECgpJRERfR1JBUEhDRkcgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIElra3VuYS1hc2V0dWtzZXQgIixJRENfU1RBVElDLDgsNSwyNDQsMTgwCgogICAgQ09OVFJPTAkgICAgIiZTYWxsaSBEaXJlY3RYIC1zb3ZlbGx1c3RlbiBlc3Tk5CBrdXJzb3JpbiBwb2lzdHVtaW5lbiBpa2t1bmFzdGEiLElEQ19EWF9NT1VTRV9HUkFCLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTUsMTUsMjMwLDgKICAgIExURVhUIAkgICAgIkt1biBpa2t1bmFvaGplbG1hIGhhbGxpdHNlZSBpa2t1bm9pdGEsIG5paWxs5CBvbiBub3JtYWFsaXQgcmV1bmF0LCBuZSBub3VkYXR0YXZhdCBu5GVubuRpc3R59nD2eXRp5CBqYSBu5Gt5duR0IGlra3VuYWxpc3Rhc3NhLlxuXG5NaWvkbGkgaWtrdW5hb2hqZWxtYSBlaSBoYWxsaXRzZSBpa2t1bm9pdGEsIGlra3VuYXQgZWl25HQgaW50ZWdyb2lkdSB5aHTkIGh5dmluIHR59nD2eXTk5HNpLCBtdXR0YSBlbXVsYWF0aW8gb24gdGFya2VtcGFhIGphIHNlIHZvaSBhdXR0YWEgam9pdGFpbiBzb3ZlbGx1a3NpYSB0b2ltaW1hYW4gcGFyZW1taW4uIiwKICAgIElEQ19TVEFUSUMsMTUsMzgsMjI4LDgwCiAgICBDT05UUk9MCSAgICAiU2FsbGkgaWtrdW5hb2hqZWxtYW4gaGFsbGl0YSBpa2t1bm9pdGEiLElEQ19FTkFCTEVfTUFOQUdFRCwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDExMiwyMzAsOAoKICAgIExURVhUICAgICAgICAgICAiV2luZSB2b2kgZW11bG9pZGEgV2luZG93c2luIHR59nD2eXTk5Cwgam9zc2Ega2Fpa2tpIGlra3VuYXQgb3ZhdCB5aGRlc3PkIHZpcnR1YWFsaXNlc3NhIG7keXT2c3PkLCB0YWkgam9zc2Ega2Fpa2tpIGlra3VuYXQgb3ZhdCB0efZw9nlk5Gxs5HNpIGVyaWxsaXNpbuQuIiwKICAgICAgICAgICAgICAgICAgICBJRENfU1RBVElDLDE1LDEyNiwyMjgsMjgKICAgIExURVhUICAgICAgICAgICAiVHn2cPZ5ZORuIGtva286IixJRENfREVTS1RPUF9TSVpFLDE1LDE2OCw0NCw4LFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIlgiLElEQ19ERVNLVE9QX0JZLDEwOCwxNjgsOCw4LFdTX0RJU0FCTEVECiAgICBDT05UUk9MICAgICAgICAgIiZFbXVsb2kgdmlydHVhYWxpc3RhIHT2eXD2eXTk5CIsSURDX0VOQUJMRV9ERVNLVE9QLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTUsMTUzLDIzMCwxMAoJCSAgICAKICAgIEVESVRURVhUICAgICAgICBJRENfREVTS1RPUF9XSURUSCw2NCwxNjgsNDAsMTIsRVNfQVVUT0hTQ1JPTEwgfCBFU19OVU1CRVIgfCBXU19ESVNBQkxFRAogICAgRURJVFRFWFQgICAgICAgIElEQ19ERVNLVE9QX0hFSUdIVCwxMTcsMTY4LDQwLDEyLEVTX0FVVE9IU0NST0xMIHwgRVNfTlVNQkVSIHwgV1NfRElTQUJMRUQKCiAgICBHUk9VUEJPWCAgICAgICAgIiBEaXJlY3QzRCAiLElEQ19TVEFUSUMsOCwxOTAsMjQ0LDUwCgogICAgTFRFWFQJICAgICJWZXJ0ZXggU2hhZGVyIC10dWtpOiAiLElEQ19TVEFUSUMsMTUsMjAwLDgwLDMwCiAgICBDT01CT0JPWAkgICAgSURDX0QzRF9WU0hBREVSX01PREUsMTAwLDE5OCwxNTAsNzAsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCgogICAgQ09OVFJPTCAgICAgICAgICJTYWxsaSAmUGl4ZWwgU2hhZGVyOm4ga+R5dHT2IGxhaXR0ZWlzdG9uIHR1a2llc3NhIixJRENfRDNEX1BTSEFERVJfTU9ERSwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDIxNywyMzAsMTAKICAgIEdST1VQQk9YICAgICAgICAiIFNjcmVlbiBSZXNvbHV0aW9uICIsSURDX1NUQVRJQyw4LDI0MiwyNDQsMjUKICAgIENPTlRST0wgICAgICAgICAiIiwgSURDX1JFU19UUkFDS0JBUiwgIm1zY3Rsc190cmFja2JhcjMyIixXU19UQUJTVE9QLDEyLDI1MCwxODcsMTUKICAgIEVESVRURVhUICAgICAgICBJRENfUkVTX0RQSUVESVQsMjA0LDI1MCwyMywxMyxFU19OVU1CRVJ8V1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJkcGkiLElEQ19TVEFUSUMsMjM1LDI1MiwxMCw4CkVORAoKSUREX0RMTENGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgRExMLWtpcmphc3RvamVuIG3k5HJpdHlrc2V0ICIsSURDX1NUQVRJQyw4LDQsMjQ0LDI0MAogICAgTFRFWFQgICAgICAgICAgICJEeW5hYW1pc2VzdGkgbGFkYXR0YXZhdCBraXJqYXN0b3QgKERMTCkgdm9pZGFhbiBt5ORyaXRlbGzkIHlrc2l0ZWxsZW4gb2xlbWFhbiBqb2tvIFdpbmVuIHRhcmpvYW1pYSAoc2lz5ORucmFrZW5uZXR0dWphKSB0YWkgV2luZG93c2luIG5hdGlpdmVqYSBraXJqYXN0b2phIChXaW5kb3dzLWFzZW5udWtzZXN0YSwgdGFpIHNvdmVsbHVzdGVuIHRhcmpvYW1pYSkuIgogICAgICAgICAgICAgICAgICAgICxJRENfU1RBVElDLDE2LDE2LDIyMCwzMgogICAgTFRFWFQgICAgICAgICAgICJVdXNpIG3k5HJpdHlzIGtpcmphc3RvbGxlOiIsSURDX1NUQVRJQywxNiw1OCwxMDAsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19ETExDT01CTywxNiw2OCwxNDAsMTQsQ0JTX0RST1BET1dOIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AgfCBDQlNfU09SVCB8IENCU19MT1dFUkNBU0UKICAgIFBVU0hCVVRUT04gICAgICAiJkxpc+TkIixJRENfRExMU19BRERETEwsIDE2NCw2OCw4MiwxMyxCU19ERUZQVVNIQlVUVE9OIAogICAgTFRFWFQgICAgICAgICAgICJPbGVtYXNzYW9sZXZhdCBt5ORyaXR5a3NldDoiLElEQ19TVEFUSUMsMTYsODYsMTAwLDgKICAgIExJU1RCT1ggICAgICAgICBJRENfRExMU19MSVNULDE2LDk2LDE0MCwxNDAsV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IFdTX1ZTQ1JPTEwKICAgIFBVU0hCVVRUT04gICAgICAiJk11b2trYWEiLElEQ19ETExTX0VESVRETEwsMTY0LDk2LDgyLDE0CiAgICBQVVNIQlVUVE9OICAgICAgIiZQb2lzdGEiLElEQ19ETExTX1JFTU9WRURMTCwxNjQsMTE0LDgyLDE0IApFTkQKCklERF9MT0FET1JERVIgRElBTE9HIERJU0NBUkRBQkxFIDgwLCA5MCwgMTEwLCA5MgpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRWRpdCBPdmVycmlkZSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgTGF0YWFtaXNq5HJqZXN0eXMgIixJRENfU1RBVElDLDgsNCw5NCw2NgogICAgQ09OVFJPTCAgICAgICAgICImU2lz5GluZW4gKFdpbmUpIixJRENfUkFEX0JVSUxUSU4sIkJ1dHRvbiIsIEJTX0FVVE9SQURJT0JVVFRPTiB8IFdTX0dST1VQLDE2LDE0LDc1LDEwCiAgICBDT05UUk9MICAgICAgICAgIiZOYXRpaXZpIChXaW5kb3dzKSIsSURDX1JBRF9OQVRJVkUsIkJ1dHRvbiIsIEJTX0FVVE9SQURJT0JVVFRPTiwxNiwyNCw3NSwxMAogICAgQ09OVFJPTCAgICAgICAgICJTJmlz5GluZW4sIHNpdHRlbiBuYXRpaXZpIixJRENfUkFEX0JVSUxUSU5fTkFUSVZFLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04sMTYsMzQsNzUsMTAKICAgIENPTlRST0wgICAgICAgICAiTmF0aWl2aSwgc2l0dGVuIHNpc+RpbmVuIixJRENfUkFEX05BVElWRV9CVUlMVElOLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04sMTYsNDQsNzUsMTAKICAgIENPTlRST0wgICAgICAgICAiJlBvaXN0YSBr5Hl09nN05CIsSURDX1JBRF9ESVNBQkxFLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04sMTYsNTQsNzUsMTAKICAgIERFRlBVU0hCVVRUT04gICAiSHl25GtzeSIsSURPSyw4LDc0LDQ1LDE0LFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIlBlcnV1dGEiLElEQ0FOQ0VMLDU3LDc0LDQ1LDE0LFdTX0dST1VQCkVORAoKSUREX0RSSVZFQ0ZHIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIiBBc2VtaWVuIG1hcHBhdWtzZXQgIixJRENfU1RBVElDLDgsNCwyNDQsMjQwCiAgICBDT05UUk9MICAgICAgICAgIkxpc3R2aWV3IixJRENfTElTVF9EUklWRVMsIlN5c0xpc3RWaWV3MzIiLExWU19SRVBPUlQgfCBMVlNfQVVUT0FSUkFOR0UgfCBMVlNfQUxJR05MRUZUIHwKICAgICAgICAgICAgICAgICAgICBMVlNfU0lOR0xFU0VMIHwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCwgMTUsMTgsMjMyLDc2CiAgICBQVVNIQlVUVE9OICAgICAgIiZMaXPk5C4uLiIsSURDX0JVVFRPTl9BREQsMTUsOTgsMzcsMTQKICAgIFBVU0hCVVRUT04gICAgICAiJlBvaXN0YSIsSURDX0JVVFRPTl9SRU1PVkUsNTYsOTgsMzcsMTQKICAgIFBVU0hCVVRUT04gICAgICAiJkhhZSBhdXRvbWFhdHRpc2VzdGkiLElEQ19CVVRUT05fQVVUT0RFVEVDVCwxNzcsOTgsNjksMTQKCiAgICAvKiBlZGl0aW5nIGRyaXZlIGRldGFpbHMgKi8KICAgIExURVhUICAgICAgICAgICAiJlBvbGt1OiIsSURDX1NUQVRJQywxNSwxMjMsMjUsOSAgICAKICAgIEVESVRURVhUICAgICAgICBJRENfRURJVF9QQVRILDQxLDEyMCwxNjAsMTMsRVNfQVVUT0hTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBQVVNIQlVUVE9OICAgICAgIiZTZWxhYS4uLiIsSURDX0JVVFRPTl9CUk9XU0VfUEFUSCwyMDYsMTIwLDQwLDEzCiAgICAKICAgIExURVhUICAgICAgICAgICAiJlR5eXBwaToiLElEQ19TVEFUSUNfVFlQRSwxNSwxMzgsMjUsMTAKICAgIENPTUJPQk9YICAgICAgICBJRENfQ09NQk9fVFlQRSw0MSwxMzUsNzcsNjAsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICAKICAgIExURVhUICAgICAgICAgICAiTmltaSBqYSBzYXJqYW51bWVybyIsSURDX0xBQkVMU0VSSUFMX1NUQVRJQywxNSwxNTUsOTUsMTAKICAgIAogICAgUFVTSEJVVFRPTiAgICAgICImTuR5dOQgbGlz5GFzZXR1a3NldCIsSURDX0JVVFRPTl9TSE9XX0hJREVfQURWQU5DRUQsMTc3LDEzNiw2OSwxMwogICAgQ09OVFJPTCAgICAgICAgICImSGFlIGF1dG9tYWF0dGlzZXN0aSBsYWl0dGVlbiBtdWthYW46IixJRENfUkFESU9fQVVUT0RFVEVDVCwiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPUkFESU9CVVRUT04sMTUsMTY2LDE1MCwxMAogICAgRURJVFRFWFQgICAgICAgIElEQ19FRElUX0RFVklDRSwyNywxNzYsMTc0LDEzLEVTX0FVVE9IU0NST0xMCiAgICBQVVNIQlVUVE9OICAgICAgIiZTZWxhYS4uLiIsSURDX0JVVFRPTl9CUk9XU0VfREVWSUNFLDIwNiwxNzYsNDAsMTMKICAgIENPTlRST0wgICAgICAgICAiJk3k5HJpdOQ6IixJRENfUkFESU9fQVNTSUdOLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9SQURJT0JVVFRPTiwxNSwxOTUsNjksMTAKCiAgICBMVEVYVCAgICAgICAgICAgIiZOaW1pOiIsSURDX1NUQVRJQ19MQUJFTCwzMywyMDgsNDksMTIKICAgIEVESVRURVhUICAgICAgICBJRENfRURJVF9MQUJFTCw4MywyMDUsNzgsMTMsRVNfQVVUT0hTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIiZTYXJqYW51bWVybzoiLElEQ19TVEFUSUNfU0VSSUFMLDMzLDIyNSw0OSwxMgogICAgRURJVFRFWFQgICAgICAgIElEQ19FRElUX1NFUklBTCw4MywyMjEsNzgsMTMsRVNfQVVUT0hTQ1JPTEwgfCBXU19UQUJTVE9QCgogICAgQ09OVFJPTCAgICAgICAgICJO5Hl05CBwJmlzdGV0aWVkb3N0b3QiLElEQ19TSE9XX0RPVF9GSUxFUywiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDgsMjYwLDIzMCw4CkVORAoKSUREX0FVRElPQ0ZHIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIiBBanVyaW4gdmFsaW50YSAiLElEQ19TVEFUSUMsOCw0LDI0NCwxOTUKICAgIExURVhUCSAgICAixORuaWFqdXJpOiAiLElEQ19TVEFUSUMsMTUsMjAsMjI3LDMwCiAgICBDT05UUk9MICAgICAgICAgIkRldmljZXMiLElEQ19BVURJT19UUkVFLCJTeXNUcmVlVmlldzMyIixXU19CT1JERVIgfCBXU19UQUJTVE9QLDE1LDUwLDE0MCwxNDAKICAgIFBVU0hCVVRUT04gICAgICAiJlRlc3QgU291bmQiLElEQ19BVURJT19URVNULDE3MCw1MCw1OSwxNAogICAgUFVTSEJVVFRPTgkgICAgIiZIYWxsaW50YXBhbmVlbGkiLElEQ19BVURJT19DT05UUk9MX1BBTkVMLDE3MCw3MCw3OSwxNAogICAgR1JPVVBCT1ggICAgICAgICIgRGlyZWN0U291bmQgIixJRENfU1RBVElDLDgsMjA1LDI0NCw2MAogICAgTFRFWFQJICAgICJMYWl0dGVpc3RvcG9oamFpbmVuIGtpaWhkeXR5czoiLElEQ19TVEFUSUMsMTUsMjE1LDkwLDEwCiAgICBDT01CT0JPWAkgICAgSURDX0RTT1VORF9IV19BQ0NFTCwxMDAsMjEzLDE1MCw3MCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiT2xldHVzbuR5dGV0YWFqdXVzOiIsSURDX1NUQVRJQywxNSwyMzIsNzAsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19EU09VTkRfUkFURVMsOTAsMjMwLDQyLDc2LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJO5Hl0dGVpZGVuIG9sZXR1c2JpdHRpbeTkcuQ6IixJRENfU1RBVElDLDEzNywyMzIsODAsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19EU09VTkRfQklUUywyMjAsMjMwLDMwLDU2LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgQ09OVFJPTCAgICAgICAgICJBanVyaW4gJmVtdWxvaW50aSIsSURDX0RTT1VORF9EUlZfRU1VTCwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDI1MCwyMzAsMTAKRU5ECgpJRERfREVTS1RPUF9JTlRFR1JBVElPTiBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgVWxrb27ka/YgIixJRENfU1RBVElDLDgsNCwyNDQsMTA2CiAgICBMVEVYVCAgICAgICAgICAgIlRlZW1hOiIsSURDX1NUQVRJQywxNSwxNiwxMzAsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19USEVNRV9USEVNRUNPTUJPLDE1LDI0LDEzMCwxNCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIFBVU0hCVVRUT04gICAgICAiQXNlbm5hICZ0ZWVtYS4uLiIsSURDX1RIRU1FX0lOU1RBTEwsMTUyLDIzLDkzLDE0CiAgICBMVEVYVCAgICAgICAgICAgIlbkcmk6IixJRENfVEhFTUVfQ09MT1JURVhULDE1LDQwLDExMiw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX1RIRU1FX0NPTE9SQ09NQk8sMTUsNDgsMTEyLDE0LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJLb2tvOiIsSURDX1RIRU1FX1NJWkVURVhULDEzNSw0MCwxMTAsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19USEVNRV9TSVpFQ09NQk8sMTM1LDQ4LDExMCwxNCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiSXRlbToiLElEQ19TVEFUSUMsMTUsNjQsMTEyLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfU1lTUEFSQU1fQ09NQk8sMTUsNzQsMTEyLDEyMCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AgfCBDQlNfU09SVAogICAgTFRFWFQgICAgICAgICAgICJDb2xvcjoiLElEQ19TWVNQQVJBTV9DT0xPUl9URVhULDEzNSw2NCwyNSw4LFdTX0RJU0FCTEVECiAgICBQVVNIQlVUVE9OICAgICAgIiIsSURDX1NZU1BBUkFNX0NPTE9SLDEzNSw3NCwyNSwxMyxXU19ESVNBQkxFRCB8IEJTX09XTkVSRFJBVwogICAgTFRFWFQgICAgICAgICAgICJTaXplOiIsSURDX1NZU1BBUkFNX1NJWkVfVEVYVCwxNjYsNjQsMzAsOCxXU19ESVNBQkxFRAogICAgRURJVFRFWFQgICAgICAgIElEQ19TWVNQQVJBTV9TSVpFLDE2Niw3NCwyMywxMyxFU19BVVRPSFNDUk9MTCB8IFdTX1RBQlNUT1AgfCBXU19ESVNBQkxFRAogICAgQ09OVFJPTCAgICAgICAgICIiLElEQ19TWVNQQVJBTV9TSVpFX1VELFVQRE9XTl9DTEFTUyxVRFNfU0VUQlVERFlJTlQgfCBXU19ESVNBQkxFRCwxODcsNzQsMTUsMTMKICAgIFBVU0hCVVRUT04gICAgICAiRm9udCIsSURDX1NZU1BBUkFNX0ZPTlQsMjA4LDc0LDM3LDEzLFdTX0RJU0FCTEVECiAgICBHUk9VUEJPWCAgICAgICAgIiBTaGVsbCBGb2xkZXIgIixJRENfU1RBVElDLDgsMTE0LDI0NCwxMDAKICAgIENPTlRST0wgICAgICAgICAiTGlzdHZpZXciLElEQ19MSVNUX1NGUEFUSFMsIlN5c0xpc3RWaWV3MzIiLExWU19SRVBPUlQgfCBMVlNfQVVUT0FSUkFOR0UgfCBMVlNfQUxJR05MRUZUIHwKICAgICAgICAgICAgICAgICAgICAgTFZTX1NJTkdMRVNFTCB8IFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AsIDE1LDEyNiwyMzAsNjQKICAgIENPTlRST0wgICAgICAgICAiTGluayB0bzoiLElEQ19MSU5LX1NGUEFUSCwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1h8V1NfVEFCU1RPUHxXU19ESVNBQkxFRCwxNSwxOTUsNTAsMTMKICAgIEVESVRURVhUICAgICAgICAgSURDX0VESVRfU0ZQQVRILDY1LDE5NSwxNDUsMTMsRVNfQVVUT0hTQ1JPTEx8V1NfVEFCU1RPUHxXU19ESVNBQkxFRAogICAgUFVTSEJVVFRPTiAgICAgICJCcm93c2UiLElEQ19CUk9XU0VfU0ZQQVRILDIxNSwxOTUsMzAsMTMsV1NfRElTQUJMRUQKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX1RBQl9BUFBMSUNBVElPTlMgICAgIlNvdmVsbHVrc2V0IgogICAgSURTX1RBQl9ETExTICAgICAgICAgICAgIktpcmphc3RvdCIKICAgIElEU19UQUJfRFJJVkVTICAgICAgICAgICJBc2VtYXQiCiAgICBJRFNfQ0hPT1NFX1BBVEggICAgICAgICAiVmFsaXRzZSB1bml4LWtvaGRla2Fuc2lvLiIKICAgIElEU19ISURFX0FEVkFOQ0VEICAgICAgICJQaWlsb3RhIGxpc+Rhc2V0dWtzZXQiCiAgICBJRFNfU0hPV19BRFZBTkNFRCAgICAgICAiTuR5dOQgbGlz5GFzZXR1a3NldCIKICAgIElEU19OT1RIRU1FICAgICAgICAgICAgICIoRWkgdGVlbWFhKSIKICAgIElEU19UQUJfR1JBUEhJQ1MgICAgICAgICJHcmFmaWlra2EiCiAgICBJRFNfVEFCX0RFU0tUT1BfSU5URUdSQVRJT04gIlR59nD2eXTkaW50ZWdyYWF0aW8iCiAgICBJRFNfVEFCX0FVRElPICAgICAgICAgICAixORuaSIKICAgIElEU19UQUJfQUJPVVQgICAgICAgICAgICJUaWV0b2phIgogICAgSURTX1dJTkVDRkdfVElUTEUgICAgICAgIldpbmVuIGFzZXR1a3NldCIKICAgIElEU19XSU5FQ0ZHX1RJVExFX0FQUCAgICJXaW5lIGNvbmZpZ3VyYXRpb24gZm9yICVzIgogICAgSURTX1RIRU1FRklMRSAgICAgICAgICAgIlRlZW1hdGllZG9zdG90IgogICAgSURTX1RIRU1FRklMRV9TRUxFQ1QgICAgIlZhbGl0c2UgdGVlbWF0aWVkb3N0byIKICAgIElEU19TSEVMTF9GT0xERVIgICAgICAgICJTaGVsbCBGb2xkZXIiCiAgICBJRFNfTElOS1NfVE8gICAgICAgICAgICAiTGlua3MgdG8iCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19ETExfV0FSTklORyAgICAgICAgICJU5G3kbiBraXJqYXN0b24gbGF0YWFtaXNq5HJqZXN0eWtzZW4gbXV1dHRhbWlzdGEgZWkgc3Vvc2l0ZWxsYS5cbkhhbHVhdGtvIHNpbHRpIGphdGthYT8iCiAgICBJRFNfRExMX1dBUk5JTkdfQ0FQVElPTiAiVmFyb2l0dXM6IGrkcmplc3RlbG3ka2lyamFzdG8iCiAgICBJRFNfRExMX05BVElWRSAgICAgICAgICAibmF0aWl2aSIKICAgIElEU19ETExfQlVJTFRJTiAgICAgICAgICJzaXPkaW5lbiIKICAgIElEU19ETExfTkFUSVZFX0JVSUxUSU4gICJuYXRpaXZpLCBzaXPkaW5lbiIKICAgIElEU19ETExfQlVJTFRJTl9OQVRJVkUgICJzaXPkaW5lbiwgbmF0aWl2aSIKICAgIElEU19ETExfRElTQUJMRUQgICAgICAgICJlaSBr5Hl09nNz5CIKICAgIElEU19ERUZBVUxUX1NFVFRJTkdTICAgICJEZWZhdWx0IFNldHRpbmdzIgogICAgSURTX0VYRUNVVEFCTEVfRklMVEVSICAgIldpbmUgUHJvZ3JhbXMgKCouZXhlLCouZXhlLnNvKVwwKi5leGU7Ki5leGUuc29cMCIKICAgIElEU19VU0VfR0xPQkFMX1NFVFRJTkdTICJVc2UgZ2xvYmFsIHNldHRpbmdzIgogICAgSURTX1NFTEVDVF9FWEVDVVRBQkxFICAgIlNlbGVjdCBhbiBleGVjdXRhYmxlIGZpbGUiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19TSEFERVJfTU9ERV9IQVJEV0FSRSAgICAiSGFyZHdhcmUiCiAgICBJRFNfU0hBREVSX01PREVfTk9ORSAgICAgICAgIk5vbmUiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19EUklWRV9VTktOT1dOICAgICAgICAgICAiQXV0b2RldGVjdCIKICAgIElEU19EUklWRV9GSVhFRCAgICAgICAgICAgICAiTG9jYWwgaGFyZCBkaXNrIgogICAgSURTX0RSSVZFX1JFTU9URSAgICAgICAgICAgICJOZXR3b3JrIHNoYXJlIgogICAgSURTX0RSSVZFX1JFTU9WQUJMRSAgICAgICAgICJGbG9wcHkgZGlzayIKICAgIElEU19EUklWRV9DRFJPTSAgICAgICAgICAgICAiQ0QtUk9NIgogICAgSURTX0RSSVZFX0xFVFRFUlNfRVhDRUVERUQgICJZb3UgY2Fubm90IGFkZCBhbnkgbW9yZSBkcml2ZXMuXG5cbkVhY2ggZHJpdmUgbXVzdCBoYXZlIGEgbGV0dGVyLCBmcm9tIEEgdG8gWiwgc28geW91IGNhbm5vdCBoYXZlIG1vcmUgdGhhbiAyNiIKICAgIElEU19TWVNURU1fRFJJVkVfTEFCRUwgICAgICAiU3lzdGVtIGRyaXZlIgogICAgSURTX0NPTkZJUk1fREVMRVRFX0MgICAgICAgICJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIGRyaXZlIEM/XG5cbk1vc3QgV2luZG93cyBhcHBsaWNhdGlvbnMgZXhwZWN0IGRyaXZlIEMgdG8gZXhpc3QsIGFuZCB3aWxsIGRpZSBtZXNzaWx5IGlmIGl0IGRvZXNuJ3QuIElmIHlvdSBwcm9jZWVkIHJlbWVtYmVyIHRvIHJlY3JlYXRlIGl0ISIKICAgIElEU19DT0xfRFJJVkVMRVRURVIgICAgICAgICAiTGV0dGVyIgogICAgSURTX0NPTF9EUklWRU1BUFBJTkcgICAgICAgICJEcml2ZSBNYXBwaW5nIgogICAgSURTX05PX0RSSVZFX0MgICAgICAgICAgICAgICJZb3UgZG9uJ3QgaGF2ZSBhIGRyaXZlIEMuIFRoaXMgaXMgbm90IHNvIGdyZWF0LlxuXG5SZW1lbWJlciB0byBjbGljayAnQWRkJyBpbiB0aGUgRHJpdmVzIHRhYiB0byBjcmVhdGUgb25lIVxuIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfQUNDRUxfRlVMTCAgICAgICAgICAgICAgIkZ1bGwiCiAgICBJRFNfQUNDRUxfU1RBTkRBUkQgICAgICAgICAgIlN0YW5kYXJkIgogICAgSURTX0FDQ0VMX0JBU0lDICAgICAgICAgICAgICJCYXNpYyIKICAgIElEU19BQ0NFTF9FTVVMQVRJT04gICAgICAgICAiRW11bGF0aW9uIgogICAgSURTX0RSSVZFUl9BTFNBICAgICAgICAgICAgICJBTFNBIERyaXZlciIKICAgIElEU19EUklWRVJfRVNPVU5EICAgICAgICAgICAiRXNvdW5EIERyaXZlciIKICAgIElEU19EUklWRVJfT1NTICAgICAgICAgICAgICAiT1NTIERyaXZlciIKICAgIElEU19EUklWRVJfSkFDSyAgICAgICAgICAgICAiSkFDSyBEcml2ZXIiCiAgICBJRFNfRFJJVkVSX05BUyAgICAgICAgICAgICAgIk5BUyBEcml2ZXIiCiAgICBJRFNfRFJJVkVSX0FVRElPSU8gICAgICAgICAgIkF1ZGlvIElPIChTb2xhcmlzKSBEcml2ZXIiCiAgICBJRFNfRFJJVkVSX0NPUkVBVURJTyAgICAgICAgIkNvcmVBdWRpbyBEcml2ZXIiCiAgICBJRFNfT1BFTl9EUklWRVJfRVJST1IgICAgICAgIkNvdWxkbid0IG9wZW4gJXMhIgogICAgSURTX1NPVU5ERFJJVkVSUyAgICAgICAgICAgICJTb3VuZCBEcml2ZXJzIgogICAgSURTX0RFVklDRVNfV0FWRU9VVCAgICAgICAgICJXYXZlIE91dCBEZXZpY2VzIgogICAgSURTX0RFVklDRVNfV0FWRUlOICAgICAgICAgICJXYXZlIEluIERldmljZXMiCiAgICBJRFNfREVWSUNFU19NSURJT1VUICAgICAgICAgIk1JREkgT3V0IERldmljZXMiCiAgICBJRFNfREVWSUNFU19NSURJSU4gICAgICAgICAgIk1JREkgSW4gRGV2aWNlcyIKICAgIElEU19ERVZJQ0VTX0FVWCAgICAgICAgICAgICAiQXV4IERldmljZXMiCiAgICBJRFNfREVWSUNFU19NSVhFUiAgICAgICAgICAgIk1peGVyIERldmljZXMiCiAgICBJRFNfVU5BVkFJTEFCTEVfRFJJVkVSICAgICAgIkZvdW5kIGRyaXZlciBpbiByZWdpc3RyeSB0aGF0IGlzIG5vdCBhdmFpbGFibGUhXG5cblJlbW92ZSBcIiVzXCIgZnJvbSByZWdpc3RyeT8iCiAgICBJRFNfV0FSTklORyAgICAgICAgICAgICAgICAgIldhcm5pbmciCkVORAo=