Name: series-workflow5scqk Phase: Failed StartedAt: 2026-08-10 16:44:30 +0000 UTC FinishedAt: 2026-08-10 17:38:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5scqk[0] Phase: Succeeded StartedAt: 2026-08-10 16:44:30 +0000 UTC FinishedAt: 2026-08-10 17:38:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5scqk[0].run-triage Phase: Succeeded StartedAt: 2026-08-10 16:44:30 +0000 UTC FinishedAt: 2026-08-10 17:38:20 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE3OjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGFuZCBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8gYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNzozNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDUzODViN2ZkZjA5MWQyYmZiM2JiYWNmODY0MDNhYTkxYTNjOWYxNTFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxMCAxNzozNzo1NiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uMTk1MDBiNzg1ZWUzMlxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmNcbkBAIC0wLDAgJiM0MzsxLDE0MiBAQFxuJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsvKiBDb3B5cmlnaHQgKGMpIDIwMjUgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2N0ZXN0X3Byb2dzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjdW5pc3RkLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7dGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMuc2tlbC5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX2ZhaWwuc2tlbC5oXCYjMzQ7XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBydW5fdGVzdChzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpXG4mIzQzO3tcbiYjNDM7XHRjaGFyIGJ1ZltQQVRIX01BWF0gPSBcJiMzNDsvXCYjMzQ7O1xuJiM0MztcbiYjNDM7XHRza2VsLVx1MDAzZWJzcy1cdTAwM2V0YXJnZXRfcGlkID0gZ2V0cGlkKCk7XG4mIzQzO1x0c2tlbC1cdTAwM2Vic3MtXHUwMDNlcHJvZ190cmlnZ2VyZWQgPSAwO1xuJiM0MztcdHNrZWwtXHUwMDNlYnNzLVx1MDAzZWVyciA9IDA7XG4mIzQzO1x0c2tlbC1cdTAwM2Vic3MtXHUwMDNlY29waWVkX2J5dGUgPSAwO1xuJiM0MztcbiYjNDM7XHRzeXNjYWxsKF9fTlJfZ2V0Y3dkLCBidWYsIHNpemVvZihidWYpKTtcbiYjNDM7XG4mIzQzO1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZXByb2dfdHJpZ2dlcmVkLCAxLCBcJiMzNDtwcm9nX3RyaWdnZXJlZFwmIzM0Oyk7XG4mIzQzO1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZWVyciwgMCwgXCYjMzQ7ZXJyXCYjMzQ7KTtcbiYjNDM7XHRBU1NFUlRfRVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlY29waWVkX2J5dGUsICYjMzk7LyYjMzk7LCBcJiMzNDtjb3BpZWRfYnl0ZVwmIzM0Oyk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHJ1bl9hdXRvX2F0dGFjaF90ZXN0KHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZyxcbiYjNDM7XHRcdFx0XHQgc3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGJwZl9saW5rICpsaW5rO1xuJiM0MztcbiYjNDM7XHRsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaChwcm9nKTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9PS19QVFIobGluaywgXCYjMzQ7cHJvZ19hdHRhY2hcJiMzNDspKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRydW5fdGVzdChza2VsKTtcbiYjNDM7XHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF9hdHRhY2hfb25seShzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2cpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7XG4mIzQzO1xuJiM0MztcdGxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoKHByb2cpO1xuJiM0MztcdGlmIChBU1NFUlRfT0tfUFRSKGxpbmssIFwmIzM0O2F0dGFjaFwmIzM0OykpXG4mIzQzO1x0XHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF9hdHRhY2hfcmVqZWN0KHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBicGZfbGluayAqbGluaztcbiYjNDM7XG4mIzQzO1x0bGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2gocHJvZyk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfRVJSX1BUUihsaW5rLCBcJiMzNDthdHRhY2hfc2hvdWxkX2ZhaWxcJiMzNDspKVxuJiM0MztcdFx0YnBmX2xpbmtfX2Rlc3Ryb3kobGluayk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHRlc3RfcmF3X3RwX2JhcmUoc3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGJwZl9saW5rICpsaW5rO1xuJiM0MztcbiYjNDM7XHRsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaF9yYXdfdHJhY2Vwb2ludChza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9yYXdfdHBfYmFyZSxcbiYjNDM7XHRcdFx0XHRcdFx0ICBcJiMzNDtzeXNfZW50ZXJcJiMzNDspO1xuJiM0MztcdGlmIChBU1NFUlRfT0tfUFRSKGxpbmssIFwmIzM0O2F0dGFjaFwmIzM0OykpXG4mIzQzO1x0XHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF90cF9iYXJlKHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBicGZfbGluayAqbGluaztcbiYjNDM7XG4mIzQzO1x0bGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2hfdHJhY2Vwb2ludChza2VsLVx1MDAzZXByb2dzLmhhbmRsZV90cF9iYXJlLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgXCYjMzQ7c3lzY2FsbHNcJiMzNDssIFwmIzM0O3N5c19lbnRlcl9nZXRjd2RcJiMzNDspO1xuJiM0MztcdGlmIChBU1NFUlRfT0tfUFRSKGxpbmssIFwmIzM0O2F0dGFjaFwmIzM0OykpXG4mIzQzO1x0XHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF90ZXN0X3J1bihzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpXG4mIzQzO3tcbiYjNDM7XHRfX3U2NCBhcmdzWzJdID0gezB4MTIzNFVMTCwgMHg1Njc4VUxMfTtcbiYjNDM7XHRMSUJCUEZfT1BUUyhicGZfdGVzdF9ydW5fb3B0cywgdG9wdHMsXG4mIzQzO1x0XHQuY3R4X2luID0gYXJncyxcbiYjNDM7XHRcdC5jdHhfc2l6ZV9pbiA9IHNpemVvZihhcmdzKSxcbiYjNDM7XHQpO1xuJiM0MztcdGludCBmZCwgZXJyO1xuJiM0MztcbiYjNDM7XHRmZCA9IGJwZl9wcm9ncmFtX19mZChza2VsLVx1MDAzZXByb2dzLmhhbmRsZV90ZXN0X3J1bik7XG4mIzQzO1x0ZXJyID0gYnBmX3Byb2dfdGVzdF9ydW5fb3B0cyhmZCwgXHUwMDI2dG9wdHMpO1xuJiM0MztcdEFTU0VSVF9PSyhlcnIsIFwmIzM0O3Rlc3RfcnVuXCYjMzQ7KTtcbiYjNDM7XHRBU1NFUlRfRVEodG9wdHMucmV0dmFsLCBhcmdzWzBdICYjNDM7IGFyZ3NbMV0sIFwmIzM0O3Rlc3RfcnVuX3JldHZhbFwmIzM0Oyk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHRlc3RfdGVzdF9ydW5fb25fY3B1X3JlamVjdChzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpXG4mIzQzO3tcbiYjNDM7XHRfX3U2NCBhcmdzWzJdID0ge307XG4mIzQzO1x0TElCQlBGX09QVFMoYnBmX3Rlc3RfcnVuX29wdHMsIHRvcHRzLFxuJiM0MztcdFx0LmN0eF9pbiA9IGFyZ3MsXG4mIzQzO1x0XHQuY3R4X3NpemVfaW4gPSBzaXplb2YoYXJncyksXG4mIzQzO1x0XHQuZmxhZ3MgPSBCUEZfRl9URVNUX1JVTl9PTl9DUFUsXG4mIzQzO1x0KTtcbiYjNDM7XHRpbnQgZmQsIGVycjtcbiYjNDM7XG4mIzQzO1x0ZmQgPSBicGZfcHJvZ3JhbV9fZmQoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfdGVzdF9ydW4pO1xuJiM0MztcdGVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoZmQsIFx1MDAyNnRvcHRzKTtcbiYjNDM7XHRBU1NFUlRfRVJSKGVyciwgXCYjMzQ7dGVzdF9ydW5fb25fY3B1X3JlamVjdFwmIzM0Oyk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3ZvaWQgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHModm9pZClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbDtcbiYjNDM7XG4mIzQzO1x0c2tlbCA9IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX19vcGVuX2FuZF9sb2FkKCk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFwmIzM0O29wZW5fYW5kX2xvYWRcJiMzNDspKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDt0cF9idGZcJiMzNDspKVxuJiM0MztcdFx0cnVuX2F1dG9fYXR0YWNoX3Rlc3Qoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3RwX2J0Ziwgc2tlbCk7XG4mIzQzO1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7cmF3X3RwXCYjMzQ7KSlcbiYjNDM7XHRcdHJ1bl9hdXRvX2F0dGFjaF90ZXN0KHNrZWwtXHUwMDNlcHJvZ3MuaGFuZGxlX3N5c19lbnRlcl9yYXdfdHAsIHNrZWwpO1xuJiM0MztcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3RyYWNlcG9pbnRcJiMzNDspKVxuJiM0MztcdFx0cnVuX2F1dG9fYXR0YWNoX3Rlc3Qoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3RwLCBza2VsKTtcbiYjNDM7XHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDtzeXNfZXhpdFwmIzM0OykpXG4mIzQzO1x0XHRydW5fYXV0b19hdHRhY2hfdGVzdChza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9zeXNfZXhpdF90cCwgc2tlbCk7XG4mIzQzO1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7dHJhY2Vwb2ludF9hbGlhc1wmIzM0OykpXG4mIzQzO1x0XHR0ZXN0X2F0dGFjaF9vbmx5KHNrZWwtXHUwMDNlcHJvZ3MuaGFuZGxlX3N5c19lbnRlcl90cF9hbGlhcyk7XG4mIzQzO1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7cmF3X3RyYWNlcG9pbnRfYWxpYXNcJiMzNDspKVxuJiM0MztcdFx0dGVzdF9hdHRhY2hfb25seShza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9zeXNfZW50ZXJfcmF3X3RwX2FsaWFzKTtcbiYjNDM7XHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDtyYXdfdHBfYmFyZVwmIzM0OykpXG4mIzQzO1x0XHR0ZXN0X3Jhd190cF9iYXJlKHNrZWwpO1xuJiM0MztcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3RwX2JhcmVcJiMzNDspKVxuJiM0MztcdFx0dGVzdF90cF9iYXJlKHNrZWwpO1xuJiM0MztcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3Rlc3RfcnVuXCYjMzQ7KSlcbiYjNDM7XHRcdHRlc3RfdGVzdF9ydW4oc2tlbCk7XG4mIzQzO1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7dGVzdF9ydW5fb25fY3B1X3JlamVjdFwmIzM0OykpXG4mIzQzO1x0XHR0ZXN0X3Rlc3RfcnVuX29uX2NwdV9yZWplY3Qoc2tlbCk7XG4mIzQzO1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7cmF3X3RwX25vbl9mYXVsdGFibGVcJiMzNDspKVxuJiM0MztcdFx0dGVzdF9hdHRhY2hfcmVqZWN0KHNrZWwtXHUwMDNlcHJvZ3MuaGFuZGxlX3Jhd190cF9ub25fZmF1bHRhYmxlKTtcbiYjNDM7XHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDt0cF9ub25fc3lzY2FsbFwmIzM0OykpXG4mIzQzO1x0XHR0ZXN0X2F0dGFjaF9yZWplY3Qoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfdHBfbm9uX3N5c2NhbGwpO1xuJiM0MztcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3RwX2J0Zl9ub25fZmF1bHRhYmxlX3JlamVjdFwmIzM0OykpXG4mIzQzO1x0XHRSVU5fVEVTVFModGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbCk7XG4mIzQzO1xuJiM0MztcdHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX19kZXN0cm95KHNrZWwpO1xuJiM0Mzt9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjI1NGY3ZmQ4OTVkOWZcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cy5jXG5AQCAtMCwwICYjNDM7MSwxMTIgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7LyogQ29weXJpZ2h0IChjKSAyMDI1IE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLiAqL1xuJiM0MztcbiYjNDM7I2luY2x1ZGUgXHUwMDNjdm1saW51eC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2FzbS91bmlzdGQuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NicGYvYnBmX3RyYWNpbmcuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2NvcmVfcmVhZC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4mIzQzO1xuJiM0MztjaGFyIF9saWNlbnNlW10gU0VDKFwmIzM0O2xpY2Vuc2VcJiMzNDspID0gXCYjMzQ7R1BMXCYjMzQ7O1xuJiM0MztcbiYjNDM7aW50IHRhcmdldF9waWQ7XG4mIzQzO2ludCBwcm9nX3RyaWdnZXJlZDtcbiYjNDM7bG9uZyBlcnI7XG4mIzQzO2NoYXIgY29waWVkX2J5dGU7XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IGNvcHlfZ2V0Y3dkX2FyZyhjaGFyICp1YnVmKVxuJiM0Mzt7XG4mIzQzO1x0ZXJyID0gYnBmX2NvcHlfZnJvbV91c2VyKFx1MDAyNmNvcGllZF9ieXRlLCBzaXplb2YoY29waWVkX2J5dGUpLCB1YnVmKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGVycjtcbiYjNDM7XG4mIzQzO1x0cHJvZ190cmlnZ2VyZWQgPSAxO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7dHBfYnRmLnMvc3lzX2VudGVyXCYjMzQ7KVxuJiM0MztpbnQgQlBGX1BST0coaGFuZGxlX3N5c19lbnRlcl90cF9idGYsIHN0cnVjdCBwdF9yZWdzICpyZWdzLCBsb25nIGlkKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKChicGZfZ2V0X2N1cnJlbnRfcGlkX3RnaWQoKSBcdTAwM2VcdTAwM2UgMzIpICE9IHRhcmdldF9waWQgfHxcbiYjNDM7XHQgICAgaWQgIT0gX19OUl9nZXRjd2QpXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGNvcHlfZ2V0Y3dkX2FyZygodm9pZCAqKVBUX1JFR1NfUEFSTTFfU1lTQ0FMTChyZWdzKSk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO1NFQyhcJiMzNDtyYXdfdHAucy9zeXNfZW50ZXJcJiMzNDspXG4mIzQzO2ludCBCUEZfUFJPRyhoYW5kbGVfc3lzX2VudGVyX3Jhd190cCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGxvbmcgaWQpXG4mIzQzO3tcbiYjNDM7XHRpZiAoKGJwZl9nZXRfY3VycmVudF9waWRfdGdpZCgpIFx1MDAzZVx1MDAzZSAzMikgIT0gdGFyZ2V0X3BpZCB8fFxuJiM0MztcdCAgICBpZCAhPSBfX05SX2dldGN3ZClcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gY29weV9nZXRjd2RfYXJnKCh2b2lkICopUFRfUkVHU19QQVJNMV9DT1JFX1NZU0NBTEwocmVncykpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7dHAucy9zeXNjYWxscy9zeXNfZW50ZXJfZ2V0Y3dkXCYjMzQ7KVxuJiM0MztpbnQgaGFuZGxlX3N5c19lbnRlcl90cChzdHJ1Y3Qgc3lzY2FsbF90cmFjZV9lbnRlciAqYXJncylcbiYjNDM7e1xuJiM0MztcdGlmICgoYnBmX2dldF9jdXJyZW50X3BpZF90Z2lkKCkgXHUwMDNlXHUwMDNlIDMyKSAhPSB0YXJnZXRfcGlkKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdHJldHVybiBjb3B5X2dldGN3ZF9hcmcoKHZvaWQgKilhcmdzLVx1MDAzZWFyZ3NbMF0pO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7dHAucy9zeXNjYWxscy9zeXNfZXhpdF9nZXRjd2RcJiMzNDspXG4mIzQzO2ludCBoYW5kbGVfc3lzX2V4aXRfdHAoc3RydWN0IHN5c2NhbGxfdHJhY2VfZXhpdCAqYXJncylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBwdF9yZWdzICpyZWdzO1xuJiM0MztcbiYjNDM7XHRpZiAoKGJwZl9nZXRfY3VycmVudF9waWRfdGdpZCgpIFx1MDAzZVx1MDAzZSAzMikgIT0gdGFyZ2V0X3BpZClcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHRyZWdzID0gKHN0cnVjdCBwdF9yZWdzICopYnBmX3Rhc2tfcHRfcmVncyhicGZfZ2V0X2N1cnJlbnRfdGFza19idGYoKSk7XG4mIzQzO1x0cmV0dXJuIGNvcHlfZ2V0Y3dkX2FyZygodm9pZCAqKVBUX1JFR1NfUEFSTTFfQ09SRV9TWVNDQUxMKHJlZ3MpKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7U0VDKFwmIzM0O3Jhd190cC5zXCYjMzQ7KVxuJiM0MztpbnQgQlBGX1BST0coaGFuZGxlX3Jhd190cF9iYXJlLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgbG9uZyBpZClcbiYjNDM7e1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7dHAuc1wmIzM0OylcbiYjNDM7aW50IGhhbmRsZV90cF9iYXJlKHZvaWQgKmN0eClcbiYjNDM7e1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7dHJhY2Vwb2ludC5zL3N5c2NhbGxzL3N5c19lbnRlcl9nZXRjd2RcJiMzNDspXG4mIzQzO2ludCBoYW5kbGVfc3lzX2VudGVyX3RwX2FsaWFzKHN0cnVjdCBzeXNjYWxsX3RyYWNlX2VudGVyICphcmdzKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO1NFQyhcJiMzNDtyYXdfdHJhY2Vwb2ludC5zL3N5c19lbnRlclwmIzM0OylcbiYjNDM7aW50IEJQRl9QUk9HKGhhbmRsZV9zeXNfZW50ZXJfcmF3X3RwX2FsaWFzLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgbG9uZyBpZClcbiYjNDM7e1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7cmF3X3RwLnMvc3lzX2VudGVyXCYjMzQ7KVxuJiM0MztpbnQgQlBGX1BST0coaGFuZGxlX3Rlc3RfcnVuLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgbG9uZyBpZClcbiYjNDM7e1xuJiM0MztcdGlmICgoX191NjQpcmVncyA9PSAweDEyMzRVTEwgXHUwMDI2XHUwMDI2IChfX3U2NClpZCA9PSAweDU2NzhVTEwpXG4mIzQzO1x0XHRyZXR1cm4gKF9fdTY0KXJlZ3MgJiM0MzsgKF9fdTY0KWlkO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7U0VDKFwmIzM0O3Jhd190cC5zL3NjaGVkX3N3aXRjaFwmIzM0OylcbiYjNDM7aW50IEJQRl9QUk9HKGhhbmRsZV9yYXdfdHBfbm9uX2ZhdWx0YWJsZSwgYm9vbCBwcmVlbXB0LFxuJiM0MztcdCAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7U0VDKFwmIzM0O3RwLnMvc2NoZWQvc2NoZWRfc3dpdGNoXCYjMzQ7KVxuJiM0MztpbnQgaGFuZGxlX3RwX25vbl9zeXNjYWxsKHZvaWQgKmN0eClcbiYjNDM7e1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX2ZhaWwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19mYWlsLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi4xYTA3NDhhOTUyMGJiXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5jXG5AQCAtMCwwICYjNDM7MSwxOCBAQFxuJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsvKiBDb3B5cmlnaHQgKGMpIDIwMjUgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2N2bWxpbnV4LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjYnBmL2JwZl90cmFjaW5nLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7YnBmX21pc2MuaFwmIzM0O1xuJiM0MztcbiYjNDM7Y2hhciBfbGljZW5zZVtdIFNFQyhcJiMzNDtsaWNlbnNlXCYjMzQ7KSA9IFwmIzM0O0dQTFwmIzM0OztcbiYjNDM7XG4mIzQzOy8qIFNsZWVwYWJsZSBwcm9ncmFtIG9uIGEgbm9uLWZhdWx0YWJsZSB0cmFjZXBvaW50IHNob3VsZCBmYWlsIHRvIGxvYWQgKi9cbiYjNDM7U0VDKFwmIzM0O3RwX2J0Zi5zL3NjaGVkX3N3aXRjaFwmIzM0OylcbiYjNDM7X19mYWlsdXJlIF9fbXNnKFwmIzM0O1NsZWVwYWJsZSBwcm9ncmFtIGNhbm5vdCBhdHRhY2ggdG8gbm9uLWZhdWx0YWJsZSB0cmFjZXBvaW50XCYjMzQ7KVxuJiM0MztpbnQgQlBGX1BST0coaGFuZGxlX3NjaGVkX3N3aXRjaCwgYm9vbCBwcmVlbXB0LFxuJiM0MztcdCAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuY1xuaW5kZXggYzJiN2Y1ZWJmMTY4Yy4uNmRhYmM1NTIyOTQ1NSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL3NsZWVwYWJsZS5jXG5AQCAtNzYsNyAmIzQzOzc2LDIwIEBAXG4gXHQucnVucyA9IC0xLFxuIH0sXG4ge1xuLVx0XCYjMzQ7c2xlZXBhYmxlIHJhdyB0cmFjZXBvaW50IHJlamVjdFwmIzM0OyxcbiYjNDM7XHRcJiMzNDtzbGVlcGFibGUgcmF3IHRyYWNlcG9pbnQgYWNjZXB0XCYjMzQ7LFxuJiM0MztcdC5pbnNucyA9IHtcbiYjNDM7XHRCUEZfTU9WNjRfSU1NKEJQRl9SRUdfMCwgMCksXG4mIzQzO1x0QlBGX0VYSVRfSU5TTigpLFxuJiM0MztcdH0sXG4mIzQzO1x0LnByb2dfdHlwZSA9IEJQRl9QUk9HX1RZUEVfVFJBQ0lORyxcbiYjNDM7XHQuZXhwZWN0ZWRfYXR0YWNoX3R5cGUgPSBCUEZfVFJBQ0VfUkFXX1RQLFxuJiM0MztcdC5rZnVuYyA9IFwmIzM0O3N5c19lbnRlclwmIzM0OyxcbiYjNDM7XHQucmVzdWx0ID0gQUNDRVBULFxuJiM0MztcdC5mbGFncyA9IEJQRl9GX1NMRUVQQUJMRSxcbiYjNDM7XHQucnVucyA9IC0xLFxuJiM0Mzt9LFxuJiM0Mzt7XG4mIzQzO1x0XCYjMzQ7c2xlZXBhYmxlIHJhdyB0cmFjZXBvaW50IHJlamVjdCBub24tZmF1bHRhYmxlXCYjMzQ7LFxuIFx0Lmluc25zID0ge1xuIFx0QlBGX01PVjY0X0lNTShCUEZfUkVHXzAsIDApLFxuIFx0QlBGX0VYSVRfSU5TTigpLFxuQEAgLTg1LDcgJiM0Mzs5OCw3IEBAXG4gXHQuZXhwZWN0ZWRfYXR0YWNoX3R5cGUgPSBCUEZfVFJBQ0VfUkFXX1RQLFxuIFx0LmtmdW5jID0gXCYjMzQ7c2NoZWRfc3dpdGNoXCYjMzQ7LFxuIFx0LnJlc3VsdCA9IFJFSkVDVCxcbi1cdC5lcnJzdHIgPSBcJiMzNDtPbmx5IGZlbnRyeS9mZXhpdC9mc2Vzc2lvbi9mbW9kX3JldCwgbHNtLCBpdGVyLCB1cHJvYmUsIGFuZCBzdHJ1Y3Rfb3BzIHByb2dyYW1zIGNhbiBiZSBzbGVlcGFibGVcJiMzNDssXG4mIzQzO1x0LmVycnN0ciA9IFwmIzM0O1NsZWVwYWJsZSBwcm9ncmFtIGNhbm5vdCBhdHRhY2ggdG8gbm9uLWZhdWx0YWJsZSB0cmFjZXBvaW50XCYjMzQ7LFxuIFx0LmZsYWdzID0gQlBGX0ZfU0xFRVBBQkxFLFxuIFx0LnJ1bnMgPSAtMSxcbiB9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE3OjM3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYW5kIG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLyBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTM4NWI3ZmRmMDkxZDJiZmIzYmJhY2Y4NjQwM2FhOTFhM2M5ZjE1MQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDEwIDE3OjM3OjU2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi4xOTUwMGI3ODVlZTMyCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmMKQEAgLTAsMCAmIzQzOzEsMTQyIEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsvKiBDb3B5cmlnaHQgKGMpIDIwMjUgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovCiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O3Rlc3RfcHJvZ3MuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7dW5pc3RkLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJiMzNDt0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cy5za2VsLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7dGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5za2VsLmgmIzM0OwomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHJ1bl90ZXN0KHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbCkKJiM0Mzt7CiYjNDM7CWNoYXIgYnVmW1BBVEhfTUFYXSA9ICYjMzQ7LyYjMzQ7OwomIzQzOwomIzQzOwlza2VsLSZndDtic3MtJmd0O3RhcmdldF9waWQgPSBnZXRwaWQoKTsKJiM0MzsJc2tlbC0mZ3Q7YnNzLSZndDtwcm9nX3RyaWdnZXJlZCA9IDA7CiYjNDM7CXNrZWwtJmd0O2Jzcy0mZ3Q7ZXJyID0gMDsKJiM0MzsJc2tlbC0mZ3Q7YnNzLSZndDtjb3BpZWRfYnl0ZSA9IDA7CiYjNDM7CiYjNDM7CXN5c2NhbGwoX19OUl9nZXRjd2QsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwomIzQzOwomIzQzOwlBU1NFUlRfRVEoc2tlbC0mZ3Q7YnNzLSZndDtwcm9nX3RyaWdnZXJlZCwgMSwgJiMzNDtwcm9nX3RyaWdnZXJlZCYjMzQ7KTsKJiM0MzsJQVNTRVJUX0VRKHNrZWwtJmd0O2Jzcy0mZ3Q7ZXJyLCAwLCAmIzM0O2VyciYjMzQ7KTsKJiM0MzsJQVNTRVJUX0VRKHNrZWwtJmd0O2Jzcy0mZ3Q7Y29waWVkX2J5dGUsICYjMzk7LyYjMzk7LCAmIzM0O2NvcGllZF9ieXRlJiMzNDspOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBydW5fYXV0b19hdHRhY2hfdGVzdChzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csCiYjNDM7CQkJCSBzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7CiYjNDM7CiYjNDM7CWxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoKHByb2cpOwomIzQzOwlpZiAoIUFTU0VSVF9PS19QVFIobGluaywgJiMzNDtwcm9nX2F0dGFjaCYjMzQ7KSkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJcnVuX3Rlc3Qoc2tlbCk7CiYjNDM7CWJwZl9saW5rX19kZXN0cm95KGxpbmspOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB0ZXN0X2F0dGFjaF9vbmx5KHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBicGZfbGluayAqbGluazsKJiM0MzsKJiM0MzsJbGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2gocHJvZyk7CiYjNDM7CWlmIChBU1NFUlRfT0tfUFRSKGxpbmssICYjMzQ7YXR0YWNoJiMzNDspKQomIzQzOwkJYnBmX2xpbmtfX2Rlc3Ryb3kobGluayk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHRlc3RfYXR0YWNoX3JlamVjdChzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2cpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7CiYjNDM7CiYjNDM7CWxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoKHByb2cpOwomIzQzOwlpZiAoIUFTU0VSVF9FUlJfUFRSKGxpbmssICYjMzQ7YXR0YWNoX3Nob3VsZF9mYWlsJiMzNDspKQomIzQzOwkJYnBmX2xpbmtfX2Rlc3Ryb3kobGluayk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHRlc3RfcmF3X3RwX2JhcmUoc3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsKQomIzQzO3sKJiM0MzsJc3RydWN0IGJwZl9saW5rICpsaW5rOwomIzQzOwomIzQzOwlsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaF9yYXdfdHJhY2Vwb2ludChza2VsLSZndDtwcm9ncy5oYW5kbGVfcmF3X3RwX2JhcmUsCiYjNDM7CQkJCQkJICAmIzM0O3N5c19lbnRlciYjMzQ7KTsKJiM0MzsJaWYgKEFTU0VSVF9PS19QVFIobGluaywgJiMzNDthdHRhY2gmIzM0OykpCiYjNDM7CQlicGZfbGlua19fZGVzdHJveShsaW5rKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgdGVzdF90cF9iYXJlKHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBicGZfbGluayAqbGluazsKJiM0MzsKJiM0MzsJbGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2hfdHJhY2Vwb2ludChza2VsLSZndDtwcm9ncy5oYW5kbGVfdHBfYmFyZSwKJiM0MzsJCQkJCSAgICAgICYjMzQ7c3lzY2FsbHMmIzM0OywgJiMzNDtzeXNfZW50ZXJfZ2V0Y3dkJiMzNDspOwomIzQzOwlpZiAoQVNTRVJUX09LX1BUUihsaW5rLCAmIzM0O2F0dGFjaCYjMzQ7KSkKJiM0MzsJCWJwZl9saW5rX19kZXN0cm95KGxpbmspOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB0ZXN0X3Rlc3RfcnVuKHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbCkKJiM0Mzt7CiYjNDM7CV9fdTY0IGFyZ3NbMl0gPSB7MHgxMjM0VUxMLCAweDU2NzhVTEx9OwomIzQzOwlMSUJCUEZfT1BUUyhicGZfdGVzdF9ydW5fb3B0cywgdG9wdHMsCiYjNDM7CQkuY3R4X2luID0gYXJncywKJiM0MzsJCS5jdHhfc2l6ZV9pbiA9IHNpemVvZihhcmdzKSwKJiM0MzsJKTsKJiM0MzsJaW50IGZkLCBlcnI7CiYjNDM7CiYjNDM7CWZkID0gYnBmX3Byb2dyYW1fX2ZkKHNrZWwtJmd0O3Byb2dzLmhhbmRsZV90ZXN0X3J1bik7CiYjNDM7CWVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoZmQsICZhbXA7dG9wdHMpOwomIzQzOwlBU1NFUlRfT0soZXJyLCAmIzM0O3Rlc3RfcnVuJiMzNDspOwomIzQzOwlBU1NFUlRfRVEodG9wdHMucmV0dmFsLCBhcmdzWzBdICYjNDM7IGFyZ3NbMV0sICYjMzQ7dGVzdF9ydW5fcmV0dmFsJiMzNDspOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB0ZXN0X3Rlc3RfcnVuX29uX2NwdV9yZWplY3Qoc3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsKQomIzQzO3sKJiM0MzsJX191NjQgYXJnc1syXSA9IHt9OwomIzQzOwlMSUJCUEZfT1BUUyhicGZfdGVzdF9ydW5fb3B0cywgdG9wdHMsCiYjNDM7CQkuY3R4X2luID0gYXJncywKJiM0MzsJCS5jdHhfc2l6ZV9pbiA9IHNpemVvZihhcmdzKSwKJiM0MzsJCS5mbGFncyA9IEJQRl9GX1RFU1RfUlVOX09OX0NQVSwKJiM0MzsJKTsKJiM0MzsJaW50IGZkLCBlcnI7CiYjNDM7CiYjNDM7CWZkID0gYnBmX3Byb2dyYW1fX2ZkKHNrZWwtJmd0O3Byb2dzLmhhbmRsZV90ZXN0X3J1bik7CiYjNDM7CWVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoZmQsICZhbXA7dG9wdHMpOwomIzQzOwlBU1NFUlRfRVJSKGVyciwgJiMzNDt0ZXN0X3J1bl9vbl9jcHVfcmVqZWN0JiMzNDspOwomIzQzO30KJiM0MzsKJiM0Mzt2b2lkIHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzKHZvaWQpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWw7CiYjNDM7CiYjNDM7CXNrZWwgPSB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19fb3Blbl9hbmRfbG9hZCgpOwomIzQzOwlpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgJiMzNDtvcGVuX2FuZF9sb2FkJiMzNDspKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3RwX2J0ZiYjMzQ7KSkKJiM0MzsJCXJ1bl9hdXRvX2F0dGFjaF90ZXN0KHNrZWwtJmd0O3Byb2dzLmhhbmRsZV9zeXNfZW50ZXJfdHBfYnRmLCBza2VsKTsKJiM0MzsJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDtyYXdfdHAmIzM0OykpCiYjNDM7CQlydW5fYXV0b19hdHRhY2hfdGVzdChza2VsLSZndDtwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3Jhd190cCwgc2tlbCk7CiYjNDM7CWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7dHJhY2Vwb2ludCYjMzQ7KSkKJiM0MzsJCXJ1bl9hdXRvX2F0dGFjaF90ZXN0KHNrZWwtJmd0O3Byb2dzLmhhbmRsZV9zeXNfZW50ZXJfdHAsIHNrZWwpOwomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3N5c19leGl0JiMzNDspKQomIzQzOwkJcnVuX2F1dG9fYXR0YWNoX3Rlc3Qoc2tlbC0mZ3Q7cHJvZ3MuaGFuZGxlX3N5c19leGl0X3RwLCBza2VsKTsKJiM0MzsJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDt0cmFjZXBvaW50X2FsaWFzJiMzNDspKQomIzQzOwkJdGVzdF9hdHRhY2hfb25seShza2VsLSZndDtwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3RwX2FsaWFzKTsKJiM0MzsJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDtyYXdfdHJhY2Vwb2ludF9hbGlhcyYjMzQ7KSkKJiM0MzsJCXRlc3RfYXR0YWNoX29ubHkoc2tlbC0mZ3Q7cHJvZ3MuaGFuZGxlX3N5c19lbnRlcl9yYXdfdHBfYWxpYXMpOwomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3Jhd190cF9iYXJlJiMzNDspKQomIzQzOwkJdGVzdF9yYXdfdHBfYmFyZShza2VsKTsKJiM0MzsJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDt0cF9iYXJlJiMzNDspKQomIzQzOwkJdGVzdF90cF9iYXJlKHNrZWwpOwomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3Rlc3RfcnVuJiMzNDspKQomIzQzOwkJdGVzdF90ZXN0X3J1bihza2VsKTsKJiM0MzsJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDt0ZXN0X3J1bl9vbl9jcHVfcmVqZWN0JiMzNDspKQomIzQzOwkJdGVzdF90ZXN0X3J1bl9vbl9jcHVfcmVqZWN0KHNrZWwpOwomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3Jhd190cF9ub25fZmF1bHRhYmxlJiMzNDspKQomIzQzOwkJdGVzdF9hdHRhY2hfcmVqZWN0KHNrZWwtJmd0O3Byb2dzLmhhbmRsZV9yYXdfdHBfbm9uX2ZhdWx0YWJsZSk7CiYjNDM7CWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7dHBfbm9uX3N5c2NhbGwmIzM0OykpCiYjNDM7CQl0ZXN0X2F0dGFjaF9yZWplY3Qoc2tlbC0mZ3Q7cHJvZ3MuaGFuZGxlX3RwX25vbl9zeXNjYWxsKTsKJiM0MzsJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDt0cF9idGZfbm9uX2ZhdWx0YWJsZV9yZWplY3QmIzM0OykpCiYjNDM7CQlSVU5fVEVTVFModGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbCk7CiYjNDM7CiYjNDM7CXRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX19kZXN0cm95KHNrZWwpOwomIzQzO30KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uMjU0ZjdmZDg5NWQ5ZgotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cy5jCkBAIC0wLDAgJiM0MzsxLDExMiBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7LyogQ29weXJpZ2h0IChjKSAyMDI1IE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLiAqLwomIzQzOwomIzQzOyNpbmNsdWRlICZsdDt2bWxpbnV4LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2FzbS91bmlzdGQuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7YnBmL2JwZl90cmFjaW5nLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2JwZi9icGZfY29yZV9yZWFkLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2JwZi9icGZfaGVscGVycy5oJmd0OwomIzQzOwomIzQzO2NoYXIgX2xpY2Vuc2VbXSBTRUMoJiMzNDtsaWNlbnNlJiMzNDspID0gJiMzNDtHUEwmIzM0OzsKJiM0MzsKJiM0MztpbnQgdGFyZ2V0X3BpZDsKJiM0MztpbnQgcHJvZ190cmlnZ2VyZWQ7CiYjNDM7bG9uZyBlcnI7CiYjNDM7Y2hhciBjb3BpZWRfYnl0ZTsKJiM0MzsKJiM0MztzdGF0aWMgaW50IGNvcHlfZ2V0Y3dkX2FyZyhjaGFyICp1YnVmKQomIzQzO3sKJiM0MzsJZXJyID0gYnBmX2NvcHlfZnJvbV91c2VyKCZhbXA7Y29waWVkX2J5dGUsIHNpemVvZihjb3BpZWRfYnl0ZSksIHVidWYpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsKJiM0MzsJcHJvZ190cmlnZ2VyZWQgPSAxOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7dHBfYnRmLnMvc3lzX2VudGVyJiMzNDspCiYjNDM7aW50IEJQRl9QUk9HKGhhbmRsZV9zeXNfZW50ZXJfdHBfYnRmLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgbG9uZyBpZCkKJiM0Mzt7CiYjNDM7CWlmICgoYnBmX2dldF9jdXJyZW50X3BpZF90Z2lkKCkgJmd0OyZndDsgMzIpICE9IHRhcmdldF9waWQgfHwKJiM0MzsJICAgIGlkICE9IF9fTlJfZ2V0Y3dkKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CXJldHVybiBjb3B5X2dldGN3ZF9hcmcoKHZvaWQgKilQVF9SRUdTX1BBUk0xX1NZU0NBTEwocmVncykpOwomIzQzO30KJiM0MzsKJiM0MztTRUMoJiMzNDtyYXdfdHAucy9zeXNfZW50ZXImIzM0OykKJiM0MztpbnQgQlBGX1BST0coaGFuZGxlX3N5c19lbnRlcl9yYXdfdHAsIHN0cnVjdCBwdF9yZWdzICpyZWdzLCBsb25nIGlkKQomIzQzO3sKJiM0MzsJaWYgKChicGZfZ2V0X2N1cnJlbnRfcGlkX3RnaWQoKSAmZ3Q7Jmd0OyAzMikgIT0gdGFyZ2V0X3BpZCB8fAomIzQzOwkgICAgaWQgIT0gX19OUl9nZXRjd2QpCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKJiM0MzsJcmV0dXJuIGNvcHlfZ2V0Y3dkX2FyZygodm9pZCAqKVBUX1JFR1NfUEFSTTFfQ09SRV9TWVNDQUxMKHJlZ3MpKTsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7dHAucy9zeXNjYWxscy9zeXNfZW50ZXJfZ2V0Y3dkJiMzNDspCiYjNDM7aW50IGhhbmRsZV9zeXNfZW50ZXJfdHAoc3RydWN0IHN5c2NhbGxfdHJhY2VfZW50ZXIgKmFyZ3MpCiYjNDM7ewomIzQzOwlpZiAoKGJwZl9nZXRfY3VycmVudF9waWRfdGdpZCgpICZndDsmZ3Q7IDMyKSAhPSB0YXJnZXRfcGlkKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CXJldHVybiBjb3B5X2dldGN3ZF9hcmcoKHZvaWQgKilhcmdzLSZndDthcmdzWzBdKTsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7dHAucy9zeXNjYWxscy9zeXNfZXhpdF9nZXRjd2QmIzM0OykKJiM0MztpbnQgaGFuZGxlX3N5c19leGl0X3RwKHN0cnVjdCBzeXNjYWxsX3RyYWNlX2V4aXQgKmFyZ3MpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcHRfcmVncyAqcmVnczsKJiM0MzsKJiM0MzsJaWYgKChicGZfZ2V0X2N1cnJlbnRfcGlkX3RnaWQoKSAmZ3Q7Jmd0OyAzMikgIT0gdGFyZ2V0X3BpZCkKJiM0MzsJCXJldHVybiAwOwomIzQzOwomIzQzOwlyZWdzID0gKHN0cnVjdCBwdF9yZWdzICopYnBmX3Rhc2tfcHRfcmVncyhicGZfZ2V0X2N1cnJlbnRfdGFza19idGYoKSk7CiYjNDM7CXJldHVybiBjb3B5X2dldGN3ZF9hcmcoKHZvaWQgKilQVF9SRUdTX1BBUk0xX0NPUkVfU1lTQ0FMTChyZWdzKSk7CiYjNDM7fQomIzQzOwomIzQzO1NFQygmIzM0O3Jhd190cC5zJiMzNDspCiYjNDM7aW50IEJQRl9QUk9HKGhhbmRsZV9yYXdfdHBfYmFyZSwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGxvbmcgaWQpCiYjNDM7ewomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7dHAucyYjMzQ7KQomIzQzO2ludCBoYW5kbGVfdHBfYmFyZSh2b2lkICpjdHgpCiYjNDM7ewomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7dHJhY2Vwb2ludC5zL3N5c2NhbGxzL3N5c19lbnRlcl9nZXRjd2QmIzM0OykKJiM0MztpbnQgaGFuZGxlX3N5c19lbnRlcl90cF9hbGlhcyhzdHJ1Y3Qgc3lzY2FsbF90cmFjZV9lbnRlciAqYXJncykKJiM0Mzt7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztTRUMoJiMzNDtyYXdfdHJhY2Vwb2ludC5zL3N5c19lbnRlciYjMzQ7KQomIzQzO2ludCBCUEZfUFJPRyhoYW5kbGVfc3lzX2VudGVyX3Jhd190cF9hbGlhcywgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGxvbmcgaWQpCiYjNDM7ewomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7cmF3X3RwLnMvc3lzX2VudGVyJiMzNDspCiYjNDM7aW50IEJQRl9QUk9HKGhhbmRsZV90ZXN0X3J1biwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGxvbmcgaWQpCiYjNDM7ewomIzQzOwlpZiAoKF9fdTY0KXJlZ3MgPT0gMHgxMjM0VUxMICZhbXA7JmFtcDsgKF9fdTY0KWlkID09IDB4NTY3OFVMTCkKJiM0MzsJCXJldHVybiAoX191NjQpcmVncyAmIzQzOyAoX191NjQpaWQ7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztTRUMoJiMzNDtyYXdfdHAucy9zY2hlZF9zd2l0Y2gmIzM0OykKJiM0MztpbnQgQlBGX1BST0coaGFuZGxlX3Jhd190cF9ub25fZmF1bHRhYmxlLCBib29sIHByZWVtcHQsCiYjNDM7CSAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQpCiYjNDM7ewomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7dHAucy9zY2hlZC9zY2hlZF9zd2l0Y2gmIzM0OykKJiM0MztpbnQgaGFuZGxlX3RwX25vbl9zeXNjYWxsKHZvaWQgKmN0eCkKJiM0Mzt7CiYjNDM7CXJldHVybiAwOwomIzQzO30KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19mYWlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjFhMDc0OGE5NTIwYmIKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5jCkBAIC0wLDAgJiM0MzsxLDE4IEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsvKiBDb3B5cmlnaHQgKGMpIDIwMjUgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovCiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O3ZtbGludXguaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7YnBmL2JwZl90cmFjaW5nLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2JwZi9icGZfaGVscGVycy5oJmd0OwomIzQzOyNpbmNsdWRlICYjMzQ7YnBmX21pc2MuaCYjMzQ7CiYjNDM7CiYjNDM7Y2hhciBfbGljZW5zZVtdIFNFQygmIzM0O2xpY2Vuc2UmIzM0OykgPSAmIzM0O0dQTCYjMzQ7OwomIzQzOwomIzQzOy8qIFNsZWVwYWJsZSBwcm9ncmFtIG9uIGEgbm9uLWZhdWx0YWJsZSB0cmFjZXBvaW50IHNob3VsZCBmYWlsIHRvIGxvYWQgKi8KJiM0MztTRUMoJiMzNDt0cF9idGYucy9zY2hlZF9zd2l0Y2gmIzM0OykKJiM0MztfX2ZhaWx1cmUgX19tc2coJiMzNDtTbGVlcGFibGUgcHJvZ3JhbSBjYW5ub3QgYXR0YWNoIHRvIG5vbi1mYXVsdGFibGUgdHJhY2Vwb2ludCYjMzQ7KQomIzQzO2ludCBCUEZfUFJPRyhoYW5kbGVfc2NoZWRfc3dpdGNoLCBib29sIHByZWVtcHQsCiYjNDM7CSAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQpCiYjNDM7ewomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvc2xlZXBhYmxlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvc2xlZXBhYmxlLmMKaW5kZXggYzJiN2Y1ZWJmMTY4Yy4uNmRhYmM1NTIyOTQ1NSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL3NsZWVwYWJsZS5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuYwpAQCAtNzYsNyAmIzQzOzc2LDIwIEBACiAJLnJ1bnMgPSAtMSwKIH0sCiB7Ci0JJiMzNDtzbGVlcGFibGUgcmF3IHRyYWNlcG9pbnQgcmVqZWN0JiMzNDssCiYjNDM7CSYjMzQ7c2xlZXBhYmxlIHJhdyB0cmFjZXBvaW50IGFjY2VwdCYjMzQ7LAomIzQzOwkuaW5zbnMgPSB7CiYjNDM7CUJQRl9NT1Y2NF9JTU0oQlBGX1JFR18wLCAwKSwKJiM0MzsJQlBGX0VYSVRfSU5TTigpLAomIzQzOwl9LAomIzQzOwkucHJvZ190eXBlID0gQlBGX1BST0dfVFlQRV9UUkFDSU5HLAomIzQzOwkuZXhwZWN0ZWRfYXR0YWNoX3R5cGUgPSBCUEZfVFJBQ0VfUkFXX1RQLAomIzQzOwkua2Z1bmMgPSAmIzM0O3N5c19lbnRlciYjMzQ7LAomIzQzOwkucmVzdWx0ID0gQUNDRVBULAomIzQzOwkuZmxhZ3MgPSBCUEZfRl9TTEVFUEFCTEUsCiYjNDM7CS5ydW5zID0gLTEsCiYjNDM7fSwKJiM0Mzt7CiYjNDM7CSYjMzQ7c2xlZXBhYmxlIHJhdyB0cmFjZXBvaW50IHJlamVjdCBub24tZmF1bHRhYmxlJiMzNDssCiAJLmluc25zID0gewogCUJQRl9NT1Y2NF9JTU0oQlBGX1JFR18wLCAwKSwKIAlCUEZfRVhJVF9JTlNOKCksCkBAIC04NSw3ICYjNDM7OTgsNyBAQAogCS5leHBlY3RlZF9hdHRhY2hfdHlwZSA9IEJQRl9UUkFDRV9SQVdfVFAsCiAJLmtmdW5jID0gJiMzNDtzY2hlZF9zd2l0Y2gmIzM0OywKIAkucmVzdWx0ID0gUkVKRUNULAotCS5lcnJzdHIgPSAmIzM0O09ubHkgZmVudHJ5L2ZleGl0L2ZzZXNzaW9uL2Ztb2RfcmV0LCBsc20sIGl0ZXIsIHVwcm9iZSwgYW5kIHN0cnVjdF9vcHMgcHJvZ3JhbXMgY2FuIGJlIHNsZWVwYWJsZSYjMzQ7LAomIzQzOwkuZXJyc3RyID0gJiMzNDtTbGVlcGFibGUgcHJvZ3JhbSBjYW5ub3QgYXR0YWNoIHRvIG5vbi1mYXVsdGFibGUgdHJhY2Vwb2ludCYjMzQ7LAogCS5mbGFncyA9IEJQRl9GX1NMRUVQQUJMRSwKIAkucnVucyA9IC0xLAogfSwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTc6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTgzOQoJCQkJCQkJb3V0cHV0OiA2NwoJCQkJCQkJdGhvdWdodHM6IDc1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGFkZGluZyB0ZXN0cyBmb3Igc2xlZXBhYmxlIHRyYWNlcG9pbnRzIGluIEJQRi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgYXNzZXNzIGl0cyBpbXBhY3Qgb24gdGhlIGtlcm5lbCYjMzk7cyBmdXp6aW5nIHN1aXRhYmlsaXR5LiBUaGUgcGF0Y2ggbW9kaWZpZXMgZmlsZXM6IGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuY2AsIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMuY2AsIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5jYCwgYW5kIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvc2xlZXBhYmxlLmNgLiAgSW1tZWRpYXRlbHksIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgYW55ICprZXJuZWwqIGNvZGUgaXMgdG91Y2hlZC4gIEEgcXVpY2sgcmV2aWV3IG9mIHRoZSBkaWZmIHNob3dzIHRoYXQgZXZlcnl0aGluZyBpcyBjb250YWluZWQgd2l0aGluIHRoZSBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AgZGlyZWN0b3J5LgoKSSBuZWVkIHRvIGJlIGNlcnRhaW4gdGhlcmUgYXJlICpubyogb3RoZXIgbW9kaWZpZWQgZmlsZXMsIG91dHNpZGUgb2YgdGhlIHNlbGZ0ZXN0cyBkaXJlY3RvcnkuIEEgc2Vjb25kIGxvb2sgYXQgdGhlIGRpZmYgY29uZmlybXMgdGhlIGVhcmxpZXIgY2hlY2suIFRoZSBwYXRjaCBpcyBzb2xlbHkgZm9jdXNlZCBvbiBhZGRpbmcgb3IgY2hhbmdpbmcgdGhlIHNlbGZ0ZXN0cy4gVGhpcyBpcyBpbXBvcnRhbnQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBjaGFuZ2VzIHNob3VsZCBiZSBmdXp6ZWQuCgpOb3csIGxldCYjMzk7cyBjb25zaWRlciB0aGUgY29udGV4dCBmb3IgdGhpcy4gIFRoZSBwcm9tcHQgZXhwbGljaXRseSBzdGF0ZXMgdGhhdCBwYXRjaGVzIG1vZGlmeWluZyBkb2N1bWVudGF0aW9uLCBLY29uZmlnIGZpbGVzLCBjb21tZW50cywgbG9nZ2luZywgY29uc3RhbnRzLCB1bnJlYWNoYWJsZSBjb2RlLCB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyByZXF1aXJpbmcgcGh5c2ljYWwgaGFyZHdhcmUsIG9yIGRyaXZlciB0ZWFyZG93biBjYWxsYmFja3Mgc2hvdWxkbiYjMzk7dCBiZSBjb25zaWRlcmVkIGZvciBmdXp6aW5nLiBDcnVjaWFsbHksIGl0IHNwZWNpZmljYWxseSBtZW50aW9ucyB0aGF0ICpzZWxmdGVzdHMqIGFyZSAqbm90KiBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbC4gU2VsZnRlc3RzIGFyZSB1c2Vyc3BhY2UgdGVzdHMsIGV2ZW4gaWYgdGhleSB0b3VjaCB0aGUgQlBGIHN1YnN5c3RlbSwgdGhhdCBkbyBub3QgY2hhbmdlIHRoZSBrZXJuZWwmIzM5O3MgYWN0dWFsIGV4ZWN1dGlvbiBmbG93IGluIGEgd2F5IHRoYXQgZnV6emluZyBpcyBsaWtlbHkgdG8gZmluZCBhIGJ1Zy4gU28sIG1vZGlmeWluZyBzZWxmdGVzdHMgd29uJiMzOTt0IGNoYW5nZSB0aGUga2VybmVsIGltYWdlLgoKRmluYWxseSwgSSBuZWVkIHRvIGV4cGxpY2l0bHkgdmVyaWZ5IHRoZSBmaWxlcyBpbiB0aGUgZGlmZi4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgZGlmZiBzdGFydHMgd2l0aCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmNgLCBmb2xsb3dlZCBieSB0aGUgb3RoZXIgdGhyZWUgZmlsZXMuIFRoaXMgcmVpbmZvcmNlcyB0aGF0IGFsbCBjaGFuZ2VzIGFyZSB3aXRoaW4gdGhlIHNlbGZ0ZXN0cyBkaXJlY3RvcnkuCgpUaGVyZWZvcmUsIG15IGNvbmNsdXNpb24gaXMgdGhhdCB0aGlzIHBhdGNoIGlzIG5vdCAmIzM0O1dvcnRoRnV6emluZyYjMzQ7IGJlY2F1c2UgaXQgb25seSBjb250YWlucyBzZWxmdGVzdCBtb2RpZmljYXRpb25zLiBJIHdpbGwgY2FsbCBgc2V0LXJlc3VsdHNgIHdpdGggYFdvcnRoRnV6emluZz1mYWxzZWAgYW5kIHByb3ZpZGUgdGhlIHJlYXNvbmluZzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGFuZCBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8gYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLiYjMzQ7CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTc6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYW5kIG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLyBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYW5kIG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLyBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE3OjM4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNzozNzo1OC4xODE1NzY0ODFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTI0MDgxOTUxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhbmQgbW9kaWZpZXMgQlBGIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE3OjM3OjU4LjE4MTU4MDMxMVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM5NzMzNDY0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDUzODViN2ZkZjA5MWQyYmZiM2JiYWNmODY0MDNhYTkxYTNjOWYxNTFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMTAgMTc6Mzc6NTYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uMTk1MDBiNzg1ZWUzMlxcbi0tLSAvZGV2L251bGxcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuY1xcbkBAIC0wLDAgKzEsMTQyIEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKy8qIENvcHlyaWdodCAoYykgMjAyNSBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy4gKi9cXG4rXFxuKyNpbmNsdWRlIFxcdTAwM2N0ZXN0X3Byb2dzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2N1bmlzdGQuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFxcInRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzLnNrZWwuaFxcXCJcXG4rI2luY2x1ZGUgXFxcInRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX2ZhaWwuc2tlbC5oXFxcIlxcbitcXG4rc3RhdGljIHZvaWQgcnVuX3Rlc3Qoc3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsKVxcbit7XFxuK1xcdGNoYXIgYnVmW1BBVEhfTUFYXSA9IFxcXCIvXFxcIjtcXG4rXFxuK1xcdHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNldGFyZ2V0X3BpZCA9IGdldHBpZCgpO1xcbitcXHRza2VsLVxcdTAwM2Vic3MtXFx1MDAzZXByb2dfdHJpZ2dlcmVkID0gMDtcXG4rXFx0c2tlbC1cXHUwMDNlYnNzLVxcdTAwM2VlcnIgPSAwO1xcbitcXHRza2VsLVxcdTAwM2Vic3MtXFx1MDAzZWNvcGllZF9ieXRlID0gMDtcXG4rXFxuK1xcdHN5c2NhbGwoX19OUl9nZXRjd2QsIGJ1Ziwgc2l6ZW9mKGJ1ZikpO1xcbitcXG4rXFx0QVNTRVJUX0VRKHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlcHJvZ190cmlnZ2VyZWQsIDEsIFxcXCJwcm9nX3RyaWdnZXJlZFxcXCIpO1xcbitcXHRBU1NFUlRfRVEoc2tlbC1cXHUwMDNlYnNzLVxcdTAwM2VlcnIsIDAsIFxcXCJlcnJcXFwiKTtcXG4rXFx0QVNTRVJUX0VRKHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlY29waWVkX2J5dGUsICcvJywgXFxcImNvcGllZF9ieXRlXFxcIik7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHJ1bl9hdXRvX2F0dGFjaF90ZXN0KHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZyxcXG4rXFx0XFx0XFx0XFx0IHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbClcXG4re1xcbitcXHRzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7XFxuK1xcbitcXHRsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaChwcm9nKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0tfUFRSKGxpbmssIFxcXCJwcm9nX2F0dGFjaFxcXCIpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRydW5fdGVzdChza2VsKTtcXG4rXFx0YnBmX2xpbmtfX2Rlc3Ryb3kobGluayk7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHRlc3RfYXR0YWNoX29ubHkoc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nKVxcbit7XFxuK1xcdHN0cnVjdCBicGZfbGluayAqbGluaztcXG4rXFxuK1xcdGxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoKHByb2cpO1xcbitcXHRpZiAoQVNTRVJUX09LX1BUUihsaW5rLCBcXFwiYXR0YWNoXFxcIikpXFxuK1xcdFxcdGJwZl9saW5rX19kZXN0cm95KGxpbmspO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCB0ZXN0X2F0dGFjaF9yZWplY3Qoc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nKVxcbit7XFxuK1xcdHN0cnVjdCBicGZfbGluayAqbGluaztcXG4rXFxuK1xcdGxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoKHByb2cpO1xcbitcXHRpZiAoIUFTU0VSVF9FUlJfUFRSKGxpbmssIFxcXCJhdHRhY2hfc2hvdWxkX2ZhaWxcXFwiKSlcXG4rXFx0XFx0YnBmX2xpbmtfX2Rlc3Ryb3kobGluayk7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHRlc3RfcmF3X3RwX2JhcmUoc3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsKVxcbit7XFxuK1xcdHN0cnVjdCBicGZfbGluayAqbGluaztcXG4rXFxuK1xcdGxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX3Jhd190cmFjZXBvaW50KHNrZWwtXFx1MDAzZXByb2dzLmhhbmRsZV9yYXdfdHBfYmFyZSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICBcXFwic3lzX2VudGVyXFxcIik7XFxuK1xcdGlmIChBU1NFUlRfT0tfUFRSKGxpbmssIFxcXCJhdHRhY2hcXFwiKSlcXG4rXFx0XFx0YnBmX2xpbmtfX2Rlc3Ryb3kobGluayk7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHRlc3RfdHBfYmFyZShzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpXFxuK3tcXG4rXFx0c3RydWN0IGJwZl9saW5rICpsaW5rO1xcbitcXG4rXFx0bGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2hfdHJhY2Vwb2ludChza2VsLVxcdTAwM2Vwcm9ncy5oYW5kbGVfdHBfYmFyZSxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgXFxcInN5c2NhbGxzXFxcIiwgXFxcInN5c19lbnRlcl9nZXRjd2RcXFwiKTtcXG4rXFx0aWYgKEFTU0VSVF9PS19QVFIobGluaywgXFxcImF0dGFjaFxcXCIpKVxcbitcXHRcXHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgdGVzdF90ZXN0X3J1bihzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpXFxuK3tcXG4rXFx0X191NjQgYXJnc1syXSA9IHsweDEyMzRVTEwsIDB4NTY3OFVMTH07XFxuK1xcdExJQkJQRl9PUFRTKGJwZl90ZXN0X3J1bl9vcHRzLCB0b3B0cyxcXG4rXFx0XFx0LmN0eF9pbiA9IGFyZ3MsXFxuK1xcdFxcdC5jdHhfc2l6ZV9pbiA9IHNpemVvZihhcmdzKSxcXG4rXFx0KTtcXG4rXFx0aW50IGZkLCBlcnI7XFxuK1xcbitcXHRmZCA9IGJwZl9wcm9ncmFtX19mZChza2VsLVxcdTAwM2Vwcm9ncy5oYW5kbGVfdGVzdF9ydW4pO1xcbitcXHRlcnIgPSBicGZfcHJvZ190ZXN0X3J1bl9vcHRzKGZkLCBcXHUwMDI2dG9wdHMpO1xcbitcXHRBU1NFUlRfT0soZXJyLCBcXFwidGVzdF9ydW5cXFwiKTtcXG4rXFx0QVNTRVJUX0VRKHRvcHRzLnJldHZhbCwgYXJnc1swXSArIGFyZ3NbMV0sIFxcXCJ0ZXN0X3J1bl9yZXR2YWxcXFwiKTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgdGVzdF90ZXN0X3J1bl9vbl9jcHVfcmVqZWN0KHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbClcXG4re1xcbitcXHRfX3U2NCBhcmdzWzJdID0ge307XFxuK1xcdExJQkJQRl9PUFRTKGJwZl90ZXN0X3J1bl9vcHRzLCB0b3B0cyxcXG4rXFx0XFx0LmN0eF9pbiA9IGFyZ3MsXFxuK1xcdFxcdC5jdHhfc2l6ZV9pbiA9IHNpemVvZihhcmdzKSxcXG4rXFx0XFx0LmZsYWdzID0gQlBGX0ZfVEVTVF9SVU5fT05fQ1BVLFxcbitcXHQpO1xcbitcXHRpbnQgZmQsIGVycjtcXG4rXFxuK1xcdGZkID0gYnBmX3Byb2dyYW1fX2ZkKHNrZWwtXFx1MDAzZXByb2dzLmhhbmRsZV90ZXN0X3J1bik7XFxuK1xcdGVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoZmQsIFxcdTAwMjZ0b3B0cyk7XFxuK1xcdEFTU0VSVF9FUlIoZXJyLCBcXFwidGVzdF9ydW5fb25fY3B1X3JlamVjdFxcXCIpO1xcbit9XFxuK1xcbit2b2lkIHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzKHZvaWQpXFxuK3tcXG4rXFx0c3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsO1xcbitcXG4rXFx0c2tlbCA9IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX19vcGVuX2FuZF9sb2FkKCk7XFxuK1xcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcXFwib3Blbl9hbmRfbG9hZFxcXCIpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwidHBfYnRmXFxcIikpXFxuK1xcdFxcdHJ1bl9hdXRvX2F0dGFjaF90ZXN0KHNrZWwtXFx1MDAzZXByb2dzLmhhbmRsZV9zeXNfZW50ZXJfdHBfYnRmLCBza2VsKTtcXG4rXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInJhd190cFxcXCIpKVxcbitcXHRcXHRydW5fYXV0b19hdHRhY2hfdGVzdChza2VsLVxcdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3Jhd190cCwgc2tlbCk7XFxuK1xcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJ0cmFjZXBvaW50XFxcIikpXFxuK1xcdFxcdHJ1bl9hdXRvX2F0dGFjaF90ZXN0KHNrZWwtXFx1MDAzZXByb2dzLmhhbmRsZV9zeXNfZW50ZXJfdHAsIHNrZWwpO1xcbitcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwic3lzX2V4aXRcXFwiKSlcXG4rXFx0XFx0cnVuX2F1dG9fYXR0YWNoX3Rlc3Qoc2tlbC1cXHUwMDNlcHJvZ3MuaGFuZGxlX3N5c19leGl0X3RwLCBza2VsKTtcXG4rXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInRyYWNlcG9pbnRfYWxpYXNcXFwiKSlcXG4rXFx0XFx0dGVzdF9hdHRhY2hfb25seShza2VsLVxcdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3RwX2FsaWFzKTtcXG4rXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInJhd190cmFjZXBvaW50X2FsaWFzXFxcIikpXFxuK1xcdFxcdHRlc3RfYXR0YWNoX29ubHkoc2tlbC1cXHUwMDNlcHJvZ3MuaGFuZGxlX3N5c19lbnRlcl9yYXdfdHBfYWxpYXMpO1xcbitcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwicmF3X3RwX2JhcmVcXFwiKSlcXG4rXFx0XFx0dGVzdF9yYXdfdHBfYmFyZShza2VsKTtcXG4rXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInRwX2JhcmVcXFwiKSlcXG4rXFx0XFx0dGVzdF90cF9iYXJlKHNrZWwpO1xcbitcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwidGVzdF9ydW5cXFwiKSlcXG4rXFx0XFx0dGVzdF90ZXN0X3J1bihza2VsKTtcXG4rXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInRlc3RfcnVuX29uX2NwdV9yZWplY3RcXFwiKSlcXG4rXFx0XFx0dGVzdF90ZXN0X3J1bl9vbl9jcHVfcmVqZWN0KHNrZWwpO1xcbitcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwicmF3X3RwX25vbl9mYXVsdGFibGVcXFwiKSlcXG4rXFx0XFx0dGVzdF9hdHRhY2hfcmVqZWN0KHNrZWwtXFx1MDAzZXByb2dzLmhhbmRsZV9yYXdfdHBfbm9uX2ZhdWx0YWJsZSk7XFxuK1xcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJ0cF9ub25fc3lzY2FsbFxcXCIpKVxcbitcXHRcXHR0ZXN0X2F0dGFjaF9yZWplY3Qoc2tlbC1cXHUwMDNlcHJvZ3MuaGFuZGxlX3RwX25vbl9zeXNjYWxsKTtcXG4rXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInRwX2J0Zl9ub25fZmF1bHRhYmxlX3JlamVjdFxcXCIpKVxcbitcXHRcXHRSVU5fVEVTVFModGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbCk7XFxuK1xcbitcXHR0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19fZGVzdHJveShza2VsKTtcXG4rfVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cy5jXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi4yNTRmN2ZkODk1ZDlmXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cy5jXFxuQEAgLTAsMCArMSwxMTIgQEBcXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4rLyogQ29weXJpZ2h0IChjKSAyMDI1IE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLiAqL1xcbitcXG4rI2luY2x1ZGUgXFx1MDAzY3ZtbGludXguaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2FzbS91bmlzdGQuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2JwZi9icGZfdHJhY2luZy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjYnBmL2JwZl9jb3JlX3JlYWQuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2JwZi9icGZfaGVscGVycy5oXFx1MDAzZVxcbitcXG4rY2hhciBfbGljZW5zZVtdIFNFQyhcXFwibGljZW5zZVxcXCIpID0gXFxcIkdQTFxcXCI7XFxuK1xcbitpbnQgdGFyZ2V0X3BpZDtcXG4raW50IHByb2dfdHJpZ2dlcmVkO1xcbitsb25nIGVycjtcXG4rY2hhciBjb3BpZWRfYnl0ZTtcXG4rXFxuK3N0YXRpYyBpbnQgY29weV9nZXRjd2RfYXJnKGNoYXIgKnVidWYpXFxuK3tcXG4rXFx0ZXJyID0gYnBmX2NvcHlfZnJvbV91c2VyKFxcdTAwMjZjb3BpZWRfYnl0ZSwgc2l6ZW9mKGNvcGllZF9ieXRlKSwgdWJ1Zik7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuK1xcbitcXHRwcm9nX3RyaWdnZXJlZCA9IDE7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitTRUMoXFxcInRwX2J0Zi5zL3N5c19lbnRlclxcXCIpXFxuK2ludCBCUEZfUFJPRyhoYW5kbGVfc3lzX2VudGVyX3RwX2J0Ziwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGxvbmcgaWQpXFxuK3tcXG4rXFx0aWYgKChicGZfZ2V0X2N1cnJlbnRfcGlkX3RnaWQoKSBcXHUwMDNlXFx1MDAzZSAzMikgIT0gdGFyZ2V0X3BpZCB8fFxcbitcXHQgICAgaWQgIT0gX19OUl9nZXRjd2QpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0cmV0dXJuIGNvcHlfZ2V0Y3dkX2FyZygodm9pZCAqKVBUX1JFR1NfUEFSTTFfU1lTQ0FMTChyZWdzKSk7XFxuK31cXG4rXFxuK1NFQyhcXFwicmF3X3RwLnMvc3lzX2VudGVyXFxcIilcXG4raW50IEJQRl9QUk9HKGhhbmRsZV9zeXNfZW50ZXJfcmF3X3RwLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgbG9uZyBpZClcXG4re1xcbitcXHRpZiAoKGJwZl9nZXRfY3VycmVudF9waWRfdGdpZCgpIFxcdTAwM2VcXHUwMDNlIDMyKSAhPSB0YXJnZXRfcGlkIHx8XFxuK1xcdCAgICBpZCAhPSBfX05SX2dldGN3ZClcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcbitcXHRyZXR1cm4gY29weV9nZXRjd2RfYXJnKCh2b2lkICopUFRfUkVHU19QQVJNMV9DT1JFX1NZU0NBTEwocmVncykpO1xcbit9XFxuK1xcbitTRUMoXFxcInRwLnMvc3lzY2FsbHMvc3lzX2VudGVyX2dldGN3ZFxcXCIpXFxuK2ludCBoYW5kbGVfc3lzX2VudGVyX3RwKHN0cnVjdCBzeXNjYWxsX3RyYWNlX2VudGVyICphcmdzKVxcbit7XFxuK1xcdGlmICgoYnBmX2dldF9jdXJyZW50X3BpZF90Z2lkKCkgXFx1MDAzZVxcdTAwM2UgMzIpICE9IHRhcmdldF9waWQpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0cmV0dXJuIGNvcHlfZ2V0Y3dkX2FyZygodm9pZCAqKWFyZ3MtXFx1MDAzZWFyZ3NbMF0pO1xcbit9XFxuK1xcbitTRUMoXFxcInRwLnMvc3lzY2FsbHMvc3lzX2V4aXRfZ2V0Y3dkXFxcIilcXG4raW50IGhhbmRsZV9zeXNfZXhpdF90cChzdHJ1Y3Qgc3lzY2FsbF90cmFjZV9leGl0ICphcmdzKVxcbit7XFxuK1xcdHN0cnVjdCBwdF9yZWdzICpyZWdzO1xcbitcXG4rXFx0aWYgKChicGZfZ2V0X2N1cnJlbnRfcGlkX3RnaWQoKSBcXHUwMDNlXFx1MDAzZSAzMikgIT0gdGFyZ2V0X3BpZClcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcbitcXHRyZWdzID0gKHN0cnVjdCBwdF9yZWdzICopYnBmX3Rhc2tfcHRfcmVncyhicGZfZ2V0X2N1cnJlbnRfdGFza19idGYoKSk7XFxuK1xcdHJldHVybiBjb3B5X2dldGN3ZF9hcmcoKHZvaWQgKilQVF9SRUdTX1BBUk0xX0NPUkVfU1lTQ0FMTChyZWdzKSk7XFxuK31cXG4rXFxuK1NFQyhcXFwicmF3X3RwLnNcXFwiKVxcbitpbnQgQlBGX1BST0coaGFuZGxlX3Jhd190cF9iYXJlLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgbG9uZyBpZClcXG4re1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rU0VDKFxcXCJ0cC5zXFxcIilcXG4raW50IGhhbmRsZV90cF9iYXJlKHZvaWQgKmN0eClcXG4re1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rU0VDKFxcXCJ0cmFjZXBvaW50LnMvc3lzY2FsbHMvc3lzX2VudGVyX2dldGN3ZFxcXCIpXFxuK2ludCBoYW5kbGVfc3lzX2VudGVyX3RwX2FsaWFzKHN0cnVjdCBzeXNjYWxsX3RyYWNlX2VudGVyICphcmdzKVxcbit7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitTRUMoXFxcInJhd190cmFjZXBvaW50LnMvc3lzX2VudGVyXFxcIilcXG4raW50IEJQRl9QUk9HKGhhbmRsZV9zeXNfZW50ZXJfcmF3X3RwX2FsaWFzLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgbG9uZyBpZClcXG4re1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rU0VDKFxcXCJyYXdfdHAucy9zeXNfZW50ZXJcXFwiKVxcbitpbnQgQlBGX1BST0coaGFuZGxlX3Rlc3RfcnVuLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgbG9uZyBpZClcXG4re1xcbitcXHRpZiAoKF9fdTY0KXJlZ3MgPT0gMHgxMjM0VUxMIFxcdTAwMjZcXHUwMDI2IChfX3U2NClpZCA9PSAweDU2NzhVTEwpXFxuK1xcdFxcdHJldHVybiAoX191NjQpcmVncyArIChfX3U2NClpZDtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitTRUMoXFxcInJhd190cC5zL3NjaGVkX3N3aXRjaFxcXCIpXFxuK2ludCBCUEZfUFJPRyhoYW5kbGVfcmF3X3RwX25vbl9mYXVsdGFibGUsIGJvb2wgcHJlZW1wdCxcXG4rXFx0ICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnByZXYsIHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dClcXG4re1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rU0VDKFxcXCJ0cC5zL3NjaGVkL3NjaGVkX3N3aXRjaFxcXCIpXFxuK2ludCBoYW5kbGVfdHBfbm9uX3N5c2NhbGwodm9pZCAqY3R4KVxcbit7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19mYWlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5jXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi4xYTA3NDhhOTUyMGJiXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19mYWlsLmNcXG5AQCAtMCwwICsxLDE4IEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKy8qIENvcHlyaWdodCAoYykgMjAyNSBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy4gKi9cXG4rXFxuKyNpbmNsdWRlIFxcdTAwM2N2bWxpbnV4LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NicGYvYnBmX3RyYWNpbmcuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2JwZi9icGZfaGVscGVycy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXFwiYnBmX21pc2MuaFxcXCJcXG4rXFxuK2NoYXIgX2xpY2Vuc2VbXSBTRUMoXFxcImxpY2Vuc2VcXFwiKSA9IFxcXCJHUExcXFwiO1xcbitcXG4rLyogU2xlZXBhYmxlIHByb2dyYW0gb24gYSBub24tZmF1bHRhYmxlIHRyYWNlcG9pbnQgc2hvdWxkIGZhaWwgdG8gbG9hZCAqL1xcbitTRUMoXFxcInRwX2J0Zi5zL3NjaGVkX3N3aXRjaFxcXCIpXFxuK19fZmFpbHVyZSBfX21zZyhcXFwiU2xlZXBhYmxlIHByb2dyYW0gY2Fubm90IGF0dGFjaCB0byBub24tZmF1bHRhYmxlIHRyYWNlcG9pbnRcXFwiKVxcbitpbnQgQlBGX1BST0coaGFuZGxlX3NjaGVkX3N3aXRjaCwgYm9vbCBwcmVlbXB0LFxcbitcXHQgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqcHJldiwgc3RydWN0IHRhc2tfc3RydWN0ICpuZXh0KVxcbit7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuY1xcbmluZGV4IGMyYjdmNWViZjE2OGMuLjZkYWJjNTUyMjk0NTUgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL3NsZWVwYWJsZS5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL3NsZWVwYWJsZS5jXFxuQEAgLTc2LDcgKzc2LDIwIEBAXFxuIFxcdC5ydW5zID0gLTEsXFxuIH0sXFxuIHtcXG4tXFx0XFxcInNsZWVwYWJsZSByYXcgdHJhY2Vwb2ludCByZWplY3RcXFwiLFxcbitcXHRcXFwic2xlZXBhYmxlIHJhdyB0cmFjZXBvaW50IGFjY2VwdFxcXCIsXFxuK1xcdC5pbnNucyA9IHtcXG4rXFx0QlBGX01PVjY0X0lNTShCUEZfUkVHXzAsIDApLFxcbitcXHRCUEZfRVhJVF9JTlNOKCksXFxuK1xcdH0sXFxuK1xcdC5wcm9nX3R5cGUgPSBCUEZfUFJPR19UWVBFX1RSQUNJTkcsXFxuK1xcdC5leHBlY3RlZF9hdHRhY2hfdHlwZSA9IEJQRl9UUkFDRV9SQVdfVFAsXFxuK1xcdC5rZnVuYyA9IFxcXCJzeXNfZW50ZXJcXFwiLFxcbitcXHQucmVzdWx0ID0gQUNDRVBULFxcbitcXHQuZmxhZ3MgPSBCUEZfRl9TTEVFUEFCTEUsXFxuK1xcdC5ydW5zID0gLTEsXFxuK30sXFxuK3tcXG4rXFx0XFxcInNsZWVwYWJsZSByYXcgdHJhY2Vwb2ludCByZWplY3Qgbm9uLWZhdWx0YWJsZVxcXCIsXFxuIFxcdC5pbnNucyA9IHtcXG4gXFx0QlBGX01PVjY0X0lNTShCUEZfUkVHXzAsIDApLFxcbiBcXHRCUEZfRVhJVF9JTlNOKCksXFxuQEAgLTg1LDcgKzk4LDcgQEBcXG4gXFx0LmV4cGVjdGVkX2F0dGFjaF90eXBlID0gQlBGX1RSQUNFX1JBV19UUCxcXG4gXFx0LmtmdW5jID0gXFxcInNjaGVkX3N3aXRjaFxcXCIsXFxuIFxcdC5yZXN1bHQgPSBSRUpFQ1QsXFxuLVxcdC5lcnJzdHIgPSBcXFwiT25seSBmZW50cnkvZmV4aXQvZnNlc3Npb24vZm1vZF9yZXQsIGxzbSwgaXRlciwgdXByb2JlLCBhbmQgc3RydWN0X29wcyBwcm9ncmFtcyBjYW4gYmUgc2xlZXBhYmxlXFxcIixcXG4rXFx0LmVycnN0ciA9IFxcXCJTbGVlcGFibGUgcHJvZ3JhbSBjYW5ub3QgYXR0YWNoIHRvIG5vbi1mYXVsdGFibGUgdHJhY2Vwb2ludFxcXCIsXFxuIFxcdC5mbGFncyA9IEJQRl9GX1NMRUVQQUJMRSxcXG4gXFx0LnJ1bnMgPSAtMSxcXG4gfSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTc6Mzc6NTkuNTc5NTE3MTAzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6OTg0Mjg2ODgyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGFuZCBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8gYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTM4NWI3ZmRmMDkxZDJiZmIzYmJhY2Y4NjQwM2FhOTFhM2M5ZjE1MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDEwIDE3OjM3OjU2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjE5NTAwYjc4NWVlMzJcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jXG5AQCAtMCwwICsxLDE0MiBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rLyogQ29weXJpZ2h0IChjKSAyMDI1IE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLiAqL1xuK1xuKyNpbmNsdWRlIFx1MDAzY3Rlc3RfcHJvZ3MuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY3VuaXN0ZC5oXHUwMDNlXG4rI2luY2x1ZGUgXCJ0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cy5za2VsLmhcIlxuKyNpbmNsdWRlIFwidGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5za2VsLmhcIlxuK1xuK3N0YXRpYyB2b2lkIHJ1bl90ZXN0KHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbClcbit7XG4rXHRjaGFyIGJ1ZltQQVRIX01BWF0gPSBcIi9cIjtcbitcbitcdHNrZWwtXHUwMDNlYnNzLVx1MDAzZXRhcmdldF9waWQgPSBnZXRwaWQoKTtcbitcdHNrZWwtXHUwMDNlYnNzLVx1MDAzZXByb2dfdHJpZ2dlcmVkID0gMDtcbitcdHNrZWwtXHUwMDNlYnNzLVx1MDAzZWVyciA9IDA7XG4rXHRza2VsLVx1MDAzZWJzcy1cdTAwM2Vjb3BpZWRfYnl0ZSA9IDA7XG4rXG4rXHRzeXNjYWxsKF9fTlJfZ2V0Y3dkLCBidWYsIHNpemVvZihidWYpKTtcbitcbitcdEFTU0VSVF9FUShza2VsLVx1MDAzZWJzcy1cdTAwM2Vwcm9nX3RyaWdnZXJlZCwgMSwgXCJwcm9nX3RyaWdnZXJlZFwiKTtcbitcdEFTU0VSVF9FUShza2VsLVx1MDAzZWJzcy1cdTAwM2VlcnIsIDAsIFwiZXJyXCIpO1xuK1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZWNvcGllZF9ieXRlLCAnLycsIFwiY29waWVkX2J5dGVcIik7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHJ1bl9hdXRvX2F0dGFjaF90ZXN0KHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZyxcbitcdFx0XHRcdCBzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpXG4re1xuK1x0c3RydWN0IGJwZl9saW5rICpsaW5rO1xuK1xuK1x0bGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2gocHJvZyk7XG4rXHRpZiAoIUFTU0VSVF9PS19QVFIobGluaywgXCJwcm9nX2F0dGFjaFwiKSlcbitcdFx0cmV0dXJuO1xuK1xuK1x0cnVuX3Rlc3Qoc2tlbCk7XG4rXHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgdGVzdF9hdHRhY2hfb25seShzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2cpXG4re1xuK1x0c3RydWN0IGJwZl9saW5rICpsaW5rO1xuK1xuK1x0bGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2gocHJvZyk7XG4rXHRpZiAoQVNTRVJUX09LX1BUUihsaW5rLCBcImF0dGFjaFwiKSlcbitcdFx0YnBmX2xpbmtfX2Rlc3Ryb3kobGluayk7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHRlc3RfYXR0YWNoX3JlamVjdChzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2cpXG4re1xuK1x0c3RydWN0IGJwZl9saW5rICpsaW5rO1xuK1xuK1x0bGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2gocHJvZyk7XG4rXHRpZiAoIUFTU0VSVF9FUlJfUFRSKGxpbmssIFwiYXR0YWNoX3Nob3VsZF9mYWlsXCIpKVxuK1x0XHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgdGVzdF9yYXdfdHBfYmFyZShzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpXG4re1xuK1x0c3RydWN0IGJwZl9saW5rICpsaW5rO1xuK1xuK1x0bGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2hfcmF3X3RyYWNlcG9pbnQoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfcmF3X3RwX2JhcmUsXG4rXHRcdFx0XHRcdFx0ICBcInN5c19lbnRlclwiKTtcbitcdGlmIChBU1NFUlRfT0tfUFRSKGxpbmssIFwiYXR0YWNoXCIpKVxuK1x0XHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgdGVzdF90cF9iYXJlKHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbClcbit7XG4rXHRzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7XG4rXG4rXHRsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjZXBvaW50KHNrZWwtXHUwMDNlcHJvZ3MuaGFuZGxlX3RwX2JhcmUsXG4rXHRcdFx0XHRcdCAgICAgIFwic3lzY2FsbHNcIiwgXCJzeXNfZW50ZXJfZ2V0Y3dkXCIpO1xuK1x0aWYgKEFTU0VSVF9PS19QVFIobGluaywgXCJhdHRhY2hcIikpXG4rXHRcdGJwZl9saW5rX19kZXN0cm95KGxpbmspO1xuK31cbitcbitzdGF0aWMgdm9pZCB0ZXN0X3Rlc3RfcnVuKHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbClcbit7XG4rXHRfX3U2NCBhcmdzWzJdID0gezB4MTIzNFVMTCwgMHg1Njc4VUxMfTtcbitcdExJQkJQRl9PUFRTKGJwZl90ZXN0X3J1bl9vcHRzLCB0b3B0cyxcbitcdFx0LmN0eF9pbiA9IGFyZ3MsXG4rXHRcdC5jdHhfc2l6ZV9pbiA9IHNpemVvZihhcmdzKSxcbitcdCk7XG4rXHRpbnQgZmQsIGVycjtcbitcbitcdGZkID0gYnBmX3Byb2dyYW1fX2ZkKHNrZWwtXHUwMDNlcHJvZ3MuaGFuZGxlX3Rlc3RfcnVuKTtcbitcdGVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoZmQsIFx1MDAyNnRvcHRzKTtcbitcdEFTU0VSVF9PSyhlcnIsIFwidGVzdF9ydW5cIik7XG4rXHRBU1NFUlRfRVEodG9wdHMucmV0dmFsLCBhcmdzWzBdICsgYXJnc1sxXSwgXCJ0ZXN0X3J1bl9yZXR2YWxcIik7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHRlc3RfdGVzdF9ydW5fb25fY3B1X3JlamVjdChzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpXG4re1xuK1x0X191NjQgYXJnc1syXSA9IHt9O1xuK1x0TElCQlBGX09QVFMoYnBmX3Rlc3RfcnVuX29wdHMsIHRvcHRzLFxuK1x0XHQuY3R4X2luID0gYXJncyxcbitcdFx0LmN0eF9zaXplX2luID0gc2l6ZW9mKGFyZ3MpLFxuK1x0XHQuZmxhZ3MgPSBCUEZfRl9URVNUX1JVTl9PTl9DUFUsXG4rXHQpO1xuK1x0aW50IGZkLCBlcnI7XG4rXG4rXHRmZCA9IGJwZl9wcm9ncmFtX19mZChza2VsLVx1MDAzZXByb2dzLmhhbmRsZV90ZXN0X3J1bik7XG4rXHRlcnIgPSBicGZfcHJvZ190ZXN0X3J1bl9vcHRzKGZkLCBcdTAwMjZ0b3B0cyk7XG4rXHRBU1NFUlRfRVJSKGVyciwgXCJ0ZXN0X3J1bl9vbl9jcHVfcmVqZWN0XCIpO1xuK31cbitcbit2b2lkIHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzKHZvaWQpXG4re1xuK1x0c3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsO1xuK1xuK1x0c2tlbCA9IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX19vcGVuX2FuZF9sb2FkKCk7XG4rXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgXCJvcGVuX2FuZF9sb2FkXCIpKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInRwX2J0ZlwiKSlcbitcdFx0cnVuX2F1dG9fYXR0YWNoX3Rlc3Qoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3RwX2J0Ziwgc2tlbCk7XG4rXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInJhd190cFwiKSlcbitcdFx0cnVuX2F1dG9fYXR0YWNoX3Rlc3Qoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3Jhd190cCwgc2tlbCk7XG4rXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInRyYWNlcG9pbnRcIikpXG4rXHRcdHJ1bl9hdXRvX2F0dGFjaF90ZXN0KHNrZWwtXHUwMDNlcHJvZ3MuaGFuZGxlX3N5c19lbnRlcl90cCwgc2tlbCk7XG4rXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInN5c19leGl0XCIpKVxuK1x0XHRydW5fYXV0b19hdHRhY2hfdGVzdChza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9zeXNfZXhpdF90cCwgc2tlbCk7XG4rXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInRyYWNlcG9pbnRfYWxpYXNcIikpXG4rXHRcdHRlc3RfYXR0YWNoX29ubHkoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3RwX2FsaWFzKTtcbitcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwicmF3X3RyYWNlcG9pbnRfYWxpYXNcIikpXG4rXHRcdHRlc3RfYXR0YWNoX29ubHkoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3Jhd190cF9hbGlhcyk7XG4rXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInJhd190cF9iYXJlXCIpKVxuK1x0XHR0ZXN0X3Jhd190cF9iYXJlKHNrZWwpO1xuK1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJ0cF9iYXJlXCIpKVxuK1x0XHR0ZXN0X3RwX2JhcmUoc2tlbCk7XG4rXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInRlc3RfcnVuXCIpKVxuK1x0XHR0ZXN0X3Rlc3RfcnVuKHNrZWwpO1xuK1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJ0ZXN0X3J1bl9vbl9jcHVfcmVqZWN0XCIpKVxuK1x0XHR0ZXN0X3Rlc3RfcnVuX29uX2NwdV9yZWplY3Qoc2tlbCk7XG4rXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInJhd190cF9ub25fZmF1bHRhYmxlXCIpKVxuK1x0XHR0ZXN0X2F0dGFjaF9yZWplY3Qoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfcmF3X3RwX25vbl9mYXVsdGFibGUpO1xuK1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJ0cF9ub25fc3lzY2FsbFwiKSlcbitcdFx0dGVzdF9hdHRhY2hfcmVqZWN0KHNrZWwtXHUwMDNlcHJvZ3MuaGFuZGxlX3RwX25vbl9zeXNjYWxsKTtcbitcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwidHBfYnRmX25vbl9mYXVsdGFibGVfcmVqZWN0XCIpKVxuK1x0XHRSVU5fVEVTVFModGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbCk7XG4rXG4rXHR0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19fZGVzdHJveShza2VsKTtcbit9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjI1NGY3ZmQ4OTVkOWZcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cy5jXG5AQCAtMCwwICsxLDExMiBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rLyogQ29weXJpZ2h0IChjKSAyMDI1IE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLiAqL1xuK1xuKyNpbmNsdWRlIFx1MDAzY3ZtbGludXguaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2FzbS91bmlzdGQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfdHJhY2luZy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9jb3JlX3JlYWQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4rXG4rY2hhciBfbGljZW5zZVtdIFNFQyhcImxpY2Vuc2VcIikgPSBcIkdQTFwiO1xuK1xuK2ludCB0YXJnZXRfcGlkO1xuK2ludCBwcm9nX3RyaWdnZXJlZDtcbitsb25nIGVycjtcbitjaGFyIGNvcGllZF9ieXRlO1xuK1xuK3N0YXRpYyBpbnQgY29weV9nZXRjd2RfYXJnKGNoYXIgKnVidWYpXG4re1xuK1x0ZXJyID0gYnBmX2NvcHlfZnJvbV91c2VyKFx1MDAyNmNvcGllZF9ieXRlLCBzaXplb2YoY29waWVkX2J5dGUpLCB1YnVmKTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBlcnI7XG4rXG4rXHRwcm9nX3RyaWdnZXJlZCA9IDE7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rU0VDKFwidHBfYnRmLnMvc3lzX2VudGVyXCIpXG4raW50IEJQRl9QUk9HKGhhbmRsZV9zeXNfZW50ZXJfdHBfYnRmLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgbG9uZyBpZClcbit7XG4rXHRpZiAoKGJwZl9nZXRfY3VycmVudF9waWRfdGdpZCgpIFx1MDAzZVx1MDAzZSAzMikgIT0gdGFyZ2V0X3BpZCB8fFxuK1x0ICAgIGlkICE9IF9fTlJfZ2V0Y3dkKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdHJldHVybiBjb3B5X2dldGN3ZF9hcmcoKHZvaWQgKilQVF9SRUdTX1BBUk0xX1NZU0NBTEwocmVncykpO1xuK31cbitcbitTRUMoXCJyYXdfdHAucy9zeXNfZW50ZXJcIilcbitpbnQgQlBGX1BST0coaGFuZGxlX3N5c19lbnRlcl9yYXdfdHAsIHN0cnVjdCBwdF9yZWdzICpyZWdzLCBsb25nIGlkKVxuK3tcbitcdGlmICgoYnBmX2dldF9jdXJyZW50X3BpZF90Z2lkKCkgXHUwMDNlXHUwMDNlIDMyKSAhPSB0YXJnZXRfcGlkIHx8XG4rXHQgICAgaWQgIT0gX19OUl9nZXRjd2QpXG4rXHRcdHJldHVybiAwO1xuK1xuK1x0cmV0dXJuIGNvcHlfZ2V0Y3dkX2FyZygodm9pZCAqKVBUX1JFR1NfUEFSTTFfQ09SRV9TWVNDQUxMKHJlZ3MpKTtcbit9XG4rXG4rU0VDKFwidHAucy9zeXNjYWxscy9zeXNfZW50ZXJfZ2V0Y3dkXCIpXG4raW50IGhhbmRsZV9zeXNfZW50ZXJfdHAoc3RydWN0IHN5c2NhbGxfdHJhY2VfZW50ZXIgKmFyZ3MpXG4re1xuK1x0aWYgKChicGZfZ2V0X2N1cnJlbnRfcGlkX3RnaWQoKSBcdTAwM2VcdTAwM2UgMzIpICE9IHRhcmdldF9waWQpXG4rXHRcdHJldHVybiAwO1xuK1xuK1x0cmV0dXJuIGNvcHlfZ2V0Y3dkX2FyZygodm9pZCAqKWFyZ3MtXHUwMDNlYXJnc1swXSk7XG4rfVxuK1xuK1NFQyhcInRwLnMvc3lzY2FsbHMvc3lzX2V4aXRfZ2V0Y3dkXCIpXG4raW50IGhhbmRsZV9zeXNfZXhpdF90cChzdHJ1Y3Qgc3lzY2FsbF90cmFjZV9leGl0ICphcmdzKVxuK3tcbitcdHN0cnVjdCBwdF9yZWdzICpyZWdzO1xuK1xuK1x0aWYgKChicGZfZ2V0X2N1cnJlbnRfcGlkX3RnaWQoKSBcdTAwM2VcdTAwM2UgMzIpICE9IHRhcmdldF9waWQpXG4rXHRcdHJldHVybiAwO1xuK1xuK1x0cmVncyA9IChzdHJ1Y3QgcHRfcmVncyAqKWJwZl90YXNrX3B0X3JlZ3MoYnBmX2dldF9jdXJyZW50X3Rhc2tfYnRmKCkpO1xuK1x0cmV0dXJuIGNvcHlfZ2V0Y3dkX2FyZygodm9pZCAqKVBUX1JFR1NfUEFSTTFfQ09SRV9TWVNDQUxMKHJlZ3MpKTtcbit9XG4rXG4rU0VDKFwicmF3X3RwLnNcIilcbitpbnQgQlBGX1BST0coaGFuZGxlX3Jhd190cF9iYXJlLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgbG9uZyBpZClcbit7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rU0VDKFwidHAuc1wiKVxuK2ludCBoYW5kbGVfdHBfYmFyZSh2b2lkICpjdHgpXG4re1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK1NFQyhcInRyYWNlcG9pbnQucy9zeXNjYWxscy9zeXNfZW50ZXJfZ2V0Y3dkXCIpXG4raW50IGhhbmRsZV9zeXNfZW50ZXJfdHBfYWxpYXMoc3RydWN0IHN5c2NhbGxfdHJhY2VfZW50ZXIgKmFyZ3MpXG4re1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK1NFQyhcInJhd190cmFjZXBvaW50LnMvc3lzX2VudGVyXCIpXG4raW50IEJQRl9QUk9HKGhhbmRsZV9zeXNfZW50ZXJfcmF3X3RwX2FsaWFzLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgbG9uZyBpZClcbit7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rU0VDKFwicmF3X3RwLnMvc3lzX2VudGVyXCIpXG4raW50IEJQRl9QUk9HKGhhbmRsZV90ZXN0X3J1biwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGxvbmcgaWQpXG4re1xuK1x0aWYgKChfX3U2NClyZWdzID09IDB4MTIzNFVMTCBcdTAwMjZcdTAwMjYgKF9fdTY0KWlkID09IDB4NTY3OFVMTClcbitcdFx0cmV0dXJuIChfX3U2NClyZWdzICsgKF9fdTY0KWlkO1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK1NFQyhcInJhd190cC5zL3NjaGVkX3N3aXRjaFwiKVxuK2ludCBCUEZfUFJPRyhoYW5kbGVfcmF3X3RwX25vbl9mYXVsdGFibGUsIGJvb2wgcHJlZW1wdCxcbitcdCAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQpXG4re1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK1NFQyhcInRwLnMvc2NoZWQvc2NoZWRfc3dpdGNoXCIpXG4raW50IGhhbmRsZV90cF9ub25fc3lzY2FsbCh2b2lkICpjdHgpXG4re1xuK1x0cmV0dXJuIDA7XG4rfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19mYWlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uMWEwNzQ4YTk1MjBiYlxuLS0tIC9kZXYvbnVsbFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX2ZhaWwuY1xuQEAgLTAsMCArMSwxOCBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rLyogQ29weXJpZ2h0IChjKSAyMDI1IE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLiAqL1xuK1xuKyNpbmNsdWRlIFx1MDAzY3ZtbGludXguaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfdHJhY2luZy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbisjaW5jbHVkZSBcImJwZl9taXNjLmhcIlxuK1xuK2NoYXIgX2xpY2Vuc2VbXSBTRUMoXCJsaWNlbnNlXCIpID0gXCJHUExcIjtcbitcbisvKiBTbGVlcGFibGUgcHJvZ3JhbSBvbiBhIG5vbi1mYXVsdGFibGUgdHJhY2Vwb2ludCBzaG91bGQgZmFpbCB0byBsb2FkICovXG4rU0VDKFwidHBfYnRmLnMvc2NoZWRfc3dpdGNoXCIpXG4rX19mYWlsdXJlIF9fbXNnKFwiU2xlZXBhYmxlIHByb2dyYW0gY2Fubm90IGF0dGFjaCB0byBub24tZmF1bHRhYmxlIHRyYWNlcG9pbnRcIilcbitpbnQgQlBGX1BST0coaGFuZGxlX3NjaGVkX3N3aXRjaCwgYm9vbCBwcmVlbXB0LFxuK1x0ICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnByZXYsIHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dClcbit7XG4rXHRyZXR1cm4gMDtcbit9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL3NsZWVwYWJsZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL3NsZWVwYWJsZS5jXG5pbmRleCBjMmI3ZjVlYmYxNjhjLi42ZGFiYzU1MjI5NDU1IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL3NsZWVwYWJsZS5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvc2xlZXBhYmxlLmNcbkBAIC03Niw3ICs3NiwyMCBAQFxuIFx0LnJ1bnMgPSAtMSxcbiB9LFxuIHtcbi1cdFwic2xlZXBhYmxlIHJhdyB0cmFjZXBvaW50IHJlamVjdFwiLFxuK1x0XCJzbGVlcGFibGUgcmF3IHRyYWNlcG9pbnQgYWNjZXB0XCIsXG4rXHQuaW5zbnMgPSB7XG4rXHRCUEZfTU9WNjRfSU1NKEJQRl9SRUdfMCwgMCksXG4rXHRCUEZfRVhJVF9JTlNOKCksXG4rXHR9LFxuK1x0LnByb2dfdHlwZSA9IEJQRl9QUk9HX1RZUEVfVFJBQ0lORyxcbitcdC5leHBlY3RlZF9hdHRhY2hfdHlwZSA9IEJQRl9UUkFDRV9SQVdfVFAsXG4rXHQua2Z1bmMgPSBcInN5c19lbnRlclwiLFxuK1x0LnJlc3VsdCA9IEFDQ0VQVCxcbitcdC5mbGFncyA9IEJQRl9GX1NMRUVQQUJMRSxcbitcdC5ydW5zID0gLTEsXG4rfSxcbit7XG4rXHRcInNsZWVwYWJsZSByYXcgdHJhY2Vwb2ludCByZWplY3Qgbm9uLWZhdWx0YWJsZVwiLFxuIFx0Lmluc25zID0ge1xuIFx0QlBGX01PVjY0X0lNTShCUEZfUkVHXzAsIDApLFxuIFx0QlBGX0VYSVRfSU5TTigpLFxuQEAgLTg1LDcgKzk4LDcgQEBcbiBcdC5leHBlY3RlZF9hdHRhY2hfdHlwZSA9IEJQRl9UUkFDRV9SQVdfVFAsXG4gXHQua2Z1bmMgPSBcInNjaGVkX3N3aXRjaFwiLFxuIFx0LnJlc3VsdCA9IFJFSkVDVCxcbi1cdC5lcnJzdHIgPSBcIk9ubHkgZmVudHJ5L2ZleGl0L2ZzZXNzaW9uL2Ztb2RfcmV0LCBsc20sIGl0ZXIsIHVwcm9iZSwgYW5kIHN0cnVjdF9vcHMgcHJvZ3JhbXMgY2FuIGJlIHNsZWVwYWJsZVwiLFxuK1x0LmVycnN0ciA9IFwiU2xlZXBhYmxlIHByb2dyYW0gY2Fubm90IGF0dGFjaCB0byBub24tZmF1bHRhYmxlIHRyYWNlcG9pbnRcIixcbiBcdC5mbGFncyA9IEJQRl9GX1NMRUVQQUJMRSxcbiBcdC5ydW5zID0gLTEsXG4gfSxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE3OjM3OjU5LjU3OTUxODMwM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk4NDI4NDgxNTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBTdWl0YWJpbGl0eSoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggYWRkaW5nIHRlc3RzIGZvciBzbGVlcGFibGUgdHJhY2Vwb2ludHMgaW4gQlBGLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBhc3Nlc3MgaXRzIGltcGFjdCBvbiB0aGUga2VybmVsJ3MgZnV6emluZyBzdWl0YWJpbGl0eS4gVGhlIHBhdGNoIG1vZGlmaWVzIGZpbGVzOiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmNgLCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmNgLCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX2ZhaWwuY2AsIGFuZCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL3NsZWVwYWJsZS5jYC4gIEltbWVkaWF0ZWx5LCBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGFueSAqa2VybmVsKiBjb2RlIGlzIHRvdWNoZWQuICBBIHF1aWNrIHJldmlldyBvZiB0aGUgZGlmZiBzaG93cyB0aGF0IGV2ZXJ5dGhpbmcgaXMgY29udGFpbmVkIHdpdGhpbiB0aGUgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gIGRpcmVjdG9yeS5cblxuSSBuZWVkIHRvIGJlIGNlcnRhaW4gdGhlcmUgYXJlICpubyogb3RoZXIgbW9kaWZpZWQgZmlsZXMsIG91dHNpZGUgb2YgdGhlIHNlbGZ0ZXN0cyBkaXJlY3RvcnkuIEEgc2Vjb25kIGxvb2sgYXQgdGhlIGRpZmYgY29uZmlybXMgdGhlIGVhcmxpZXIgY2hlY2suIFRoZSBwYXRjaCBpcyBzb2xlbHkgZm9jdXNlZCBvbiBhZGRpbmcgb3IgY2hhbmdpbmcgdGhlIHNlbGZ0ZXN0cy4gVGhpcyBpcyBpbXBvcnRhbnQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBjaGFuZ2VzIHNob3VsZCBiZSBmdXp6ZWQuXG5cbk5vdywgbGV0J3MgY29uc2lkZXIgdGhlIGNvbnRleHQgZm9yIHRoaXMuICBUaGUgcHJvbXB0IGV4cGxpY2l0bHkgc3RhdGVzIHRoYXQgcGF0Y2hlcyBtb2RpZnlpbmcgZG9jdW1lbnRhdGlvbiwgS2NvbmZpZyBmaWxlcywgY29tbWVudHMsIGxvZ2dpbmcsIGNvbnN0YW50cywgdW5yZWFjaGFibGUgY29kZSwgdmVuZG9yLXNwZWNpZmljIGRyaXZlcnMgcmVxdWlyaW5nIHBoeXNpY2FsIGhhcmR3YXJlLCBvciBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIHNob3VsZG4ndCBiZSBjb25zaWRlcmVkIGZvciBmdXp6aW5nLiBDcnVjaWFsbHksIGl0IHNwZWNpZmljYWxseSBtZW50aW9ucyB0aGF0ICpzZWxmdGVzdHMqIGFyZSAqbm90KiBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbC4gU2VsZnRlc3RzIGFyZSB1c2Vyc3BhY2UgdGVzdHMsIGV2ZW4gaWYgdGhleSB0b3VjaCB0aGUgQlBGIHN1YnN5c3RlbSwgdGhhdCBkbyBub3QgY2hhbmdlIHRoZSBrZXJuZWwncyBhY3R1YWwgZXhlY3V0aW9uIGZsb3cgaW4gYSB3YXkgdGhhdCBmdXp6aW5nIGlzIGxpa2VseSB0byBmaW5kIGEgYnVnLiBTbywgbW9kaWZ5aW5nIHNlbGZ0ZXN0cyB3b24ndCBjaGFuZ2UgdGhlIGtlcm5lbCBpbWFnZS5cblxuRmluYWxseSwgSSBuZWVkIHRvIGV4cGxpY2l0bHkgdmVyaWZ5IHRoZSBmaWxlcyBpbiB0aGUgZGlmZi4gTGV0J3Mgc2VlLi4uIHRoZSBkaWZmIHN0YXJ0cyB3aXRoIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuY2AsIGZvbGxvd2VkIGJ5IHRoZSBvdGhlciB0aHJlZSBmaWxlcy4gVGhpcyByZWluZm9yY2VzIHRoYXQgYWxsIGNoYW5nZXMgYXJlIHdpdGhpbiB0aGUgc2VsZnRlc3RzIGRpcmVjdG9yeS5cblxuVGhlcmVmb3JlLCBteSBjb25jbHVzaW9uIGlzIHRoYXQgdGhpcyBwYXRjaCBpcyBub3QgXCJXb3J0aEZ1enppbmdcIiBiZWNhdXNlIGl0IG9ubHkgY29udGFpbnMgc2VsZnRlc3QgbW9kaWZpY2F0aW9ucy4gSSB3aWxsIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGFuZCBwcm92aWRlIHRoZSByZWFzb25pbmc6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhbmQgbW9kaWZpZXMgQlBGIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi5cIlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODM5LCJPdXRwdXRUb2tlbnMiOjY3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzUxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTc6Mzg6MDkuNDIyMzY4OTgyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTYyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYW5kIG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLyBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYW5kIG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLyBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNzozODowOS40MjIzODc2NjJaIiwiU2VxIjo1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow5scqk[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-10 16:44:30 +0000 UTC FinishedAt: 2026-08-10 17:38:10 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE3OjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGFuZCBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8gYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNzozNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDUzODViN2ZkZjA5MWQyYmZiM2JiYWNmODY0MDNhYTkxYTNjOWYxNTFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxMCAxNzozNzo1NiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uMTk1MDBiNzg1ZWUzMlxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmNcbkBAIC0wLDAgJiM0MzsxLDE0MiBAQFxuJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsvKiBDb3B5cmlnaHQgKGMpIDIwMjUgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2N0ZXN0X3Byb2dzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjdW5pc3RkLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7dGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMuc2tlbC5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX2ZhaWwuc2tlbC5oXCYjMzQ7XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBydW5fdGVzdChzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpXG4mIzQzO3tcbiYjNDM7XHRjaGFyIGJ1ZltQQVRIX01BWF0gPSBcJiMzNDsvXCYjMzQ7O1xuJiM0MztcbiYjNDM7XHRza2VsLVx1MDAzZWJzcy1cdTAwM2V0YXJnZXRfcGlkID0gZ2V0cGlkKCk7XG4mIzQzO1x0c2tlbC1cdTAwM2Vic3MtXHUwMDNlcHJvZ190cmlnZ2VyZWQgPSAwO1xuJiM0MztcdHNrZWwtXHUwMDNlYnNzLVx1MDAzZWVyciA9IDA7XG4mIzQzO1x0c2tlbC1cdTAwM2Vic3MtXHUwMDNlY29waWVkX2J5dGUgPSAwO1xuJiM0MztcbiYjNDM7XHRzeXNjYWxsKF9fTlJfZ2V0Y3dkLCBidWYsIHNpemVvZihidWYpKTtcbiYjNDM7XG4mIzQzO1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZXByb2dfdHJpZ2dlcmVkLCAxLCBcJiMzNDtwcm9nX3RyaWdnZXJlZFwmIzM0Oyk7XG4mIzQzO1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZWVyciwgMCwgXCYjMzQ7ZXJyXCYjMzQ7KTtcbiYjNDM7XHRBU1NFUlRfRVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlY29waWVkX2J5dGUsICYjMzk7LyYjMzk7LCBcJiMzNDtjb3BpZWRfYnl0ZVwmIzM0Oyk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHJ1bl9hdXRvX2F0dGFjaF90ZXN0KHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZyxcbiYjNDM7XHRcdFx0XHQgc3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGJwZl9saW5rICpsaW5rO1xuJiM0MztcbiYjNDM7XHRsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaChwcm9nKTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9PS19QVFIobGluaywgXCYjMzQ7cHJvZ19hdHRhY2hcJiMzNDspKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRydW5fdGVzdChza2VsKTtcbiYjNDM7XHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF9hdHRhY2hfb25seShzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2cpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7XG4mIzQzO1xuJiM0MztcdGxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoKHByb2cpO1xuJiM0MztcdGlmIChBU1NFUlRfT0tfUFRSKGxpbmssIFwmIzM0O2F0dGFjaFwmIzM0OykpXG4mIzQzO1x0XHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF9hdHRhY2hfcmVqZWN0KHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBicGZfbGluayAqbGluaztcbiYjNDM7XG4mIzQzO1x0bGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2gocHJvZyk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfRVJSX1BUUihsaW5rLCBcJiMzNDthdHRhY2hfc2hvdWxkX2ZhaWxcJiMzNDspKVxuJiM0MztcdFx0YnBmX2xpbmtfX2Rlc3Ryb3kobGluayk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHRlc3RfcmF3X3RwX2JhcmUoc3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGJwZl9saW5rICpsaW5rO1xuJiM0MztcbiYjNDM7XHRsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaF9yYXdfdHJhY2Vwb2ludChza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9yYXdfdHBfYmFyZSxcbiYjNDM7XHRcdFx0XHRcdFx0ICBcJiMzNDtzeXNfZW50ZXJcJiMzNDspO1xuJiM0MztcdGlmIChBU1NFUlRfT0tfUFRSKGxpbmssIFwmIzM0O2F0dGFjaFwmIzM0OykpXG4mIzQzO1x0XHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF90cF9iYXJlKHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBicGZfbGluayAqbGluaztcbiYjNDM7XG4mIzQzO1x0bGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2hfdHJhY2Vwb2ludChza2VsLVx1MDAzZXByb2dzLmhhbmRsZV90cF9iYXJlLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgXCYjMzQ7c3lzY2FsbHNcJiMzNDssIFwmIzM0O3N5c19lbnRlcl9nZXRjd2RcJiMzNDspO1xuJiM0MztcdGlmIChBU1NFUlRfT0tfUFRSKGxpbmssIFwmIzM0O2F0dGFjaFwmIzM0OykpXG4mIzQzO1x0XHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF90ZXN0X3J1bihzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpXG4mIzQzO3tcbiYjNDM7XHRfX3U2NCBhcmdzWzJdID0gezB4MTIzNFVMTCwgMHg1Njc4VUxMfTtcbiYjNDM7XHRMSUJCUEZfT1BUUyhicGZfdGVzdF9ydW5fb3B0cywgdG9wdHMsXG4mIzQzO1x0XHQuY3R4X2luID0gYXJncyxcbiYjNDM7XHRcdC5jdHhfc2l6ZV9pbiA9IHNpemVvZihhcmdzKSxcbiYjNDM7XHQpO1xuJiM0MztcdGludCBmZCwgZXJyO1xuJiM0MztcbiYjNDM7XHRmZCA9IGJwZl9wcm9ncmFtX19mZChza2VsLVx1MDAzZXByb2dzLmhhbmRsZV90ZXN0X3J1bik7XG4mIzQzO1x0ZXJyID0gYnBmX3Byb2dfdGVzdF9ydW5fb3B0cyhmZCwgXHUwMDI2dG9wdHMpO1xuJiM0MztcdEFTU0VSVF9PSyhlcnIsIFwmIzM0O3Rlc3RfcnVuXCYjMzQ7KTtcbiYjNDM7XHRBU1NFUlRfRVEodG9wdHMucmV0dmFsLCBhcmdzWzBdICYjNDM7IGFyZ3NbMV0sIFwmIzM0O3Rlc3RfcnVuX3JldHZhbFwmIzM0Oyk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHRlc3RfdGVzdF9ydW5fb25fY3B1X3JlamVjdChzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpXG4mIzQzO3tcbiYjNDM7XHRfX3U2NCBhcmdzWzJdID0ge307XG4mIzQzO1x0TElCQlBGX09QVFMoYnBmX3Rlc3RfcnVuX29wdHMsIHRvcHRzLFxuJiM0MztcdFx0LmN0eF9pbiA9IGFyZ3MsXG4mIzQzO1x0XHQuY3R4X3NpemVfaW4gPSBzaXplb2YoYXJncyksXG4mIzQzO1x0XHQuZmxhZ3MgPSBCUEZfRl9URVNUX1JVTl9PTl9DUFUsXG4mIzQzO1x0KTtcbiYjNDM7XHRpbnQgZmQsIGVycjtcbiYjNDM7XG4mIzQzO1x0ZmQgPSBicGZfcHJvZ3JhbV9fZmQoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfdGVzdF9ydW4pO1xuJiM0MztcdGVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoZmQsIFx1MDAyNnRvcHRzKTtcbiYjNDM7XHRBU1NFUlRfRVJSKGVyciwgXCYjMzQ7dGVzdF9ydW5fb25fY3B1X3JlamVjdFwmIzM0Oyk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3ZvaWQgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHModm9pZClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbDtcbiYjNDM7XG4mIzQzO1x0c2tlbCA9IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX19vcGVuX2FuZF9sb2FkKCk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFwmIzM0O29wZW5fYW5kX2xvYWRcJiMzNDspKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDt0cF9idGZcJiMzNDspKVxuJiM0MztcdFx0cnVuX2F1dG9fYXR0YWNoX3Rlc3Qoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3RwX2J0Ziwgc2tlbCk7XG4mIzQzO1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7cmF3X3RwXCYjMzQ7KSlcbiYjNDM7XHRcdHJ1bl9hdXRvX2F0dGFjaF90ZXN0KHNrZWwtXHUwMDNlcHJvZ3MuaGFuZGxlX3N5c19lbnRlcl9yYXdfdHAsIHNrZWwpO1xuJiM0MztcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3RyYWNlcG9pbnRcJiMzNDspKVxuJiM0MztcdFx0cnVuX2F1dG9fYXR0YWNoX3Rlc3Qoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3RwLCBza2VsKTtcbiYjNDM7XHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDtzeXNfZXhpdFwmIzM0OykpXG4mIzQzO1x0XHRydW5fYXV0b19hdHRhY2hfdGVzdChza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9zeXNfZXhpdF90cCwgc2tlbCk7XG4mIzQzO1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7dHJhY2Vwb2ludF9hbGlhc1wmIzM0OykpXG4mIzQzO1x0XHR0ZXN0X2F0dGFjaF9vbmx5KHNrZWwtXHUwMDNlcHJvZ3MuaGFuZGxlX3N5c19lbnRlcl90cF9hbGlhcyk7XG4mIzQzO1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7cmF3X3RyYWNlcG9pbnRfYWxpYXNcJiMzNDspKVxuJiM0MztcdFx0dGVzdF9hdHRhY2hfb25seShza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9zeXNfZW50ZXJfcmF3X3RwX2FsaWFzKTtcbiYjNDM7XHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDtyYXdfdHBfYmFyZVwmIzM0OykpXG4mIzQzO1x0XHR0ZXN0X3Jhd190cF9iYXJlKHNrZWwpO1xuJiM0MztcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3RwX2JhcmVcJiMzNDspKVxuJiM0MztcdFx0dGVzdF90cF9iYXJlKHNrZWwpO1xuJiM0MztcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3Rlc3RfcnVuXCYjMzQ7KSlcbiYjNDM7XHRcdHRlc3RfdGVzdF9ydW4oc2tlbCk7XG4mIzQzO1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7dGVzdF9ydW5fb25fY3B1X3JlamVjdFwmIzM0OykpXG4mIzQzO1x0XHR0ZXN0X3Rlc3RfcnVuX29uX2NwdV9yZWplY3Qoc2tlbCk7XG4mIzQzO1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7cmF3X3RwX25vbl9mYXVsdGFibGVcJiMzNDspKVxuJiM0MztcdFx0dGVzdF9hdHRhY2hfcmVqZWN0KHNrZWwtXHUwMDNlcHJvZ3MuaGFuZGxlX3Jhd190cF9ub25fZmF1bHRhYmxlKTtcbiYjNDM7XHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDt0cF9ub25fc3lzY2FsbFwmIzM0OykpXG4mIzQzO1x0XHR0ZXN0X2F0dGFjaF9yZWplY3Qoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfdHBfbm9uX3N5c2NhbGwpO1xuJiM0MztcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3RwX2J0Zl9ub25fZmF1bHRhYmxlX3JlamVjdFwmIzM0OykpXG4mIzQzO1x0XHRSVU5fVEVTVFModGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbCk7XG4mIzQzO1xuJiM0MztcdHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX19kZXN0cm95KHNrZWwpO1xuJiM0Mzt9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjI1NGY3ZmQ4OTVkOWZcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cy5jXG5AQCAtMCwwICYjNDM7MSwxMTIgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7LyogQ29weXJpZ2h0IChjKSAyMDI1IE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLiAqL1xuJiM0MztcbiYjNDM7I2luY2x1ZGUgXHUwMDNjdm1saW51eC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2FzbS91bmlzdGQuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NicGYvYnBmX3RyYWNpbmcuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2NvcmVfcmVhZC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4mIzQzO1xuJiM0MztjaGFyIF9saWNlbnNlW10gU0VDKFwmIzM0O2xpY2Vuc2VcJiMzNDspID0gXCYjMzQ7R1BMXCYjMzQ7O1xuJiM0MztcbiYjNDM7aW50IHRhcmdldF9waWQ7XG4mIzQzO2ludCBwcm9nX3RyaWdnZXJlZDtcbiYjNDM7bG9uZyBlcnI7XG4mIzQzO2NoYXIgY29waWVkX2J5dGU7XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IGNvcHlfZ2V0Y3dkX2FyZyhjaGFyICp1YnVmKVxuJiM0Mzt7XG4mIzQzO1x0ZXJyID0gYnBmX2NvcHlfZnJvbV91c2VyKFx1MDAyNmNvcGllZF9ieXRlLCBzaXplb2YoY29waWVkX2J5dGUpLCB1YnVmKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGVycjtcbiYjNDM7XG4mIzQzO1x0cHJvZ190cmlnZ2VyZWQgPSAxO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7dHBfYnRmLnMvc3lzX2VudGVyXCYjMzQ7KVxuJiM0MztpbnQgQlBGX1BST0coaGFuZGxlX3N5c19lbnRlcl90cF9idGYsIHN0cnVjdCBwdF9yZWdzICpyZWdzLCBsb25nIGlkKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKChicGZfZ2V0X2N1cnJlbnRfcGlkX3RnaWQoKSBcdTAwM2VcdTAwM2UgMzIpICE9IHRhcmdldF9waWQgfHxcbiYjNDM7XHQgICAgaWQgIT0gX19OUl9nZXRjd2QpXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGNvcHlfZ2V0Y3dkX2FyZygodm9pZCAqKVBUX1JFR1NfUEFSTTFfU1lTQ0FMTChyZWdzKSk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO1NFQyhcJiMzNDtyYXdfdHAucy9zeXNfZW50ZXJcJiMzNDspXG4mIzQzO2ludCBCUEZfUFJPRyhoYW5kbGVfc3lzX2VudGVyX3Jhd190cCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGxvbmcgaWQpXG4mIzQzO3tcbiYjNDM7XHRpZiAoKGJwZl9nZXRfY3VycmVudF9waWRfdGdpZCgpIFx1MDAzZVx1MDAzZSAzMikgIT0gdGFyZ2V0X3BpZCB8fFxuJiM0MztcdCAgICBpZCAhPSBfX05SX2dldGN3ZClcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gY29weV9nZXRjd2RfYXJnKCh2b2lkICopUFRfUkVHU19QQVJNMV9DT1JFX1NZU0NBTEwocmVncykpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7dHAucy9zeXNjYWxscy9zeXNfZW50ZXJfZ2V0Y3dkXCYjMzQ7KVxuJiM0MztpbnQgaGFuZGxlX3N5c19lbnRlcl90cChzdHJ1Y3Qgc3lzY2FsbF90cmFjZV9lbnRlciAqYXJncylcbiYjNDM7e1xuJiM0MztcdGlmICgoYnBmX2dldF9jdXJyZW50X3BpZF90Z2lkKCkgXHUwMDNlXHUwMDNlIDMyKSAhPSB0YXJnZXRfcGlkKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdHJldHVybiBjb3B5X2dldGN3ZF9hcmcoKHZvaWQgKilhcmdzLVx1MDAzZWFyZ3NbMF0pO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7dHAucy9zeXNjYWxscy9zeXNfZXhpdF9nZXRjd2RcJiMzNDspXG4mIzQzO2ludCBoYW5kbGVfc3lzX2V4aXRfdHAoc3RydWN0IHN5c2NhbGxfdHJhY2VfZXhpdCAqYXJncylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBwdF9yZWdzICpyZWdzO1xuJiM0MztcbiYjNDM7XHRpZiAoKGJwZl9nZXRfY3VycmVudF9waWRfdGdpZCgpIFx1MDAzZVx1MDAzZSAzMikgIT0gdGFyZ2V0X3BpZClcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHRyZWdzID0gKHN0cnVjdCBwdF9yZWdzICopYnBmX3Rhc2tfcHRfcmVncyhicGZfZ2V0X2N1cnJlbnRfdGFza19idGYoKSk7XG4mIzQzO1x0cmV0dXJuIGNvcHlfZ2V0Y3dkX2FyZygodm9pZCAqKVBUX1JFR1NfUEFSTTFfQ09SRV9TWVNDQUxMKHJlZ3MpKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7U0VDKFwmIzM0O3Jhd190cC5zXCYjMzQ7KVxuJiM0MztpbnQgQlBGX1BST0coaGFuZGxlX3Jhd190cF9iYXJlLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgbG9uZyBpZClcbiYjNDM7e1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7dHAuc1wmIzM0OylcbiYjNDM7aW50IGhhbmRsZV90cF9iYXJlKHZvaWQgKmN0eClcbiYjNDM7e1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7dHJhY2Vwb2ludC5zL3N5c2NhbGxzL3N5c19lbnRlcl9nZXRjd2RcJiMzNDspXG4mIzQzO2ludCBoYW5kbGVfc3lzX2VudGVyX3RwX2FsaWFzKHN0cnVjdCBzeXNjYWxsX3RyYWNlX2VudGVyICphcmdzKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO1NFQyhcJiMzNDtyYXdfdHJhY2Vwb2ludC5zL3N5c19lbnRlclwmIzM0OylcbiYjNDM7aW50IEJQRl9QUk9HKGhhbmRsZV9zeXNfZW50ZXJfcmF3X3RwX2FsaWFzLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgbG9uZyBpZClcbiYjNDM7e1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7cmF3X3RwLnMvc3lzX2VudGVyXCYjMzQ7KVxuJiM0MztpbnQgQlBGX1BST0coaGFuZGxlX3Rlc3RfcnVuLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgbG9uZyBpZClcbiYjNDM7e1xuJiM0MztcdGlmICgoX191NjQpcmVncyA9PSAweDEyMzRVTEwgXHUwMDI2XHUwMDI2IChfX3U2NClpZCA9PSAweDU2NzhVTEwpXG4mIzQzO1x0XHRyZXR1cm4gKF9fdTY0KXJlZ3MgJiM0MzsgKF9fdTY0KWlkO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7U0VDKFwmIzM0O3Jhd190cC5zL3NjaGVkX3N3aXRjaFwmIzM0OylcbiYjNDM7aW50IEJQRl9QUk9HKGhhbmRsZV9yYXdfdHBfbm9uX2ZhdWx0YWJsZSwgYm9vbCBwcmVlbXB0LFxuJiM0MztcdCAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7U0VDKFwmIzM0O3RwLnMvc2NoZWQvc2NoZWRfc3dpdGNoXCYjMzQ7KVxuJiM0MztpbnQgaGFuZGxlX3RwX25vbl9zeXNjYWxsKHZvaWQgKmN0eClcbiYjNDM7e1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX2ZhaWwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19mYWlsLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi4xYTA3NDhhOTUyMGJiXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5jXG5AQCAtMCwwICYjNDM7MSwxOCBAQFxuJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsvKiBDb3B5cmlnaHQgKGMpIDIwMjUgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2N2bWxpbnV4LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjYnBmL2JwZl90cmFjaW5nLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7YnBmX21pc2MuaFwmIzM0O1xuJiM0MztcbiYjNDM7Y2hhciBfbGljZW5zZVtdIFNFQyhcJiMzNDtsaWNlbnNlXCYjMzQ7KSA9IFwmIzM0O0dQTFwmIzM0OztcbiYjNDM7XG4mIzQzOy8qIFNsZWVwYWJsZSBwcm9ncmFtIG9uIGEgbm9uLWZhdWx0YWJsZSB0cmFjZXBvaW50IHNob3VsZCBmYWlsIHRvIGxvYWQgKi9cbiYjNDM7U0VDKFwmIzM0O3RwX2J0Zi5zL3NjaGVkX3N3aXRjaFwmIzM0OylcbiYjNDM7X19mYWlsdXJlIF9fbXNnKFwmIzM0O1NsZWVwYWJsZSBwcm9ncmFtIGNhbm5vdCBhdHRhY2ggdG8gbm9uLWZhdWx0YWJsZSB0cmFjZXBvaW50XCYjMzQ7KVxuJiM0MztpbnQgQlBGX1BST0coaGFuZGxlX3NjaGVkX3N3aXRjaCwgYm9vbCBwcmVlbXB0LFxuJiM0MztcdCAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuY1xuaW5kZXggYzJiN2Y1ZWJmMTY4Yy4uNmRhYmM1NTIyOTQ1NSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL3NsZWVwYWJsZS5jXG5AQCAtNzYsNyAmIzQzOzc2LDIwIEBAXG4gXHQucnVucyA9IC0xLFxuIH0sXG4ge1xuLVx0XCYjMzQ7c2xlZXBhYmxlIHJhdyB0cmFjZXBvaW50IHJlamVjdFwmIzM0OyxcbiYjNDM7XHRcJiMzNDtzbGVlcGFibGUgcmF3IHRyYWNlcG9pbnQgYWNjZXB0XCYjMzQ7LFxuJiM0MztcdC5pbnNucyA9IHtcbiYjNDM7XHRCUEZfTU9WNjRfSU1NKEJQRl9SRUdfMCwgMCksXG4mIzQzO1x0QlBGX0VYSVRfSU5TTigpLFxuJiM0MztcdH0sXG4mIzQzO1x0LnByb2dfdHlwZSA9IEJQRl9QUk9HX1RZUEVfVFJBQ0lORyxcbiYjNDM7XHQuZXhwZWN0ZWRfYXR0YWNoX3R5cGUgPSBCUEZfVFJBQ0VfUkFXX1RQLFxuJiM0MztcdC5rZnVuYyA9IFwmIzM0O3N5c19lbnRlclwmIzM0OyxcbiYjNDM7XHQucmVzdWx0ID0gQUNDRVBULFxuJiM0MztcdC5mbGFncyA9IEJQRl9GX1NMRUVQQUJMRSxcbiYjNDM7XHQucnVucyA9IC0xLFxuJiM0Mzt9LFxuJiM0Mzt7XG4mIzQzO1x0XCYjMzQ7c2xlZXBhYmxlIHJhdyB0cmFjZXBvaW50IHJlamVjdCBub24tZmF1bHRhYmxlXCYjMzQ7LFxuIFx0Lmluc25zID0ge1xuIFx0QlBGX01PVjY0X0lNTShCUEZfUkVHXzAsIDApLFxuIFx0QlBGX0VYSVRfSU5TTigpLFxuQEAgLTg1LDcgJiM0Mzs5OCw3IEBAXG4gXHQuZXhwZWN0ZWRfYXR0YWNoX3R5cGUgPSBCUEZfVFJBQ0VfUkFXX1RQLFxuIFx0LmtmdW5jID0gXCYjMzQ7c2NoZWRfc3dpdGNoXCYjMzQ7LFxuIFx0LnJlc3VsdCA9IFJFSkVDVCxcbi1cdC5lcnJzdHIgPSBcJiMzNDtPbmx5IGZlbnRyeS9mZXhpdC9mc2Vzc2lvbi9mbW9kX3JldCwgbHNtLCBpdGVyLCB1cHJvYmUsIGFuZCBzdHJ1Y3Rfb3BzIHByb2dyYW1zIGNhbiBiZSBzbGVlcGFibGVcJiMzNDssXG4mIzQzO1x0LmVycnN0ciA9IFwmIzM0O1NsZWVwYWJsZSBwcm9ncmFtIGNhbm5vdCBhdHRhY2ggdG8gbm9uLWZhdWx0YWJsZSB0cmFjZXBvaW50XCYjMzQ7LFxuIFx0LmZsYWdzID0gQlBGX0ZfU0xFRVBBQkxFLFxuIFx0LnJ1bnMgPSAtMSxcbiB9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE3OjM3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYW5kIG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLyBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTM4NWI3ZmRmMDkxZDJiZmIzYmJhY2Y4NjQwM2FhOTFhM2M5ZjE1MQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDEwIDE3OjM3OjU2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi4xOTUwMGI3ODVlZTMyCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmMKQEAgLTAsMCAmIzQzOzEsMTQyIEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsvKiBDb3B5cmlnaHQgKGMpIDIwMjUgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovCiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O3Rlc3RfcHJvZ3MuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7dW5pc3RkLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJiMzNDt0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cy5za2VsLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7dGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5za2VsLmgmIzM0OwomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHJ1bl90ZXN0KHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbCkKJiM0Mzt7CiYjNDM7CWNoYXIgYnVmW1BBVEhfTUFYXSA9ICYjMzQ7LyYjMzQ7OwomIzQzOwomIzQzOwlza2VsLSZndDtic3MtJmd0O3RhcmdldF9waWQgPSBnZXRwaWQoKTsKJiM0MzsJc2tlbC0mZ3Q7YnNzLSZndDtwcm9nX3RyaWdnZXJlZCA9IDA7CiYjNDM7CXNrZWwtJmd0O2Jzcy0mZ3Q7ZXJyID0gMDsKJiM0MzsJc2tlbC0mZ3Q7YnNzLSZndDtjb3BpZWRfYnl0ZSA9IDA7CiYjNDM7CiYjNDM7CXN5c2NhbGwoX19OUl9nZXRjd2QsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwomIzQzOwomIzQzOwlBU1NFUlRfRVEoc2tlbC0mZ3Q7YnNzLSZndDtwcm9nX3RyaWdnZXJlZCwgMSwgJiMzNDtwcm9nX3RyaWdnZXJlZCYjMzQ7KTsKJiM0MzsJQVNTRVJUX0VRKHNrZWwtJmd0O2Jzcy0mZ3Q7ZXJyLCAwLCAmIzM0O2VyciYjMzQ7KTsKJiM0MzsJQVNTRVJUX0VRKHNrZWwtJmd0O2Jzcy0mZ3Q7Y29waWVkX2J5dGUsICYjMzk7LyYjMzk7LCAmIzM0O2NvcGllZF9ieXRlJiMzNDspOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBydW5fYXV0b19hdHRhY2hfdGVzdChzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csCiYjNDM7CQkJCSBzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7CiYjNDM7CiYjNDM7CWxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoKHByb2cpOwomIzQzOwlpZiAoIUFTU0VSVF9PS19QVFIobGluaywgJiMzNDtwcm9nX2F0dGFjaCYjMzQ7KSkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJcnVuX3Rlc3Qoc2tlbCk7CiYjNDM7CWJwZl9saW5rX19kZXN0cm95KGxpbmspOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB0ZXN0X2F0dGFjaF9vbmx5KHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBicGZfbGluayAqbGluazsKJiM0MzsKJiM0MzsJbGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2gocHJvZyk7CiYjNDM7CWlmIChBU1NFUlRfT0tfUFRSKGxpbmssICYjMzQ7YXR0YWNoJiMzNDspKQomIzQzOwkJYnBmX2xpbmtfX2Rlc3Ryb3kobGluayk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHRlc3RfYXR0YWNoX3JlamVjdChzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2cpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7CiYjNDM7CiYjNDM7CWxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoKHByb2cpOwomIzQzOwlpZiAoIUFTU0VSVF9FUlJfUFRSKGxpbmssICYjMzQ7YXR0YWNoX3Nob3VsZF9mYWlsJiMzNDspKQomIzQzOwkJYnBmX2xpbmtfX2Rlc3Ryb3kobGluayk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHRlc3RfcmF3X3RwX2JhcmUoc3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsKQomIzQzO3sKJiM0MzsJc3RydWN0IGJwZl9saW5rICpsaW5rOwomIzQzOwomIzQzOwlsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaF9yYXdfdHJhY2Vwb2ludChza2VsLSZndDtwcm9ncy5oYW5kbGVfcmF3X3RwX2JhcmUsCiYjNDM7CQkJCQkJICAmIzM0O3N5c19lbnRlciYjMzQ7KTsKJiM0MzsJaWYgKEFTU0VSVF9PS19QVFIobGluaywgJiMzNDthdHRhY2gmIzM0OykpCiYjNDM7CQlicGZfbGlua19fZGVzdHJveShsaW5rKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgdGVzdF90cF9iYXJlKHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBicGZfbGluayAqbGluazsKJiM0MzsKJiM0MzsJbGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2hfdHJhY2Vwb2ludChza2VsLSZndDtwcm9ncy5oYW5kbGVfdHBfYmFyZSwKJiM0MzsJCQkJCSAgICAgICYjMzQ7c3lzY2FsbHMmIzM0OywgJiMzNDtzeXNfZW50ZXJfZ2V0Y3dkJiMzNDspOwomIzQzOwlpZiAoQVNTRVJUX09LX1BUUihsaW5rLCAmIzM0O2F0dGFjaCYjMzQ7KSkKJiM0MzsJCWJwZl9saW5rX19kZXN0cm95KGxpbmspOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB0ZXN0X3Rlc3RfcnVuKHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbCkKJiM0Mzt7CiYjNDM7CV9fdTY0IGFyZ3NbMl0gPSB7MHgxMjM0VUxMLCAweDU2NzhVTEx9OwomIzQzOwlMSUJCUEZfT1BUUyhicGZfdGVzdF9ydW5fb3B0cywgdG9wdHMsCiYjNDM7CQkuY3R4X2luID0gYXJncywKJiM0MzsJCS5jdHhfc2l6ZV9pbiA9IHNpemVvZihhcmdzKSwKJiM0MzsJKTsKJiM0MzsJaW50IGZkLCBlcnI7CiYjNDM7CiYjNDM7CWZkID0gYnBmX3Byb2dyYW1fX2ZkKHNrZWwtJmd0O3Byb2dzLmhhbmRsZV90ZXN0X3J1bik7CiYjNDM7CWVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoZmQsICZhbXA7dG9wdHMpOwomIzQzOwlBU1NFUlRfT0soZXJyLCAmIzM0O3Rlc3RfcnVuJiMzNDspOwomIzQzOwlBU1NFUlRfRVEodG9wdHMucmV0dmFsLCBhcmdzWzBdICYjNDM7IGFyZ3NbMV0sICYjMzQ7dGVzdF9ydW5fcmV0dmFsJiMzNDspOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB0ZXN0X3Rlc3RfcnVuX29uX2NwdV9yZWplY3Qoc3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsKQomIzQzO3sKJiM0MzsJX191NjQgYXJnc1syXSA9IHt9OwomIzQzOwlMSUJCUEZfT1BUUyhicGZfdGVzdF9ydW5fb3B0cywgdG9wdHMsCiYjNDM7CQkuY3R4X2luID0gYXJncywKJiM0MzsJCS5jdHhfc2l6ZV9pbiA9IHNpemVvZihhcmdzKSwKJiM0MzsJCS5mbGFncyA9IEJQRl9GX1RFU1RfUlVOX09OX0NQVSwKJiM0MzsJKTsKJiM0MzsJaW50IGZkLCBlcnI7CiYjNDM7CiYjNDM7CWZkID0gYnBmX3Byb2dyYW1fX2ZkKHNrZWwtJmd0O3Byb2dzLmhhbmRsZV90ZXN0X3J1bik7CiYjNDM7CWVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoZmQsICZhbXA7dG9wdHMpOwomIzQzOwlBU1NFUlRfRVJSKGVyciwgJiMzNDt0ZXN0X3J1bl9vbl9jcHVfcmVqZWN0JiMzNDspOwomIzQzO30KJiM0MzsKJiM0Mzt2b2lkIHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzKHZvaWQpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWw7CiYjNDM7CiYjNDM7CXNrZWwgPSB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19fb3Blbl9hbmRfbG9hZCgpOwomIzQzOwlpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgJiMzNDtvcGVuX2FuZF9sb2FkJiMzNDspKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3RwX2J0ZiYjMzQ7KSkKJiM0MzsJCXJ1bl9hdXRvX2F0dGFjaF90ZXN0KHNrZWwtJmd0O3Byb2dzLmhhbmRsZV9zeXNfZW50ZXJfdHBfYnRmLCBza2VsKTsKJiM0MzsJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDtyYXdfdHAmIzM0OykpCiYjNDM7CQlydW5fYXV0b19hdHRhY2hfdGVzdChza2VsLSZndDtwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3Jhd190cCwgc2tlbCk7CiYjNDM7CWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7dHJhY2Vwb2ludCYjMzQ7KSkKJiM0MzsJCXJ1bl9hdXRvX2F0dGFjaF90ZXN0KHNrZWwtJmd0O3Byb2dzLmhhbmRsZV9zeXNfZW50ZXJfdHAsIHNrZWwpOwomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3N5c19leGl0JiMzNDspKQomIzQzOwkJcnVuX2F1dG9fYXR0YWNoX3Rlc3Qoc2tlbC0mZ3Q7cHJvZ3MuaGFuZGxlX3N5c19leGl0X3RwLCBza2VsKTsKJiM0MzsJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDt0cmFjZXBvaW50X2FsaWFzJiMzNDspKQomIzQzOwkJdGVzdF9hdHRhY2hfb25seShza2VsLSZndDtwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3RwX2FsaWFzKTsKJiM0MzsJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDtyYXdfdHJhY2Vwb2ludF9hbGlhcyYjMzQ7KSkKJiM0MzsJCXRlc3RfYXR0YWNoX29ubHkoc2tlbC0mZ3Q7cHJvZ3MuaGFuZGxlX3N5c19lbnRlcl9yYXdfdHBfYWxpYXMpOwomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3Jhd190cF9iYXJlJiMzNDspKQomIzQzOwkJdGVzdF9yYXdfdHBfYmFyZShza2VsKTsKJiM0MzsJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDt0cF9iYXJlJiMzNDspKQomIzQzOwkJdGVzdF90cF9iYXJlKHNrZWwpOwomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3Rlc3RfcnVuJiMzNDspKQomIzQzOwkJdGVzdF90ZXN0X3J1bihza2VsKTsKJiM0MzsJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDt0ZXN0X3J1bl9vbl9jcHVfcmVqZWN0JiMzNDspKQomIzQzOwkJdGVzdF90ZXN0X3J1bl9vbl9jcHVfcmVqZWN0KHNrZWwpOwomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3Jhd190cF9ub25fZmF1bHRhYmxlJiMzNDspKQomIzQzOwkJdGVzdF9hdHRhY2hfcmVqZWN0KHNrZWwtJmd0O3Byb2dzLmhhbmRsZV9yYXdfdHBfbm9uX2ZhdWx0YWJsZSk7CiYjNDM7CWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7dHBfbm9uX3N5c2NhbGwmIzM0OykpCiYjNDM7CQl0ZXN0X2F0dGFjaF9yZWplY3Qoc2tlbC0mZ3Q7cHJvZ3MuaGFuZGxlX3RwX25vbl9zeXNjYWxsKTsKJiM0MzsJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDt0cF9idGZfbm9uX2ZhdWx0YWJsZV9yZWplY3QmIzM0OykpCiYjNDM7CQlSVU5fVEVTVFModGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbCk7CiYjNDM7CiYjNDM7CXRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX19kZXN0cm95KHNrZWwpOwomIzQzO30KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uMjU0ZjdmZDg5NWQ5ZgotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cy5jCkBAIC0wLDAgJiM0MzsxLDExMiBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7LyogQ29weXJpZ2h0IChjKSAyMDI1IE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLiAqLwomIzQzOwomIzQzOyNpbmNsdWRlICZsdDt2bWxpbnV4LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2FzbS91bmlzdGQuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7YnBmL2JwZl90cmFjaW5nLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2JwZi9icGZfY29yZV9yZWFkLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2JwZi9icGZfaGVscGVycy5oJmd0OwomIzQzOwomIzQzO2NoYXIgX2xpY2Vuc2VbXSBTRUMoJiMzNDtsaWNlbnNlJiMzNDspID0gJiMzNDtHUEwmIzM0OzsKJiM0MzsKJiM0MztpbnQgdGFyZ2V0X3BpZDsKJiM0MztpbnQgcHJvZ190cmlnZ2VyZWQ7CiYjNDM7bG9uZyBlcnI7CiYjNDM7Y2hhciBjb3BpZWRfYnl0ZTsKJiM0MzsKJiM0MztzdGF0aWMgaW50IGNvcHlfZ2V0Y3dkX2FyZyhjaGFyICp1YnVmKQomIzQzO3sKJiM0MzsJZXJyID0gYnBmX2NvcHlfZnJvbV91c2VyKCZhbXA7Y29waWVkX2J5dGUsIHNpemVvZihjb3BpZWRfYnl0ZSksIHVidWYpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsKJiM0MzsJcHJvZ190cmlnZ2VyZWQgPSAxOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7dHBfYnRmLnMvc3lzX2VudGVyJiMzNDspCiYjNDM7aW50IEJQRl9QUk9HKGhhbmRsZV9zeXNfZW50ZXJfdHBfYnRmLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgbG9uZyBpZCkKJiM0Mzt7CiYjNDM7CWlmICgoYnBmX2dldF9jdXJyZW50X3BpZF90Z2lkKCkgJmd0OyZndDsgMzIpICE9IHRhcmdldF9waWQgfHwKJiM0MzsJICAgIGlkICE9IF9fTlJfZ2V0Y3dkKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CXJldHVybiBjb3B5X2dldGN3ZF9hcmcoKHZvaWQgKilQVF9SRUdTX1BBUk0xX1NZU0NBTEwocmVncykpOwomIzQzO30KJiM0MzsKJiM0MztTRUMoJiMzNDtyYXdfdHAucy9zeXNfZW50ZXImIzM0OykKJiM0MztpbnQgQlBGX1BST0coaGFuZGxlX3N5c19lbnRlcl9yYXdfdHAsIHN0cnVjdCBwdF9yZWdzICpyZWdzLCBsb25nIGlkKQomIzQzO3sKJiM0MzsJaWYgKChicGZfZ2V0X2N1cnJlbnRfcGlkX3RnaWQoKSAmZ3Q7Jmd0OyAzMikgIT0gdGFyZ2V0X3BpZCB8fAomIzQzOwkgICAgaWQgIT0gX19OUl9nZXRjd2QpCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKJiM0MzsJcmV0dXJuIGNvcHlfZ2V0Y3dkX2FyZygodm9pZCAqKVBUX1JFR1NfUEFSTTFfQ09SRV9TWVNDQUxMKHJlZ3MpKTsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7dHAucy9zeXNjYWxscy9zeXNfZW50ZXJfZ2V0Y3dkJiMzNDspCiYjNDM7aW50IGhhbmRsZV9zeXNfZW50ZXJfdHAoc3RydWN0IHN5c2NhbGxfdHJhY2VfZW50ZXIgKmFyZ3MpCiYjNDM7ewomIzQzOwlpZiAoKGJwZl9nZXRfY3VycmVudF9waWRfdGdpZCgpICZndDsmZ3Q7IDMyKSAhPSB0YXJnZXRfcGlkKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CXJldHVybiBjb3B5X2dldGN3ZF9hcmcoKHZvaWQgKilhcmdzLSZndDthcmdzWzBdKTsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7dHAucy9zeXNjYWxscy9zeXNfZXhpdF9nZXRjd2QmIzM0OykKJiM0MztpbnQgaGFuZGxlX3N5c19leGl0X3RwKHN0cnVjdCBzeXNjYWxsX3RyYWNlX2V4aXQgKmFyZ3MpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcHRfcmVncyAqcmVnczsKJiM0MzsKJiM0MzsJaWYgKChicGZfZ2V0X2N1cnJlbnRfcGlkX3RnaWQoKSAmZ3Q7Jmd0OyAzMikgIT0gdGFyZ2V0X3BpZCkKJiM0MzsJCXJldHVybiAwOwomIzQzOwomIzQzOwlyZWdzID0gKHN0cnVjdCBwdF9yZWdzICopYnBmX3Rhc2tfcHRfcmVncyhicGZfZ2V0X2N1cnJlbnRfdGFza19idGYoKSk7CiYjNDM7CXJldHVybiBjb3B5X2dldGN3ZF9hcmcoKHZvaWQgKilQVF9SRUdTX1BBUk0xX0NPUkVfU1lTQ0FMTChyZWdzKSk7CiYjNDM7fQomIzQzOwomIzQzO1NFQygmIzM0O3Jhd190cC5zJiMzNDspCiYjNDM7aW50IEJQRl9QUk9HKGhhbmRsZV9yYXdfdHBfYmFyZSwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGxvbmcgaWQpCiYjNDM7ewomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7dHAucyYjMzQ7KQomIzQzO2ludCBoYW5kbGVfdHBfYmFyZSh2b2lkICpjdHgpCiYjNDM7ewomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7dHJhY2Vwb2ludC5zL3N5c2NhbGxzL3N5c19lbnRlcl9nZXRjd2QmIzM0OykKJiM0MztpbnQgaGFuZGxlX3N5c19lbnRlcl90cF9hbGlhcyhzdHJ1Y3Qgc3lzY2FsbF90cmFjZV9lbnRlciAqYXJncykKJiM0Mzt7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztTRUMoJiMzNDtyYXdfdHJhY2Vwb2ludC5zL3N5c19lbnRlciYjMzQ7KQomIzQzO2ludCBCUEZfUFJPRyhoYW5kbGVfc3lzX2VudGVyX3Jhd190cF9hbGlhcywgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGxvbmcgaWQpCiYjNDM7ewomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7cmF3X3RwLnMvc3lzX2VudGVyJiMzNDspCiYjNDM7aW50IEJQRl9QUk9HKGhhbmRsZV90ZXN0X3J1biwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGxvbmcgaWQpCiYjNDM7ewomIzQzOwlpZiAoKF9fdTY0KXJlZ3MgPT0gMHgxMjM0VUxMICZhbXA7JmFtcDsgKF9fdTY0KWlkID09IDB4NTY3OFVMTCkKJiM0MzsJCXJldHVybiAoX191NjQpcmVncyAmIzQzOyAoX191NjQpaWQ7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztTRUMoJiMzNDtyYXdfdHAucy9zY2hlZF9zd2l0Y2gmIzM0OykKJiM0MztpbnQgQlBGX1BST0coaGFuZGxlX3Jhd190cF9ub25fZmF1bHRhYmxlLCBib29sIHByZWVtcHQsCiYjNDM7CSAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQpCiYjNDM7ewomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7dHAucy9zY2hlZC9zY2hlZF9zd2l0Y2gmIzM0OykKJiM0MztpbnQgaGFuZGxlX3RwX25vbl9zeXNjYWxsKHZvaWQgKmN0eCkKJiM0Mzt7CiYjNDM7CXJldHVybiAwOwomIzQzO30KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19mYWlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjFhMDc0OGE5NTIwYmIKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5jCkBAIC0wLDAgJiM0MzsxLDE4IEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsvKiBDb3B5cmlnaHQgKGMpIDIwMjUgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovCiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O3ZtbGludXguaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7YnBmL2JwZl90cmFjaW5nLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2JwZi9icGZfaGVscGVycy5oJmd0OwomIzQzOyNpbmNsdWRlICYjMzQ7YnBmX21pc2MuaCYjMzQ7CiYjNDM7CiYjNDM7Y2hhciBfbGljZW5zZVtdIFNFQygmIzM0O2xpY2Vuc2UmIzM0OykgPSAmIzM0O0dQTCYjMzQ7OwomIzQzOwomIzQzOy8qIFNsZWVwYWJsZSBwcm9ncmFtIG9uIGEgbm9uLWZhdWx0YWJsZSB0cmFjZXBvaW50IHNob3VsZCBmYWlsIHRvIGxvYWQgKi8KJiM0MztTRUMoJiMzNDt0cF9idGYucy9zY2hlZF9zd2l0Y2gmIzM0OykKJiM0MztfX2ZhaWx1cmUgX19tc2coJiMzNDtTbGVlcGFibGUgcHJvZ3JhbSBjYW5ub3QgYXR0YWNoIHRvIG5vbi1mYXVsdGFibGUgdHJhY2Vwb2ludCYjMzQ7KQomIzQzO2ludCBCUEZfUFJPRyhoYW5kbGVfc2NoZWRfc3dpdGNoLCBib29sIHByZWVtcHQsCiYjNDM7CSAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQpCiYjNDM7ewomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvc2xlZXBhYmxlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvc2xlZXBhYmxlLmMKaW5kZXggYzJiN2Y1ZWJmMTY4Yy4uNmRhYmM1NTIyOTQ1NSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL3NsZWVwYWJsZS5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuYwpAQCAtNzYsNyAmIzQzOzc2LDIwIEBACiAJLnJ1bnMgPSAtMSwKIH0sCiB7Ci0JJiMzNDtzbGVlcGFibGUgcmF3IHRyYWNlcG9pbnQgcmVqZWN0JiMzNDssCiYjNDM7CSYjMzQ7c2xlZXBhYmxlIHJhdyB0cmFjZXBvaW50IGFjY2VwdCYjMzQ7LAomIzQzOwkuaW5zbnMgPSB7CiYjNDM7CUJQRl9NT1Y2NF9JTU0oQlBGX1JFR18wLCAwKSwKJiM0MzsJQlBGX0VYSVRfSU5TTigpLAomIzQzOwl9LAomIzQzOwkucHJvZ190eXBlID0gQlBGX1BST0dfVFlQRV9UUkFDSU5HLAomIzQzOwkuZXhwZWN0ZWRfYXR0YWNoX3R5cGUgPSBCUEZfVFJBQ0VfUkFXX1RQLAomIzQzOwkua2Z1bmMgPSAmIzM0O3N5c19lbnRlciYjMzQ7LAomIzQzOwkucmVzdWx0ID0gQUNDRVBULAomIzQzOwkuZmxhZ3MgPSBCUEZfRl9TTEVFUEFCTEUsCiYjNDM7CS5ydW5zID0gLTEsCiYjNDM7fSwKJiM0Mzt7CiYjNDM7CSYjMzQ7c2xlZXBhYmxlIHJhdyB0cmFjZXBvaW50IHJlamVjdCBub24tZmF1bHRhYmxlJiMzNDssCiAJLmluc25zID0gewogCUJQRl9NT1Y2NF9JTU0oQlBGX1JFR18wLCAwKSwKIAlCUEZfRVhJVF9JTlNOKCksCkBAIC04NSw3ICYjNDM7OTgsNyBAQAogCS5leHBlY3RlZF9hdHRhY2hfdHlwZSA9IEJQRl9UUkFDRV9SQVdfVFAsCiAJLmtmdW5jID0gJiMzNDtzY2hlZF9zd2l0Y2gmIzM0OywKIAkucmVzdWx0ID0gUkVKRUNULAotCS5lcnJzdHIgPSAmIzM0O09ubHkgZmVudHJ5L2ZleGl0L2ZzZXNzaW9uL2Ztb2RfcmV0LCBsc20sIGl0ZXIsIHVwcm9iZSwgYW5kIHN0cnVjdF9vcHMgcHJvZ3JhbXMgY2FuIGJlIHNsZWVwYWJsZSYjMzQ7LAomIzQzOwkuZXJyc3RyID0gJiMzNDtTbGVlcGFibGUgcHJvZ3JhbSBjYW5ub3QgYXR0YWNoIHRvIG5vbi1mYXVsdGFibGUgdHJhY2Vwb2ludCYjMzQ7LAogCS5mbGFncyA9IEJQRl9GX1NMRUVQQUJMRSwKIAkucnVucyA9IC0xLAogfSwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTc6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTgzOQoJCQkJCQkJb3V0cHV0OiA2NwoJCQkJCQkJdGhvdWdodHM6IDc1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGFkZGluZyB0ZXN0cyBmb3Igc2xlZXBhYmxlIHRyYWNlcG9pbnRzIGluIEJQRi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgYXNzZXNzIGl0cyBpbXBhY3Qgb24gdGhlIGtlcm5lbCYjMzk7cyBmdXp6aW5nIHN1aXRhYmlsaXR5LiBUaGUgcGF0Y2ggbW9kaWZpZXMgZmlsZXM6IGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuY2AsIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMuY2AsIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5jYCwgYW5kIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvc2xlZXBhYmxlLmNgLiAgSW1tZWRpYXRlbHksIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgYW55ICprZXJuZWwqIGNvZGUgaXMgdG91Y2hlZC4gIEEgcXVpY2sgcmV2aWV3IG9mIHRoZSBkaWZmIHNob3dzIHRoYXQgZXZlcnl0aGluZyBpcyBjb250YWluZWQgd2l0aGluIHRoZSBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AgZGlyZWN0b3J5LgoKSSBuZWVkIHRvIGJlIGNlcnRhaW4gdGhlcmUgYXJlICpubyogb3RoZXIgbW9kaWZpZWQgZmlsZXMsIG91dHNpZGUgb2YgdGhlIHNlbGZ0ZXN0cyBkaXJlY3RvcnkuIEEgc2Vjb25kIGxvb2sgYXQgdGhlIGRpZmYgY29uZmlybXMgdGhlIGVhcmxpZXIgY2hlY2suIFRoZSBwYXRjaCBpcyBzb2xlbHkgZm9jdXNlZCBvbiBhZGRpbmcgb3IgY2hhbmdpbmcgdGhlIHNlbGZ0ZXN0cy4gVGhpcyBpcyBpbXBvcnRhbnQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBjaGFuZ2VzIHNob3VsZCBiZSBmdXp6ZWQuCgpOb3csIGxldCYjMzk7cyBjb25zaWRlciB0aGUgY29udGV4dCBmb3IgdGhpcy4gIFRoZSBwcm9tcHQgZXhwbGljaXRseSBzdGF0ZXMgdGhhdCBwYXRjaGVzIG1vZGlmeWluZyBkb2N1bWVudGF0aW9uLCBLY29uZmlnIGZpbGVzLCBjb21tZW50cywgbG9nZ2luZywgY29uc3RhbnRzLCB1bnJlYWNoYWJsZSBjb2RlLCB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyByZXF1aXJpbmcgcGh5c2ljYWwgaGFyZHdhcmUsIG9yIGRyaXZlciB0ZWFyZG93biBjYWxsYmFja3Mgc2hvdWxkbiYjMzk7dCBiZSBjb25zaWRlcmVkIGZvciBmdXp6aW5nLiBDcnVjaWFsbHksIGl0IHNwZWNpZmljYWxseSBtZW50aW9ucyB0aGF0ICpzZWxmdGVzdHMqIGFyZSAqbm90KiBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbC4gU2VsZnRlc3RzIGFyZSB1c2Vyc3BhY2UgdGVzdHMsIGV2ZW4gaWYgdGhleSB0b3VjaCB0aGUgQlBGIHN1YnN5c3RlbSwgdGhhdCBkbyBub3QgY2hhbmdlIHRoZSBrZXJuZWwmIzM5O3MgYWN0dWFsIGV4ZWN1dGlvbiBmbG93IGluIGEgd2F5IHRoYXQgZnV6emluZyBpcyBsaWtlbHkgdG8gZmluZCBhIGJ1Zy4gU28sIG1vZGlmeWluZyBzZWxmdGVzdHMgd29uJiMzOTt0IGNoYW5nZSB0aGUga2VybmVsIGltYWdlLgoKRmluYWxseSwgSSBuZWVkIHRvIGV4cGxpY2l0bHkgdmVyaWZ5IHRoZSBmaWxlcyBpbiB0aGUgZGlmZi4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgZGlmZiBzdGFydHMgd2l0aCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmNgLCBmb2xsb3dlZCBieSB0aGUgb3RoZXIgdGhyZWUgZmlsZXMuIFRoaXMgcmVpbmZvcmNlcyB0aGF0IGFsbCBjaGFuZ2VzIGFyZSB3aXRoaW4gdGhlIHNlbGZ0ZXN0cyBkaXJlY3RvcnkuCgpUaGVyZWZvcmUsIG15IGNvbmNsdXNpb24gaXMgdGhhdCB0aGlzIHBhdGNoIGlzIG5vdCAmIzM0O1dvcnRoRnV6emluZyYjMzQ7IGJlY2F1c2UgaXQgb25seSBjb250YWlucyBzZWxmdGVzdCBtb2RpZmljYXRpb25zLiBJIHdpbGwgY2FsbCBgc2V0LXJlc3VsdHNgIHdpdGggYFdvcnRoRnV6emluZz1mYWxzZWAgYW5kIHByb3ZpZGUgdGhlIHJlYXNvbmluZzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGFuZCBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8gYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLiYjMzQ7CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTc6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYW5kIG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLyBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYW5kIG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLyBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE3OjM4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNzozNzo1OC4xODE1NzY0ODFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTI0MDgxOTUxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhbmQgbW9kaWZpZXMgQlBGIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE3OjM3OjU4LjE4MTU4MDMxMVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM5NzMzNDY0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDUzODViN2ZkZjA5MWQyYmZiM2JiYWNmODY0MDNhYTkxYTNjOWYxNTFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMTAgMTc6Mzc6NTYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uMTk1MDBiNzg1ZWUzMlxcbi0tLSAvZGV2L251bGxcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuY1xcbkBAIC0wLDAgKzEsMTQyIEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKy8qIENvcHlyaWdodCAoYykgMjAyNSBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy4gKi9cXG4rXFxuKyNpbmNsdWRlIFxcdTAwM2N0ZXN0X3Byb2dzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2N1bmlzdGQuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFxcInRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzLnNrZWwuaFxcXCJcXG4rI2luY2x1ZGUgXFxcInRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX2ZhaWwuc2tlbC5oXFxcIlxcbitcXG4rc3RhdGljIHZvaWQgcnVuX3Rlc3Qoc3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsKVxcbit7XFxuK1xcdGNoYXIgYnVmW1BBVEhfTUFYXSA9IFxcXCIvXFxcIjtcXG4rXFxuK1xcdHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNldGFyZ2V0X3BpZCA9IGdldHBpZCgpO1xcbitcXHRza2VsLVxcdTAwM2Vic3MtXFx1MDAzZXByb2dfdHJpZ2dlcmVkID0gMDtcXG4rXFx0c2tlbC1cXHUwMDNlYnNzLVxcdTAwM2VlcnIgPSAwO1xcbitcXHRza2VsLVxcdTAwM2Vic3MtXFx1MDAzZWNvcGllZF9ieXRlID0gMDtcXG4rXFxuK1xcdHN5c2NhbGwoX19OUl9nZXRjd2QsIGJ1Ziwgc2l6ZW9mKGJ1ZikpO1xcbitcXG4rXFx0QVNTRVJUX0VRKHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlcHJvZ190cmlnZ2VyZWQsIDEsIFxcXCJwcm9nX3RyaWdnZXJlZFxcXCIpO1xcbitcXHRBU1NFUlRfRVEoc2tlbC1cXHUwMDNlYnNzLVxcdTAwM2VlcnIsIDAsIFxcXCJlcnJcXFwiKTtcXG4rXFx0QVNTRVJUX0VRKHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlY29waWVkX2J5dGUsICcvJywgXFxcImNvcGllZF9ieXRlXFxcIik7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHJ1bl9hdXRvX2F0dGFjaF90ZXN0KHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZyxcXG4rXFx0XFx0XFx0XFx0IHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbClcXG4re1xcbitcXHRzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7XFxuK1xcbitcXHRsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaChwcm9nKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0tfUFRSKGxpbmssIFxcXCJwcm9nX2F0dGFjaFxcXCIpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRydW5fdGVzdChza2VsKTtcXG4rXFx0YnBmX2xpbmtfX2Rlc3Ryb3kobGluayk7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHRlc3RfYXR0YWNoX29ubHkoc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nKVxcbit7XFxuK1xcdHN0cnVjdCBicGZfbGluayAqbGluaztcXG4rXFxuK1xcdGxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoKHByb2cpO1xcbitcXHRpZiAoQVNTRVJUX09LX1BUUihsaW5rLCBcXFwiYXR0YWNoXFxcIikpXFxuK1xcdFxcdGJwZl9saW5rX19kZXN0cm95KGxpbmspO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCB0ZXN0X2F0dGFjaF9yZWplY3Qoc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nKVxcbit7XFxuK1xcdHN0cnVjdCBicGZfbGluayAqbGluaztcXG4rXFxuK1xcdGxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoKHByb2cpO1xcbitcXHRpZiAoIUFTU0VSVF9FUlJfUFRSKGxpbmssIFxcXCJhdHRhY2hfc2hvdWxkX2ZhaWxcXFwiKSlcXG4rXFx0XFx0YnBmX2xpbmtfX2Rlc3Ryb3kobGluayk7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHRlc3RfcmF3X3RwX2JhcmUoc3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsKVxcbit7XFxuK1xcdHN0cnVjdCBicGZfbGluayAqbGluaztcXG4rXFxuK1xcdGxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX3Jhd190cmFjZXBvaW50KHNrZWwtXFx1MDAzZXByb2dzLmhhbmRsZV9yYXdfdHBfYmFyZSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICBcXFwic3lzX2VudGVyXFxcIik7XFxuK1xcdGlmIChBU1NFUlRfT0tfUFRSKGxpbmssIFxcXCJhdHRhY2hcXFwiKSlcXG4rXFx0XFx0YnBmX2xpbmtfX2Rlc3Ryb3kobGluayk7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHRlc3RfdHBfYmFyZShzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpXFxuK3tcXG4rXFx0c3RydWN0IGJwZl9saW5rICpsaW5rO1xcbitcXG4rXFx0bGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2hfdHJhY2Vwb2ludChza2VsLVxcdTAwM2Vwcm9ncy5oYW5kbGVfdHBfYmFyZSxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgXFxcInN5c2NhbGxzXFxcIiwgXFxcInN5c19lbnRlcl9nZXRjd2RcXFwiKTtcXG4rXFx0aWYgKEFTU0VSVF9PS19QVFIobGluaywgXFxcImF0dGFjaFxcXCIpKVxcbitcXHRcXHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgdGVzdF90ZXN0X3J1bihzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpXFxuK3tcXG4rXFx0X191NjQgYXJnc1syXSA9IHsweDEyMzRVTEwsIDB4NTY3OFVMTH07XFxuK1xcdExJQkJQRl9PUFRTKGJwZl90ZXN0X3J1bl9vcHRzLCB0b3B0cyxcXG4rXFx0XFx0LmN0eF9pbiA9IGFyZ3MsXFxuK1xcdFxcdC5jdHhfc2l6ZV9pbiA9IHNpemVvZihhcmdzKSxcXG4rXFx0KTtcXG4rXFx0aW50IGZkLCBlcnI7XFxuK1xcbitcXHRmZCA9IGJwZl9wcm9ncmFtX19mZChza2VsLVxcdTAwM2Vwcm9ncy5oYW5kbGVfdGVzdF9ydW4pO1xcbitcXHRlcnIgPSBicGZfcHJvZ190ZXN0X3J1bl9vcHRzKGZkLCBcXHUwMDI2dG9wdHMpO1xcbitcXHRBU1NFUlRfT0soZXJyLCBcXFwidGVzdF9ydW5cXFwiKTtcXG4rXFx0QVNTRVJUX0VRKHRvcHRzLnJldHZhbCwgYXJnc1swXSArIGFyZ3NbMV0sIFxcXCJ0ZXN0X3J1bl9yZXR2YWxcXFwiKTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgdGVzdF90ZXN0X3J1bl9vbl9jcHVfcmVqZWN0KHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbClcXG4re1xcbitcXHRfX3U2NCBhcmdzWzJdID0ge307XFxuK1xcdExJQkJQRl9PUFRTKGJwZl90ZXN0X3J1bl9vcHRzLCB0b3B0cyxcXG4rXFx0XFx0LmN0eF9pbiA9IGFyZ3MsXFxuK1xcdFxcdC5jdHhfc2l6ZV9pbiA9IHNpemVvZihhcmdzKSxcXG4rXFx0XFx0LmZsYWdzID0gQlBGX0ZfVEVTVF9SVU5fT05fQ1BVLFxcbitcXHQpO1xcbitcXHRpbnQgZmQsIGVycjtcXG4rXFxuK1xcdGZkID0gYnBmX3Byb2dyYW1fX2ZkKHNrZWwtXFx1MDAzZXByb2dzLmhhbmRsZV90ZXN0X3J1bik7XFxuK1xcdGVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoZmQsIFxcdTAwMjZ0b3B0cyk7XFxuK1xcdEFTU0VSVF9FUlIoZXJyLCBcXFwidGVzdF9ydW5fb25fY3B1X3JlamVjdFxcXCIpO1xcbit9XFxuK1xcbit2b2lkIHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzKHZvaWQpXFxuK3tcXG4rXFx0c3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsO1xcbitcXG4rXFx0c2tlbCA9IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX19vcGVuX2FuZF9sb2FkKCk7XFxuK1xcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcXFwib3Blbl9hbmRfbG9hZFxcXCIpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwidHBfYnRmXFxcIikpXFxuK1xcdFxcdHJ1bl9hdXRvX2F0dGFjaF90ZXN0KHNrZWwtXFx1MDAzZXByb2dzLmhhbmRsZV9zeXNfZW50ZXJfdHBfYnRmLCBza2VsKTtcXG4rXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInJhd190cFxcXCIpKVxcbitcXHRcXHRydW5fYXV0b19hdHRhY2hfdGVzdChza2VsLVxcdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3Jhd190cCwgc2tlbCk7XFxuK1xcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJ0cmFjZXBvaW50XFxcIikpXFxuK1xcdFxcdHJ1bl9hdXRvX2F0dGFjaF90ZXN0KHNrZWwtXFx1MDAzZXByb2dzLmhhbmRsZV9zeXNfZW50ZXJfdHAsIHNrZWwpO1xcbitcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwic3lzX2V4aXRcXFwiKSlcXG4rXFx0XFx0cnVuX2F1dG9fYXR0YWNoX3Rlc3Qoc2tlbC1cXHUwMDNlcHJvZ3MuaGFuZGxlX3N5c19leGl0X3RwLCBza2VsKTtcXG4rXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInRyYWNlcG9pbnRfYWxpYXNcXFwiKSlcXG4rXFx0XFx0dGVzdF9hdHRhY2hfb25seShza2VsLVxcdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3RwX2FsaWFzKTtcXG4rXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInJhd190cmFjZXBvaW50X2FsaWFzXFxcIikpXFxuK1xcdFxcdHRlc3RfYXR0YWNoX29ubHkoc2tlbC1cXHUwMDNlcHJvZ3MuaGFuZGxlX3N5c19lbnRlcl9yYXdfdHBfYWxpYXMpO1xcbitcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwicmF3X3RwX2JhcmVcXFwiKSlcXG4rXFx0XFx0dGVzdF9yYXdfdHBfYmFyZShza2VsKTtcXG4rXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInRwX2JhcmVcXFwiKSlcXG4rXFx0XFx0dGVzdF90cF9iYXJlKHNrZWwpO1xcbitcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwidGVzdF9ydW5cXFwiKSlcXG4rXFx0XFx0dGVzdF90ZXN0X3J1bihza2VsKTtcXG4rXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInRlc3RfcnVuX29uX2NwdV9yZWplY3RcXFwiKSlcXG4rXFx0XFx0dGVzdF90ZXN0X3J1bl9vbl9jcHVfcmVqZWN0KHNrZWwpO1xcbitcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwicmF3X3RwX25vbl9mYXVsdGFibGVcXFwiKSlcXG4rXFx0XFx0dGVzdF9hdHRhY2hfcmVqZWN0KHNrZWwtXFx1MDAzZXByb2dzLmhhbmRsZV9yYXdfdHBfbm9uX2ZhdWx0YWJsZSk7XFxuK1xcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJ0cF9ub25fc3lzY2FsbFxcXCIpKVxcbitcXHRcXHR0ZXN0X2F0dGFjaF9yZWplY3Qoc2tlbC1cXHUwMDNlcHJvZ3MuaGFuZGxlX3RwX25vbl9zeXNjYWxsKTtcXG4rXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInRwX2J0Zl9ub25fZmF1bHRhYmxlX3JlamVjdFxcXCIpKVxcbitcXHRcXHRSVU5fVEVTVFModGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbCk7XFxuK1xcbitcXHR0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19fZGVzdHJveShza2VsKTtcXG4rfVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cy5jXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi4yNTRmN2ZkODk1ZDlmXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cy5jXFxuQEAgLTAsMCArMSwxMTIgQEBcXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4rLyogQ29weXJpZ2h0IChjKSAyMDI1IE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLiAqL1xcbitcXG4rI2luY2x1ZGUgXFx1MDAzY3ZtbGludXguaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2FzbS91bmlzdGQuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2JwZi9icGZfdHJhY2luZy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjYnBmL2JwZl9jb3JlX3JlYWQuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2JwZi9icGZfaGVscGVycy5oXFx1MDAzZVxcbitcXG4rY2hhciBfbGljZW5zZVtdIFNFQyhcXFwibGljZW5zZVxcXCIpID0gXFxcIkdQTFxcXCI7XFxuK1xcbitpbnQgdGFyZ2V0X3BpZDtcXG4raW50IHByb2dfdHJpZ2dlcmVkO1xcbitsb25nIGVycjtcXG4rY2hhciBjb3BpZWRfYnl0ZTtcXG4rXFxuK3N0YXRpYyBpbnQgY29weV9nZXRjd2RfYXJnKGNoYXIgKnVidWYpXFxuK3tcXG4rXFx0ZXJyID0gYnBmX2NvcHlfZnJvbV91c2VyKFxcdTAwMjZjb3BpZWRfYnl0ZSwgc2l6ZW9mKGNvcGllZF9ieXRlKSwgdWJ1Zik7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuK1xcbitcXHRwcm9nX3RyaWdnZXJlZCA9IDE7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitTRUMoXFxcInRwX2J0Zi5zL3N5c19lbnRlclxcXCIpXFxuK2ludCBCUEZfUFJPRyhoYW5kbGVfc3lzX2VudGVyX3RwX2J0Ziwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGxvbmcgaWQpXFxuK3tcXG4rXFx0aWYgKChicGZfZ2V0X2N1cnJlbnRfcGlkX3RnaWQoKSBcXHUwMDNlXFx1MDAzZSAzMikgIT0gdGFyZ2V0X3BpZCB8fFxcbitcXHQgICAgaWQgIT0gX19OUl9nZXRjd2QpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0cmV0dXJuIGNvcHlfZ2V0Y3dkX2FyZygodm9pZCAqKVBUX1JFR1NfUEFSTTFfU1lTQ0FMTChyZWdzKSk7XFxuK31cXG4rXFxuK1NFQyhcXFwicmF3X3RwLnMvc3lzX2VudGVyXFxcIilcXG4raW50IEJQRl9QUk9HKGhhbmRsZV9zeXNfZW50ZXJfcmF3X3RwLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgbG9uZyBpZClcXG4re1xcbitcXHRpZiAoKGJwZl9nZXRfY3VycmVudF9waWRfdGdpZCgpIFxcdTAwM2VcXHUwMDNlIDMyKSAhPSB0YXJnZXRfcGlkIHx8XFxuK1xcdCAgICBpZCAhPSBfX05SX2dldGN3ZClcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcbitcXHRyZXR1cm4gY29weV9nZXRjd2RfYXJnKCh2b2lkICopUFRfUkVHU19QQVJNMV9DT1JFX1NZU0NBTEwocmVncykpO1xcbit9XFxuK1xcbitTRUMoXFxcInRwLnMvc3lzY2FsbHMvc3lzX2VudGVyX2dldGN3ZFxcXCIpXFxuK2ludCBoYW5kbGVfc3lzX2VudGVyX3RwKHN0cnVjdCBzeXNjYWxsX3RyYWNlX2VudGVyICphcmdzKVxcbit7XFxuK1xcdGlmICgoYnBmX2dldF9jdXJyZW50X3BpZF90Z2lkKCkgXFx1MDAzZVxcdTAwM2UgMzIpICE9IHRhcmdldF9waWQpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0cmV0dXJuIGNvcHlfZ2V0Y3dkX2FyZygodm9pZCAqKWFyZ3MtXFx1MDAzZWFyZ3NbMF0pO1xcbit9XFxuK1xcbitTRUMoXFxcInRwLnMvc3lzY2FsbHMvc3lzX2V4aXRfZ2V0Y3dkXFxcIilcXG4raW50IGhhbmRsZV9zeXNfZXhpdF90cChzdHJ1Y3Qgc3lzY2FsbF90cmFjZV9leGl0ICphcmdzKVxcbit7XFxuK1xcdHN0cnVjdCBwdF9yZWdzICpyZWdzO1xcbitcXG4rXFx0aWYgKChicGZfZ2V0X2N1cnJlbnRfcGlkX3RnaWQoKSBcXHUwMDNlXFx1MDAzZSAzMikgIT0gdGFyZ2V0X3BpZClcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcbitcXHRyZWdzID0gKHN0cnVjdCBwdF9yZWdzICopYnBmX3Rhc2tfcHRfcmVncyhicGZfZ2V0X2N1cnJlbnRfdGFza19idGYoKSk7XFxuK1xcdHJldHVybiBjb3B5X2dldGN3ZF9hcmcoKHZvaWQgKilQVF9SRUdTX1BBUk0xX0NPUkVfU1lTQ0FMTChyZWdzKSk7XFxuK31cXG4rXFxuK1NFQyhcXFwicmF3X3RwLnNcXFwiKVxcbitpbnQgQlBGX1BST0coaGFuZGxlX3Jhd190cF9iYXJlLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgbG9uZyBpZClcXG4re1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rU0VDKFxcXCJ0cC5zXFxcIilcXG4raW50IGhhbmRsZV90cF9iYXJlKHZvaWQgKmN0eClcXG4re1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rU0VDKFxcXCJ0cmFjZXBvaW50LnMvc3lzY2FsbHMvc3lzX2VudGVyX2dldGN3ZFxcXCIpXFxuK2ludCBoYW5kbGVfc3lzX2VudGVyX3RwX2FsaWFzKHN0cnVjdCBzeXNjYWxsX3RyYWNlX2VudGVyICphcmdzKVxcbit7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitTRUMoXFxcInJhd190cmFjZXBvaW50LnMvc3lzX2VudGVyXFxcIilcXG4raW50IEJQRl9QUk9HKGhhbmRsZV9zeXNfZW50ZXJfcmF3X3RwX2FsaWFzLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgbG9uZyBpZClcXG4re1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rU0VDKFxcXCJyYXdfdHAucy9zeXNfZW50ZXJcXFwiKVxcbitpbnQgQlBGX1BST0coaGFuZGxlX3Rlc3RfcnVuLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgbG9uZyBpZClcXG4re1xcbitcXHRpZiAoKF9fdTY0KXJlZ3MgPT0gMHgxMjM0VUxMIFxcdTAwMjZcXHUwMDI2IChfX3U2NClpZCA9PSAweDU2NzhVTEwpXFxuK1xcdFxcdHJldHVybiAoX191NjQpcmVncyArIChfX3U2NClpZDtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitTRUMoXFxcInJhd190cC5zL3NjaGVkX3N3aXRjaFxcXCIpXFxuK2ludCBCUEZfUFJPRyhoYW5kbGVfcmF3X3RwX25vbl9mYXVsdGFibGUsIGJvb2wgcHJlZW1wdCxcXG4rXFx0ICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnByZXYsIHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dClcXG4re1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rU0VDKFxcXCJ0cC5zL3NjaGVkL3NjaGVkX3N3aXRjaFxcXCIpXFxuK2ludCBoYW5kbGVfdHBfbm9uX3N5c2NhbGwodm9pZCAqY3R4KVxcbit7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19mYWlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5jXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi4xYTA3NDhhOTUyMGJiXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19mYWlsLmNcXG5AQCAtMCwwICsxLDE4IEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKy8qIENvcHlyaWdodCAoYykgMjAyNSBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy4gKi9cXG4rXFxuKyNpbmNsdWRlIFxcdTAwM2N2bWxpbnV4LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NicGYvYnBmX3RyYWNpbmcuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2JwZi9icGZfaGVscGVycy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXFwiYnBmX21pc2MuaFxcXCJcXG4rXFxuK2NoYXIgX2xpY2Vuc2VbXSBTRUMoXFxcImxpY2Vuc2VcXFwiKSA9IFxcXCJHUExcXFwiO1xcbitcXG4rLyogU2xlZXBhYmxlIHByb2dyYW0gb24gYSBub24tZmF1bHRhYmxlIHRyYWNlcG9pbnQgc2hvdWxkIGZhaWwgdG8gbG9hZCAqL1xcbitTRUMoXFxcInRwX2J0Zi5zL3NjaGVkX3N3aXRjaFxcXCIpXFxuK19fZmFpbHVyZSBfX21zZyhcXFwiU2xlZXBhYmxlIHByb2dyYW0gY2Fubm90IGF0dGFjaCB0byBub24tZmF1bHRhYmxlIHRyYWNlcG9pbnRcXFwiKVxcbitpbnQgQlBGX1BST0coaGFuZGxlX3NjaGVkX3N3aXRjaCwgYm9vbCBwcmVlbXB0LFxcbitcXHQgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqcHJldiwgc3RydWN0IHRhc2tfc3RydWN0ICpuZXh0KVxcbit7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpZmllci9zbGVlcGFibGUuY1xcbmluZGV4IGMyYjdmNWViZjE2OGMuLjZkYWJjNTUyMjk0NTUgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL3NsZWVwYWJsZS5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL3NsZWVwYWJsZS5jXFxuQEAgLTc2LDcgKzc2LDIwIEBAXFxuIFxcdC5ydW5zID0gLTEsXFxuIH0sXFxuIHtcXG4tXFx0XFxcInNsZWVwYWJsZSByYXcgdHJhY2Vwb2ludCByZWplY3RcXFwiLFxcbitcXHRcXFwic2xlZXBhYmxlIHJhdyB0cmFjZXBvaW50IGFjY2VwdFxcXCIsXFxuK1xcdC5pbnNucyA9IHtcXG4rXFx0QlBGX01PVjY0X0lNTShCUEZfUkVHXzAsIDApLFxcbitcXHRCUEZfRVhJVF9JTlNOKCksXFxuK1xcdH0sXFxuK1xcdC5wcm9nX3R5cGUgPSBCUEZfUFJPR19UWVBFX1RSQUNJTkcsXFxuK1xcdC5leHBlY3RlZF9hdHRhY2hfdHlwZSA9IEJQRl9UUkFDRV9SQVdfVFAsXFxuK1xcdC5rZnVuYyA9IFxcXCJzeXNfZW50ZXJcXFwiLFxcbitcXHQucmVzdWx0ID0gQUNDRVBULFxcbitcXHQuZmxhZ3MgPSBCUEZfRl9TTEVFUEFCTEUsXFxuK1xcdC5ydW5zID0gLTEsXFxuK30sXFxuK3tcXG4rXFx0XFxcInNsZWVwYWJsZSByYXcgdHJhY2Vwb2ludCByZWplY3Qgbm9uLWZhdWx0YWJsZVxcXCIsXFxuIFxcdC5pbnNucyA9IHtcXG4gXFx0QlBGX01PVjY0X0lNTShCUEZfUkVHXzAsIDApLFxcbiBcXHRCUEZfRVhJVF9JTlNOKCksXFxuQEAgLTg1LDcgKzk4LDcgQEBcXG4gXFx0LmV4cGVjdGVkX2F0dGFjaF90eXBlID0gQlBGX1RSQUNFX1JBV19UUCxcXG4gXFx0LmtmdW5jID0gXFxcInNjaGVkX3N3aXRjaFxcXCIsXFxuIFxcdC5yZXN1bHQgPSBSRUpFQ1QsXFxuLVxcdC5lcnJzdHIgPSBcXFwiT25seSBmZW50cnkvZmV4aXQvZnNlc3Npb24vZm1vZF9yZXQsIGxzbSwgaXRlciwgdXByb2JlLCBhbmQgc3RydWN0X29wcyBwcm9ncmFtcyBjYW4gYmUgc2xlZXBhYmxlXFxcIixcXG4rXFx0LmVycnN0ciA9IFxcXCJTbGVlcGFibGUgcHJvZ3JhbSBjYW5ub3QgYXR0YWNoIHRvIG5vbi1mYXVsdGFibGUgdHJhY2Vwb2ludFxcXCIsXFxuIFxcdC5mbGFncyA9IEJQRl9GX1NMRUVQQUJMRSxcXG4gXFx0LnJ1bnMgPSAtMSxcXG4gfSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTc6Mzc6NTkuNTc5NTE3MTAzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6OTg0Mjg2ODgyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGFuZCBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8gYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTM4NWI3ZmRmMDkxZDJiZmIzYmJhY2Y4NjQwM2FhOTFhM2M5ZjE1MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDEwIDE3OjM3OjU2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjE5NTAwYjc4NWVlMzJcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NsZWVwYWJsZV90cmFjZXBvaW50cy5jXG5AQCAtMCwwICsxLDE0MiBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rLyogQ29weXJpZ2h0IChjKSAyMDI1IE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLiAqL1xuK1xuKyNpbmNsdWRlIFx1MDAzY3Rlc3RfcHJvZ3MuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY3VuaXN0ZC5oXHUwMDNlXG4rI2luY2x1ZGUgXCJ0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cy5za2VsLmhcIlxuKyNpbmNsdWRlIFwidGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5za2VsLmhcIlxuK1xuK3N0YXRpYyB2b2lkIHJ1bl90ZXN0KHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbClcbit7XG4rXHRjaGFyIGJ1ZltQQVRIX01BWF0gPSBcIi9cIjtcbitcbitcdHNrZWwtXHUwMDNlYnNzLVx1MDAzZXRhcmdldF9waWQgPSBnZXRwaWQoKTtcbitcdHNrZWwtXHUwMDNlYnNzLVx1MDAzZXByb2dfdHJpZ2dlcmVkID0gMDtcbitcdHNrZWwtXHUwMDNlYnNzLVx1MDAzZWVyciA9IDA7XG4rXHRza2VsLVx1MDAzZWJzcy1cdTAwM2Vjb3BpZWRfYnl0ZSA9IDA7XG4rXG4rXHRzeXNjYWxsKF9fTlJfZ2V0Y3dkLCBidWYsIHNpemVvZihidWYpKTtcbitcbitcdEFTU0VSVF9FUShza2VsLVx1MDAzZWJzcy1cdTAwM2Vwcm9nX3RyaWdnZXJlZCwgMSwgXCJwcm9nX3RyaWdnZXJlZFwiKTtcbitcdEFTU0VSVF9FUShza2VsLVx1MDAzZWJzcy1cdTAwM2VlcnIsIDAsIFwiZXJyXCIpO1xuK1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZWNvcGllZF9ieXRlLCAnLycsIFwiY29waWVkX2J5dGVcIik7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHJ1bl9hdXRvX2F0dGFjaF90ZXN0KHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZyxcbitcdFx0XHRcdCBzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpXG4re1xuK1x0c3RydWN0IGJwZl9saW5rICpsaW5rO1xuK1xuK1x0bGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2gocHJvZyk7XG4rXHRpZiAoIUFTU0VSVF9PS19QVFIobGluaywgXCJwcm9nX2F0dGFjaFwiKSlcbitcdFx0cmV0dXJuO1xuK1xuK1x0cnVuX3Rlc3Qoc2tlbCk7XG4rXHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgdGVzdF9hdHRhY2hfb25seShzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2cpXG4re1xuK1x0c3RydWN0IGJwZl9saW5rICpsaW5rO1xuK1xuK1x0bGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2gocHJvZyk7XG4rXHRpZiAoQVNTRVJUX09LX1BUUihsaW5rLCBcImF0dGFjaFwiKSlcbitcdFx0YnBmX2xpbmtfX2Rlc3Ryb3kobGluayk7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHRlc3RfYXR0YWNoX3JlamVjdChzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2cpXG4re1xuK1x0c3RydWN0IGJwZl9saW5rICpsaW5rO1xuK1xuK1x0bGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2gocHJvZyk7XG4rXHRpZiAoIUFTU0VSVF9FUlJfUFRSKGxpbmssIFwiYXR0YWNoX3Nob3VsZF9mYWlsXCIpKVxuK1x0XHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgdGVzdF9yYXdfdHBfYmFyZShzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpXG4re1xuK1x0c3RydWN0IGJwZl9saW5rICpsaW5rO1xuK1xuK1x0bGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2hfcmF3X3RyYWNlcG9pbnQoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfcmF3X3RwX2JhcmUsXG4rXHRcdFx0XHRcdFx0ICBcInN5c19lbnRlclwiKTtcbitcdGlmIChBU1NFUlRfT0tfUFRSKGxpbmssIFwiYXR0YWNoXCIpKVxuK1x0XHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgdGVzdF90cF9iYXJlKHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbClcbit7XG4rXHRzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7XG4rXG4rXHRsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjZXBvaW50KHNrZWwtXHUwMDNlcHJvZ3MuaGFuZGxlX3RwX2JhcmUsXG4rXHRcdFx0XHRcdCAgICAgIFwic3lzY2FsbHNcIiwgXCJzeXNfZW50ZXJfZ2V0Y3dkXCIpO1xuK1x0aWYgKEFTU0VSVF9PS19QVFIobGluaywgXCJhdHRhY2hcIikpXG4rXHRcdGJwZl9saW5rX19kZXN0cm95KGxpbmspO1xuK31cbitcbitzdGF0aWMgdm9pZCB0ZXN0X3Rlc3RfcnVuKHN0cnVjdCB0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cyAqc2tlbClcbit7XG4rXHRfX3U2NCBhcmdzWzJdID0gezB4MTIzNFVMTCwgMHg1Njc4VUxMfTtcbitcdExJQkJQRl9PUFRTKGJwZl90ZXN0X3J1bl9vcHRzLCB0b3B0cyxcbitcdFx0LmN0eF9pbiA9IGFyZ3MsXG4rXHRcdC5jdHhfc2l6ZV9pbiA9IHNpemVvZihhcmdzKSxcbitcdCk7XG4rXHRpbnQgZmQsIGVycjtcbitcbitcdGZkID0gYnBmX3Byb2dyYW1fX2ZkKHNrZWwtXHUwMDNlcHJvZ3MuaGFuZGxlX3Rlc3RfcnVuKTtcbitcdGVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoZmQsIFx1MDAyNnRvcHRzKTtcbitcdEFTU0VSVF9PSyhlcnIsIFwidGVzdF9ydW5cIik7XG4rXHRBU1NFUlRfRVEodG9wdHMucmV0dmFsLCBhcmdzWzBdICsgYXJnc1sxXSwgXCJ0ZXN0X3J1bl9yZXR2YWxcIik7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHRlc3RfdGVzdF9ydW5fb25fY3B1X3JlamVjdChzdHJ1Y3QgdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMgKnNrZWwpXG4re1xuK1x0X191NjQgYXJnc1syXSA9IHt9O1xuK1x0TElCQlBGX09QVFMoYnBmX3Rlc3RfcnVuX29wdHMsIHRvcHRzLFxuK1x0XHQuY3R4X2luID0gYXJncyxcbitcdFx0LmN0eF9zaXplX2luID0gc2l6ZW9mKGFyZ3MpLFxuK1x0XHQuZmxhZ3MgPSBCUEZfRl9URVNUX1JVTl9PTl9DUFUsXG4rXHQpO1xuK1x0aW50IGZkLCBlcnI7XG4rXG4rXHRmZCA9IGJwZl9wcm9ncmFtX19mZChza2VsLVx1MDAzZXByb2dzLmhhbmRsZV90ZXN0X3J1bik7XG4rXHRlcnIgPSBicGZfcHJvZ190ZXN0X3J1bl9vcHRzKGZkLCBcdTAwMjZ0b3B0cyk7XG4rXHRBU1NFUlRfRVJSKGVyciwgXCJ0ZXN0X3J1bl9vbl9jcHVfcmVqZWN0XCIpO1xuK31cbitcbit2b2lkIHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzKHZvaWQpXG4re1xuK1x0c3RydWN0IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzICpza2VsO1xuK1xuK1x0c2tlbCA9IHRlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX19vcGVuX2FuZF9sb2FkKCk7XG4rXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgXCJvcGVuX2FuZF9sb2FkXCIpKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInRwX2J0ZlwiKSlcbitcdFx0cnVuX2F1dG9fYXR0YWNoX3Rlc3Qoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3RwX2J0Ziwgc2tlbCk7XG4rXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInJhd190cFwiKSlcbitcdFx0cnVuX2F1dG9fYXR0YWNoX3Rlc3Qoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3Jhd190cCwgc2tlbCk7XG4rXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInRyYWNlcG9pbnRcIikpXG4rXHRcdHJ1bl9hdXRvX2F0dGFjaF90ZXN0KHNrZWwtXHUwMDNlcHJvZ3MuaGFuZGxlX3N5c19lbnRlcl90cCwgc2tlbCk7XG4rXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInN5c19leGl0XCIpKVxuK1x0XHRydW5fYXV0b19hdHRhY2hfdGVzdChza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9zeXNfZXhpdF90cCwgc2tlbCk7XG4rXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInRyYWNlcG9pbnRfYWxpYXNcIikpXG4rXHRcdHRlc3RfYXR0YWNoX29ubHkoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3RwX2FsaWFzKTtcbitcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwicmF3X3RyYWNlcG9pbnRfYWxpYXNcIikpXG4rXHRcdHRlc3RfYXR0YWNoX29ubHkoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfc3lzX2VudGVyX3Jhd190cF9hbGlhcyk7XG4rXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInJhd190cF9iYXJlXCIpKVxuK1x0XHR0ZXN0X3Jhd190cF9iYXJlKHNrZWwpO1xuK1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJ0cF9iYXJlXCIpKVxuK1x0XHR0ZXN0X3RwX2JhcmUoc2tlbCk7XG4rXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInRlc3RfcnVuXCIpKVxuK1x0XHR0ZXN0X3Rlc3RfcnVuKHNrZWwpO1xuK1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJ0ZXN0X3J1bl9vbl9jcHVfcmVqZWN0XCIpKVxuK1x0XHR0ZXN0X3Rlc3RfcnVuX29uX2NwdV9yZWplY3Qoc2tlbCk7XG4rXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInJhd190cF9ub25fZmF1bHRhYmxlXCIpKVxuK1x0XHR0ZXN0X2F0dGFjaF9yZWplY3Qoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfcmF3X3RwX25vbl9mYXVsdGFibGUpO1xuK1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJ0cF9ub25fc3lzY2FsbFwiKSlcbitcdFx0dGVzdF9hdHRhY2hfcmVqZWN0KHNrZWwtXHUwMDNlcHJvZ3MuaGFuZGxlX3RwX25vbl9zeXNjYWxsKTtcbitcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwidHBfYnRmX25vbl9mYXVsdGFibGVfcmVqZWN0XCIpKVxuK1x0XHRSVU5fVEVTVFModGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbCk7XG4rXG4rXHR0ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19fZGVzdHJveShza2VsKTtcbit9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHMuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjI1NGY3ZmQ4OTVkOWZcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50cy5jXG5AQCAtMCwwICsxLDExMiBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rLyogQ29weXJpZ2h0IChjKSAyMDI1IE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLiAqL1xuK1xuKyNpbmNsdWRlIFx1MDAzY3ZtbGludXguaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2FzbS91bmlzdGQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfdHJhY2luZy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9jb3JlX3JlYWQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4rXG4rY2hhciBfbGljZW5zZVtdIFNFQyhcImxpY2Vuc2VcIikgPSBcIkdQTFwiO1xuK1xuK2ludCB0YXJnZXRfcGlkO1xuK2ludCBwcm9nX3RyaWdnZXJlZDtcbitsb25nIGVycjtcbitjaGFyIGNvcGllZF9ieXRlO1xuK1xuK3N0YXRpYyBpbnQgY29weV9nZXRjd2RfYXJnKGNoYXIgKnVidWYpXG4re1xuK1x0ZXJyID0gYnBmX2NvcHlfZnJvbV91c2VyKFx1MDAyNmNvcGllZF9ieXRlLCBzaXplb2YoY29waWVkX2J5dGUpLCB1YnVmKTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBlcnI7XG4rXG4rXHRwcm9nX3RyaWdnZXJlZCA9IDE7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rU0VDKFwidHBfYnRmLnMvc3lzX2VudGVyXCIpXG4raW50IEJQRl9QUk9HKGhhbmRsZV9zeXNfZW50ZXJfdHBfYnRmLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgbG9uZyBpZClcbit7XG4rXHRpZiAoKGJwZl9nZXRfY3VycmVudF9waWRfdGdpZCgpIFx1MDAzZVx1MDAzZSAzMikgIT0gdGFyZ2V0X3BpZCB8fFxuK1x0ICAgIGlkICE9IF9fTlJfZ2V0Y3dkKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdHJldHVybiBjb3B5X2dldGN3ZF9hcmcoKHZvaWQgKilQVF9SRUdTX1BBUk0xX1NZU0NBTEwocmVncykpO1xuK31cbitcbitTRUMoXCJyYXdfdHAucy9zeXNfZW50ZXJcIilcbitpbnQgQlBGX1BST0coaGFuZGxlX3N5c19lbnRlcl9yYXdfdHAsIHN0cnVjdCBwdF9yZWdzICpyZWdzLCBsb25nIGlkKVxuK3tcbitcdGlmICgoYnBmX2dldF9jdXJyZW50X3BpZF90Z2lkKCkgXHUwMDNlXHUwMDNlIDMyKSAhPSB0YXJnZXRfcGlkIHx8XG4rXHQgICAgaWQgIT0gX19OUl9nZXRjd2QpXG4rXHRcdHJldHVybiAwO1xuK1xuK1x0cmV0dXJuIGNvcHlfZ2V0Y3dkX2FyZygodm9pZCAqKVBUX1JFR1NfUEFSTTFfQ09SRV9TWVNDQUxMKHJlZ3MpKTtcbit9XG4rXG4rU0VDKFwidHAucy9zeXNjYWxscy9zeXNfZW50ZXJfZ2V0Y3dkXCIpXG4raW50IGhhbmRsZV9zeXNfZW50ZXJfdHAoc3RydWN0IHN5c2NhbGxfdHJhY2VfZW50ZXIgKmFyZ3MpXG4re1xuK1x0aWYgKChicGZfZ2V0X2N1cnJlbnRfcGlkX3RnaWQoKSBcdTAwM2VcdTAwM2UgMzIpICE9IHRhcmdldF9waWQpXG4rXHRcdHJldHVybiAwO1xuK1xuK1x0cmV0dXJuIGNvcHlfZ2V0Y3dkX2FyZygodm9pZCAqKWFyZ3MtXHUwMDNlYXJnc1swXSk7XG4rfVxuK1xuK1NFQyhcInRwLnMvc3lzY2FsbHMvc3lzX2V4aXRfZ2V0Y3dkXCIpXG4raW50IGhhbmRsZV9zeXNfZXhpdF90cChzdHJ1Y3Qgc3lzY2FsbF90cmFjZV9leGl0ICphcmdzKVxuK3tcbitcdHN0cnVjdCBwdF9yZWdzICpyZWdzO1xuK1xuK1x0aWYgKChicGZfZ2V0X2N1cnJlbnRfcGlkX3RnaWQoKSBcdTAwM2VcdTAwM2UgMzIpICE9IHRhcmdldF9waWQpXG4rXHRcdHJldHVybiAwO1xuK1xuK1x0cmVncyA9IChzdHJ1Y3QgcHRfcmVncyAqKWJwZl90YXNrX3B0X3JlZ3MoYnBmX2dldF9jdXJyZW50X3Rhc2tfYnRmKCkpO1xuK1x0cmV0dXJuIGNvcHlfZ2V0Y3dkX2FyZygodm9pZCAqKVBUX1JFR1NfUEFSTTFfQ09SRV9TWVNDQUxMKHJlZ3MpKTtcbit9XG4rXG4rU0VDKFwicmF3X3RwLnNcIilcbitpbnQgQlBGX1BST0coaGFuZGxlX3Jhd190cF9iYXJlLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgbG9uZyBpZClcbit7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rU0VDKFwidHAuc1wiKVxuK2ludCBoYW5kbGVfdHBfYmFyZSh2b2lkICpjdHgpXG4re1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK1NFQyhcInRyYWNlcG9pbnQucy9zeXNjYWxscy9zeXNfZW50ZXJfZ2V0Y3dkXCIpXG4raW50IGhhbmRsZV9zeXNfZW50ZXJfdHBfYWxpYXMoc3RydWN0IHN5c2NhbGxfdHJhY2VfZW50ZXIgKmFyZ3MpXG4re1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK1NFQyhcInJhd190cmFjZXBvaW50LnMvc3lzX2VudGVyXCIpXG4raW50IEJQRl9QUk9HKGhhbmRsZV9zeXNfZW50ZXJfcmF3X3RwX2FsaWFzLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywgbG9uZyBpZClcbit7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rU0VDKFwicmF3X3RwLnMvc3lzX2VudGVyXCIpXG4raW50IEJQRl9QUk9HKGhhbmRsZV90ZXN0X3J1biwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGxvbmcgaWQpXG4re1xuK1x0aWYgKChfX3U2NClyZWdzID09IDB4MTIzNFVMTCBcdTAwMjZcdTAwMjYgKF9fdTY0KWlkID09IDB4NTY3OFVMTClcbitcdFx0cmV0dXJuIChfX3U2NClyZWdzICsgKF9fdTY0KWlkO1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK1NFQyhcInJhd190cC5zL3NjaGVkX3N3aXRjaFwiKVxuK2ludCBCUEZfUFJPRyhoYW5kbGVfcmF3X3RwX25vbl9mYXVsdGFibGUsIGJvb2wgcHJlZW1wdCxcbitcdCAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQpXG4re1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK1NFQyhcInRwLnMvc2NoZWQvc2NoZWRfc3dpdGNoXCIpXG4raW50IGhhbmRsZV90cF9ub25fc3lzY2FsbCh2b2lkICpjdHgpXG4re1xuK1x0cmV0dXJuIDA7XG4rfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NsZWVwYWJsZV90cmFjZXBvaW50c19mYWlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zbGVlcGFibGVfdHJhY2Vwb2ludHNfZmFpbC5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uMWEwNzQ4YTk1MjBiYlxuLS0tIC9kZXYvbnVsbFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX2ZhaWwuY1xuQEAgLTAsMCArMSwxOCBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rLyogQ29weXJpZ2h0IChjKSAyMDI1IE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLiAqL1xuK1xuKyNpbmNsdWRlIFx1MDAzY3ZtbGludXguaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfdHJhY2luZy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbisjaW5jbHVkZSBcImJwZl9taXNjLmhcIlxuK1xuK2NoYXIgX2xpY2Vuc2VbXSBTRUMoXCJsaWNlbnNlXCIpID0gXCJHUExcIjtcbitcbisvKiBTbGVlcGFibGUgcHJvZ3JhbSBvbiBhIG5vbi1mYXVsdGFibGUgdHJhY2Vwb2ludCBzaG91bGQgZmFpbCB0byBsb2FkICovXG4rU0VDKFwidHBfYnRmLnMvc2NoZWRfc3dpdGNoXCIpXG4rX19mYWlsdXJlIF9fbXNnKFwiU2xlZXBhYmxlIHByb2dyYW0gY2Fubm90IGF0dGFjaCB0byBub24tZmF1bHRhYmxlIHRyYWNlcG9pbnRcIilcbitpbnQgQlBGX1BST0coaGFuZGxlX3NjaGVkX3N3aXRjaCwgYm9vbCBwcmVlbXB0LFxuK1x0ICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnByZXYsIHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dClcbit7XG4rXHRyZXR1cm4gMDtcbit9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL3NsZWVwYWJsZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL3NsZWVwYWJsZS5jXG5pbmRleCBjMmI3ZjVlYmYxNjhjLi42ZGFiYzU1MjI5NDU1IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL3NsZWVwYWJsZS5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaWZpZXIvc2xlZXBhYmxlLmNcbkBAIC03Niw3ICs3NiwyMCBAQFxuIFx0LnJ1bnMgPSAtMSxcbiB9LFxuIHtcbi1cdFwic2xlZXBhYmxlIHJhdyB0cmFjZXBvaW50IHJlamVjdFwiLFxuK1x0XCJzbGVlcGFibGUgcmF3IHRyYWNlcG9pbnQgYWNjZXB0XCIsXG4rXHQuaW5zbnMgPSB7XG4rXHRCUEZfTU9WNjRfSU1NKEJQRl9SRUdfMCwgMCksXG4rXHRCUEZfRVhJVF9JTlNOKCksXG4rXHR9LFxuK1x0LnByb2dfdHlwZSA9IEJQRl9QUk9HX1RZUEVfVFJBQ0lORyxcbitcdC5leHBlY3RlZF9hdHRhY2hfdHlwZSA9IEJQRl9UUkFDRV9SQVdfVFAsXG4rXHQua2Z1bmMgPSBcInN5c19lbnRlclwiLFxuK1x0LnJlc3VsdCA9IEFDQ0VQVCxcbitcdC5mbGFncyA9IEJQRl9GX1NMRUVQQUJMRSxcbitcdC5ydW5zID0gLTEsXG4rfSxcbit7XG4rXHRcInNsZWVwYWJsZSByYXcgdHJhY2Vwb2ludCByZWplY3Qgbm9uLWZhdWx0YWJsZVwiLFxuIFx0Lmluc25zID0ge1xuIFx0QlBGX01PVjY0X0lNTShCUEZfUkVHXzAsIDApLFxuIFx0QlBGX0VYSVRfSU5TTigpLFxuQEAgLTg1LDcgKzk4LDcgQEBcbiBcdC5leHBlY3RlZF9hdHRhY2hfdHlwZSA9IEJQRl9UUkFDRV9SQVdfVFAsXG4gXHQua2Z1bmMgPSBcInNjaGVkX3N3aXRjaFwiLFxuIFx0LnJlc3VsdCA9IFJFSkVDVCxcbi1cdC5lcnJzdHIgPSBcIk9ubHkgZmVudHJ5L2ZleGl0L2ZzZXNzaW9uL2Ztb2RfcmV0LCBsc20sIGl0ZXIsIHVwcm9iZSwgYW5kIHN0cnVjdF9vcHMgcHJvZ3JhbXMgY2FuIGJlIHNsZWVwYWJsZVwiLFxuK1x0LmVycnN0ciA9IFwiU2xlZXBhYmxlIHByb2dyYW0gY2Fubm90IGF0dGFjaCB0byBub24tZmF1bHRhYmxlIHRyYWNlcG9pbnRcIixcbiBcdC5mbGFncyA9IEJQRl9GX1NMRUVQQUJMRSxcbiBcdC5ydW5zID0gLTEsXG4gfSxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE3OjM3OjU5LjU3OTUxODMwM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk4NDI4NDgxNTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBTdWl0YWJpbGl0eSoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggYWRkaW5nIHRlc3RzIGZvciBzbGVlcGFibGUgdHJhY2Vwb2ludHMgaW4gQlBGLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBhc3Nlc3MgaXRzIGltcGFjdCBvbiB0aGUga2VybmVsJ3MgZnV6emluZyBzdWl0YWJpbGl0eS4gVGhlIHBhdGNoIG1vZGlmaWVzIGZpbGVzOiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmNgLCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzLmNgLCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc2xlZXBhYmxlX3RyYWNlcG9pbnRzX2ZhaWwuY2AsIGFuZCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlmaWVyL3NsZWVwYWJsZS5jYC4gIEltbWVkaWF0ZWx5LCBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGFueSAqa2VybmVsKiBjb2RlIGlzIHRvdWNoZWQuICBBIHF1aWNrIHJldmlldyBvZiB0aGUgZGlmZiBzaG93cyB0aGF0IGV2ZXJ5dGhpbmcgaXMgY29udGFpbmVkIHdpdGhpbiB0aGUgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gIGRpcmVjdG9yeS5cblxuSSBuZWVkIHRvIGJlIGNlcnRhaW4gdGhlcmUgYXJlICpubyogb3RoZXIgbW9kaWZpZWQgZmlsZXMsIG91dHNpZGUgb2YgdGhlIHNlbGZ0ZXN0cyBkaXJlY3RvcnkuIEEgc2Vjb25kIGxvb2sgYXQgdGhlIGRpZmYgY29uZmlybXMgdGhlIGVhcmxpZXIgY2hlY2suIFRoZSBwYXRjaCBpcyBzb2xlbHkgZm9jdXNlZCBvbiBhZGRpbmcgb3IgY2hhbmdpbmcgdGhlIHNlbGZ0ZXN0cy4gVGhpcyBpcyBpbXBvcnRhbnQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBjaGFuZ2VzIHNob3VsZCBiZSBmdXp6ZWQuXG5cbk5vdywgbGV0J3MgY29uc2lkZXIgdGhlIGNvbnRleHQgZm9yIHRoaXMuICBUaGUgcHJvbXB0IGV4cGxpY2l0bHkgc3RhdGVzIHRoYXQgcGF0Y2hlcyBtb2RpZnlpbmcgZG9jdW1lbnRhdGlvbiwgS2NvbmZpZyBmaWxlcywgY29tbWVudHMsIGxvZ2dpbmcsIGNvbnN0YW50cywgdW5yZWFjaGFibGUgY29kZSwgdmVuZG9yLXNwZWNpZmljIGRyaXZlcnMgcmVxdWlyaW5nIHBoeXNpY2FsIGhhcmR3YXJlLCBvciBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIHNob3VsZG4ndCBiZSBjb25zaWRlcmVkIGZvciBmdXp6aW5nLiBDcnVjaWFsbHksIGl0IHNwZWNpZmljYWxseSBtZW50aW9ucyB0aGF0ICpzZWxmdGVzdHMqIGFyZSAqbm90KiBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbC4gU2VsZnRlc3RzIGFyZSB1c2Vyc3BhY2UgdGVzdHMsIGV2ZW4gaWYgdGhleSB0b3VjaCB0aGUgQlBGIHN1YnN5c3RlbSwgdGhhdCBkbyBub3QgY2hhbmdlIHRoZSBrZXJuZWwncyBhY3R1YWwgZXhlY3V0aW9uIGZsb3cgaW4gYSB3YXkgdGhhdCBmdXp6aW5nIGlzIGxpa2VseSB0byBmaW5kIGEgYnVnLiBTbywgbW9kaWZ5aW5nIHNlbGZ0ZXN0cyB3b24ndCBjaGFuZ2UgdGhlIGtlcm5lbCBpbWFnZS5cblxuRmluYWxseSwgSSBuZWVkIHRvIGV4cGxpY2l0bHkgdmVyaWZ5IHRoZSBmaWxlcyBpbiB0aGUgZGlmZi4gTGV0J3Mgc2VlLi4uIHRoZSBkaWZmIHN0YXJ0cyB3aXRoIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zbGVlcGFibGVfdHJhY2Vwb2ludHMuY2AsIGZvbGxvd2VkIGJ5IHRoZSBvdGhlciB0aHJlZSBmaWxlcy4gVGhpcyByZWluZm9yY2VzIHRoYXQgYWxsIGNoYW5nZXMgYXJlIHdpdGhpbiB0aGUgc2VsZnRlc3RzIGRpcmVjdG9yeS5cblxuVGhlcmVmb3JlLCBteSBjb25jbHVzaW9uIGlzIHRoYXQgdGhpcyBwYXRjaCBpcyBub3QgXCJXb3J0aEZ1enppbmdcIiBiZWNhdXNlIGl0IG9ubHkgY29udGFpbnMgc2VsZnRlc3QgbW9kaWZpY2F0aW9ucy4gSSB3aWxsIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGFuZCBwcm92aWRlIHRoZSByZWFzb25pbmc6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhbmQgbW9kaWZpZXMgQlBGIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi5cIlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODM5LCJPdXRwdXRUb2tlbnMiOjY3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzUxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTc6Mzg6MDkuNDIyMzY4OTgyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTYyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYW5kIG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLyBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYW5kIG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLyBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNzozODowOS40MjIzODc2NjJaIiwiU2VxIjo1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow5scqk[1] Phase: Running StartedAt: 2026-08-10 17:38:20 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5scqk[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-10 17:38:20 +0000 UTC FinishedAt: 2026-08-10 17:38:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}