Name: series-workflowr8rrq Phase: Failed StartedAt: 2026-09-03 19:31:30 +0000 UTC FinishedAt: 2026-09-03 19:33:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr8rrq[0] Phase: Succeeded StartedAt: 2026-09-03 19:31:30 +0000 UTC FinishedAt: 2026-09-03 19:33:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr8rrq[0].run-triage Phase: Succeeded StartedAt: 2026-09-03 19:31:30 +0000 UTC FinishedAt: 2026-09-03 19:33:15 +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+CgkJCTx0ZD4yMDI2LzA5LzAzIDE5OjMyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFNUTWljcm9lbGVjdHJvbmljcyAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIChzdG1tYWMpIGRyaXZlciB0byBoYW5kbGUgRVNUIChFbmhhbmNlbWVudHMgZm9yIFNjaGVkdWxlZCBUcmFmZmljIC8gVEFQUklPKSBzZXR1cCBhbmQgbGlmZWN5Y2xlLiBUaGlzIGRyaXZlciBjb250cm9scyBwaHlzaWNhbCBTb0MvUENJIEV0aGVybmV0IE1BQyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxOTozMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGM5ZjZmNzQwYTNmOTVkNWNhYzhkNmQ0NDkxNDI1NDFmZWYyOTUyMDNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAzIDE5OjMyOjM3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaFxuaW5kZXggMDRkYWZlYzAyMWI0Zi4uZTU1NzkxNjZkZjFhNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oXG5AQCAtNjIwLDcgJiM0Mzs2MjAsNyBAQCBzdHJ1Y3Qgc3RtbWFjX21tY19vcHMge1xuIFxuIHN0cnVjdCBzdG1tYWNfZXN0X29wcyB7XG4gXHRpbnQgKCpjb25maWd1cmUpKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IHN0bW1hY19lc3QgKmNmZyxcbi1cdFx0XHQgdW5zaWduZWQgaW50IHB0cF9yYXRlKTtcbiYjNDM7XHRcdFx0IHVuc2lnbmVkIGludCBwdHBfcmF0ZSwgYm9vbCBlbmFibGUpO1xuIFx0dm9pZCAoKmlycV9zdGF0dXMpKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHQgICBzdHJ1Y3Qgc3RtbWFjX2V4dHJhX3N0YXRzICp4LCB1MzIgdHhxY250KTtcbiB9O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmhcbmluZGV4IDc1ODJmY2E2Mzc0MTkuLmE4YzhiZTM0ZmY4MTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmhcbkBAIC0yOTgsNyAmIzQzOzI5OCw3IEBAIHN0cnVjdCBzdG1tYWNfcHJpdiB7XG4gXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQ7XG4gXHQvKiBQcm90ZWN0IGVzdCBwYXJhbWV0ZXJzICovXG4gXHRzdHJ1Y3QgbXV0ZXggZXN0X2xvY2s7XG4tXHRzdHJ1Y3Qgc3RtbWFjX2VzdCAqZXN0O1xuJiM0MztcdHN0cnVjdCBzdG1tYWNfZXN0IGVzdDtcbiBcdHN0cnVjdCBkbWFfZmVhdHVyZXMgZG1hX2NhcDtcbiBcdHN0cnVjdCBzdG1tYWNfY291bnRlcnMgbW1jO1xuIFx0aW50IGh3X2NhcF9zdXBwb3J0O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuY1xuaW5kZXggYWZjNTE2MDU5Yjg5Ny4uNDllZGZlYmJjMzllMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5jXG5AQCAtMjYsNyAmIzQzOzI2LDcgQEAgc3RhdGljIGludCBlc3Rfd3JpdGUodm9pZCBfX2lvbWVtICplc3RfYWRkciwgdTMyIHJlZywgdTMyIHZhbCwgYm9vbCBnY2wpXG4gfVxuIFxuIHN0YXRpYyBpbnQgZXN0X2NvbmZpZ3VyZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBzdG1tYWNfZXN0ICpjZmcsXG4tXHRcdFx0IHVuc2lnbmVkIGludCBwdHBfcmF0ZSlcbiYjNDM7XHRcdFx0IHVuc2lnbmVkIGludCBwdHBfcmF0ZSwgYm9vbCBlbmFibGUpXG4ge1xuIFx0dm9pZCBfX2lvbWVtICplc3RfYWRkciA9IHByaXYtXHUwMDNlZXN0YWRkcjtcbiBcdGludCBpLCByZXQgPSAwO1xuQEAgLTYyLDcgJiM0Mzs2Miw3IEBAIHN0YXRpYyBpbnQgZXN0X2NvbmZpZ3VyZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBzdG1tYWNfZXN0ICpjZmcsXG4gXHRcdGN0cmwgfD0gKChOU0VDX1BFUl9TRUMgLyBwdHBfcmF0ZSkgKiBFU1RfR01BQzVfUFRPVl9NVUwpIFx1MDAzY1x1MDAzY1xuIFx0XHRcdCBFU1RfR01BQzVfUFRPVl9TSElGVDtcbiBcdH1cbi1cdGlmIChjZmctXHUwMDNlZW5hYmxlKVxuJiM0MztcdGlmIChlbmFibGUpXG4gXHRcdGN0cmwgfD0gRVNUX0VFU1QgfCBFU1RfU1NXTCB8IEVTVF9ERkJTO1xuIFx0ZWxzZVxuIFx0XHRjdHJsIFx1MDAyNj0gfkVTVF9FRVNUO1xuQEAgLTcwLDcgJiM0Mzs3MCw3IEBAIHN0YXRpYyBpbnQgZXN0X2NvbmZpZ3VyZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBzdG1tYWNfZXN0ICpjZmcsXG4gXHR3cml0ZWwoY3RybCwgZXN0X2FkZHIgJiM0MzsgRVNUX0NPTlRST0wpO1xuIFxuIFx0LyogQ29uZmlndXJlIEVTVCBpbnRlcnJ1cHQgKi9cbi1cdGlmIChjZmctXHUwMDNlZW5hYmxlKVxuJiM0MztcdGlmIChlbmFibGUpXG4gXHRcdGN0cmwgPSBFU1RfSUVDR0NFIHwgRVNUX0lFSFMgfCBFU1RfSUVIRiB8IEVTVF9JRUJFIHwgRVNUX0lFQ0M7XG4gXHRlbHNlXG4gXHRcdGN0cmwgPSAwO1xuQEAgLTgwLDYgJiM0Mzs4MCwzNiBAQCBzdGF0aWMgaW50IGVzdF9jb25maWd1cmUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3Qgc3RtbWFjX2VzdCAqY2ZnLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztpbnQgX19zdG1tYWNfc2V0dXBfZXN0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCB0aW1lc3BlYzY0IGN1cnJlbnRfdGltZSwgdGltZTtcbiYjNDM7XHRrdGltZV90IGN1cnJlbnRfdGltZV9ucywgYmFzZXRpbWU7XG4mIzQzO1x0dTY0IGN5Y2xlX3RpbWU7XG4mIzQzO1x0aW50IGVycjtcbiYjNDM7XG4mIzQzO1x0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0cHJpdi1cdTAwM2VwdHBfY2xvY2tfb3BzLmdldHRpbWU2NChcdTAwMjZwcml2LVx1MDAzZXB0cF9jbG9ja19vcHMsIFx1MDAyNmN1cnJlbnRfdGltZSk7XG4mIzQzO1x0Y3VycmVudF90aW1lX25zID0gdGltZXNwZWM2NF90b19rdGltZShjdXJyZW50X3RpbWUpO1xuJiM0MztcbiYjNDM7XHR0aW1lLnR2X25zZWMgPSBwcml2LVx1MDAzZWVzdC5idHJfcmVzZXJ2ZVswXTtcbiYjNDM7XHR0aW1lLnR2X3NlYyA9IHByaXYtXHUwMDNlZXN0LmJ0cl9yZXNlcnZlWzFdO1xuJiM0MztcdGJhc2V0aW1lID0gdGltZXNwZWM2NF90b19rdGltZSh0aW1lKTtcbiYjNDM7XG4mIzQzO1x0Y3ljbGVfdGltZSA9ICh1NjQpcHJpdi1cdTAwM2Vlc3QuY3RyWzFdICogTlNFQ19QRVJfU0VDICYjNDM7IHByaXYtXHUwMDNlZXN0LmN0clswXTtcbiYjNDM7XG4mIzQzO1x0dGltZSA9IHN0bW1hY19jYWxjX3Rhc19iYXNldGltZShiYXNldGltZSwgY3VycmVudF90aW1lX25zLCBjeWNsZV90aW1lKTtcbiYjNDM7XHRwcml2LVx1MDAzZWVzdC5idHJbMF0gPSAodTMyKXRpbWUudHZfbnNlYztcbiYjNDM7XHRwcml2LVx1MDAzZWVzdC5idHJbMV0gPSAodTMyKXRpbWUudHZfc2VjO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBzdG1tYWNfZXN0X2NvbmZpZ3VyZShwcml2LCBwcml2LCBcdTAwMjZwcml2LVx1MDAzZWVzdCxcbiYjNDM7XHRcdFx0XHQgICBwcml2LVx1MDAzZXBsYXQtXHUwMDNlY2xrX3B0cF9yYXRlLCB0cnVlKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0bmV0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCYjMzQ7ZmFpbGVkIHRvIHJlLWNvbmZpZ3VyZSBFU1RcXG5cJiMzNDspO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gZXJyO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB2b2lkIGVzdF9pcnFfc3RhdHVzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHQgICBzdHJ1Y3Qgc3RtbWFjX2V4dHJhX3N0YXRzICp4LCB1MzIgdHhxY250KVxuIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmhcbmluZGV4IGY3MDIyMWM5Yzg0YWYuLmI0ZDFhMWYwNGYxMDggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuaFxuQEAgLTY1LDMgJiM0Mzs2NSwxNiBAQFxuICNkZWZpbmUgRVNUX0dDTF9EQVRBXHRcdFx0MHgwMDAwMDAzNFxuIFxuIGV4dGVybiBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2VzdF9vcHMgZHdtYWM1MTBfZXN0X29wcztcbiYjNDM7XG4mIzQzO2ludCBfX3N0bW1hY19zZXR1cF9lc3Qoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KTtcbiYjNDM7c3RhdGljIGlubGluZSBpbnQgc3RtbWFjX3NldHVwX2VzdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4mIzQzO3tcbiYjNDM7XHRpbnQgcmV0ID0gMDtcbiYjNDM7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbiYjNDM7XHRpZiAocHJpdi1cdTAwM2Vlc3QuZW5hYmxlKVxuJiM0MztcdFx0cmV0ID0gX19zdG1tYWNfc2V0dXBfZXN0KHByaXYpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiYjNDM7fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCBkNTc2MDU5YzA0ZGY5Li5jNGQzNTM5NDgzNDczIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuQEAgLTQ4LDYgJiM0Mzs0OCw3IEBAXG4gI2luY2x1ZGUgXCYjMzQ7c3RtbWFjX3B0cC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7c3RtbWFjX2ZwZS5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7c3RtbWFjLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7c3RtbWFjX2VzdC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7c3RtbWFjX3Bjcy5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7c3RtbWFjX3hkcC5oXCYjMzQ7XG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmVzZXQuaFx1MDAzZVxuQEAgLTkzNywxOCAmIzQzOzkzOCwyNyBAQCBzdGF0aWMgaW50IHN0bW1hY19pbml0X3RpbWVzdGFtcGluZyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIHZvaWQgc3RtbWFjX3NldHVwX3B0cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4mIzQzO3N0YXRpYyBpbnQgc3RtbWFjX3NldHVwX3B0cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4ge1xuIFx0aW50IHJldDtcbiBcbiBcdHJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShwcml2LVx1MDAzZXBsYXQtXHUwMDNlY2xrX3B0cF9yZWYpO1xuLVx0aWYgKHJldCBcdTAwM2MgMClcbiYjNDM7XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gXHRcdG5ldGRldl93YXJuKHByaXYtXHUwMDNlZGV2LFxuIFx0XHRcdCAgICBcJiMzNDtmYWlsZWQgdG8gZW5hYmxlIFBUUCByZWZlcmVuY2UgY2xvY2s6ICVwZVxcblwmIzM0OyxcbiBcdFx0XHQgICAgRVJSX1BUUihyZXQpKTtcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXQgPSBzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcocHJpdik7XG4mIzQzO1x0aWYgKHJldCkge1xuJiM0MztcdFx0Y2xrX2Rpc2FibGVfdW5wcmVwYXJlKHByaXYtXHUwMDNlcGxhdC1cdTAwM2VjbGtfcHRwX3JlZik7XG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcdH1cbiBcbi1cdGlmIChzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcocHJpdikgPT0gMClcbi1cdFx0c3RtbWFjX3B0cF9yZWdpc3Rlcihwcml2KTtcbiYjNDM7XHRzdG1tYWNfcHRwX3JlZ2lzdGVyKHByaXYpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIHZvaWQgc3RtbWFjX3JlbGVhc2VfcHRwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbkBAIC0yNzE0LDkgJiM0MzsyNzI0LDggQEAgc3RhdGljIGJvb2wgc3RtbWFjX3hkcF94bWl0X3pjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlLCB1MzIgYnVkZ2V0KVxuIFx0XHRpZiAoIXhza190eF9wZWVrX2Rlc2MocG9vbCwgXHUwMDI2eGRwX2Rlc2MpKVxuIFx0XHRcdGJyZWFrO1xuIFxuLVx0XHRpZiAocHJpdi1cdTAwM2Vlc3QgXHUwMDI2XHUwMDI2IHByaXYtXHUwMDNlZXN0LVx1MDAzZWVuYWJsZSBcdTAwMjZcdTAwMjZcbi1cdFx0ICAgIHByaXYtXHUwMDNlZXN0LVx1MDAzZW1heF9zZHVbcXVldWVdIFx1MDAyNlx1MDAyNlxuLVx0XHQgICAgeGRwX2Rlc2MubGVuIFx1MDAzZSBwcml2LVx1MDAzZWVzdC1cdTAwM2VtYXhfc2R1W3F1ZXVlXSkge1xuJiM0MztcdFx0aWYgKHByaXYtXHUwMDNlZXN0LmVuYWJsZSBcdTAwMjZcdTAwMjYgcHJpdi1cdTAwM2Vlc3QubWF4X3NkdVtxdWV1ZV0gXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgeGRwX2Rlc2MubGVuIFx1MDAzZSBwcml2LVx1MDAzZWVzdC5tYXhfc2R1W3F1ZXVlXSkge1xuIFx0XHRcdHByaXYtXHUwMDNleHN0YXRzLm1heF9zZHVfdHhxX2Ryb3BbcXVldWVdJiM0MzsmIzQzOztcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0fVxuQEAgLTQxNTMsMTAgJiM0Mzs0MTYyLDE5IEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0cmV0ID0gc3RtbWFjX2h3X3NldHVwKGRldik7XG4gXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gXHRcdG5ldGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwmIzM0OyVzOiBIdyBzZXR1cCBmYWlsZWRcXG5cJiMzNDssIF9fZnVuY19fKTtcbi1cdFx0Z290byBpbml0X2Vycm9yO1xuJiM0MztcdFx0cmV0dXJuIHJldDtcbiBcdH1cbiBcbi1cdHN0bW1hY19zZXR1cF9wdHAocHJpdik7XG4mIzQzO1x0cmV0ID0gc3RtbWFjX3NldHVwX3B0cChwcml2KTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0Z290byBwdHBfZXJyb3I7XG4mIzQzO1xuJiM0MztcdC8qIFRoZSBjb3JlIHNvZnQgcmVzZXQgaW4gc3RtbWFjX2h3X3NldHVwKCkgY2xlYXJzIHRoZSBNVExfRVNUXG4mIzQzO1x0ICogcmVnaXN0ZXJzLCBzbyByZS1hcHBseSB0aGUgdGFwcmlvIG9mZmxvYWQgYWZ0ZXIgUFRQIGlzIHVwLlxuJiM0MztcdCAqL1xuJiM0MztcdHJldCA9IHN0bW1hY19zZXR1cF9lc3QocHJpdik7XG4mIzQzO1x0aWYgKHJldCBcdTAwM2MgMClcbiYjNDM7XHRcdGdvdG8gZXN0X2Vycm9yO1xuIFxuIFx0c3RtbWFjX2luaXRfY29hbGVzY2UocHJpdik7XG4gXG5AQCAtNDE3OSw5ICYjNDM7NDE5NywxMSBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcbiBcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHByaXYtXHUwMDNlcGxhdC1cdTAwM2V0eF9xdWV1ZXNfdG9fdXNlOyBjaGFuJiM0MzsmIzQzOylcbiBcdFx0aHJ0aW1lcl9jYW5jZWwoXHUwMDI2cHJpdi1cdTAwM2VkbWFfY29uZi50eF9xdWV1ZVtjaGFuXS50eHRpbWVyKTtcbi1cbiYjNDM7ZXN0X2Vycm9yOlxuIFx0c3RtbWFjX3JlbGVhc2VfcHRwKHByaXYpO1xuLWluaXRfZXJyb3I6XG4mIzQzO3B0cF9lcnJvcjpcbiYjNDM7XHRzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpO1xuJiM0MztcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTQ3NzYsMTMgJiM0Mzs0Nzk2LDEyIEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBzdG1tYWNfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0aWYgKHNrYl9pc19nc28oc2tiKSlcbiBcdFx0cmV0dXJuIHN0bW1hY190c29feG1pdChza2IsIGRldik7XG4gXG4tXHRpZiAocHJpdi1cdTAwM2Vlc3QgXHUwMDI2XHUwMDI2IHByaXYtXHUwMDNlZXN0LVx1MDAzZWVuYWJsZSBcdTAwMjZcdTAwMjZcbi1cdCAgICBwcml2LVx1MDAzZWVzdC1cdTAwM2VtYXhfc2R1W3F1ZXVlXSkge1xuJiM0MztcdGlmIChwcml2LVx1MDAzZWVzdC5lbmFibGUgXHUwMDI2XHUwMDI2IHByaXYtXHUwMDNlZXN0Lm1heF9zZHVbcXVldWVdKSB7XG4gXHRcdHNkdV9sZW4gPSBza2ItXHUwMDNlbGVuO1xuIFx0XHQvKiBBZGQgVkxBTiB0YWcgbGVuZ3RoIGlmIFZMQU4gdGFnIGluc2VydGlvbiBvZmZsb2FkIGlzIHJlcXVlc3RlZCAqL1xuIFx0XHRpZiAocHJpdi1cdTAwM2VkbWFfY2FwLnZsaW5zIFx1MDAyNlx1MDAyNiBza2Jfdmxhbl90YWdfcHJlc2VudChza2IpKVxuIFx0XHRcdHNkdV9sZW4gJiM0Mzs9IFZMQU5fSExFTjtcbi1cdFx0aWYgKHNkdV9sZW4gXHUwMDNlIHByaXYtXHUwMDNlZXN0LVx1MDAzZW1heF9zZHVbcXVldWVdKSB7XG4mIzQzO1x0XHRpZiAoc2R1X2xlbiBcdTAwM2UgcHJpdi1cdTAwM2Vlc3QubWF4X3NkdVtxdWV1ZV0pIHtcbiBcdFx0XHRwcml2LVx1MDAzZXhzdGF0cy5tYXhfc2R1X3R4cV9kcm9wW3F1ZXVlXSYjNDM7JiM0Mzs7XG4gXHRcdFx0Z290byBtYXhfc2R1X2VycjtcbiBcdFx0fVxuQEAgLTUxODYsOSAmIzQzOzUyMDUsOCBAQCBzdGF0aWMgaW50IHN0bW1hY194ZHBfeG1pdF94ZHBmKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgaW50IHF1ZXVlLFxuIFx0aWYgKHN0bW1hY190eF9hdmFpbChwcml2LCBxdWV1ZSkgXHUwMDNjIFNUTU1BQ19UWF9USFJFU0gocHJpdikpXG4gXHRcdHJldHVybiBTVE1NQUNfWERQX0NPTlNVTUVEO1xuIFxuLVx0aWYgKHByaXYtXHUwMDNlZXN0IFx1MDAyNlx1MDAyNiBwcml2LVx1MDAzZWVzdC1cdTAwM2VlbmFibGUgXHUwMDI2XHUwMDI2XG4tXHQgICAgcHJpdi1cdTAwM2Vlc3QtXHUwMDNlbWF4X3NkdVtxdWV1ZV0gXHUwMDI2XHUwMDI2XG4tXHQgICAgeGRwZi1cdTAwM2VsZW4gXHUwMDNlIHByaXYtXHUwMDNlZXN0LVx1MDAzZW1heF9zZHVbcXVldWVdKSB7XG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlZXN0LmVuYWJsZSBcdTAwMjZcdTAwMjYgcHJpdi1cdTAwM2Vlc3QubWF4X3NkdVtxdWV1ZV0gXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIHhkcGYtXHUwMDNlbGVuIFx1MDAzZSBwcml2LVx1MDAzZWVzdC5tYXhfc2R1W3F1ZXVlXSkge1xuIFx0XHRwcml2LVx1MDAzZXhzdGF0cy5tYXhfc2R1X3R4cV9kcm9wW3F1ZXVlXSYjNDM7JiM0Mzs7XG4gXHRcdHJldHVybiBTVE1NQUNfWERQX0NPTlNVTUVEO1xuIFx0fVxuQEAgLTgwMTcsNiAmIzQzOzgwMzUsNyBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsXG4gXHRzdG1tYWNfbmFwaV9hZGQobmRldik7XG4gXG4gXHRtdXRleF9pbml0KFx1MDAyNnByaXYtXHUwMDNlbG9jayk7XG4mIzQzO1x0bXV0ZXhfaW5pdChcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbiBcbiBcdHN0bW1hY19mcGVfaW5pdChwcml2KTtcbiBcbkBAIC04MTQ4LDYgJiM0Mzs4MTY3LDcgQEAgdm9pZCBzdG1tYWNfZHZyX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRzdG1tYWNfbWRpb191bnJlZ2lzdGVyKG5kZXYpO1xuIFxuIFx0ZGVzdHJveV93b3JrcXVldWUocHJpdi1cdTAwM2V3cSk7XG4mIzQzO1x0bXV0ZXhfZGVzdHJveShcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbiBcdG11dGV4X2Rlc3Ryb3koXHUwMDI2cHJpdi1cdTAwM2Vsb2NrKTtcbiBcdGJpdG1hcF9mcmVlKHByaXYtXHUwMDNlYWZfeGRwX3pjX3Fwcyk7XG4gXG5AQCAtODMxOCwxMyAmIzQzOzgzMzgsMTYgQEAgaW50IHN0bW1hY19yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0cmV0ID0gc3RtbWFjX2h3X3NldHVwKG5kZXYpO1xuIFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRuZXRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcJiMzNDslczogSHcgc2V0dXAgZmFpbGVkXFxuXCYjMzQ7LCBfX2Z1bmNfXyk7XG4tXHRcdHN0bW1hY19sZWdhY3lfc2VyZGVzX3Bvd2VyX2Rvd24ocHJpdik7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZWxvY2spO1xuLVx0XHRydG5sX3VubG9jaygpO1xuLVx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdFx0Z290byBlcnJvcl91bmxvY2s7XG4gXHR9XG4gXG4tXHRzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcocHJpdik7XG4mIzQzO1x0cmV0ID0gc3RtbWFjX2luaXRfdGltZXN0YW1waW5nKHByaXYpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRnb3RvIGVycm9yX3N0b3BfZG1hO1xuJiM0MztcbiYjNDM7XHRyZXQgPSBzdG1tYWNfc2V0dXBfZXN0KHByaXYpO1xuJiM0MztcdGlmIChyZXQgXHUwMDNjIDApXG4mIzQzO1x0XHRnb3RvIGVycm9yX3N0b3BfZG1hO1xuIFxuIFx0c3RtbWFjX2luaXRfY29hbGVzY2UocHJpdik7XG4gXHRwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKHByaXYtXHUwMDNlcGh5bGluayk7XG5AQCAtODM0OCw2ICYjNDM7ODM3MSwxNSBAQCBpbnQgc3RtbWFjX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRuZXRpZl9kZXZpY2VfYXR0YWNoKG5kZXYpO1xuIFxuIFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztlcnJvcl9zdG9wX2RtYTpcbiYjNDM7XHRzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpO1xuJiM0MztlcnJvcl91bmxvY2s6XG4mIzQzO1x0c3RtbWFjX2xlZ2FjeV9zZXJkZXNfcG93ZXJfZG93bihwcml2KTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRydG5sX3VubG9jaygpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmV0O1xuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfcmVzdW1lKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcHRwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcHRwLmNcbmluZGV4IDk2MDI0OTk2MDAwNGMuLjhmM2E5MGRmMzE3OGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcHRwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wdHAuY1xuQEAgLTgsNiAmIzQzOzgsNyBAQFxuICAgQXV0aG9yOiBSYXlhZ29uZCBLb2thdGFudXIgXHUwMDNjcmF5YWdvbmRAdmF5YXZ5YWxhYnMuY29tXHUwMDNlXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbiAjaW5jbHVkZSBcJiMzNDtzdG1tYWMuaFwmIzM0O1xuJiM0MzsjaW5jbHVkZSBcJiMzNDtzdG1tYWNfZXN0LmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtzdG1tYWNfcHRwLmhcJiMzNDtcbiBcbiAjZGVmaW5lIFBUUF9TQUZFX1RJTUVfT0ZGU0VUX05TXHQ1MDAwMDBcbkBAIC01NSw3ICYjNDM7NTYsNiBAQCBzdGF0aWMgaW50IHN0bW1hY19hZGp1c3RfdGltZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgczY0IGRlbHRhKVxuIFx0dTMyIHF1b3RpZW50LCByZW1pbmRlcjtcbiBcdGludCBuZWdfYWRqID0gMDtcbiBcdGJvb2wgeG1hYywgZXN0X3JzdCA9IGZhbHNlO1xuLVx0aW50IHJldDtcbiBcbiBcdHhtYWMgPSBkd21hY19pc194bWFjKHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUpO1xuIFxuQEAgLTY5LDQ2ICYjNDM7NjksMjEgQEAgc3RhdGljIGludCBzdG1tYWNfYWRqdXN0X3RpbWUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIHM2NCBkZWx0YSlcbiBcdG5zZWMgPSByZW1pbmRlcjtcbiBcbiBcdC8qIElmIEVTVCBpcyBlbmFibGVkLCBkaXNhYmxlZCBpdCBiZWZvcmUgYWRqdXN0IHB0cCB0aW1lLiAqL1xuLVx0aWYgKHByaXYtXHUwMDNlZXN0IFx1MDAyNlx1MDAyNiBwcml2LVx1MDAzZWVzdC1cdTAwM2VlbmFibGUpIHtcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlZXN0X2xvY2spO1xuJiM0MztcdGlmIChwcml2LVx1MDAzZWVzdC5lbmFibGUpIHtcbiBcdFx0ZXN0X3JzdCA9IHRydWU7XG4tXHRcdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2Vlc3RfbG9jayk7XG4tXHRcdHByaXYtXHUwMDNlZXN0LVx1MDAzZWVuYWJsZSA9IGZhbHNlO1xuLVx0XHRzdG1tYWNfZXN0X2NvbmZpZ3VyZShwcml2LCBwcml2LCBwcml2LVx1MDAzZWVzdCxcbi1cdFx0XHRcdCAgICAgcHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNsa19wdHBfcmF0ZSk7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbiYjNDM7XHRcdHN0bW1hY19lc3RfY29uZmlndXJlKHByaXYsIHByaXYsIFx1MDAyNnByaXYtXHUwMDNlZXN0LFxuJiM0MztcdFx0XHRcdCAgICAgcHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNsa19wdHBfcmF0ZSwgZmFsc2UpO1xuIFx0fVxuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbiBcbiBcdHdyaXRlX2xvY2tfaXJxc2F2ZShcdTAwMjZwcml2LVx1MDAzZXB0cF9sb2NrLCBmbGFncyk7XG4gXHRzdG1tYWNfYWRqdXN0X3N5c3RpbWUocHJpdiwgcHJpdi1cdTAwM2VwdHBhZGRyLCBzZWMsIG5zZWMsIG5lZ19hZGosIHhtYWMpO1xuIFx0d3JpdGVfdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2cHJpdi1cdTAwM2VwdHBfbG9jaywgZmxhZ3MpO1xuIFxuIFx0LyogQ2FsY3VsYXRlIG5ldyBiYXNldGltZSBhbmQgcmUtY29uZmlndXJlZCBFU1QgYWZ0ZXIgUFRQIHRpbWUgYWRqdXN0LiAqL1xuLVx0aWYgKGVzdF9yc3QpIHtcbi1cdFx0c3RydWN0IHRpbWVzcGVjNjQgY3VycmVudF90aW1lLCB0aW1lO1xuLVx0XHRrdGltZV90IGN1cnJlbnRfdGltZV9ucywgYmFzZXRpbWU7XG4tXHRcdHU2NCBjeWNsZV90aW1lO1xuLVxuLVx0XHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlZXN0X2xvY2spO1xuLVx0XHRwcml2LVx1MDAzZXB0cF9jbG9ja19vcHMuZ2V0dGltZTY0KFx1MDAyNnByaXYtXHUwMDNlcHRwX2Nsb2NrX29wcywgXHUwMDI2Y3VycmVudF90aW1lKTtcbi1cdFx0Y3VycmVudF90aW1lX25zID0gdGltZXNwZWM2NF90b19rdGltZShjdXJyZW50X3RpbWUpO1xuLVx0XHR0aW1lLnR2X25zZWMgPSBwcml2LVx1MDAzZWVzdC1cdTAwM2VidHJfcmVzZXJ2ZVswXTtcbi1cdFx0dGltZS50dl9zZWMgPSBwcml2LVx1MDAzZWVzdC1cdTAwM2VidHJfcmVzZXJ2ZVsxXTtcbi1cdFx0YmFzZXRpbWUgPSB0aW1lc3BlYzY0X3RvX2t0aW1lKHRpbWUpO1xuLVx0XHRjeWNsZV90aW1lID0gKHU2NClwcml2LVx1MDAzZWVzdC1cdTAwM2VjdHJbMV0gKiBOU0VDX1BFUl9TRUMgJiM0Mztcbi1cdFx0XHQgICAgIHByaXYtXHUwMDNlZXN0LVx1MDAzZWN0clswXTtcbi1cdFx0dGltZSA9IHN0bW1hY19jYWxjX3Rhc19iYXNldGltZShiYXNldGltZSxcbi1cdFx0XHRcdFx0XHRjdXJyZW50X3RpbWVfbnMsXG4tXHRcdFx0XHRcdFx0Y3ljbGVfdGltZSk7XG4tXG4tXHRcdHByaXYtXHUwMDNlZXN0LVx1MDAzZWJ0clswXSA9ICh1MzIpdGltZS50dl9uc2VjO1xuLVx0XHRwcml2LVx1MDAzZWVzdC1cdTAwM2VidHJbMV0gPSAodTMyKXRpbWUudHZfc2VjO1xuLVx0XHRwcml2LVx1MDAzZWVzdC1cdTAwM2VlbmFibGUgPSB0cnVlO1xuLVx0XHRyZXQgPSBzdG1tYWNfZXN0X2NvbmZpZ3VyZShwcml2LCBwcml2LCBwcml2LVx1MDAzZWVzdCxcbi1cdFx0XHRcdFx0ICAgcHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNsa19wdHBfcmF0ZSk7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbi1cdFx0aWYgKHJldClcbi1cdFx0XHRuZXRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcJiMzNDtmYWlsZWQgdG8gY29uZmlndXJlIEVTVFxcblwmIzM0Oyk7XG4tXHR9XG4mIzQzO1x0aWYgKGVzdF9yc3QpXG4mIzQzO1x0XHRzdG1tYWNfc2V0dXBfZXN0KHByaXYpO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmNcbmluZGV4IDE0Y2FiZTc2ZTUzZWMuLjk3NDVjOWJhZTMzYzEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmNcbkBAIC0xMCw2ICYjNDM7MTAsNyBAQFxuICNpbmNsdWRlIFwmIzM0O2R3bWFjNC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7ZHdtYWM1LmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtzdG1tYWMuaFwmIzM0O1xuJiM0MzsjaW5jbHVkZSBcJiMzNDtzdG1tYWNfZXN0LmhcJiMzNDtcbiBcbiBzdGF0aWMgdm9pZCB0Y19maWxsX2FsbF9wYXNzX2VudHJ5KHN0cnVjdCBzdG1tYWNfdGNfZW50cnkgKmVudHJ5KVxuIHtcbkBAIC05NTksNyAmIzQzOzk2MCw3IEBAIHN0YXRpYyB2b2lkIHRjX3RhcHJpb19tYXBfbWF4c2R1X3R4cShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHRcdGNvdW50ID0gcW9wdC1cdTAwM2VtcXByaW8ucW9wdC5jb3VudFtpXTtcbiBcbiBcdFx0Zm9yIChqID0gb2Zmc2V0OyBqIFx1MDAzYyBvZmZzZXQgJiM0MzsgY291bnQ7IGomIzQzOyYjNDM7KVxuLVx0XHRcdHByaXYtXHUwMDNlZXN0LVx1MDAzZW1heF9zZHVbal0gPSBxb3B0LVx1MDAzZW1heF9zZHVbaV0gJiM0MzsgRVRIX0hMRU4gLSBFVEhfVExFTjtcbiYjNDM7XHRcdFx0cHJpdi1cdTAwM2Vlc3QubWF4X3NkdVtqXSA9IHFvcHQtXHUwMDNlbWF4X3NkdVtpXSAmIzQzOyBFVEhfSExFTiAtIEVUSF9UTEVOO1xuIFx0fVxuIH1cbiBcbkBAIC05NjgsMTAgJiM0Mzs5NjksMTAgQEAgc3RhdGljIGludCB0Y190YXByaW9fY29uZmlndXJlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiB7XG4gXHR1MzIgc2l6ZSwgd2lkID0gcHJpdi1cdTAwM2VkbWFfY2FwLmVzdHdpZCwgZGVwID0gcHJpdi1cdTAwM2VkbWFfY2FwLmVzdGRlcDtcbiBcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayA9IHFvcHQtXHUwMDNlbXFwcmlvLmV4dGFjaztcbi1cdHN0cnVjdCB0aW1lc3BlYzY0IHRpbWUsIGN1cnJlbnRfdGltZSwgcW9wdF90aW1lO1xuLVx0a3RpbWVfdCBjdXJyZW50X3RpbWVfbnM7XG4mIzQzO1x0dTY0IGN0ciA9IHFvcHQtXHUwMDNlY3ljbGVfdGltZTtcbiYjNDM7XHRzdHJ1Y3QgdGltZXNwZWM2NCB0aW1lO1xuJiM0MztcdHUzMiAqZ2NsID0gTlVMTDtcbiBcdGludCBpLCByZXQgPSAwO1xuLVx0dTY0IGN0cjtcbiBcbiBcdGlmIChxb3B0LVx1MDAzZWJhc2VfdGltZSBcdTAwM2MgMClcbiBcdFx0cmV0dXJuIC1FUkFOR0U7XG5AQCAtOTc5LDYgJiM0Mzs5ODAsOSBAQCBzdGF0aWMgaW50IHRjX3RhcHJpb19jb25maWd1cmUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0aWYgKCFwcml2LVx1MDAzZWRtYV9jYXAuZXN0c2VsKVxuIFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXG4mIzQzO1x0aWYgKGN0ciBcdTAwM2UgKHU2NClVMzJfTUFYICogTlNFQ19QRVJfU0VDKVxuJiM0MztcdFx0cmV0dXJuIC1FUkFOR0U7XG4mIzQzO1xuIFx0c3dpdGNoICh3aWQpIHtcbiBcdGNhc2UgMHgxOlxuIFx0XHR3aWQgPSAxNjtcbkBAIC0xMDEzLDQ0ICYjNDM7MTAxNyw0NSBAQCBzdGF0aWMgaW50IHRjX3RhcHJpb19jb25maWd1cmUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXHR9XG4gXG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbiYjNDM7XG4gXHRpZiAocW9wdC1cdTAwM2VjbWQgPT0gVEFQUklPX0NNRF9ERVNUUk9ZKVxuIFx0XHRnb3RvIGRpc2FibGU7XG4gXG4tXHRpZiAocW9wdC1cdTAwM2VudW1fZW50cmllcyBcdTAwM2UgZGVwKVxuLVx0XHRyZXR1cm4gLUVJTlZBTDtcbi1cdGlmICghcW9wdC1cdTAwM2VjeWNsZV90aW1lKVxuLVx0XHRyZXR1cm4gLUVSQU5HRTtcbi1cdGlmIChxb3B0LVx1MDAzZWN5Y2xlX3RpbWVfZXh0ZW5zaW9uIFx1MDAzZT0gQklUKHdpZCAmIzQzOyA3KSlcbi1cdFx0cmV0dXJuIC1FUkFOR0U7XG4tXG4tXHRpZiAoIXByaXYtXHUwMDNlZXN0KSB7XG4tXHRcdHByaXYtXHUwMDNlZXN0ID0gZGV2bV9remFsbG9jKHByaXYtXHUwMDNlZGV2aWNlLCBzaXplb2YoKnByaXYtXHUwMDNlZXN0KSxcbi1cdFx0XHRcdFx0IEdGUF9LRVJORUwpO1xuLVx0XHRpZiAoIXByaXYtXHUwMDNlZXN0KVxuLVx0XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcdGlmIChxb3B0LVx1MDAzZW51bV9lbnRyaWVzIFx1MDAzZSBkZXApIHtcbiYjNDM7XHRcdHJldCA9IC1FSU5WQUw7XG4mIzQzO1x0XHRnb3RvIHVubG9jaztcbiYjNDM7XHR9XG4gXG4tXHRcdG11dGV4X2luaXQoXHUwMDI2cHJpdi1cdTAwM2Vlc3RfbG9jayk7XG4tXHR9IGVsc2Uge1xuLVx0XHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlZXN0X2xvY2spO1xuLVx0XHRtZW1zZXQocHJpdi1cdTAwM2Vlc3QsIDAsIHNpemVvZigqcHJpdi1cdTAwM2Vlc3QpKTtcbi1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlZXN0X2xvY2spO1xuJiM0MztcdGlmICghcW9wdC1cdTAwM2VjeWNsZV90aW1lKSB7XG4mIzQzO1x0XHRyZXQgPSAtRVJBTkdFO1xuJiM0MztcdFx0Z290byB1bmxvY2s7XG4gXHR9XG4gXG4tXHRzaXplID0gcW9wdC1cdTAwM2VudW1fZW50cmllcztcbiYjNDM7XHRpZiAocW9wdC1cdTAwM2VjeWNsZV90aW1lX2V4dGVuc2lvbiBcdTAwM2U9IEJJVCh3aWQgJiM0MzsgNykpIHtcbiYjNDM7XHRcdHJldCA9IC1FUkFOR0U7XG4mIzQzO1x0XHRnb3RvIHVubG9jaztcbiYjNDM7XHR9XG4gXG4tXHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlZXN0X2xvY2spO1xuLVx0cHJpdi1cdTAwM2Vlc3QtXHUwMDNlZ2NsX3NpemUgPSBzaXplO1xuLVx0cHJpdi1cdTAwM2Vlc3QtXHUwMDNlZW5hYmxlID0gcW9wdC1cdTAwM2VjbWQgPT0gVEFQUklPX0NNRF9SRVBMQUNFO1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlZXN0X2xvY2spO1xuJiM0MztcdGdjbCA9IGt6YWxsb2Moc2l6ZW9mKCpnY2wpICogRVNUX0dDTCwgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0aWYgKCFnY2wpIHtcbiYjNDM7XHRcdHJldCA9IC1FTk9NRU07XG4mIzQzO1x0XHRnb3RvIHVubG9jaztcbiYjNDM7XHR9XG4gXG4mIzQzO1x0c2l6ZSA9IHFvcHQtXHUwMDNlbnVtX2VudHJpZXM7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBzaXplOyBpJiM0MzsmIzQzOykge1xuIFx0XHRzNjQgZGVsdGFfbnMgPSBxb3B0LVx1MDAzZWVudHJpZXNbaV0uaW50ZXJ2YWw7XG4gXHRcdHUzMiBnYXRlcyA9IHFvcHQtXHUwMDNlZW50cmllc1tpXS5nYXRlX21hc2s7XG4gXG4tXHRcdGlmIChkZWx0YV9ucyBcdTAwM2UgR0VOTUFTSyh3aWQgLSAxLCAwKSlcbi1cdFx0XHRyZXR1cm4gLUVSQU5HRTtcbi1cdFx0aWYgKGdhdGVzIFx1MDAzZSBHRU5NQVNLKDMxIC0gd2lkLCAwKSlcbi1cdFx0XHRyZXR1cm4gLUVSQU5HRTtcbiYjNDM7XHRcdGlmIChkZWx0YV9ucyBcdTAwM2UgR0VOTUFTSyh3aWQgLSAxLCAwKSkge1xuJiM0MztcdFx0XHRyZXQgPSAtRVJBTkdFO1xuJiM0MztcdFx0XHRnb3RvIGZyZWVfZ2NsO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0aWYgKGdhdGVzIFx1MDAzZSBHRU5NQVNLKDMxIC0gd2lkLCAwKSkge1xuJiM0MztcdFx0XHRyZXQgPSAtRVJBTkdFO1xuJiM0MztcdFx0XHRnb3RvIGZyZWVfZ2NsO1xuJiM0MztcdFx0fVxuIFxuIFx0XHRzd2l0Y2ggKHFvcHQtXHUwMDNlZW50cmllc1tpXS5jb21tYW5kKSB7XG4gXHRcdGNhc2UgVENfVEFQUklPX0NNRF9TRVRfR0FURVM6XG5AQCAtMTA2Miw2NSAmIzQzOzEwNjcsNTggQEAgc3RhdGljIGludCB0Y190YXByaW9fY29uZmlndXJlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdFx0XHRnYXRlcyBcdTAwMjY9IH5CSVQoMCk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGRlZmF1bHQ6XG4tXHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuJiM0MztcdFx0XHRyZXQgPSAtRU9QTk9UU1VQUDtcbiYjNDM7XHRcdFx0Z290byBmcmVlX2djbDtcbiBcdFx0fVxuIFxuLVx0XHRwcml2LVx1MDAzZWVzdC1cdTAwM2VnY2xbaV0gPSBkZWx0YV9ucyB8IChnYXRlcyBcdTAwM2NcdTAwM2Mgd2lkKTtcbiYjNDM7XHRcdGdjbFtpXSA9IGRlbHRhX25zIHwgKGdhdGVzIFx1MDAzY1x1MDAzYyB3aWQpO1xuIFx0fVxuIFxuLVx0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbi1cdC8qIEFkanVzdCBmb3IgcmVhbCBzeXN0ZW0gdGltZSAqL1xuLVx0cHJpdi1cdTAwM2VwdHBfY2xvY2tfb3BzLmdldHRpbWU2NChcdTAwMjZwcml2LVx1MDAzZXB0cF9jbG9ja19vcHMsIFx1MDAyNmN1cnJlbnRfdGltZSk7XG4tXHRjdXJyZW50X3RpbWVfbnMgPSB0aW1lc3BlYzY0X3RvX2t0aW1lKGN1cnJlbnRfdGltZSk7XG4tXHR0aW1lID0gc3RtbWFjX2NhbGNfdGFzX2Jhc2V0aW1lKHFvcHQtXHUwMDNlYmFzZV90aW1lLCBjdXJyZW50X3RpbWVfbnMsXG4tXHRcdFx0XHRcdHFvcHQtXHUwMDNlY3ljbGVfdGltZSk7XG4tXG4tXHRwcml2LVx1MDAzZWVzdC1cdTAwM2VidHJbMF0gPSAodTMyKXRpbWUudHZfbnNlYztcbi1cdHByaXYtXHUwMDNlZXN0LVx1MDAzZWJ0clsxXSA9ICh1MzIpdGltZS50dl9zZWM7XG4mIzQzO1x0bWVtc2V0KFx1MDAyNnByaXYtXHUwMDNlZXN0LCAwLCBzaXplb2YocHJpdi1cdTAwM2Vlc3QpKTtcbiYjNDM7XHRtZW1jcHkocHJpdi1cdTAwM2Vlc3QuZ2NsLCBnY2wsIHNpemVvZihwcml2LVx1MDAzZWVzdC5nY2wpKTtcbiYjNDM7XHRwcml2LVx1MDAzZWVzdC5nY2xfc2l6ZSA9IHNpemU7XG4gXG4tXHRxb3B0X3RpbWUgPSBrdGltZV90b190aW1lc3BlYzY0KHFvcHQtXHUwMDNlYmFzZV90aW1lKTtcbi1cdHByaXYtXHUwMDNlZXN0LVx1MDAzZWJ0cl9yZXNlcnZlWzBdID0gKHUzMilxb3B0X3RpbWUudHZfbnNlYztcbi1cdHByaXYtXHUwMDNlZXN0LVx1MDAzZWJ0cl9yZXNlcnZlWzFdID0gKHUzMilxb3B0X3RpbWUudHZfc2VjO1xuJiM0MztcdHRpbWUgPSBrdGltZV90b190aW1lc3BlYzY0KHFvcHQtXHUwMDNlYmFzZV90aW1lKTtcbiYjNDM7XHRwcml2LVx1MDAzZWVzdC5idHJfcmVzZXJ2ZVswXSA9ICh1MzIpdGltZS50dl9uc2VjO1xuJiM0MztcdHByaXYtXHUwMDNlZXN0LmJ0cl9yZXNlcnZlWzFdID0gKHUzMil0aW1lLnR2X3NlYztcbiBcbi1cdGN0ciA9IHFvcHQtXHUwMDNlY3ljbGVfdGltZTtcbi1cdHByaXYtXHUwMDNlZXN0LVx1MDAzZWN0clswXSA9IGRvX2RpdihjdHIsIE5TRUNfUEVSX1NFQyk7XG4tXHRwcml2LVx1MDAzZWVzdC1cdTAwM2VjdHJbMV0gPSAodTMyKWN0cjtcbi1cbi1cdHByaXYtXHUwMDNlZXN0LVx1MDAzZXRlciA9IHFvcHQtXHUwMDNlY3ljbGVfdGltZV9leHRlbnNpb247XG4mIzQzO1x0cHJpdi1cdTAwM2Vlc3QuY3RyWzBdID0gZG9fZGl2KGN0ciwgTlNFQ19QRVJfU0VDKTtcbiYjNDM7XHRwcml2LVx1MDAzZWVzdC5jdHJbMV0gPSAodTMyKWN0cjtcbiBcbiYjNDM7XHRwcml2LVx1MDAzZWVzdC50ZXIgPSBxb3B0LVx1MDAzZWN5Y2xlX3RpbWVfZXh0ZW5zaW9uO1xuIFx0dGNfdGFwcmlvX21hcF9tYXhzZHVfdHhxKHByaXYsIHFvcHQpO1xuIFxuLVx0cmV0ID0gc3RtbWFjX2VzdF9jb25maWd1cmUocHJpdiwgcHJpdiwgcHJpdi1cdTAwM2Vlc3QsXG4tXHRcdFx0XHQgICBwcml2LVx1MDAzZXBsYXQtXHUwMDNlY2xrX3B0cF9yYXRlKTtcbi1cdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbi1cdGlmIChyZXQpIHtcbi1cdFx0bmV0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCYjMzQ7ZmFpbGVkIHRvIGNvbmZpZ3VyZSBFU1RcXG5cJiMzNDspO1xuJiM0MztcdHJldCA9IF9fc3RtbWFjX3NldHVwX2VzdChwcml2KTtcbiYjNDM7XHRpZiAocmV0KVxuIFx0XHRnb3RvIGRpc2FibGU7XG4tXHR9XG4gXG4gXHRyZXQgPSBzdG1tYWNfZnBlX21hcF9wcmVlbXB0aW9uX2NsYXNzKHByaXYsIHByaXYtXHUwMDNlZGV2LCBleHRhY2ssXG4gXHRcdFx0XHRcdCAgICAgIHFvcHQtXHUwMDNlbXFwcmlvLnByZWVtcHRpYmxlX3Rjcyk7XG4gXHRpZiAocmV0KVxuIFx0XHRnb3RvIGRpc2FibGU7XG4gXG4mIzQzO1x0cHJpdi1cdTAwM2Vlc3QuZW5hYmxlID0gdHJ1ZTtcbiYjNDM7XHRrZnJlZShnY2wpO1xuJiM0MztcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2Vlc3RfbG9jayk7XG4mIzQzO1xuIFx0cmV0dXJuIDA7XG4gXG4gZGlzYWJsZTpcbi1cdGlmIChwcml2LVx1MDAzZWVzdCkge1xuLVx0XHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlZXN0X2xvY2spO1xuLVx0XHRwcml2LVx1MDAzZWVzdC1cdTAwM2VlbmFibGUgPSBmYWxzZTtcbi1cdFx0c3RtbWFjX2VzdF9jb25maWd1cmUocHJpdiwgcHJpdiwgcHJpdi1cdTAwM2Vlc3QsXG4tXHRcdFx0XHQgICAgIHByaXYtXHUwMDNlcGxhdC1cdTAwM2VjbGtfcHRwX3JhdGUpO1xuLVx0XHQvKiBSZXNldCB0YXByaW8gc3RhdHVzICovXG4tXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHByaXYtXHUwMDNlcGxhdC1cdTAwM2V0eF9xdWV1ZXNfdG9fdXNlOyBpJiM0MzsmIzQzOykge1xuLVx0XHRcdHByaXYtXHUwMDNleHN0YXRzLm1heF9zZHVfdHhxX2Ryb3BbaV0gPSAwO1xuLVx0XHRcdHByaXYtXHUwMDNleHN0YXRzLm10bF9lc3RfdHhxX2hsYmZbaV0gPSAwO1xuLVx0XHRcdHByaXYtXHUwMDNleHN0YXRzLm10bF9lc3RfdHhxX2hsYnNbaV0gPSAwO1xuLVx0XHR9XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbiYjNDM7XHRwcml2LVx1MDAzZWVzdC5lbmFibGUgPSBmYWxzZTtcbiYjNDM7XHRzdG1tYWNfZXN0X2NvbmZpZ3VyZShwcml2LCBwcml2LCBcdTAwMjZwcml2LVx1MDAzZWVzdCxcbiYjNDM7XHRcdFx0ICAgICBwcml2LVx1MDAzZXBsYXQtXHUwMDNlY2xrX3B0cF9yYXRlLCBmYWxzZSk7XG4mIzQzO1x0LyogUmVzZXQgdGFwcmlvIHN0YXR1cyAqL1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHByaXYtXHUwMDNlcGxhdC1cdTAwM2V0eF9xdWV1ZXNfdG9fdXNlOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0cHJpdi1cdTAwM2V4c3RhdHMubWF4X3NkdV90eHFfZHJvcFtpXSA9IDA7XG4mIzQzO1x0XHRwcml2LVx1MDAzZXhzdGF0cy5tdGxfZXN0X3R4cV9obGJmW2ldID0gMDtcbiYjNDM7XHRcdHByaXYtXHUwMDNleHN0YXRzLm10bF9lc3RfdHhxX2hsYnNbaV0gPSAwO1xuIFx0fVxuLVxuIFx0c3RtbWFjX2ZwZV9tYXBfcHJlZW1wdGlvbl9jbGFzcyhwcml2LCBwcml2LVx1MDAzZWRldiwgZXh0YWNrLCAwKTtcbiYjNDM7ZnJlZV9nY2w6XG4mIzQzO1x0a2ZyZWUoZ2NsKTtcbiYjNDM7dW5sb2NrOlxuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbiBcbiBcdHJldHVybiByZXQ7XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDE5OjMyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIgdG8gaGFuZGxlIEVTVCAoRW5oYW5jZW1lbnRzIGZvciBTY2hlZHVsZWQgVHJhZmZpYyAvIFRBUFJJTykgc2V0dXAgYW5kIGxpZmVjeWNsZS4gVGhpcyBkcml2ZXIgY29udHJvbHMgcGh5c2ljYWwgU29DL1BDSSBFdGhlcm5ldCBNQUMgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjOWY2Zjc0MGEzZjk1ZDVjYWM4ZDZkNDQ5MTQyNTQxZmVmMjk1MjAzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBTZXAgMyAxOTozMjozNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaAppbmRleCAwNGRhZmVjMDIxYjRmLi5lNTU3OTE2NmRmMWE1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oCkBAIC02MjAsNyAmIzQzOzYyMCw3IEBAIHN0cnVjdCBzdG1tYWNfbW1jX29wcyB7CiAKIHN0cnVjdCBzdG1tYWNfZXN0X29wcyB7CiAJaW50ICgqY29uZmlndXJlKShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBzdG1tYWNfZXN0ICpjZmcsCi0JCQkgdW5zaWduZWQgaW50IHB0cF9yYXRlKTsKJiM0MzsJCQkgdW5zaWduZWQgaW50IHB0cF9yYXRlLCBib29sIGVuYWJsZSk7CiAJdm9pZCAoKmlycV9zdGF0dXMpKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAkJCSAgIHN0cnVjdCBzdG1tYWNfZXh0cmFfc3RhdHMgKngsIHUzMiB0eHFjbnQpOwogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgKaW5kZXggNzU4MmZjYTYzNzQxOS4uYThjOGJlMzRmZjgxNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgKQEAgLTI5OCw3ICYjNDM7Mjk4LDcgQEAgc3RydWN0IHN0bW1hY19wcml2IHsKIAlzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQ7CiAJLyogUHJvdGVjdCBlc3QgcGFyYW1ldGVycyAqLwogCXN0cnVjdCBtdXRleCBlc3RfbG9jazsKLQlzdHJ1Y3Qgc3RtbWFjX2VzdCAqZXN0OwomIzQzOwlzdHJ1Y3Qgc3RtbWFjX2VzdCBlc3Q7CiAJc3RydWN0IGRtYV9mZWF0dXJlcyBkbWFfY2FwOwogCXN0cnVjdCBzdG1tYWNfY291bnRlcnMgbW1jOwogCWludCBod19jYXBfc3VwcG9ydDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuYwppbmRleCBhZmM1MTYwNTliODk3Li40OWVkZmViYmMzOWUwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5jCkBAIC0yNiw3ICYjNDM7MjYsNyBAQCBzdGF0aWMgaW50IGVzdF93cml0ZSh2b2lkIF9faW9tZW0gKmVzdF9hZGRyLCB1MzIgcmVnLCB1MzIgdmFsLCBib29sIGdjbCkKIH0KIAogc3RhdGljIGludCBlc3RfY29uZmlndXJlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IHN0bW1hY19lc3QgKmNmZywKLQkJCSB1bnNpZ25lZCBpbnQgcHRwX3JhdGUpCiYjNDM7CQkJIHVuc2lnbmVkIGludCBwdHBfcmF0ZSwgYm9vbCBlbmFibGUpCiB7CiAJdm9pZCBfX2lvbWVtICplc3RfYWRkciA9IHByaXYtJmd0O2VzdGFkZHI7CiAJaW50IGksIHJldCA9IDA7CkBAIC02Miw3ICYjNDM7NjIsNyBAQCBzdGF0aWMgaW50IGVzdF9jb25maWd1cmUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3Qgc3RtbWFjX2VzdCAqY2ZnLAogCQljdHJsIHw9ICgoTlNFQ19QRVJfU0VDIC8gcHRwX3JhdGUpICogRVNUX0dNQUM1X1BUT1ZfTVVMKSAmbHQ7Jmx0OwogCQkJIEVTVF9HTUFDNV9QVE9WX1NISUZUOwogCX0KLQlpZiAoY2ZnLSZndDtlbmFibGUpCiYjNDM7CWlmIChlbmFibGUpCiAJCWN0cmwgfD0gRVNUX0VFU1QgfCBFU1RfU1NXTCB8IEVTVF9ERkJTOwogCWVsc2UKIAkJY3RybCAmYW1wOz0gfkVTVF9FRVNUOwpAQCAtNzAsNyAmIzQzOzcwLDcgQEAgc3RhdGljIGludCBlc3RfY29uZmlndXJlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IHN0bW1hY19lc3QgKmNmZywKIAl3cml0ZWwoY3RybCwgZXN0X2FkZHIgJiM0MzsgRVNUX0NPTlRST0wpOwogCiAJLyogQ29uZmlndXJlIEVTVCBpbnRlcnJ1cHQgKi8KLQlpZiAoY2ZnLSZndDtlbmFibGUpCiYjNDM7CWlmIChlbmFibGUpCiAJCWN0cmwgPSBFU1RfSUVDR0NFIHwgRVNUX0lFSFMgfCBFU1RfSUVIRiB8IEVTVF9JRUJFIHwgRVNUX0lFQ0M7CiAJZWxzZQogCQljdHJsID0gMDsKQEAgLTgwLDYgJiM0Mzs4MCwzNiBAQCBzdGF0aWMgaW50IGVzdF9jb25maWd1cmUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3Qgc3RtbWFjX2VzdCAqY2ZnLAogCXJldHVybiAwOwogfQogCiYjNDM7aW50IF9fc3RtbWFjX3NldHVwX2VzdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgdGltZXNwZWM2NCBjdXJyZW50X3RpbWUsIHRpbWU7CiYjNDM7CWt0aW1lX3QgY3VycmVudF90aW1lX25zLCBiYXNldGltZTsKJiM0MzsJdTY0IGN5Y2xlX3RpbWU7CiYjNDM7CWludCBlcnI7CiYjNDM7CiYjNDM7CWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmFtcDtwcml2LSZndDtlc3RfbG9jayk7CiYjNDM7CiYjNDM7CXByaXYtJmd0O3B0cF9jbG9ja19vcHMuZ2V0dGltZTY0KCZhbXA7cHJpdi0mZ3Q7cHRwX2Nsb2NrX29wcywgJmFtcDtjdXJyZW50X3RpbWUpOwomIzQzOwljdXJyZW50X3RpbWVfbnMgPSB0aW1lc3BlYzY0X3RvX2t0aW1lKGN1cnJlbnRfdGltZSk7CiYjNDM7CiYjNDM7CXRpbWUudHZfbnNlYyA9IHByaXYtJmd0O2VzdC5idHJfcmVzZXJ2ZVswXTsKJiM0MzsJdGltZS50dl9zZWMgPSBwcml2LSZndDtlc3QuYnRyX3Jlc2VydmVbMV07CiYjNDM7CWJhc2V0aW1lID0gdGltZXNwZWM2NF90b19rdGltZSh0aW1lKTsKJiM0MzsKJiM0MzsJY3ljbGVfdGltZSA9ICh1NjQpcHJpdi0mZ3Q7ZXN0LmN0clsxXSAqIE5TRUNfUEVSX1NFQyAmIzQzOyBwcml2LSZndDtlc3QuY3RyWzBdOwomIzQzOwomIzQzOwl0aW1lID0gc3RtbWFjX2NhbGNfdGFzX2Jhc2V0aW1lKGJhc2V0aW1lLCBjdXJyZW50X3RpbWVfbnMsIGN5Y2xlX3RpbWUpOwomIzQzOwlwcml2LSZndDtlc3QuYnRyWzBdID0gKHUzMil0aW1lLnR2X25zZWM7CiYjNDM7CXByaXYtJmd0O2VzdC5idHJbMV0gPSAodTMyKXRpbWUudHZfc2VjOwomIzQzOwomIzQzOwllcnIgPSBzdG1tYWNfZXN0X2NvbmZpZ3VyZShwcml2LCBwcml2LCAmYW1wO3ByaXYtJmd0O2VzdCwKJiM0MzsJCQkJICAgcHJpdi0mZ3Q7cGxhdC0mZ3Q7Y2xrX3B0cF9yYXRlLCB0cnVlKTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCW5ldGRldl9lcnIocHJpdi0mZ3Q7ZGV2LCAmIzM0O2ZhaWxlZCB0byByZS1jb25maWd1cmUgRVNUXG4mIzM0Oyk7CiYjNDM7CiYjNDM7CXJldHVybiBlcnI7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgZXN0X2lycV9zdGF0dXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQkJICAgc3RydWN0IHN0bW1hY19leHRyYV9zdGF0cyAqeCwgdTMyIHR4cWNudCkKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuaAppbmRleCBmNzAyMjFjOWM4NGFmLi5iNGQxYTFmMDRmMTA4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5oCkBAIC02NSwzICYjNDM7NjUsMTYgQEAKICNkZWZpbmUgRVNUX0dDTF9EQVRBCQkJMHgwMDAwMDAzNAogCiBleHRlcm4gY29uc3Qgc3RydWN0IHN0bW1hY19lc3Rfb3BzIGR3bWFjNTEwX2VzdF9vcHM7CiYjNDM7CiYjNDM7aW50IF9fc3RtbWFjX3NldHVwX2VzdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpOwomIzQzO3N0YXRpYyBpbmxpbmUgaW50IHN0bW1hY19zZXR1cF9lc3Qoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQomIzQzO3sKJiM0MzsJaW50IHJldCA9IDA7CiYjNDM7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtwcml2LSZndDtlc3RfbG9jayk7CiYjNDM7CWlmIChwcml2LSZndDtlc3QuZW5hYmxlKQomIzQzOwkJcmV0ID0gX19zdG1tYWNfc2V0dXBfZXN0KHByaXYpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtwcml2LSZndDtlc3RfbG9jayk7CiYjNDM7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKaW5kZXggZDU3NjA1OWMwNGRmOS4uYzRkMzUzOTQ4MzQ3MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCkBAIC00OCw2ICYjNDM7NDgsNyBAQAogI2luY2x1ZGUgJiMzNDtzdG1tYWNfcHRwLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtzdG1tYWNfZnBlLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtzdG1tYWMuaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDtzdG1tYWNfZXN0LmgmIzM0OwogI2luY2x1ZGUgJiMzNDtzdG1tYWNfcGNzLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtzdG1tYWNfeGRwLmgmIzM0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3Jlc2V0LmgmZ3Q7CkBAIC05MzcsMTggJiM0Mzs5MzgsMjcgQEAgc3RhdGljIGludCBzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBzdG1tYWNfc2V0dXBfcHRwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKJiM0MztzdGF0aWMgaW50IHN0bW1hY19zZXR1cF9wdHAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQogewogCWludCByZXQ7CiAKIAlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUocHJpdi0mZ3Q7cGxhdC0mZ3Q7Y2xrX3B0cF9yZWYpOwotCWlmIChyZXQgJmx0OyAwKQomIzQzOwlpZiAocmV0ICZsdDsgMCkgewogCQluZXRkZXZfd2Fybihwcml2LSZndDtkZXYsCiAJCQkgICAgJiMzNDtmYWlsZWQgdG8gZW5hYmxlIFBUUCByZWZlcmVuY2UgY2xvY2s6ICVwZVxuJiMzNDssCiAJCQkgICAgRVJSX1BUUihyZXQpKTsKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0ID0gc3RtbWFjX2luaXRfdGltZXN0YW1waW5nKHByaXYpOwomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQljbGtfZGlzYWJsZV91bnByZXBhcmUocHJpdi0mZ3Q7cGxhdC0mZ3Q7Y2xrX3B0cF9yZWYpOwomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsJfQogCi0JaWYgKHN0bW1hY19pbml0X3RpbWVzdGFtcGluZyhwcml2KSA9PSAwKQotCQlzdG1tYWNfcHRwX3JlZ2lzdGVyKHByaXYpOwomIzQzOwlzdG1tYWNfcHRwX3JlZ2lzdGVyKHByaXYpOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQgc3RtbWFjX3JlbGVhc2VfcHRwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKQEAgLTI3MTQsOSAmIzQzOzI3MjQsOCBAQCBzdGF0aWMgYm9vbCBzdG1tYWNfeGRwX3htaXRfemMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUsIHUzMiBidWRnZXQpCiAJCWlmICgheHNrX3R4X3BlZWtfZGVzYyhwb29sLCAmYW1wO3hkcF9kZXNjKSkKIAkJCWJyZWFrOwogCi0JCWlmIChwcml2LSZndDtlc3QgJmFtcDsmYW1wOyBwcml2LSZndDtlc3QtJmd0O2VuYWJsZSAmYW1wOyZhbXA7Ci0JCSAgICBwcml2LSZndDtlc3QtJmd0O21heF9zZHVbcXVldWVdICZhbXA7JmFtcDsKLQkJICAgIHhkcF9kZXNjLmxlbiAmZ3Q7IHByaXYtJmd0O2VzdC0mZ3Q7bWF4X3NkdVtxdWV1ZV0pIHsKJiM0MzsJCWlmIChwcml2LSZndDtlc3QuZW5hYmxlICZhbXA7JmFtcDsgcHJpdi0mZ3Q7ZXN0Lm1heF9zZHVbcXVldWVdICZhbXA7JmFtcDsKJiM0MzsJCSAgICB4ZHBfZGVzYy5sZW4gJmd0OyBwcml2LSZndDtlc3QubWF4X3NkdVtxdWV1ZV0pIHsKIAkJCXByaXYtJmd0O3hzdGF0cy5tYXhfc2R1X3R4cV9kcm9wW3F1ZXVlXSYjNDM7JiM0Mzs7CiAJCQljb250aW51ZTsKIAkJfQpAQCAtNDE1MywxMCAmIzQzOzQxNjIsMTkgQEAgc3RhdGljIGludCBfX3N0bW1hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJcmV0ID0gc3RtbWFjX2h3X3NldHVwKGRldik7CiAJaWYgKHJldCAmbHQ7IDApIHsKIAkJbmV0ZGV2X2Vycihwcml2LSZndDtkZXYsICYjMzQ7JXM6IEh3IHNldHVwIGZhaWxlZFxuJiMzNDssIF9fZnVuY19fKTsKLQkJZ290byBpbml0X2Vycm9yOwomIzQzOwkJcmV0dXJuIHJldDsKIAl9CiAKLQlzdG1tYWNfc2V0dXBfcHRwKHByaXYpOwomIzQzOwlyZXQgPSBzdG1tYWNfc2V0dXBfcHRwKHByaXYpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJZ290byBwdHBfZXJyb3I7CiYjNDM7CiYjNDM7CS8qIFRoZSBjb3JlIHNvZnQgcmVzZXQgaW4gc3RtbWFjX2h3X3NldHVwKCkgY2xlYXJzIHRoZSBNVExfRVNUCiYjNDM7CSAqIHJlZ2lzdGVycywgc28gcmUtYXBwbHkgdGhlIHRhcHJpbyBvZmZsb2FkIGFmdGVyIFBUUCBpcyB1cC4KJiM0MzsJICovCiYjNDM7CXJldCA9IHN0bW1hY19zZXR1cF9lc3QocHJpdik7CiYjNDM7CWlmIChyZXQgJmx0OyAwKQomIzQzOwkJZ290byBlc3RfZXJyb3I7CiAKIAlzdG1tYWNfaW5pdF9jb2FsZXNjZShwcml2KTsKIApAQCAtNDE3OSw5ICYjNDM7NDE5NywxMSBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAogCWZvciAoY2hhbiA9IDA7IGNoYW4gJmx0OyBwcml2LSZndDtwbGF0LSZndDt0eF9xdWV1ZXNfdG9fdXNlOyBjaGFuJiM0MzsmIzQzOykKIAkJaHJ0aW1lcl9jYW5jZWwoJmFtcDtwcml2LSZndDtkbWFfY29uZi50eF9xdWV1ZVtjaGFuXS50eHRpbWVyKTsKLQomIzQzO2VzdF9lcnJvcjoKIAlzdG1tYWNfcmVsZWFzZV9wdHAocHJpdik7Ci1pbml0X2Vycm9yOgomIzQzO3B0cF9lcnJvcjoKJiM0MzsJc3RtbWFjX3N0b3BfYWxsX2RtYShwcml2KTsKJiM0MzsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC00Nzc2LDEzICYjNDM7NDc5NiwxMiBAQCBzdGF0aWMgbmV0ZGV2X3R4X3Qgc3RtbWFjX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAlpZiAoc2tiX2lzX2dzbyhza2IpKQogCQlyZXR1cm4gc3RtbWFjX3Rzb194bWl0KHNrYiwgZGV2KTsKIAotCWlmIChwcml2LSZndDtlc3QgJmFtcDsmYW1wOyBwcml2LSZndDtlc3QtJmd0O2VuYWJsZSAmYW1wOyZhbXA7Ci0JICAgIHByaXYtJmd0O2VzdC0mZ3Q7bWF4X3NkdVtxdWV1ZV0pIHsKJiM0MzsJaWYgKHByaXYtJmd0O2VzdC5lbmFibGUgJmFtcDsmYW1wOyBwcml2LSZndDtlc3QubWF4X3NkdVtxdWV1ZV0pIHsKIAkJc2R1X2xlbiA9IHNrYi0mZ3Q7bGVuOwogCQkvKiBBZGQgVkxBTiB0YWcgbGVuZ3RoIGlmIFZMQU4gdGFnIGluc2VydGlvbiBvZmZsb2FkIGlzIHJlcXVlc3RlZCAqLwogCQlpZiAocHJpdi0mZ3Q7ZG1hX2NhcC52bGlucyAmYW1wOyZhbXA7IHNrYl92bGFuX3RhZ19wcmVzZW50KHNrYikpCiAJCQlzZHVfbGVuICYjNDM7PSBWTEFOX0hMRU47Ci0JCWlmIChzZHVfbGVuICZndDsgcHJpdi0mZ3Q7ZXN0LSZndDttYXhfc2R1W3F1ZXVlXSkgewomIzQzOwkJaWYgKHNkdV9sZW4gJmd0OyBwcml2LSZndDtlc3QubWF4X3NkdVtxdWV1ZV0pIHsKIAkJCXByaXYtJmd0O3hzdGF0cy5tYXhfc2R1X3R4cV9kcm9wW3F1ZXVlXSYjNDM7JiM0Mzs7CiAJCQlnb3RvIG1heF9zZHVfZXJyOwogCQl9CkBAIC01MTg2LDkgJiM0Mzs1MjA1LDggQEAgc3RhdGljIGludCBzdG1tYWNfeGRwX3htaXRfeGRwZihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIGludCBxdWV1ZSwKIAlpZiAoc3RtbWFjX3R4X2F2YWlsKHByaXYsIHF1ZXVlKSAmbHQ7IFNUTU1BQ19UWF9USFJFU0gocHJpdikpCiAJCXJldHVybiBTVE1NQUNfWERQX0NPTlNVTUVEOwogCi0JaWYgKHByaXYtJmd0O2VzdCAmYW1wOyZhbXA7IHByaXYtJmd0O2VzdC0mZ3Q7ZW5hYmxlICZhbXA7JmFtcDsKLQkgICAgcHJpdi0mZ3Q7ZXN0LSZndDttYXhfc2R1W3F1ZXVlXSAmYW1wOyZhbXA7Ci0JICAgIHhkcGYtJmd0O2xlbiAmZ3Q7IHByaXYtJmd0O2VzdC0mZ3Q7bWF4X3NkdVtxdWV1ZV0pIHsKJiM0MzsJaWYgKHByaXYtJmd0O2VzdC5lbmFibGUgJmFtcDsmYW1wOyBwcml2LSZndDtlc3QubWF4X3NkdVtxdWV1ZV0gJmFtcDsmYW1wOwomIzQzOwkgICAgeGRwZi0mZ3Q7bGVuICZndDsgcHJpdi0mZ3Q7ZXN0Lm1heF9zZHVbcXVldWVdKSB7CiAJCXByaXYtJmd0O3hzdGF0cy5tYXhfc2R1X3R4cV9kcm9wW3F1ZXVlXSYjNDM7JiM0Mzs7CiAJCXJldHVybiBTVE1NQUNfWERQX0NPTlNVTUVEOwogCX0KQEAgLTgwMTcsNiAmIzQzOzgwMzUsNyBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsCiAJc3RtbWFjX25hcGlfYWRkKG5kZXYpOwogCiAJbXV0ZXhfaW5pdCgmYW1wO3ByaXYtJmd0O2xvY2spOwomIzQzOwltdXRleF9pbml0KCZhbXA7cHJpdi0mZ3Q7ZXN0X2xvY2spOwogCiAJc3RtbWFjX2ZwZV9pbml0KHByaXYpOwogCkBAIC04MTQ4LDYgJiM0Mzs4MTY3LDcgQEAgdm9pZCBzdG1tYWNfZHZyX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJc3RtbWFjX21kaW9fdW5yZWdpc3RlcihuZGV2KTsKIAogCWRlc3Ryb3lfd29ya3F1ZXVlKHByaXYtJmd0O3dxKTsKJiM0MzsJbXV0ZXhfZGVzdHJveSgmYW1wO3ByaXYtJmd0O2VzdF9sb2NrKTsKIAltdXRleF9kZXN0cm95KCZhbXA7cHJpdi0mZ3Q7bG9jayk7CiAJYml0bWFwX2ZyZWUocHJpdi0mZ3Q7YWZfeGRwX3pjX3Fwcyk7CiAKQEAgLTgzMTgsMTMgJiM0Mzs4MzM4LDE2IEBAIGludCBzdG1tYWNfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXQgPSBzdG1tYWNfaHdfc2V0dXAobmRldik7CiAJaWYgKHJldCAmbHQ7IDApIHsKIAkJbmV0ZGV2X2Vycihwcml2LSZndDtkZXYsICYjMzQ7JXM6IEh3IHNldHVwIGZhaWxlZFxuJiMzNDssIF9fZnVuY19fKTsKLQkJc3RtbWFjX2xlZ2FjeV9zZXJkZXNfcG93ZXJfZG93bihwcml2KTsKLQkJbXV0ZXhfdW5sb2NrKCZhbXA7cHJpdi0mZ3Q7bG9jayk7Ci0JCXJ0bmxfdW5sb2NrKCk7Ci0JCXJldHVybiByZXQ7CiYjNDM7CQlnb3RvIGVycm9yX3VubG9jazsKIAl9CiAKLQlzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcocHJpdik7CiYjNDM7CXJldCA9IHN0bW1hY19pbml0X3RpbWVzdGFtcGluZyhwcml2KTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCWdvdG8gZXJyb3Jfc3RvcF9kbWE7CiYjNDM7CiYjNDM7CXJldCA9IHN0bW1hY19zZXR1cF9lc3QocHJpdik7CiYjNDM7CWlmIChyZXQgJmx0OyAwKQomIzQzOwkJZ290byBlcnJvcl9zdG9wX2RtYTsKIAogCXN0bW1hY19pbml0X2NvYWxlc2NlKHByaXYpOwogCXBoeWxpbmtfcnhfY2xrX3N0b3BfYmxvY2socHJpdi0mZ3Q7cGh5bGluayk7CkBAIC04MzQ4LDYgJiM0Mzs4MzcxLDE1IEBAIGludCBzdG1tYWNfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKIAluZXRpZl9kZXZpY2VfYXR0YWNoKG5kZXYpOwogCiAJcmV0dXJuIDA7CiYjNDM7CiYjNDM7ZXJyb3Jfc3RvcF9kbWE6CiYjNDM7CXN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7CiYjNDM7ZXJyb3JfdW5sb2NrOgomIzQzOwlzdG1tYWNfbGVnYWN5X3NlcmRlc19wb3dlcl9kb3duKHByaXYpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtwcml2LSZndDtsb2NrKTsKJiM0MzsJcnRubF91bmxvY2soKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19yZXN1bWUpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcHRwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcHRwLmMKaW5kZXggOTYwMjQ5OTYwMDA0Yy4uOGYzYTkwZGYzMTc4YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3B0cC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wdHAuYwpAQCAtOCw2ICYjNDM7OCw3IEBACiAgIEF1dGhvcjogUmF5YWdvbmQgS29rYXRhbnVyICZsdDtyYXlhZ29uZEB2YXlhdnlhbGFicy5jb20mZ3Q7CiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogI2luY2x1ZGUgJiMzNDtzdG1tYWMuaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDtzdG1tYWNfZXN0LmgmIzM0OwogI2luY2x1ZGUgJiMzNDtzdG1tYWNfcHRwLmgmIzM0OwogCiAjZGVmaW5lIFBUUF9TQUZFX1RJTUVfT0ZGU0VUX05TCTUwMDAwMApAQCAtNTUsNyAmIzQzOzU2LDYgQEAgc3RhdGljIGludCBzdG1tYWNfYWRqdXN0X3RpbWUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIHM2NCBkZWx0YSkKIAl1MzIgcXVvdGllbnQsIHJlbWluZGVyOwogCWludCBuZWdfYWRqID0gMDsKIAlib29sIHhtYWMsIGVzdF9yc3QgPSBmYWxzZTsKLQlpbnQgcmV0OwogCiAJeG1hYyA9IGR3bWFjX2lzX3htYWMocHJpdi0mZ3Q7cGxhdC0mZ3Q7Y29yZV90eXBlKTsKIApAQCAtNjksNDYgJiM0Mzs2OSwyMSBAQCBzdGF0aWMgaW50IHN0bW1hY19hZGp1c3RfdGltZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgczY0IGRlbHRhKQogCW5zZWMgPSByZW1pbmRlcjsKIAogCS8qIElmIEVTVCBpcyBlbmFibGVkLCBkaXNhYmxlZCBpdCBiZWZvcmUgYWRqdXN0IHB0cCB0aW1lLiAqLwotCWlmIChwcml2LSZndDtlc3QgJmFtcDsmYW1wOyBwcml2LSZndDtlc3QtJmd0O2VuYWJsZSkgewomIzQzOwltdXRleF9sb2NrKCZhbXA7cHJpdi0mZ3Q7ZXN0X2xvY2spOwomIzQzOwlpZiAocHJpdi0mZ3Q7ZXN0LmVuYWJsZSkgewogCQllc3RfcnN0ID0gdHJ1ZTsKLQkJbXV0ZXhfbG9jaygmYW1wO3ByaXYtJmd0O2VzdF9sb2NrKTsKLQkJcHJpdi0mZ3Q7ZXN0LSZndDtlbmFibGUgPSBmYWxzZTsKLQkJc3RtbWFjX2VzdF9jb25maWd1cmUocHJpdiwgcHJpdiwgcHJpdi0mZ3Q7ZXN0LAotCQkJCSAgICAgcHJpdi0mZ3Q7cGxhdC0mZ3Q7Y2xrX3B0cF9yYXRlKTsKLQkJbXV0ZXhfdW5sb2NrKCZhbXA7cHJpdi0mZ3Q7ZXN0X2xvY2spOwomIzQzOwkJc3RtbWFjX2VzdF9jb25maWd1cmUocHJpdiwgcHJpdiwgJmFtcDtwcml2LSZndDtlc3QsCiYjNDM7CQkJCSAgICAgcHJpdi0mZ3Q7cGxhdC0mZ3Q7Y2xrX3B0cF9yYXRlLCBmYWxzZSk7CiAJfQomIzQzOwltdXRleF91bmxvY2soJmFtcDtwcml2LSZndDtlc3RfbG9jayk7CiAKIAl3cml0ZV9sb2NrX2lycXNhdmUoJmFtcDtwcml2LSZndDtwdHBfbG9jaywgZmxhZ3MpOwogCXN0bW1hY19hZGp1c3Rfc3lzdGltZShwcml2LCBwcml2LSZndDtwdHBhZGRyLCBzZWMsIG5zZWMsIG5lZ19hZGosIHhtYWMpOwogCXdyaXRlX3VubG9ja19pcnFyZXN0b3JlKCZhbXA7cHJpdi0mZ3Q7cHRwX2xvY2ssIGZsYWdzKTsKIAogCS8qIENhbGN1bGF0ZSBuZXcgYmFzZXRpbWUgYW5kIHJlLWNvbmZpZ3VyZWQgRVNUIGFmdGVyIFBUUCB0aW1lIGFkanVzdC4gKi8KLQlpZiAoZXN0X3JzdCkgewotCQlzdHJ1Y3QgdGltZXNwZWM2NCBjdXJyZW50X3RpbWUsIHRpbWU7Ci0JCWt0aW1lX3QgY3VycmVudF90aW1lX25zLCBiYXNldGltZTsKLQkJdTY0IGN5Y2xlX3RpbWU7Ci0KLQkJbXV0ZXhfbG9jaygmYW1wO3ByaXYtJmd0O2VzdF9sb2NrKTsKLQkJcHJpdi0mZ3Q7cHRwX2Nsb2NrX29wcy5nZXR0aW1lNjQoJmFtcDtwcml2LSZndDtwdHBfY2xvY2tfb3BzLCAmYW1wO2N1cnJlbnRfdGltZSk7Ci0JCWN1cnJlbnRfdGltZV9ucyA9IHRpbWVzcGVjNjRfdG9fa3RpbWUoY3VycmVudF90aW1lKTsKLQkJdGltZS50dl9uc2VjID0gcHJpdi0mZ3Q7ZXN0LSZndDtidHJfcmVzZXJ2ZVswXTsKLQkJdGltZS50dl9zZWMgPSBwcml2LSZndDtlc3QtJmd0O2J0cl9yZXNlcnZlWzFdOwotCQliYXNldGltZSA9IHRpbWVzcGVjNjRfdG9fa3RpbWUodGltZSk7Ci0JCWN5Y2xlX3RpbWUgPSAodTY0KXByaXYtJmd0O2VzdC0mZ3Q7Y3RyWzFdICogTlNFQ19QRVJfU0VDICYjNDM7Ci0JCQkgICAgIHByaXYtJmd0O2VzdC0mZ3Q7Y3RyWzBdOwotCQl0aW1lID0gc3RtbWFjX2NhbGNfdGFzX2Jhc2V0aW1lKGJhc2V0aW1lLAotCQkJCQkJY3VycmVudF90aW1lX25zLAotCQkJCQkJY3ljbGVfdGltZSk7Ci0KLQkJcHJpdi0mZ3Q7ZXN0LSZndDtidHJbMF0gPSAodTMyKXRpbWUudHZfbnNlYzsKLQkJcHJpdi0mZ3Q7ZXN0LSZndDtidHJbMV0gPSAodTMyKXRpbWUudHZfc2VjOwotCQlwcml2LSZndDtlc3QtJmd0O2VuYWJsZSA9IHRydWU7Ci0JCXJldCA9IHN0bW1hY19lc3RfY29uZmlndXJlKHByaXYsIHByaXYsIHByaXYtJmd0O2VzdCwKLQkJCQkJICAgcHJpdi0mZ3Q7cGxhdC0mZ3Q7Y2xrX3B0cF9yYXRlKTsKLQkJbXV0ZXhfdW5sb2NrKCZhbXA7cHJpdi0mZ3Q7ZXN0X2xvY2spOwotCQlpZiAocmV0KQotCQkJbmV0ZGV2X2Vycihwcml2LSZndDtkZXYsICYjMzQ7ZmFpbGVkIHRvIGNvbmZpZ3VyZSBFU1RcbiYjMzQ7KTsKLQl9CiYjNDM7CWlmIChlc3RfcnN0KQomIzQzOwkJc3RtbWFjX3NldHVwX2VzdChwcml2KTsKIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYwppbmRleCAxNGNhYmU3NmU1M2VjLi45NzQ1YzliYWUzM2MxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYwpAQCAtMTAsNiAmIzQzOzEwLDcgQEAKICNpbmNsdWRlICYjMzQ7ZHdtYWM0LmgmIzM0OwogI2luY2x1ZGUgJiMzNDtkd21hYzUuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3N0bW1hYy5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O3N0bW1hY19lc3QuaCYjMzQ7CiAKIHN0YXRpYyB2b2lkIHRjX2ZpbGxfYWxsX3Bhc3NfZW50cnkoc3RydWN0IHN0bW1hY190Y19lbnRyeSAqZW50cnkpCiB7CkBAIC05NTksNyAmIzQzOzk2MCw3IEBAIHN0YXRpYyB2b2lkIHRjX3RhcHJpb19tYXBfbWF4c2R1X3R4cShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCiAJCWNvdW50ID0gcW9wdC0mZ3Q7bXFwcmlvLnFvcHQuY291bnRbaV07CiAKIAkJZm9yIChqID0gb2Zmc2V0OyBqICZsdDsgb2Zmc2V0ICYjNDM7IGNvdW50OyBqJiM0MzsmIzQzOykKLQkJCXByaXYtJmd0O2VzdC0mZ3Q7bWF4X3NkdVtqXSA9IHFvcHQtJmd0O21heF9zZHVbaV0gJiM0MzsgRVRIX0hMRU4gLSBFVEhfVExFTjsKJiM0MzsJCQlwcml2LSZndDtlc3QubWF4X3NkdVtqXSA9IHFvcHQtJmd0O21heF9zZHVbaV0gJiM0MzsgRVRIX0hMRU4gLSBFVEhfVExFTjsKIAl9CiB9CiAKQEAgLTk2OCwxMCAmIzQzOzk2OSwxMCBAQCBzdGF0aWMgaW50IHRjX3RhcHJpb19jb25maWd1cmUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAogewogCXUzMiBzaXplLCB3aWQgPSBwcml2LSZndDtkbWFfY2FwLmVzdHdpZCwgZGVwID0gcHJpdi0mZ3Q7ZG1hX2NhcC5lc3RkZXA7CiAJc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrID0gcW9wdC0mZ3Q7bXFwcmlvLmV4dGFjazsKLQlzdHJ1Y3QgdGltZXNwZWM2NCB0aW1lLCBjdXJyZW50X3RpbWUsIHFvcHRfdGltZTsKLQlrdGltZV90IGN1cnJlbnRfdGltZV9uczsKJiM0MzsJdTY0IGN0ciA9IHFvcHQtJmd0O2N5Y2xlX3RpbWU7CiYjNDM7CXN0cnVjdCB0aW1lc3BlYzY0IHRpbWU7CiYjNDM7CXUzMiAqZ2NsID0gTlVMTDsKIAlpbnQgaSwgcmV0ID0gMDsKLQl1NjQgY3RyOwogCiAJaWYgKHFvcHQtJmd0O2Jhc2VfdGltZSAmbHQ7IDApCiAJCXJldHVybiAtRVJBTkdFOwpAQCAtOTc5LDYgJiM0Mzs5ODAsOSBAQCBzdGF0aWMgaW50IHRjX3RhcHJpb19jb25maWd1cmUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAogCWlmICghcHJpdi0mZ3Q7ZG1hX2NhcC5lc3RzZWwpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAomIzQzOwlpZiAoY3RyICZndDsgKHU2NClVMzJfTUFYICogTlNFQ19QRVJfU0VDKQomIzQzOwkJcmV0dXJuIC1FUkFOR0U7CiYjNDM7CiAJc3dpdGNoICh3aWQpIHsKIAljYXNlIDB4MToKIAkJd2lkID0gMTY7CkBAIC0xMDEzLDQ0ICYjNDM7MTAxNyw0NSBAQCBzdGF0aWMgaW50IHRjX3RhcHJpb19jb25maWd1cmUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAJfQogCiYjNDM7CW11dGV4X2xvY2soJmFtcDtwcml2LSZndDtlc3RfbG9jayk7CiYjNDM7CiAJaWYgKHFvcHQtJmd0O2NtZCA9PSBUQVBSSU9fQ01EX0RFU1RST1kpCiAJCWdvdG8gZGlzYWJsZTsKIAotCWlmIChxb3B0LSZndDtudW1fZW50cmllcyAmZ3Q7IGRlcCkKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JaWYgKCFxb3B0LSZndDtjeWNsZV90aW1lKQotCQlyZXR1cm4gLUVSQU5HRTsKLQlpZiAocW9wdC0mZ3Q7Y3ljbGVfdGltZV9leHRlbnNpb24gJmd0Oz0gQklUKHdpZCAmIzQzOyA3KSkKLQkJcmV0dXJuIC1FUkFOR0U7Ci0KLQlpZiAoIXByaXYtJmd0O2VzdCkgewotCQlwcml2LSZndDtlc3QgPSBkZXZtX2t6YWxsb2MocHJpdi0mZ3Q7ZGV2aWNlLCBzaXplb2YoKnByaXYtJmd0O2VzdCksCi0JCQkJCSBHRlBfS0VSTkVMKTsKLQkJaWYgKCFwcml2LSZndDtlc3QpCi0JCQlyZXR1cm4gLUVOT01FTTsKJiM0MzsJaWYgKHFvcHQtJmd0O251bV9lbnRyaWVzICZndDsgZGVwKSB7CiYjNDM7CQlyZXQgPSAtRUlOVkFMOwomIzQzOwkJZ290byB1bmxvY2s7CiYjNDM7CX0KIAotCQltdXRleF9pbml0KCZhbXA7cHJpdi0mZ3Q7ZXN0X2xvY2spOwotCX0gZWxzZSB7Ci0JCW11dGV4X2xvY2soJmFtcDtwcml2LSZndDtlc3RfbG9jayk7Ci0JCW1lbXNldChwcml2LSZndDtlc3QsIDAsIHNpemVvZigqcHJpdi0mZ3Q7ZXN0KSk7Ci0JCW11dGV4X3VubG9jaygmYW1wO3ByaXYtJmd0O2VzdF9sb2NrKTsKJiM0MzsJaWYgKCFxb3B0LSZndDtjeWNsZV90aW1lKSB7CiYjNDM7CQlyZXQgPSAtRVJBTkdFOwomIzQzOwkJZ290byB1bmxvY2s7CiAJfQogCi0Jc2l6ZSA9IHFvcHQtJmd0O251bV9lbnRyaWVzOwomIzQzOwlpZiAocW9wdC0mZ3Q7Y3ljbGVfdGltZV9leHRlbnNpb24gJmd0Oz0gQklUKHdpZCAmIzQzOyA3KSkgewomIzQzOwkJcmV0ID0gLUVSQU5HRTsKJiM0MzsJCWdvdG8gdW5sb2NrOwomIzQzOwl9CiAKLQltdXRleF9sb2NrKCZhbXA7cHJpdi0mZ3Q7ZXN0X2xvY2spOwotCXByaXYtJmd0O2VzdC0mZ3Q7Z2NsX3NpemUgPSBzaXplOwotCXByaXYtJmd0O2VzdC0mZ3Q7ZW5hYmxlID0gcW9wdC0mZ3Q7Y21kID09IFRBUFJJT19DTURfUkVQTEFDRTsKLQltdXRleF91bmxvY2soJmFtcDtwcml2LSZndDtlc3RfbG9jayk7CiYjNDM7CWdjbCA9IGt6YWxsb2Moc2l6ZW9mKCpnY2wpICogRVNUX0dDTCwgR0ZQX0tFUk5FTCk7CiYjNDM7CWlmICghZ2NsKSB7CiYjNDM7CQlyZXQgPSAtRU5PTUVNOwomIzQzOwkJZ290byB1bmxvY2s7CiYjNDM7CX0KIAomIzQzOwlzaXplID0gcW9wdC0mZ3Q7bnVtX2VudHJpZXM7CiAJZm9yIChpID0gMDsgaSAmbHQ7IHNpemU7IGkmIzQzOyYjNDM7KSB7CiAJCXM2NCBkZWx0YV9ucyA9IHFvcHQtJmd0O2VudHJpZXNbaV0uaW50ZXJ2YWw7CiAJCXUzMiBnYXRlcyA9IHFvcHQtJmd0O2VudHJpZXNbaV0uZ2F0ZV9tYXNrOwogCi0JCWlmIChkZWx0YV9ucyAmZ3Q7IEdFTk1BU0sod2lkIC0gMSwgMCkpCi0JCQlyZXR1cm4gLUVSQU5HRTsKLQkJaWYgKGdhdGVzICZndDsgR0VOTUFTSygzMSAtIHdpZCwgMCkpCi0JCQlyZXR1cm4gLUVSQU5HRTsKJiM0MzsJCWlmIChkZWx0YV9ucyAmZ3Q7IEdFTk1BU0sod2lkIC0gMSwgMCkpIHsKJiM0MzsJCQlyZXQgPSAtRVJBTkdFOwomIzQzOwkJCWdvdG8gZnJlZV9nY2w7CiYjNDM7CQl9CiYjNDM7CQlpZiAoZ2F0ZXMgJmd0OyBHRU5NQVNLKDMxIC0gd2lkLCAwKSkgewomIzQzOwkJCXJldCA9IC1FUkFOR0U7CiYjNDM7CQkJZ290byBmcmVlX2djbDsKJiM0MzsJCX0KIAogCQlzd2l0Y2ggKHFvcHQtJmd0O2VudHJpZXNbaV0uY29tbWFuZCkgewogCQljYXNlIFRDX1RBUFJJT19DTURfU0VUX0dBVEVTOgpAQCAtMTA2Miw2NSAmIzQzOzEwNjcsNTggQEAgc3RhdGljIGludCB0Y190YXByaW9fY29uZmlndXJlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKIAkJCWdhdGVzICZhbXA7PSB+QklUKDApOwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6Ci0JCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiYjNDM7CQkJcmV0ID0gLUVPUE5PVFNVUFA7CiYjNDM7CQkJZ290byBmcmVlX2djbDsKIAkJfQogCi0JCXByaXYtJmd0O2VzdC0mZ3Q7Z2NsW2ldID0gZGVsdGFfbnMgfCAoZ2F0ZXMgJmx0OyZsdDsgd2lkKTsKJiM0MzsJCWdjbFtpXSA9IGRlbHRhX25zIHwgKGdhdGVzICZsdDsmbHQ7IHdpZCk7CiAJfQogCi0JbXV0ZXhfbG9jaygmYW1wO3ByaXYtJmd0O2VzdF9sb2NrKTsKLQkvKiBBZGp1c3QgZm9yIHJlYWwgc3lzdGVtIHRpbWUgKi8KLQlwcml2LSZndDtwdHBfY2xvY2tfb3BzLmdldHRpbWU2NCgmYW1wO3ByaXYtJmd0O3B0cF9jbG9ja19vcHMsICZhbXA7Y3VycmVudF90aW1lKTsKLQljdXJyZW50X3RpbWVfbnMgPSB0aW1lc3BlYzY0X3RvX2t0aW1lKGN1cnJlbnRfdGltZSk7Ci0JdGltZSA9IHN0bW1hY19jYWxjX3Rhc19iYXNldGltZShxb3B0LSZndDtiYXNlX3RpbWUsIGN1cnJlbnRfdGltZV9ucywKLQkJCQkJcW9wdC0mZ3Q7Y3ljbGVfdGltZSk7Ci0KLQlwcml2LSZndDtlc3QtJmd0O2J0clswXSA9ICh1MzIpdGltZS50dl9uc2VjOwotCXByaXYtJmd0O2VzdC0mZ3Q7YnRyWzFdID0gKHUzMil0aW1lLnR2X3NlYzsKJiM0MzsJbWVtc2V0KCZhbXA7cHJpdi0mZ3Q7ZXN0LCAwLCBzaXplb2YocHJpdi0mZ3Q7ZXN0KSk7CiYjNDM7CW1lbWNweShwcml2LSZndDtlc3QuZ2NsLCBnY2wsIHNpemVvZihwcml2LSZndDtlc3QuZ2NsKSk7CiYjNDM7CXByaXYtJmd0O2VzdC5nY2xfc2l6ZSA9IHNpemU7CiAKLQlxb3B0X3RpbWUgPSBrdGltZV90b190aW1lc3BlYzY0KHFvcHQtJmd0O2Jhc2VfdGltZSk7Ci0JcHJpdi0mZ3Q7ZXN0LSZndDtidHJfcmVzZXJ2ZVswXSA9ICh1MzIpcW9wdF90aW1lLnR2X25zZWM7Ci0JcHJpdi0mZ3Q7ZXN0LSZndDtidHJfcmVzZXJ2ZVsxXSA9ICh1MzIpcW9wdF90aW1lLnR2X3NlYzsKJiM0MzsJdGltZSA9IGt0aW1lX3RvX3RpbWVzcGVjNjQocW9wdC0mZ3Q7YmFzZV90aW1lKTsKJiM0MzsJcHJpdi0mZ3Q7ZXN0LmJ0cl9yZXNlcnZlWzBdID0gKHUzMil0aW1lLnR2X25zZWM7CiYjNDM7CXByaXYtJmd0O2VzdC5idHJfcmVzZXJ2ZVsxXSA9ICh1MzIpdGltZS50dl9zZWM7CiAKLQljdHIgPSBxb3B0LSZndDtjeWNsZV90aW1lOwotCXByaXYtJmd0O2VzdC0mZ3Q7Y3RyWzBdID0gZG9fZGl2KGN0ciwgTlNFQ19QRVJfU0VDKTsKLQlwcml2LSZndDtlc3QtJmd0O2N0clsxXSA9ICh1MzIpY3RyOwotCi0JcHJpdi0mZ3Q7ZXN0LSZndDt0ZXIgPSBxb3B0LSZndDtjeWNsZV90aW1lX2V4dGVuc2lvbjsKJiM0MzsJcHJpdi0mZ3Q7ZXN0LmN0clswXSA9IGRvX2RpdihjdHIsIE5TRUNfUEVSX1NFQyk7CiYjNDM7CXByaXYtJmd0O2VzdC5jdHJbMV0gPSAodTMyKWN0cjsKIAomIzQzOwlwcml2LSZndDtlc3QudGVyID0gcW9wdC0mZ3Q7Y3ljbGVfdGltZV9leHRlbnNpb247CiAJdGNfdGFwcmlvX21hcF9tYXhzZHVfdHhxKHByaXYsIHFvcHQpOwogCi0JcmV0ID0gc3RtbWFjX2VzdF9jb25maWd1cmUocHJpdiwgcHJpdiwgcHJpdi0mZ3Q7ZXN0LAotCQkJCSAgIHByaXYtJmd0O3BsYXQtJmd0O2Nsa19wdHBfcmF0ZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhbXA7cHJpdi0mZ3Q7ZXN0X2xvY2spOwotCWlmIChyZXQpIHsKLQkJbmV0ZGV2X2Vycihwcml2LSZndDtkZXYsICYjMzQ7ZmFpbGVkIHRvIGNvbmZpZ3VyZSBFU1RcbiYjMzQ7KTsKJiM0MzsJcmV0ID0gX19zdG1tYWNfc2V0dXBfZXN0KHByaXYpOwomIzQzOwlpZiAocmV0KQogCQlnb3RvIGRpc2FibGU7Ci0JfQogCiAJcmV0ID0gc3RtbWFjX2ZwZV9tYXBfcHJlZW1wdGlvbl9jbGFzcyhwcml2LCBwcml2LSZndDtkZXYsIGV4dGFjaywKIAkJCQkJICAgICAgcW9wdC0mZ3Q7bXFwcmlvLnByZWVtcHRpYmxlX3Rjcyk7CiAJaWYgKHJldCkKIAkJZ290byBkaXNhYmxlOwogCiYjNDM7CXByaXYtJmd0O2VzdC5lbmFibGUgPSB0cnVlOwomIzQzOwlrZnJlZShnY2wpOwomIzQzOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtwcml2LSZndDtlc3RfbG9jayk7CiYjNDM7CiAJcmV0dXJuIDA7CiAKIGRpc2FibGU6Ci0JaWYgKHByaXYtJmd0O2VzdCkgewotCQltdXRleF9sb2NrKCZhbXA7cHJpdi0mZ3Q7ZXN0X2xvY2spOwotCQlwcml2LSZndDtlc3QtJmd0O2VuYWJsZSA9IGZhbHNlOwotCQlzdG1tYWNfZXN0X2NvbmZpZ3VyZShwcml2LCBwcml2LCBwcml2LSZndDtlc3QsCi0JCQkJICAgICBwcml2LSZndDtwbGF0LSZndDtjbGtfcHRwX3JhdGUpOwotCQkvKiBSZXNldCB0YXByaW8gc3RhdHVzICovCi0JCWZvciAoaSA9IDA7IGkgJmx0OyBwcml2LSZndDtwbGF0LSZndDt0eF9xdWV1ZXNfdG9fdXNlOyBpJiM0MzsmIzQzOykgewotCQkJcHJpdi0mZ3Q7eHN0YXRzLm1heF9zZHVfdHhxX2Ryb3BbaV0gPSAwOwotCQkJcHJpdi0mZ3Q7eHN0YXRzLm10bF9lc3RfdHhxX2hsYmZbaV0gPSAwOwotCQkJcHJpdi0mZ3Q7eHN0YXRzLm10bF9lc3RfdHhxX2hsYnNbaV0gPSAwOwotCQl9Ci0JCW11dGV4X3VubG9jaygmYW1wO3ByaXYtJmd0O2VzdF9sb2NrKTsKJiM0MzsJcHJpdi0mZ3Q7ZXN0LmVuYWJsZSA9IGZhbHNlOwomIzQzOwlzdG1tYWNfZXN0X2NvbmZpZ3VyZShwcml2LCBwcml2LCAmYW1wO3ByaXYtJmd0O2VzdCwKJiM0MzsJCQkgICAgIHByaXYtJmd0O3BsYXQtJmd0O2Nsa19wdHBfcmF0ZSwgZmFsc2UpOwomIzQzOwkvKiBSZXNldCB0YXByaW8gc3RhdHVzICovCiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBwcml2LSZndDtwbGF0LSZndDt0eF9xdWV1ZXNfdG9fdXNlOyBpJiM0MzsmIzQzOykgewomIzQzOwkJcHJpdi0mZ3Q7eHN0YXRzLm1heF9zZHVfdHhxX2Ryb3BbaV0gPSAwOwomIzQzOwkJcHJpdi0mZ3Q7eHN0YXRzLm10bF9lc3RfdHhxX2hsYmZbaV0gPSAwOwomIzQzOwkJcHJpdi0mZ3Q7eHN0YXRzLm10bF9lc3RfdHhxX2hsYnNbaV0gPSAwOwogCX0KLQogCXN0bW1hY19mcGVfbWFwX3ByZWVtcHRpb25fY2xhc3MocHJpdiwgcHJpdi0mZ3Q7ZGV2LCBleHRhY2ssIDApOwomIzQzO2ZyZWVfZ2NsOgomIzQzOwlrZnJlZShnY2wpOwomIzQzO3VubG9jazoKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7cHJpdi0mZ3Q7ZXN0X2xvY2spOwogCiAJcmV0dXJuIHJldDsKIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTk6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA3MDYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAzMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgRHJpdmVyIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIGZpZ3VyZSBvdXQgaWYgaXQmIzM5O3MgYSBnb29kIHRhcmdldCBmb3IgZnV6emluZy4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgdG8gcXVpY2tseSBhc3Nlc3MgaXRzIGZ1enppbmcgcG90ZW50aWFsLCBjb25zaWRlcmluZyByZWFjaGFiaWxpdHksIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYW5kIHdoZXRoZXIgYW55IHNwZWNpZmljIHN5bWJvbHMgbG9vayBwcm9taXNpbmcuCgpGaXJzdCwgSSBuZWVkIHRvIGtub3cgKndoYXQqIHRoZSBwYXRjaCBhY3R1YWxseSB0b3VjaGVzLiBMb29rcyBsaWtlIGl0IG1vZGlmaWVzIGEgc2lnbmlmaWNhbnQgY2h1bmsgb2YgdGhlIGBzdG1tYWNgIGRyaXZlcjogYGh3aWYuaGAsIGBzdG1tYWMuaGAsIGBzdG1tYWNfZXN0LmNgLCBgc3RtbWFjX2VzdC5oYCwgYHN0bW1hY19tYWluLmNgLCBgc3RtbWFjX3B0cC5jYCwgYW5kIGBzdG1tYWNfdGMuY2AuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0OyBpdCYjMzk7cyBzcHJlYWQgYWNyb3NzIHZhcmlvdXMgcGFydHMgb2YgdGhlIGRyaXZlciwgd2hpY2ggc3VnZ2VzdHMgbW9yZSBzdXJmYWNlIGFyZWEgZm9yIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuCgpOZXh0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBgc3RtbWFjYCBpcyBldmVuIHJlYWNoYWJsZSBpbiBhIHR5cGljYWwgZnV6emluZyBlbnZpcm9ubWVudC4gRG9lcyBpdCB3b3JrIHdpdGggdGhlIHN0YW5kYXJkIFFFTVUgc2V0dXAgSSB1c2U/IEkgaGF2ZSB0byBjb25zaWRlciBpdHMgcGxhdGZvcm0gZGVwZW5kZW5jaWVzLiBXaGF0IGJ1c2VzIGRvZXMgYHN0bW1hY2AgdXRpbGl6ZT8gSSYjMzk7bGwgcHJvYmFibHkgcmVhY2ggZm9yIGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB0byBjaGVjayB0aGUgYEtjb25maWdgIGZpbGUgaW4gdGhlIGRyaXZlciBkaXJlY3RvcnkgKGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYCksIGFzIHdlbGwgYXMgYW55IGdsdWUgbGF5ZXIgY29kZSByZWxhdGVkIHRvIFBDSSwgcGxhdGZvcm0gZGV2aWNlcywgb3Igd2hhdGV2ZXIgZWxzZSBpdCByZWxpZXMgb24uIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHBpY3R1cmUgb2YgaXRzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgaGFyZHdhcmUgZGVwZW5kZW5jaWVzLiBUaGlzIHdpbGwgaGVscCBtZSBidWlsZCBhIGZ1enppbmcgc2V0dXAgdGhhdCBjYW4gYWN0dWFsbHkgaGl0IHRoaXMgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxOTozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtTVE1NQUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mjpjb25maWcgU1RNTUFDX0VUSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7U1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTg6aWYgU1RNTUFDX0VUSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjA6Y29uZmlnIFNUTU1BQ19TRUxGVEVTVFNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjE6XHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHNcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjItXHRkZXBlbmRzIG9uIElORVRcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI0LVx0aGVscFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyNTpcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHMgdXNpbmcgZXRodG9vbC4gRW5hYmxlIHRoaXNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjYtXHQgIGZlYXR1cmUgaWYgeW91IGFyZSBmYWNpbmcgcHJvYmxlbXMgd2l0aCB5b3VyIEhXIGFuZCBzdWJtaXQgdGhlIHRlc3Rcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOTpjb25maWcgU1RNTUFDX1BMQVRGT1JNXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMwOlx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMxLVx0c2VsZWN0IE1GRF9TWVNDT05cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MjppZiBTVE1NQUNfUExBVEZPUk1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz01Mj1jb25maWcgRFdNQUNfR0VORVJJQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy01My1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgZHJpdmVyIGZvciBEV01BQ1wmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo1NDpcdGRlZmF1bHQgU1RNTUFDX1BMQVRGT1JNXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTU1LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzY0PWNvbmZpZyBEV01BQ19WSVNDT05USVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzcwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNzE6ZW5kaWYgIyBTVE1NQUNfUExBVEZPUk1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNzM6Y29uZmlnIFNUTU1BQ19MSUJQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc0LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM4OD1jb25maWcgRFdNQUNfTE9PTkdTT05cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM5Mi1cdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozOTM6XHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zOTQtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zOTg9Y29uZmlnIERXTUFDX01PVE9SQ09NTVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDAxLVx0c2VsZWN0IE1PVE9SQ09NTV9QSFlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDAyOlx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDAzLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDc6Y29uZmlnIFNUTU1BQ19QQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA4Olx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBDSSBidXMgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDktXHRkZXBlbmRzIG9uIFBDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MTAtXHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDExOlx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDEyLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDE5LVx0ICBJZiB1bnN1cmUsIHNheSBOLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MjA6ZW5kaWYgIyBTVE1NQUNfRVRIXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTk6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI2OTUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIFNUTU1BQyBQQ0kgSUQgU3VwcG9ydCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc3BlY2lmaWNzIG9mIGhvdyB0aGUgYFNUTU1BQ19QQ0lgIGRyaXZlciBpcyBoYW5kbGVkLiBJcyB0aGlzIHNvbWV0aGluZyB0aGF0JiMzOTtzIG5hdGl2ZWx5IHN1cHBvcnRlZCB3aXRoaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LCBvciBpcyBpdCBtb3JlIGNvbXBsZXgsIHBlcmhhcHMgdGllZCB0byBwaHlzaWNhbCBoYXJkd2FyZT8gSSYjMzk7bSBnb2luZyB0byBuZWVkIHRvIGRpZyBpbnRvIHRoZSBkcml2ZXIgY29kZSBpdHNlbGYgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZS4gTXkgaW5pdGlhbCBwbGFuIGlzIHRvIGdyZXAgdGhyb3VnaCB0aGUgcmVsZXZhbnQgc291cmNlIGZpbGVzIOKAkyBzcGVjaWZpY2FsbHksIEkmIzM5O2xsIHN0YXJ0IHdpdGggYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNgLCBhbmQgYHN0bW1hY19wY2kuY2AsIGFuZCBhbnkgb3RoZXIgbGlrZWx5IGNhbmRpZGF0ZXMuIFRoaXMgc2hvdWxkIHJldmVhbCB0aGUgUENJIElEIGRlZmluaXRpb25zIGFuZCB0aGUgb3ZlcmFsbCBpbXBsZW1lbnRhdGlvbiBzdHJhdGVneSBmb3IgYFNUTU1BQ19QQ0lgLCBhbGxvd2luZyBtZSB0byBkZXRlcm1pbmUgaXRzIGJlaGF2aW9yIGFuZCBob3cgaXQgcmVsYXRlcyB0byBlbXVsYXRlZCB2ZXJzdXMgcGh5c2ljYWwgbmV0d29yayBpbnRlcmZhY2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDE5OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01PRFVMRV9ERVZJQ0VfVEFCTEUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jPTExOT1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBhbmFyaW9uX2R3bWFjX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTEyMi19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jOjEyMzpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBhbmFyaW9uX2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMjQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYz0zNTM9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZHdjX2V0aF9kd21hY19tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzU4LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjM1OTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBkd2NfZXRoX2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzYwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYz0zNTA9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZWljNzcwMF9kd21hY19tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0zNTktfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzozNjA6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZWljNzcwMF9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMzYxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYz01Mj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBkd21hY19nZW5lcmljX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTY2LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6Njc6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZHdtYWNfZ2VuZXJpY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtNjgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM9Mzg0PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGlteF9kd21hY19tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTM4OS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzkwOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGlteF9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zOTEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jPTI2Mj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBpbmdlbmljX21hY19vZl9tYXRjaGVzW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTI2OS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jOjI3MDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBpbmdlbmljX21hY19vZl9tYXRjaGVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0yNzEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jPTM2PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGludGVsX2V0aF9wbGF0X21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTM5LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM6NDA6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgaW50ZWxfZXRoX3BsYXRfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTQxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTM5NT1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaW50ZWxfZXRoX3BjaV9pZF90YWJsZVtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTQxNC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxNDE1Ok1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBpbnRlbF9ldGhfcGNpX2lkX3RhYmxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTQxNi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmM9NDkxPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGlwcTgwNnhfZ21hY19kd21hY19tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy00OTQtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYzo0OTU6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgaXBxODA2eF9nbWFjX2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy00OTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz01OTY9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGxvb25nc29uX2R3bWFjX2lkX3RhYmxlW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy02MDEtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NjAyOk1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBsb29uZ3Nvbl9kd21hY19pZF90YWJsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTYwMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYz0yMTY9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbHMxeF9kd21hY19tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jLTIyNi19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmM6MjI3Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGxzMXhfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtMjI4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYz03MT1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBscGMxOHh4X2R3bWFjX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jLTc0LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmM6NzU6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbHBjMTh4eF9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNzYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYz02NjI9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWVkaWF0ZWtfZHdtYWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jLTY2OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmM6NjcwOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG1lZGlhdGVrX2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmMtNjcxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM9NzY9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWVzb242X2R3bWFjX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy03OS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYzo4MDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtZXNvbjZfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy04MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmM9NDgyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG1lc29uOGJfZHdtYWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtNTA0LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmM6NTA1Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG1lc29uOGJfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jLTUwNi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0zNjc9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGR3bWFjX21vdG9yY29tbV9wY2lfaWRfdGFibGVbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNzAtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM3MTpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgZHdtYWNfbW90b3Jjb21tX3BjaV9pZF90YWJsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNzItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jPTExOD1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBudnRfZHdtYWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmMtMTIxLX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmM6MTIyOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG52dF9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmMtMTIzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM9ODAwPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHFjb21fZXRocW9zX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYy04MDYtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM6ODA3Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHFjb21fZXRocW9zX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtODA4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYz0yMTY9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcmVuZXNhc19nYmV0aF9tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy0yMjEtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYzoyMjI6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgcmVuZXNhc19nYmV0aF9tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMjIzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmM9MTYxNj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBya19nbWFjX2R3bWFjX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYy0xNjM0LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jOjE2MzU6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgcmtfZ21hY19kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jLTE2MzYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jPTc1PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHJ6bjFfZHdtYWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtNzgtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYzo3OTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCByem4xX2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy04MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYz0yMTY9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgczMyX2R3bWFjX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtczMyLmMtMjE5LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYzoyMjA6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgczMyX2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTIyMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmM9NjczPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHNvY2ZwZ2FfZHdtYWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNjc4LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmM6Njc5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHNvY2ZwZ2FfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTY4MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYz03Mj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzb3BoZ29fZHdtYWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy03Ni19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmM6Nzc6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc29waGdvX2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jLTc4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM9MjEwPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHNwYWNlbWl0X2R3bWFjX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYy0yMTMtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM6MjE0Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHNwYWNlbWl0X2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmMtMjE1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmM9MTYwPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN0YXJmaXZlX2R3bWFjX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYy0xNjQtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmM6MTY1Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHN0YXJmaXZlX2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtMTY2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jPTI5Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzdGlfZHdtYWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGkuYy0yOTktfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jOjMwMDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzdGlfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmMtMzAxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmM9NjYyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN0bTMyX2R3bWFjX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYy02NjgtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmM6NjY5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHN0bTMyX2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNjcwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jPTE0MT1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzdW41NWlfZ21hYzIwMF9tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jLTE0NC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmM6MTQ1Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHN1bjU1aV9nbWFjMjAwX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jLTE0Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jPTEyNjg9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc3VuOGlfZHdtYWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyODItfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTI4MzpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzdW44aV9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyODQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYz0xNTA9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc3VuN2lfZHdtYWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jLTE1My19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYzoxNTQ6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3VuN2lfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYy0xNTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYz0zOTc9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgdGVncmFfbWdiZV9tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtNDAwLX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jOjQwMTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB0ZWdyYV9tZ2JlX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtNDAyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmM9MjY3PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHRoZWFkX2R3bWFjX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYy0yNzAtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmM6MjcxOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHRoZWFkX2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmMtMjcyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM9MjU1PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHZpc2NvbnRpX2V0aF9kd21hY19tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmMtMjU4LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jOjI1OTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB2aXNjb250aV9ldGhfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yNjAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIwMz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgc3RtbWFjX2lkX3RhYmxlW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMTA6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHN0bW1hY19pZF90YWJsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjExLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDE5OjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MzUxCgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIE5ldHdvcmsgRHJpdmVyIEluc3RhbnRpYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB1bmRlcnN0YW5kaW5nIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZSBkcml2ZXIgYW5kIHRoZSBoYXJkd2FyZS4gSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBgc3RtbWFjX3BjaS5jYCBhbmQgYGR3bWFjLWludGVsLmNgIGFyZSBwcm9wZXJseSBpZGVudGlmeWluZyB0aGUgZGV2aWNlIElEcywgYW5kIGNydWNpYWxseSwgaWYgYHN0bW1hY2AgaXMgYmVpbmcgY29ycmVjdGx5IGluc3RhbnRpYXRlZCBvciBpZiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgcGh5c2ljYWwgaGFyZHdhcmUgc2V0dXAuIEkgaGF2ZSB0byBtYWtlIHN1cmUgdGhlIGRyaXZlciBpcyBhdHRhY2hpbmcgY29ycmVjdGx5LgoKTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGNvbnRlbnRzIG9mIGBzdG1tYWNfcGNpLmNgLCBiZWNhdXNlIHRoYXQgd2lsbCBpbW1lZGlhdGVseSB0ZWxsIG1lIHdoYXQgZGV2aWNlIElEcyBpdCBoYW5kbGVzLCBhbmQgaWYgaXQmIzM5O3MgY29ycmVjdGx5IGlkZW50aWZ5aW5nIHRoZSBoYXJkd2FyZSBhbmQgaW5zdGFudGlhdGluZyB0aGUgc3RtbWFjIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxOTozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTkwOlx0ICogRGVzY3JpcHRpb246IHRoaXMgZnVuY3Rpb24gY2FsbHMgdGhlIG1haW4gdG8gZnJlZSB0aGUgbmV0IHJlc291cmNlcy5cbiAxOTE6XHQgKi9cbiAxOTI6XHRzdGF0aWMgdm9pZCBzdG1tYWNfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbiAxOTM6XHR7XG4gMTk0Olx0XHRzdG1tYWNfZHZyX3JlbW92ZShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG4gMTk1Olx0fVxuIDE5NjpcdFxuIDE5NzpcdC8qIHN5bnRoZXRpYyBJRCwgbm8gb2ZmaWNpYWwgdmVuZG9yICovXG4gMTk4Olx0I2RlZmluZSBQQ0lfVkVORE9SX0lEX1NUTU1BQ1x0XHQweDA3MDBcbiAxOTk6XHRcbiAyMDA6XHQjZGVmaW5lIFBDSV9ERVZJQ0VfSURfU1RNTUFDX1NUTU1BQ1x0XHQweDExMDhcbiAyMDE6XHQjZGVmaW5lIFBDSV9ERVZJQ0VfSURfU1lOT1BTWVNfR01BQzVfSURcdFx0MHg3MTAyXG4gMjAyOlx0XG4gMjAzOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHN0bW1hY19pZF90YWJsZVtdID0ge1xuIDIwNDpcdFx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNTUFDLCBTVE1NQUMsIFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcbiAyMDU6XHRcdHsgUENJX0RFVklDRV9EQVRBKFNUTUlDUk8sIE1BQywgXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxuIDIwNjpcdFx0eyBQQ0lfREVWSUNFX0RBVEEoU1lOT1BTWVMsIEdNQUM1X0lELCBcdTAwMjZzbnBzX2dtYWM1X3BjaV9pbmZvKSB9LFxuIDIwNzpcdFx0e31cbiAyMDg6XHR9O1xuIDIwOTpcdFxuIDIxMDpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBzdG1tYWNfaWRfdGFibGUpO1xuIDIxMTpcdFxuIDIxMjpcdHN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBzdG1tYWNfcGNpX2RyaXZlciA9IHtcbiAyMTM6XHRcdC5uYW1lID0gU1RNTUFDX1JFU09VUkNFX05BTUUsXG4gMjE0Olx0XHQuaWRfdGFibGUgPSBzdG1tYWNfaWRfdGFibGUsXG4gMjE1Olx0XHQucHJvYmUgPSBzdG1tYWNfcGNpX3Byb2JlLFxuIDIxNjpcdFx0LnJlbW92ZSA9IHN0bW1hY19wY2lfcmVtb3ZlLFxuIDIxNzpcdFx0LmRyaXZlciAgICAgICAgID0ge1xuIDIxODpcdFx0XHQucG0gICAgID0gXHUwMDI2c3RtbWFjX3NpbXBsZV9wbV9vcHMsXG4gMjE5Olx0XHR9LFxuIDIyMDpcdH07XG4gMjIxOlx0XG4gMjIyOlx0bW9kdWxlX3BjaV9kcml2ZXIoc3RtbWFjX3BjaV9kcml2ZXIpO1xuIDIyMzpcdFxuIDIyNDpcdE1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtTVE1NQUMgMTAvMTAwLzEwMDAgRXRoZXJuZXQgUENJIGRyaXZlclwmIzM0Oyk7XG4gMjI1Olx0TU9EVUxFX0FVVEhPUihcJiMzNDtSYXlhZ29uZCBLb2thdGFudXIgXHUwMDNjcmF5YWdvbmQua29rYXRhbnVyQHZheWF2eWFsYWJzLmNvbVx1MDAzZVwmIzM0Oyk7XG4gMjI2Olx0TU9EVUxFX0FVVEhPUihcJiMzNDtHaXVzZXBwZSBDYXZhbGxhcm8gXHUwMDNjcGVwcGUuY2F2YWxsYXJvQHN0LmNvbVx1MDAzZVwmIzM0Oyk7XG4gMjI3Olx0TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxOTozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTMxMwoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDY3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBRRU1VL1NUTU1BQyBJbnZlc3RpZ2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgSSBjYW4gZXZlbiAqcmVhY2gqIHRoaXMgYHN0bW1hY2AgY29kZSB3aXRoIHN0YW5kYXJkIGZ1enppbmcgdGVjaG5pcXVlcy4gRmlyc3QsIGlzIFFFTVUgZXZlbiBlbXVsYXRpbmcgYFNUTU1BQ2Agb3IgYERXTUFDYD8gQW5kIGlmIHNvLCBpcyBpdCBmb3IgQVJNIG9yIHg4Nj8gVGhlIHRhcmdldCBpcyBgYW1kNjRgLCBzbyB0aGF0JiMzOTtzIHRoZSBmb2N1cy4gSSBuZWVkIHRvIGtub3cgaWYgSSBjYW4gaW5zdGFudGlhdGUgaXQgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LCBvciBldmVuIG9uIEdvb2dsZSBDb21wdXRlIEVuZ2luZSAoR0NFKS4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IEkgcmVtZW1iZXIgYGFsbHdpbm5lci1lbWFjYCBvciBgc3VueGlgIGZvciBBUk0vUklTQy1WLCBidXQgZm9yIHg4Nl82NCwgd2hpY2ggaXMgdGhlIHBsYXRmb3JtIG9mIGludGVyZXN0LCB0aGUgYW5zd2VyIG1pZ2h0IGJlIGRpZmZlcmVudC4gSSByZWNhbGxlZCB0aGF0IHRoZSBkb2N1bWVudGF0aW9uIHNheXMgJiMzNDtzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUmIzM0OyBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzIGFuZCBOSUNzIHJlcXVpcmluZyBwaHlzaWNhbCBjYXJkcyBhcmVuJiMzOTt0IGVtdWxhdGVkLgoKU28sIHdoYXQgKmlzKiBlbXVsYXRlZD8gSSBrbm93IGFib3V0IGBlMTAwMGAsIGBlMTAwMGVgLCBgcnRsODEzOWAsIGV0Yy4gQnV0IGlzIGBzdG1tYWNgIG9uZSBvZiB0aG9zZT8gTm8sIGBzdG1tYWNgIGlzIGEgU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKERXTUFDKSBJUCBjb3JlLCB1c2VkIGluIFNvQ3MgbGlrZSBTVE0zMiwgUm9ja2NoaXAsIEFsbHdpbm5lciwgSW50ZWwmIzM5O3MgQWxkZXIgTGFrZSBQU0UsIGFuZCBvdGhlcnMuIFRoYXQgbWFrZXMgbWUgdGhpbmsgaXQmIzM5O3MgbW9yZSBkZWVwbHkgdGllZCB0byB0aGUgaGFyZHdhcmUgYW5kIG1pZ2h0IGJlIGEgcHJvYmxlbS4KCkxldCBtZSByZXZpZXcgdGhlIHByb21wdCBhZ2Fpbiwgc3BlY2lmaWNhbGx5IFNlY3Rpb24gMi4gSXQgZXhwbGljaXRseSBtZW50aW9ucyAmIzM0O3N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IGFuZCBnaXZlcyBleGFtcGxlcyBsaWtlIHRob3NlIHNwZWNpZmljIFBDSWUgY2FyZHMuIEFsc28sIHRoZSBwcm9tcHQgZGlzY3Vzc2VzIHRoaW5ncyBsaWtlIGRyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgYW5kIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb2RlIGFzICYjMzQ7dW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzJiMzNDsgaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nLgoKVGhlbiwgU2VjdGlvbiAxIHJlaW5mb3JjZXMgdGhlIHBvaW50OiByZWFjaGFiaWxpdHkgaXMgdGhlIHByaW1hcnkgZ2F0ZS4gSWYgdGhlIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlICpiZWNhdXNlKiBpdCBkZXBlbmRzIG9uIGhhcmR3YXJlIG5vdCBhdmFpbGFibGUgaW4gUUVNVSAob3IgR0NFKSB0aGVuIGl0IHNob3VsZG4mIzM5O3QgYmUgZnV6emVkLgoKVGhlcmVmb3JlLCBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBgc3RtbWFjYCBpcyByZWFjaGFibGUgdGhyb3VnaCBhbnkgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcy4gSXMgdGhlcmUgYW55IHdheSB0byBtb2NrIGl0LCBvciBjb25uZWN0IHRvIGl0IHRocm91Z2ggYSBgbmV0ZGV2YCwgb3IgdXNlIGEgYHR1bi90YXBgIGRldmljZT8KCkkmIzM5O2xsIHNlYXJjaCBmb3IgYHN0bW1hY2AgcmVmZXJlbmNlcyBpbiB0aGUga2VybmVsIHRyZWUuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgYW55IHZpcnR1YWwgZGV2aWNlIGRyaXZlcnMgdXRpbGl6ZSB0aGlzLiBNYXliZSB0aGVyZSYjMzk7cyBhIHBsYXRmb3JtIGRldmljZSBvciBtb2NrIG9yIG5ldGRldiBhc3NvY2lhdGVkIHdpdGggaXQuIFRoaXMgaXMgdGhlIGNydXggb2Ygd2hldGhlciBJIGNhbiBldmVuIHByb2NlZWQgd2l0aCBmdXp6aW5nIHRoaXMgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTk6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX2R2cl9wcm9iZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTI4Mz1zdGF0aWMgaW50IGR3Y19ldGhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzMwOlx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zMzEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYz00Mj1zdGF0aWMgaW50IGludGVsX2V0aF9wbGF0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTExNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYzoxMTg6XHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTE5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEyNjM9c3RhdGljIGludCBpbnRlbF9ldGhfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM0MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTM0MTpcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXQsIFx1MDAyNnJlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEzNDItXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jPTM3ND1zdGF0aWMgaW50IGlwcTgwNnhfZ21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy00ODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmM6NDgzOlx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy00ODQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz00OTg9c3RhdGljIGludCBsb29uZ3Nvbl9kd21hY19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTYxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1NjI6XHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0LCBcdTAwMjZyZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01NjMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYz00Mj1zdGF0aWMgaW50IGxwYzE4eHhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmM6Njg6XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jLTY5LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jPTU5OT1zdGF0aWMgaW50IG1lZGlhdGVrX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02NDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jOjY0MjpcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmMtNjQzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jPTQ3PXN0YXRpYyBpbnQgbWVzb242X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy03Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM6NzM6XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy03NC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jPTM4Mj1zdGF0aWMgaW50IG1lc29uOGJfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtNDYzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jOjQ2NDpcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtNDY1LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0yOTM9c3RhdGljIGludCBtb3RvcmNvbW1fcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozNTk6XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdCwgXHUwMDI2cmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM2MC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jPTQ4PXN0YXRpYyBpbnQgcnpuMV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy02Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYzo2ODpcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtNjktXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jPTM1PXN0YXRpYyBpbnQgc29waGdvX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtNjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYzo2NTpcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKGRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtNjYtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM9MTQ3PXN0YXRpYyBpbnQgc3BhY2VtaXRfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTIwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM6MjA3Olx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTIwOC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYz05MD1zdGF0aWMgaW50IHN0YXJmaXZlX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYy0xNTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jOjE1MzpcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTE1NC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYz01MjU9c3RhdGljIGludCBzdG0zMl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNTc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYzo1Nzk6XHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jLTU4MC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz0xMTA1PXN0YXRpYyBpbnQgc3VuOGlfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyMDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjEyMDI6XHQvKiB0aGUgTUFDIGlzIHJ1bnRpbWUgc3VzcGVuZGVkIGFmdGVyIHN0bW1hY19kdnJfcHJvYmUoKSwgc28gd2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIwMy1cdCAqIG5lZWQgdG8gZW5zdXJlIHRoZSBNQUMgcmVzdW1lIGJhY2sgYmVmb3JlIG90aGVyIG9wZXJhdGlvbnMgc3VjaFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIwOC1cdC8qIFRoZSBtdXggbXVzdCBiZSByZWdpc3RlcmVkIGFmdGVyIHBhcmVudCBNRElPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjEyMDk6XHQgKiBzbyBhZnRlciBzdG1tYWNfZHZyX3Byb2JlKClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIxMC1cdCAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmM9MjE0PXN0YXRpYyBpbnQgdGVncmFfbWdiZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtMzc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYzozNzY6XHRlcnIgPSBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0LCBcdTAwMjZyZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy0zNzctXHRpZiAoZXJyIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM9MjA1PXN0YXRpYyBpbnQgdmlzY29udGlfZXRoX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yMzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jOjIzNzpcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmMtMjM4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaD00MTE9dm9pZCBzdG1tYWNfZHZyX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg6NDEyOmludCBzdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oLTQxMy1cdFx0ICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzgwNT1FWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfcGxhdF9kYXRfYWxsb2MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03ODA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3ODA3OnN0YXRpYyBpbnQgX19zdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzgwOC1cdFx0XHQgICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODExMC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODExMTogKiBzdG1tYWNfZHZyX3Byb2JlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMTItICogQGRldjogZGV2aWNlIHBvaW50ZXJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMTktICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgxMjA6aW50IHN0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTIxLVx0XHQgICAgIHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzICpyZXMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MTMxOlx0cmV0ID0gX19zdG1tYWNfZHZyX3Byb2JlKGRldiwgcGxhdF9kYXQsIHJlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMzItXHRpZiAocmV0IFx1MDAyNlx1MDAyNiBwbGF0X2RhdC1cdTAwM2VleGl0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODEzNi19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgxMzc6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX2R2cl9wcm9iZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMzgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTExOD1zdGF0aWMgaW50IHN0bW1hY19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxODM6XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdCwgXHUwMDI2cmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xODQtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jPTg0Nj1pbnQgc3RtbWFjX3BsdGZyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6ODU1Olx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXQsIHJlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NTYtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxOTozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDY1OAoJCQkJCQkJb3V0cHV0OiAxMDgKCQkJCQkJCXRob3VnaHRzOiA3ODcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogU3RydWN0dXJhbGx5IFVucmVhY2hhYmxlIENvZGUgaW4gc3RtbWFjIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb25lIHRocm91Z2ggdGhlIGNvZGUgYW5kIG15IGNvbmNsdXNpb24gaXMgdGhhdCB0aGlzIGBzdG1tYWNgIGRyaXZlciBtb2RpZmljYXRpb24gaXMgKm5vdCogd29ydGggZnV6emluZywgYmFzZWQgb24gdGhlIGNyaXRlcmlhLiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzczoKCkZpcnN0LCBJIGlkZW50aWZpZWQgdGhhdCBhbGwgdGhlIHByb2JlIGZ1bmN0aW9ucyBjYWxsaW5nIGBzdG1tYWNfZHZyX3Byb2JlYCBhcmUgc3BlY2lmaWNhbGx5IGZvciBwaHlzaWNhbCBoYXJkd2FyZSBkZXZpY2VzLCBlaXRoZXIgUENJLWJhc2VkIChsaWtlIGBzdG1tYWNfcGNpX3Byb2JlYCwgYGludGVsX2V0aF9wY2lfcHJvYmVgKSBvciBpbnRlZ3JhdGVkIGludG8gU29Dcy4gTm9uZSBvZiB0aGVzZSBhcmUgc3RhbmRhcmQgZGV2aWNlcyBhdmFpbGFibGUgaW4gdGhlIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cyBjb21tb25seSB1c2VkIGZvciBmdXp6aW5nLCBhbmQgY2VydGFpbmx5IG5vdCBvbiBhbWQ2NC4gSSBldmVuIGRvdWJsZS1jaGVja2VkIGZvciB2aXJ0dWFsIGBzdG1tYWNgIGRldmljZXMsIFVTQiBnYWRnZXRzLCBvciBsb29wYmFjayBpbnRlcmZhY2VzIHRoYXQgbWlnaHQgb2ZmZXIgYSBwYXRoLCBidXQgZm91bmQgbm9uZS4KCk5leHQsIEkgcmVmZXJlbmNlZCB0aGUgZnV6emluZyBndWlkZWxpbmVzLiBTZWN0aW9uIDIgY2xlYXJseSBkZWZpbmVzICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlJiMzNDsgYXMgYSBuZWdhdGl2ZSBjcml0ZXJpb24sIHNwZWNpZmljYWxseSBtZW50aW9uaW5nIE5JQyBkcml2ZXJzIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhhdCYjMzk7cyBgc3RtbWFjYCB0byBhIHRlZTogYSBTeW5vcHN5cyBEZXNpZ25XYXJlIE1BQyAoRFdNQUMpIElQIGRyaXZlciwgd2hldGhlciBvbiBhbiBTVE1pY3JvZWxlY3Ryb25pY3MgU29DIG9yIGEgUENJIGFkZC1pbiBib2FyZC4gU2VjdGlvbiAzIG91dGxpbmVzIHBvc2l0aXZlIGNyaXRlcmlhLCBidXQgbm9uZSBvZiB0aG9zZSBhcHBseSBoZXJlLiBUaGVyZSYjMzk7cyBubyB2aXJ0dWFsIGJ1cyBhY2Nlc3MsIG5vIGxvb3BiYWNrLCBubyBjb21tb24gc29ja2V0IHVzYWdlIOKAkyBub3RoaW5nIHRoYXQgZ2l2ZXMgYSBwYXRoIGludG8gdGhpcyBjb2RlIGluIGEgc3RhbmRhcmQgZnV6emluZyBzZXR1cC4KClRoZXJlZm9yZSwgdGhlIGZpeCwgYmVpbmcgZm9jdXNlZCBvbiBFU1QgKFNjaGVkdWxlZCBUcmFmZmljIC8gVEFQUklPKSBsaWZlY3ljbGUgYW5kIGNvbmZpZ3VyYXRpb24gd2l0aGluIHRoZSBgc3RtbWFjYCBkcml2ZXIsIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4gSXQgbmVlZHMgcGh5c2ljYWwgaGFyZHdhcmUsIHdoaWNoIG1lYW5zIGl0IGNhbiYjMzk7dCBiZSByZWFjaGVkIGJ5IHN0YW5kYXJkIGZ1enppbmcuCgpNeSBmaW5hbCB2ZXJpZmljYXRpb24gY29uZmlybXMgYWxsIG1vZGlmaWVkIGZpbGVzIGFyZSBpbmRlZWQgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvYCBkaXJlY3RvcnkuCgpTbywgSSYjMzk7bSBjb25maWRlbnQgaW4gc2V0dGluZyB0aGUgcmVzdWx0czogYFdvcnRoRnV6emluZz1mYWxzZWAsIGBFbmFibGVDb25maWdzPVtdYCwgYEZvY3VzU3ltYm9scz1bXWAuIFRoZSByZWFzb25pbmcgaXMgY2xlYXI6IHRoZSBgc3RtbWFjYCBkcml2ZXIgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlIGluIHRoZSBjb250ZXh0IG9mIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cy4KV2UmIzM5O3JlIGRvbmUgaGVyZSwgbGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTk6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyIHRvIGhhbmRsZSBFU1QgKEVuaGFuY2VtZW50cyBmb3IgU2NoZWR1bGVkIFRyYWZmaWMgLyBUQVBSSU8pIHNldHVwIGFuZCBsaWZlY3ljbGUuIFRoaXMgZHJpdmVyIGNvbnRyb2xzIHBoeXNpY2FsIFNvQy9QQ0kgRXRoZXJuZXQgTUFDIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIFFFTVUvR0NFIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyIHRvIGhhbmRsZSBFU1QgKEVuaGFuY2VtZW50cyBmb3IgU2NoZWR1bGVkIFRyYWZmaWMgLyBUQVBSSU8pIHNldHVwIGFuZCBsaWZlY3ljbGUuIFRoaXMgZHJpdmVyIGNvbnRyb2xzIHBoeXNpY2FsIFNvQy9QQ0kgRXRoZXJuZXQgTUFDIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIFFFTVUvR0NFIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxOTozMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDNUMTk6MzI6MzcuODYzNzI5NzIxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY0MzYzOTUwNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyIHRvIGhhbmRsZSBFU1QgKEVuaGFuY2VtZW50cyBmb3IgU2NoZWR1bGVkIFRyYWZmaWMgLyBUQVBSSU8pIHNldHVwIGFuZCBsaWZlY3ljbGUuIFRoaXMgZHJpdmVyIGNvbnRyb2xzIHBoeXNpY2FsIFNvQy9QQ0kgRXRoZXJuZXQgTUFDIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIFFFTVUvR0NFIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QxOTozMjozNy44NjM3MzQ3ODFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1ODIyNzg2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGM5ZjZmNzQwYTNmOTVkNWNhYzhkNmQ0NDkxNDI1NDFmZWYyOTUyMDNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBTZXAgMyAxOTozMjozNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmhcXG5pbmRleCAwNGRhZmVjMDIxYjRmLi5lNTU3OTE2NmRmMWE1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaFxcbkBAIC02MjAsNyArNjIwLDcgQEAgc3RydWN0IHN0bW1hY19tbWNfb3BzIHtcXG4gXFxuIHN0cnVjdCBzdG1tYWNfZXN0X29wcyB7XFxuIFxcdGludCAoKmNvbmZpZ3VyZSkoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3Qgc3RtbWFjX2VzdCAqY2ZnLFxcbi1cXHRcXHRcXHQgdW5zaWduZWQgaW50IHB0cF9yYXRlKTtcXG4rXFx0XFx0XFx0IHVuc2lnbmVkIGludCBwdHBfcmF0ZSwgYm9vbCBlbmFibGUpO1xcbiBcXHR2b2lkICgqaXJxX3N0YXR1cykoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRcXHRcXHQgICBzdHJ1Y3Qgc3RtbWFjX2V4dHJhX3N0YXRzICp4LCB1MzIgdHhxY250KTtcXG4gfTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaFxcbmluZGV4IDc1ODJmY2E2Mzc0MTkuLmE4YzhiZTM0ZmY4MTQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaFxcbkBAIC0yOTgsNyArMjk4LDcgQEAgc3RydWN0IHN0bW1hY19wcml2IHtcXG4gXFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0O1xcbiBcXHQvKiBQcm90ZWN0IGVzdCBwYXJhbWV0ZXJzICovXFxuIFxcdHN0cnVjdCBtdXRleCBlc3RfbG9jaztcXG4tXFx0c3RydWN0IHN0bW1hY19lc3QgKmVzdDtcXG4rXFx0c3RydWN0IHN0bW1hY19lc3QgZXN0O1xcbiBcXHRzdHJ1Y3QgZG1hX2ZlYXR1cmVzIGRtYV9jYXA7XFxuIFxcdHN0cnVjdCBzdG1tYWNfY291bnRlcnMgbW1jO1xcbiBcXHRpbnQgaHdfY2FwX3N1cHBvcnQ7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuY1xcbmluZGV4IGFmYzUxNjA1OWI4OTcuLjQ5ZWRmZWJiYzM5ZTAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5jXFxuQEAgLTI2LDcgKzI2LDcgQEAgc3RhdGljIGludCBlc3Rfd3JpdGUodm9pZCBfX2lvbWVtICplc3RfYWRkciwgdTMyIHJlZywgdTMyIHZhbCwgYm9vbCBnY2wpXFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgZXN0X2NvbmZpZ3VyZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBzdG1tYWNfZXN0ICpjZmcsXFxuLVxcdFxcdFxcdCB1bnNpZ25lZCBpbnQgcHRwX3JhdGUpXFxuK1xcdFxcdFxcdCB1bnNpZ25lZCBpbnQgcHRwX3JhdGUsIGJvb2wgZW5hYmxlKVxcbiB7XFxuIFxcdHZvaWQgX19pb21lbSAqZXN0X2FkZHIgPSBwcml2LVxcdTAwM2Vlc3RhZGRyO1xcbiBcXHRpbnQgaSwgcmV0ID0gMDtcXG5AQCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgaW50IGVzdF9jb25maWd1cmUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3Qgc3RtbWFjX2VzdCAqY2ZnLFxcbiBcXHRcXHRjdHJsIHw9ICgoTlNFQ19QRVJfU0VDIC8gcHRwX3JhdGUpICogRVNUX0dNQUM1X1BUT1ZfTVVMKSBcXHUwMDNjXFx1MDAzY1xcbiBcXHRcXHRcXHQgRVNUX0dNQUM1X1BUT1ZfU0hJRlQ7XFxuIFxcdH1cXG4tXFx0aWYgKGNmZy1cXHUwMDNlZW5hYmxlKVxcbitcXHRpZiAoZW5hYmxlKVxcbiBcXHRcXHRjdHJsIHw9IEVTVF9FRVNUIHwgRVNUX1NTV0wgfCBFU1RfREZCUztcXG4gXFx0ZWxzZVxcbiBcXHRcXHRjdHJsIFxcdTAwMjY9IH5FU1RfRUVTVDtcXG5AQCAtNzAsNyArNzAsNyBAQCBzdGF0aWMgaW50IGVzdF9jb25maWd1cmUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3Qgc3RtbWFjX2VzdCAqY2ZnLFxcbiBcXHR3cml0ZWwoY3RybCwgZXN0X2FkZHIgKyBFU1RfQ09OVFJPTCk7XFxuIFxcbiBcXHQvKiBDb25maWd1cmUgRVNUIGludGVycnVwdCAqL1xcbi1cXHRpZiAoY2ZnLVxcdTAwM2VlbmFibGUpXFxuK1xcdGlmIChlbmFibGUpXFxuIFxcdFxcdGN0cmwgPSBFU1RfSUVDR0NFIHwgRVNUX0lFSFMgfCBFU1RfSUVIRiB8IEVTVF9JRUJFIHwgRVNUX0lFQ0M7XFxuIFxcdGVsc2VcXG4gXFx0XFx0Y3RybCA9IDA7XFxuQEAgLTgwLDYgKzgwLDM2IEBAIHN0YXRpYyBpbnQgZXN0X2NvbmZpZ3VyZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBzdG1tYWNfZXN0ICpjZmcsXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitpbnQgX19zdG1tYWNfc2V0dXBfZXN0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4re1xcbitcXHRzdHJ1Y3QgdGltZXNwZWM2NCBjdXJyZW50X3RpbWUsIHRpbWU7XFxuK1xcdGt0aW1lX3QgY3VycmVudF90aW1lX25zLCBiYXNldGltZTtcXG4rXFx0dTY0IGN5Y2xlX3RpbWU7XFxuK1xcdGludCBlcnI7XFxuK1xcbitcXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFxcdTAwMjZwcml2LVxcdTAwM2Vlc3RfbG9jayk7XFxuK1xcbitcXHRwcml2LVxcdTAwM2VwdHBfY2xvY2tfb3BzLmdldHRpbWU2NChcXHUwMDI2cHJpdi1cXHUwMDNlcHRwX2Nsb2NrX29wcywgXFx1MDAyNmN1cnJlbnRfdGltZSk7XFxuK1xcdGN1cnJlbnRfdGltZV9ucyA9IHRpbWVzcGVjNjRfdG9fa3RpbWUoY3VycmVudF90aW1lKTtcXG4rXFxuK1xcdHRpbWUudHZfbnNlYyA9IHByaXYtXFx1MDAzZWVzdC5idHJfcmVzZXJ2ZVswXTtcXG4rXFx0dGltZS50dl9zZWMgPSBwcml2LVxcdTAwM2Vlc3QuYnRyX3Jlc2VydmVbMV07XFxuK1xcdGJhc2V0aW1lID0gdGltZXNwZWM2NF90b19rdGltZSh0aW1lKTtcXG4rXFxuK1xcdGN5Y2xlX3RpbWUgPSAodTY0KXByaXYtXFx1MDAzZWVzdC5jdHJbMV0gKiBOU0VDX1BFUl9TRUMgKyBwcml2LVxcdTAwM2Vlc3QuY3RyWzBdO1xcbitcXG4rXFx0dGltZSA9IHN0bW1hY19jYWxjX3Rhc19iYXNldGltZShiYXNldGltZSwgY3VycmVudF90aW1lX25zLCBjeWNsZV90aW1lKTtcXG4rXFx0cHJpdi1cXHUwMDNlZXN0LmJ0clswXSA9ICh1MzIpdGltZS50dl9uc2VjO1xcbitcXHRwcml2LVxcdTAwM2Vlc3QuYnRyWzFdID0gKHUzMil0aW1lLnR2X3NlYztcXG4rXFxuK1xcdGVyciA9IHN0bW1hY19lc3RfY29uZmlndXJlKHByaXYsIHByaXYsIFxcdTAwMjZwcml2LVxcdTAwM2Vlc3QsXFxuK1xcdFxcdFxcdFxcdCAgIHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWNsa19wdHBfcmF0ZSwgdHJ1ZSk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdG5ldGRldl9lcnIocHJpdi1cXHUwMDNlZGV2LCBcXFwiZmFpbGVkIHRvIHJlLWNvbmZpZ3VyZSBFU1RcXFxcblxcXCIpO1xcbitcXG4rXFx0cmV0dXJuIGVycjtcXG4rfVxcbitcXG4gc3RhdGljIHZvaWQgZXN0X2lycV9zdGF0dXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRcXHRcXHQgICBzdHJ1Y3Qgc3RtbWFjX2V4dHJhX3N0YXRzICp4LCB1MzIgdHhxY250KVxcbiB7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuaFxcbmluZGV4IGY3MDIyMWM5Yzg0YWYuLmI0ZDFhMWYwNGYxMDggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5oXFxuQEAgLTY1LDMgKzY1LDE2IEBAXFxuICNkZWZpbmUgRVNUX0dDTF9EQVRBXFx0XFx0XFx0MHgwMDAwMDAzNFxcbiBcXG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBzdG1tYWNfZXN0X29wcyBkd21hYzUxMF9lc3Rfb3BzO1xcbitcXG4raW50IF9fc3RtbWFjX3NldHVwX2VzdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpO1xcbitzdGF0aWMgaW5saW5lIGludCBzdG1tYWNfc2V0dXBfZXN0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4re1xcbitcXHRpbnQgcmV0ID0gMDtcXG4rXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZWVzdF9sb2NrKTtcXG4rXFx0aWYgKHByaXYtXFx1MDAzZWVzdC5lbmFibGUpXFxuK1xcdFxcdHJldCA9IF9fc3RtbWFjX3NldHVwX2VzdChwcml2KTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2Vlc3RfbG9jayk7XFxuK1xcbitcXHRyZXR1cm4gcmV0O1xcbit9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuaW5kZXggZDU3NjA1OWMwNGRmOS4uYzRkMzUzOTQ4MzQ3MyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbkBAIC00OCw2ICs0OCw3IEBAXFxuICNpbmNsdWRlIFxcXCJzdG1tYWNfcHRwLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJzdG1tYWNfZnBlLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJzdG1tYWMuaFxcXCJcXG4rI2luY2x1ZGUgXFxcInN0bW1hY19lc3QuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInN0bW1hY19wY3MuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInN0bW1hY194ZHAuaFxcXCJcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Jlc2V0LmhcXHUwMDNlXFxuQEAgLTkzNywxOCArOTM4LDI3IEBAIHN0YXRpYyBpbnQgc3RtbWFjX2luaXRfdGltZXN0YW1waW5nKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkIHN0bW1hY19zZXR1cF9wdHAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbitzdGF0aWMgaW50IHN0bW1hY19zZXR1cF9wdHAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbiB7XFxuIFxcdGludCByZXQ7XFxuIFxcbiBcXHRyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY2xrX3B0cF9yZWYpO1xcbi1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4rXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4gXFx0XFx0bmV0ZGV2X3dhcm4ocHJpdi1cXHUwMDNlZGV2LFxcbiBcXHRcXHRcXHQgICAgXFxcImZhaWxlZCB0byBlbmFibGUgUFRQIHJlZmVyZW5jZSBjbG9jazogJXBlXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHQgICAgRVJSX1BUUihyZXQpKTtcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0fVxcbitcXG4rXFx0cmV0ID0gc3RtbWFjX2luaXRfdGltZXN0YW1waW5nKHByaXYpO1xcbitcXHRpZiAocmV0KSB7XFxuK1xcdFxcdGNsa19kaXNhYmxlX3VucHJlcGFyZShwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VjbGtfcHRwX3JlZik7XFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcdH1cXG4gXFxuLVxcdGlmIChzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcocHJpdikgPT0gMClcXG4tXFx0XFx0c3RtbWFjX3B0cF9yZWdpc3Rlcihwcml2KTtcXG4rXFx0c3RtbWFjX3B0cF9yZWdpc3Rlcihwcml2KTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBzdG1tYWNfcmVsZWFzZV9wdHAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbkBAIC0yNzE0LDkgKzI3MjQsOCBAQCBzdGF0aWMgYm9vbCBzdG1tYWNfeGRwX3htaXRfemMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUsIHUzMiBidWRnZXQpXFxuIFxcdFxcdGlmICgheHNrX3R4X3BlZWtfZGVzYyhwb29sLCBcXHUwMDI2eGRwX2Rlc2MpKVxcbiBcXHRcXHRcXHRicmVhaztcXG4gXFxuLVxcdFxcdGlmIChwcml2LVxcdTAwM2Vlc3QgXFx1MDAyNlxcdTAwMjYgcHJpdi1cXHUwMDNlZXN0LVxcdTAwM2VlbmFibGUgXFx1MDAyNlxcdTAwMjZcXG4tXFx0XFx0ICAgIHByaXYtXFx1MDAzZWVzdC1cXHUwMDNlbWF4X3NkdVtxdWV1ZV0gXFx1MDAyNlxcdTAwMjZcXG4tXFx0XFx0ICAgIHhkcF9kZXNjLmxlbiBcXHUwMDNlIHByaXYtXFx1MDAzZWVzdC1cXHUwMDNlbWF4X3NkdVtxdWV1ZV0pIHtcXG4rXFx0XFx0aWYgKHByaXYtXFx1MDAzZWVzdC5lbmFibGUgXFx1MDAyNlxcdTAwMjYgcHJpdi1cXHUwMDNlZXN0Lm1heF9zZHVbcXVldWVdIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICB4ZHBfZGVzYy5sZW4gXFx1MDAzZSBwcml2LVxcdTAwM2Vlc3QubWF4X3NkdVtxdWV1ZV0pIHtcXG4gXFx0XFx0XFx0cHJpdi1cXHUwMDNleHN0YXRzLm1heF9zZHVfdHhxX2Ryb3BbcXVldWVdKys7XFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXHRcXHR9XFxuQEAgLTQxNTMsMTAgKzQxNjIsMTkgQEAgc3RhdGljIGludCBfX3N0bW1hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdHJldCA9IHN0bW1hY19od19zZXR1cChkZXYpO1xcbiBcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbiBcXHRcXHRuZXRkZXZfZXJyKHByaXYtXFx1MDAzZWRldiwgXFxcIiVzOiBIdyBzZXR1cCBmYWlsZWRcXFxcblxcXCIsIF9fZnVuY19fKTtcXG4tXFx0XFx0Z290byBpbml0X2Vycm9yO1xcbitcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXHR9XFxuIFxcbi1cXHRzdG1tYWNfc2V0dXBfcHRwKHByaXYpO1xcbitcXHRyZXQgPSBzdG1tYWNfc2V0dXBfcHRwKHByaXYpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRnb3RvIHB0cF9lcnJvcjtcXG4rXFxuK1xcdC8qIFRoZSBjb3JlIHNvZnQgcmVzZXQgaW4gc3RtbWFjX2h3X3NldHVwKCkgY2xlYXJzIHRoZSBNVExfRVNUXFxuK1xcdCAqIHJlZ2lzdGVycywgc28gcmUtYXBwbHkgdGhlIHRhcHJpbyBvZmZsb2FkIGFmdGVyIFBUUCBpcyB1cC5cXG4rXFx0ICovXFxuK1xcdHJldCA9IHN0bW1hY19zZXR1cF9lc3QocHJpdik7XFxuK1xcdGlmIChyZXQgXFx1MDAzYyAwKVxcbitcXHRcXHRnb3RvIGVzdF9lcnJvcjtcXG4gXFxuIFxcdHN0bW1hY19pbml0X2NvYWxlc2NlKHByaXYpO1xcbiBcXG5AQCAtNDE3OSw5ICs0MTk3LDExIEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXG4gXFx0Zm9yIChjaGFuID0gMDsgY2hhbiBcXHUwMDNjIHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZXR4X3F1ZXVlc190b191c2U7IGNoYW4rKylcXG4gXFx0XFx0aHJ0aW1lcl9jYW5jZWwoXFx1MDAyNnByaXYtXFx1MDAzZWRtYV9jb25mLnR4X3F1ZXVlW2NoYW5dLnR4dGltZXIpO1xcbi1cXG4rZXN0X2Vycm9yOlxcbiBcXHRzdG1tYWNfcmVsZWFzZV9wdHAocHJpdik7XFxuLWluaXRfZXJyb3I6XFxuK3B0cF9lcnJvcjpcXG4rXFx0c3RtbWFjX3N0b3BfYWxsX2RtYShwcml2KTtcXG4rXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuQEAgLTQ3NzYsMTMgKzQ3OTYsMTIgQEAgc3RhdGljIG5ldGRldl90eF90IHN0bW1hY194bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcdGlmIChza2JfaXNfZ3NvKHNrYikpXFxuIFxcdFxcdHJldHVybiBzdG1tYWNfdHNvX3htaXQoc2tiLCBkZXYpO1xcbiBcXG4tXFx0aWYgKHByaXYtXFx1MDAzZWVzdCBcXHUwMDI2XFx1MDAyNiBwcml2LVxcdTAwM2Vlc3QtXFx1MDAzZWVuYWJsZSBcXHUwMDI2XFx1MDAyNlxcbi1cXHQgICAgcHJpdi1cXHUwMDNlZXN0LVxcdTAwM2VtYXhfc2R1W3F1ZXVlXSkge1xcbitcXHRpZiAocHJpdi1cXHUwMDNlZXN0LmVuYWJsZSBcXHUwMDI2XFx1MDAyNiBwcml2LVxcdTAwM2Vlc3QubWF4X3NkdVtxdWV1ZV0pIHtcXG4gXFx0XFx0c2R1X2xlbiA9IHNrYi1cXHUwMDNlbGVuO1xcbiBcXHRcXHQvKiBBZGQgVkxBTiB0YWcgbGVuZ3RoIGlmIFZMQU4gdGFnIGluc2VydGlvbiBvZmZsb2FkIGlzIHJlcXVlc3RlZCAqL1xcbiBcXHRcXHRpZiAocHJpdi1cXHUwMDNlZG1hX2NhcC52bGlucyBcXHUwMDI2XFx1MDAyNiBza2Jfdmxhbl90YWdfcHJlc2VudChza2IpKVxcbiBcXHRcXHRcXHRzZHVfbGVuICs9IFZMQU5fSExFTjtcXG4tXFx0XFx0aWYgKHNkdV9sZW4gXFx1MDAzZSBwcml2LVxcdTAwM2Vlc3QtXFx1MDAzZW1heF9zZHVbcXVldWVdKSB7XFxuK1xcdFxcdGlmIChzZHVfbGVuIFxcdTAwM2UgcHJpdi1cXHUwMDNlZXN0Lm1heF9zZHVbcXVldWVdKSB7XFxuIFxcdFxcdFxcdHByaXYtXFx1MDAzZXhzdGF0cy5tYXhfc2R1X3R4cV9kcm9wW3F1ZXVlXSsrO1xcbiBcXHRcXHRcXHRnb3RvIG1heF9zZHVfZXJyO1xcbiBcXHRcXHR9XFxuQEAgLTUxODYsOSArNTIwNSw4IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3hkcF94bWl0X3hkcGYoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBpbnQgcXVldWUsXFxuIFxcdGlmIChzdG1tYWNfdHhfYXZhaWwocHJpdiwgcXVldWUpIFxcdTAwM2MgU1RNTUFDX1RYX1RIUkVTSChwcml2KSlcXG4gXFx0XFx0cmV0dXJuIFNUTU1BQ19YRFBfQ09OU1VNRUQ7XFxuIFxcbi1cXHRpZiAocHJpdi1cXHUwMDNlZXN0IFxcdTAwMjZcXHUwMDI2IHByaXYtXFx1MDAzZWVzdC1cXHUwMDNlZW5hYmxlIFxcdTAwMjZcXHUwMDI2XFxuLVxcdCAgICBwcml2LVxcdTAwM2Vlc3QtXFx1MDAzZW1heF9zZHVbcXVldWVdIFxcdTAwMjZcXHUwMDI2XFxuLVxcdCAgICB4ZHBmLVxcdTAwM2VsZW4gXFx1MDAzZSBwcml2LVxcdTAwM2Vlc3QtXFx1MDAzZW1heF9zZHVbcXVldWVdKSB7XFxuK1xcdGlmIChwcml2LVxcdTAwM2Vlc3QuZW5hYmxlIFxcdTAwMjZcXHUwMDI2IHByaXYtXFx1MDAzZWVzdC5tYXhfc2R1W3F1ZXVlXSBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgeGRwZi1cXHUwMDNlbGVuIFxcdTAwM2UgcHJpdi1cXHUwMDNlZXN0Lm1heF9zZHVbcXVldWVdKSB7XFxuIFxcdFxcdHByaXYtXFx1MDAzZXhzdGF0cy5tYXhfc2R1X3R4cV9kcm9wW3F1ZXVlXSsrO1xcbiBcXHRcXHRyZXR1cm4gU1RNTUFDX1hEUF9DT05TVU1FRDtcXG4gXFx0fVxcbkBAIC04MDE3LDYgKzgwMzUsNyBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsXFxuIFxcdHN0bW1hY19uYXBpX2FkZChuZGV2KTtcXG4gXFxuIFxcdG11dGV4X2luaXQoXFx1MDAyNnByaXYtXFx1MDAzZWxvY2spO1xcbitcXHRtdXRleF9pbml0KFxcdTAwMjZwcml2LVxcdTAwM2Vlc3RfbG9jayk7XFxuIFxcbiBcXHRzdG1tYWNfZnBlX2luaXQocHJpdik7XFxuIFxcbkBAIC04MTQ4LDYgKzgxNjcsNyBAQCB2b2lkIHN0bW1hY19kdnJfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFx0c3RtbWFjX21kaW9fdW5yZWdpc3RlcihuZGV2KTtcXG4gXFxuIFxcdGRlc3Ryb3lfd29ya3F1ZXVlKHByaXYtXFx1MDAzZXdxKTtcXG4rXFx0bXV0ZXhfZGVzdHJveShcXHUwMDI2cHJpdi1cXHUwMDNlZXN0X2xvY2spO1xcbiBcXHRtdXRleF9kZXN0cm95KFxcdTAwMjZwcml2LVxcdTAwM2Vsb2NrKTtcXG4gXFx0Yml0bWFwX2ZyZWUocHJpdi1cXHUwMDNlYWZfeGRwX3pjX3Fwcyk7XFxuIFxcbkBAIC04MzE4LDEzICs4MzM4LDE2IEBAIGludCBzdG1tYWNfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFx0cmV0ID0gc3RtbWFjX2h3X3NldHVwKG5kZXYpO1xcbiBcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbiBcXHRcXHRuZXRkZXZfZXJyKHByaXYtXFx1MDAzZWRldiwgXFxcIiVzOiBIdyBzZXR1cCBmYWlsZWRcXFxcblxcXCIsIF9fZnVuY19fKTtcXG4tXFx0XFx0c3RtbWFjX2xlZ2FjeV9zZXJkZXNfcG93ZXJfZG93bihwcml2KTtcXG4tXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2Vsb2NrKTtcXG4tXFx0XFx0cnRubF91bmxvY2soKTtcXG4tXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0XFx0Z290byBlcnJvcl91bmxvY2s7XFxuIFxcdH1cXG4gXFxuLVxcdHN0bW1hY19pbml0X3RpbWVzdGFtcGluZyhwcml2KTtcXG4rXFx0cmV0ID0gc3RtbWFjX2luaXRfdGltZXN0YW1waW5nKHByaXYpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRnb3RvIGVycm9yX3N0b3BfZG1hO1xcbitcXG4rXFx0cmV0ID0gc3RtbWFjX3NldHVwX2VzdChwcml2KTtcXG4rXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuK1xcdFxcdGdvdG8gZXJyb3Jfc3RvcF9kbWE7XFxuIFxcbiBcXHRzdG1tYWNfaW5pdF9jb2FsZXNjZShwcml2KTtcXG4gXFx0cGh5bGlua19yeF9jbGtfc3RvcF9ibG9jayhwcml2LVxcdTAwM2VwaHlsaW5rKTtcXG5AQCAtODM0OCw2ICs4MzcxLDE1IEBAIGludCBzdG1tYWNfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFx0bmV0aWZfZGV2aWNlX2F0dGFjaChuZGV2KTtcXG4gXFxuIFxcdHJldHVybiAwO1xcbitcXG4rZXJyb3Jfc3RvcF9kbWE6XFxuK1xcdHN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7XFxuK2Vycm9yX3VubG9jazpcXG4rXFx0c3RtbWFjX2xlZ2FjeV9zZXJkZXNfcG93ZXJfZG93bihwcml2KTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2Vsb2NrKTtcXG4rXFx0cnRubF91bmxvY2soKTtcXG4rXFxuK1xcdHJldHVybiByZXQ7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3Jlc3VtZSk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcHRwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcHRwLmNcXG5pbmRleCA5NjAyNDk5NjAwMDRjLi44ZjNhOTBkZjMxNzhjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wdHAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wdHAuY1xcbkBAIC04LDYgKzgsNyBAQFxcbiAgIEF1dGhvcjogUmF5YWdvbmQgS29rYXRhbnVyIFxcdTAwM2NyYXlhZ29uZEB2YXlhdnlhbGFicy5jb21cXHUwMDNlXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuICNpbmNsdWRlIFxcXCJzdG1tYWMuaFxcXCJcXG4rI2luY2x1ZGUgXFxcInN0bW1hY19lc3QuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInN0bW1hY19wdHAuaFxcXCJcXG4gXFxuICNkZWZpbmUgUFRQX1NBRkVfVElNRV9PRkZTRVRfTlNcXHQ1MDAwMDBcXG5AQCAtNTUsNyArNTYsNiBAQCBzdGF0aWMgaW50IHN0bW1hY19hZGp1c3RfdGltZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgczY0IGRlbHRhKVxcbiBcXHR1MzIgcXVvdGllbnQsIHJlbWluZGVyO1xcbiBcXHRpbnQgbmVnX2FkaiA9IDA7XFxuIFxcdGJvb2wgeG1hYywgZXN0X3JzdCA9IGZhbHNlO1xcbi1cXHRpbnQgcmV0O1xcbiBcXG4gXFx0eG1hYyA9IGR3bWFjX2lzX3htYWMocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY29yZV90eXBlKTtcXG4gXFxuQEAgLTY5LDQ2ICs2OSwyMSBAQCBzdGF0aWMgaW50IHN0bW1hY19hZGp1c3RfdGltZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgczY0IGRlbHRhKVxcbiBcXHRuc2VjID0gcmVtaW5kZXI7XFxuIFxcbiBcXHQvKiBJZiBFU1QgaXMgZW5hYmxlZCwgZGlzYWJsZWQgaXQgYmVmb3JlIGFkanVzdCBwdHAgdGltZS4gKi9cXG4tXFx0aWYgKHByaXYtXFx1MDAzZWVzdCBcXHUwMDI2XFx1MDAyNiBwcml2LVxcdTAwM2Vlc3QtXFx1MDAzZWVuYWJsZSkge1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2Vlc3RfbG9jayk7XFxuK1xcdGlmIChwcml2LVxcdTAwM2Vlc3QuZW5hYmxlKSB7XFxuIFxcdFxcdGVzdF9yc3QgPSB0cnVlO1xcbi1cXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2Vlc3RfbG9jayk7XFxuLVxcdFxcdHByaXYtXFx1MDAzZWVzdC1cXHUwMDNlZW5hYmxlID0gZmFsc2U7XFxuLVxcdFxcdHN0bW1hY19lc3RfY29uZmlndXJlKHByaXYsIHByaXYsIHByaXYtXFx1MDAzZWVzdCxcXG4tXFx0XFx0XFx0XFx0ICAgICBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VjbGtfcHRwX3JhdGUpO1xcbi1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZWVzdF9sb2NrKTtcXG4rXFx0XFx0c3RtbWFjX2VzdF9jb25maWd1cmUocHJpdiwgcHJpdiwgXFx1MDAyNnByaXYtXFx1MDAzZWVzdCxcXG4rXFx0XFx0XFx0XFx0ICAgICBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VjbGtfcHRwX3JhdGUsIGZhbHNlKTtcXG4gXFx0fVxcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZWVzdF9sb2NrKTtcXG4gXFxuIFxcdHdyaXRlX2xvY2tfaXJxc2F2ZShcXHUwMDI2cHJpdi1cXHUwMDNlcHRwX2xvY2ssIGZsYWdzKTtcXG4gXFx0c3RtbWFjX2FkanVzdF9zeXN0aW1lKHByaXYsIHByaXYtXFx1MDAzZXB0cGFkZHIsIHNlYywgbnNlYywgbmVnX2FkaiwgeG1hYyk7XFxuIFxcdHdyaXRlX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZwcml2LVxcdTAwM2VwdHBfbG9jaywgZmxhZ3MpO1xcbiBcXG4gXFx0LyogQ2FsY3VsYXRlIG5ldyBiYXNldGltZSBhbmQgcmUtY29uZmlndXJlZCBFU1QgYWZ0ZXIgUFRQIHRpbWUgYWRqdXN0LiAqL1xcbi1cXHRpZiAoZXN0X3JzdCkge1xcbi1cXHRcXHRzdHJ1Y3QgdGltZXNwZWM2NCBjdXJyZW50X3RpbWUsIHRpbWU7XFxuLVxcdFxcdGt0aW1lX3QgY3VycmVudF90aW1lX25zLCBiYXNldGltZTtcXG4tXFx0XFx0dTY0IGN5Y2xlX3RpbWU7XFxuLVxcbi1cXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2Vlc3RfbG9jayk7XFxuLVxcdFxcdHByaXYtXFx1MDAzZXB0cF9jbG9ja19vcHMuZ2V0dGltZTY0KFxcdTAwMjZwcml2LVxcdTAwM2VwdHBfY2xvY2tfb3BzLCBcXHUwMDI2Y3VycmVudF90aW1lKTtcXG4tXFx0XFx0Y3VycmVudF90aW1lX25zID0gdGltZXNwZWM2NF90b19rdGltZShjdXJyZW50X3RpbWUpO1xcbi1cXHRcXHR0aW1lLnR2X25zZWMgPSBwcml2LVxcdTAwM2Vlc3QtXFx1MDAzZWJ0cl9yZXNlcnZlWzBdO1xcbi1cXHRcXHR0aW1lLnR2X3NlYyA9IHByaXYtXFx1MDAzZWVzdC1cXHUwMDNlYnRyX3Jlc2VydmVbMV07XFxuLVxcdFxcdGJhc2V0aW1lID0gdGltZXNwZWM2NF90b19rdGltZSh0aW1lKTtcXG4tXFx0XFx0Y3ljbGVfdGltZSA9ICh1NjQpcHJpdi1cXHUwMDNlZXN0LVxcdTAwM2VjdHJbMV0gKiBOU0VDX1BFUl9TRUMgK1xcbi1cXHRcXHRcXHQgICAgIHByaXYtXFx1MDAzZWVzdC1cXHUwMDNlY3RyWzBdO1xcbi1cXHRcXHR0aW1lID0gc3RtbWFjX2NhbGNfdGFzX2Jhc2V0aW1lKGJhc2V0aW1lLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHRjdXJyZW50X3RpbWVfbnMsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdGN5Y2xlX3RpbWUpO1xcbi1cXG4tXFx0XFx0cHJpdi1cXHUwMDNlZXN0LVxcdTAwM2VidHJbMF0gPSAodTMyKXRpbWUudHZfbnNlYztcXG4tXFx0XFx0cHJpdi1cXHUwMDNlZXN0LVxcdTAwM2VidHJbMV0gPSAodTMyKXRpbWUudHZfc2VjO1xcbi1cXHRcXHRwcml2LVxcdTAwM2Vlc3QtXFx1MDAzZWVuYWJsZSA9IHRydWU7XFxuLVxcdFxcdHJldCA9IHN0bW1hY19lc3RfY29uZmlndXJlKHByaXYsIHByaXYsIHByaXYtXFx1MDAzZWVzdCxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY2xrX3B0cF9yYXRlKTtcXG4tXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2Vlc3RfbG9jayk7XFxuLVxcdFxcdGlmIChyZXQpXFxuLVxcdFxcdFxcdG5ldGRldl9lcnIocHJpdi1cXHUwMDNlZGV2LCBcXFwiZmFpbGVkIHRvIGNvbmZpZ3VyZSBFU1RcXFxcblxcXCIpO1xcbi1cXHR9XFxuK1xcdGlmIChlc3RfcnN0KVxcbitcXHRcXHRzdG1tYWNfc2V0dXBfZXN0KHByaXYpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuY1xcbmluZGV4IDE0Y2FiZTc2ZTUzZWMuLjk3NDVjOWJhZTMzYzEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuY1xcbkBAIC0xMCw2ICsxMCw3IEBAXFxuICNpbmNsdWRlIFxcXCJkd21hYzQuaFxcXCJcXG4gI2luY2x1ZGUgXFxcImR3bWFjNS5oXFxcIlxcbiAjaW5jbHVkZSBcXFwic3RtbWFjLmhcXFwiXFxuKyNpbmNsdWRlIFxcXCJzdG1tYWNfZXN0LmhcXFwiXFxuIFxcbiBzdGF0aWMgdm9pZCB0Y19maWxsX2FsbF9wYXNzX2VudHJ5KHN0cnVjdCBzdG1tYWNfdGNfZW50cnkgKmVudHJ5KVxcbiB7XFxuQEAgLTk1OSw3ICs5NjAsNyBAQCBzdGF0aWMgdm9pZCB0Y190YXByaW9fbWFwX21heHNkdV90eHEoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbiBcXHRcXHRjb3VudCA9IHFvcHQtXFx1MDAzZW1xcHJpby5xb3B0LmNvdW50W2ldO1xcbiBcXG4gXFx0XFx0Zm9yIChqID0gb2Zmc2V0OyBqIFxcdTAwM2Mgb2Zmc2V0ICsgY291bnQ7IGorKylcXG4tXFx0XFx0XFx0cHJpdi1cXHUwMDNlZXN0LVxcdTAwM2VtYXhfc2R1W2pdID0gcW9wdC1cXHUwMDNlbWF4X3NkdVtpXSArIEVUSF9ITEVOIC0gRVRIX1RMRU47XFxuK1xcdFxcdFxcdHByaXYtXFx1MDAzZWVzdC5tYXhfc2R1W2pdID0gcW9wdC1cXHUwMDNlbWF4X3NkdVtpXSArIEVUSF9ITEVOIC0gRVRIX1RMRU47XFxuIFxcdH1cXG4gfVxcbiBcXG5AQCAtOTY4LDEwICs5NjksMTAgQEAgc3RhdGljIGludCB0Y190YXByaW9fY29uZmlndXJlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4ge1xcbiBcXHR1MzIgc2l6ZSwgd2lkID0gcHJpdi1cXHUwMDNlZG1hX2NhcC5lc3R3aWQsIGRlcCA9IHByaXYtXFx1MDAzZWRtYV9jYXAuZXN0ZGVwO1xcbiBcXHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2sgPSBxb3B0LVxcdTAwM2VtcXByaW8uZXh0YWNrO1xcbi1cXHRzdHJ1Y3QgdGltZXNwZWM2NCB0aW1lLCBjdXJyZW50X3RpbWUsIHFvcHRfdGltZTtcXG4tXFx0a3RpbWVfdCBjdXJyZW50X3RpbWVfbnM7XFxuK1xcdHU2NCBjdHIgPSBxb3B0LVxcdTAwM2VjeWNsZV90aW1lO1xcbitcXHRzdHJ1Y3QgdGltZXNwZWM2NCB0aW1lO1xcbitcXHR1MzIgKmdjbCA9IE5VTEw7XFxuIFxcdGludCBpLCByZXQgPSAwO1xcbi1cXHR1NjQgY3RyO1xcbiBcXG4gXFx0aWYgKHFvcHQtXFx1MDAzZWJhc2VfdGltZSBcXHUwMDNjIDApXFxuIFxcdFxcdHJldHVybiAtRVJBTkdFO1xcbkBAIC05NzksNiArOTgwLDkgQEAgc3RhdGljIGludCB0Y190YXByaW9fY29uZmlndXJlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4gXFx0aWYgKCFwcml2LVxcdTAwM2VkbWFfY2FwLmVzdHNlbClcXG4gXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiBcXG4rXFx0aWYgKGN0ciBcXHUwMDNlICh1NjQpVTMyX01BWCAqIE5TRUNfUEVSX1NFQylcXG4rXFx0XFx0cmV0dXJuIC1FUkFOR0U7XFxuK1xcbiBcXHRzd2l0Y2ggKHdpZCkge1xcbiBcXHRjYXNlIDB4MTpcXG4gXFx0XFx0d2lkID0gMTY7XFxuQEAgLTEwMTMsNDQgKzEwMTcsNDUgQEAgc3RhdGljIGludCB0Y190YXByaW9fY29uZmlndXJlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4gXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiBcXHR9XFxuIFxcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2Vlc3RfbG9jayk7XFxuK1xcbiBcXHRpZiAocW9wdC1cXHUwMDNlY21kID09IFRBUFJJT19DTURfREVTVFJPWSlcXG4gXFx0XFx0Z290byBkaXNhYmxlO1xcbiBcXG4tXFx0aWYgKHFvcHQtXFx1MDAzZW51bV9lbnRyaWVzIFxcdTAwM2UgZGVwKVxcbi1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tXFx0aWYgKCFxb3B0LVxcdTAwM2VjeWNsZV90aW1lKVxcbi1cXHRcXHRyZXR1cm4gLUVSQU5HRTtcXG4tXFx0aWYgKHFvcHQtXFx1MDAzZWN5Y2xlX3RpbWVfZXh0ZW5zaW9uIFxcdTAwM2U9IEJJVCh3aWQgKyA3KSlcXG4tXFx0XFx0cmV0dXJuIC1FUkFOR0U7XFxuLVxcbi1cXHRpZiAoIXByaXYtXFx1MDAzZWVzdCkge1xcbi1cXHRcXHRwcml2LVxcdTAwM2Vlc3QgPSBkZXZtX2t6YWxsb2MocHJpdi1cXHUwMDNlZGV2aWNlLCBzaXplb2YoKnByaXYtXFx1MDAzZWVzdCksXFxuLVxcdFxcdFxcdFxcdFxcdCBHRlBfS0VSTkVMKTtcXG4tXFx0XFx0aWYgKCFwcml2LVxcdTAwM2Vlc3QpXFxuLVxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXHRpZiAocW9wdC1cXHUwMDNlbnVtX2VudHJpZXMgXFx1MDAzZSBkZXApIHtcXG4rXFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4rXFx0XFx0Z290byB1bmxvY2s7XFxuK1xcdH1cXG4gXFxuLVxcdFxcdG11dGV4X2luaXQoXFx1MDAyNnByaXYtXFx1MDAzZWVzdF9sb2NrKTtcXG4tXFx0fSBlbHNlIHtcXG4tXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlZXN0X2xvY2spO1xcbi1cXHRcXHRtZW1zZXQocHJpdi1cXHUwMDNlZXN0LCAwLCBzaXplb2YoKnByaXYtXFx1MDAzZWVzdCkpO1xcbi1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZWVzdF9sb2NrKTtcXG4rXFx0aWYgKCFxb3B0LVxcdTAwM2VjeWNsZV90aW1lKSB7XFxuK1xcdFxcdHJldCA9IC1FUkFOR0U7XFxuK1xcdFxcdGdvdG8gdW5sb2NrO1xcbiBcXHR9XFxuIFxcbi1cXHRzaXplID0gcW9wdC1cXHUwMDNlbnVtX2VudHJpZXM7XFxuK1xcdGlmIChxb3B0LVxcdTAwM2VjeWNsZV90aW1lX2V4dGVuc2lvbiBcXHUwMDNlPSBCSVQod2lkICsgNykpIHtcXG4rXFx0XFx0cmV0ID0gLUVSQU5HRTtcXG4rXFx0XFx0Z290byB1bmxvY2s7XFxuK1xcdH1cXG4gXFxuLVxcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZWVzdF9sb2NrKTtcXG4tXFx0cHJpdi1cXHUwMDNlZXN0LVxcdTAwM2VnY2xfc2l6ZSA9IHNpemU7XFxuLVxcdHByaXYtXFx1MDAzZWVzdC1cXHUwMDNlZW5hYmxlID0gcW9wdC1cXHUwMDNlY21kID09IFRBUFJJT19DTURfUkVQTEFDRTtcXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2Vlc3RfbG9jayk7XFxuK1xcdGdjbCA9IGt6YWxsb2Moc2l6ZW9mKCpnY2wpICogRVNUX0dDTCwgR0ZQX0tFUk5FTCk7XFxuK1xcdGlmICghZ2NsKSB7XFxuK1xcdFxcdHJldCA9IC1FTk9NRU07XFxuK1xcdFxcdGdvdG8gdW5sb2NrO1xcbitcXHR9XFxuIFxcbitcXHRzaXplID0gcW9wdC1cXHUwMDNlbnVtX2VudHJpZXM7XFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBzaXplOyBpKyspIHtcXG4gXFx0XFx0czY0IGRlbHRhX25zID0gcW9wdC1cXHUwMDNlZW50cmllc1tpXS5pbnRlcnZhbDtcXG4gXFx0XFx0dTMyIGdhdGVzID0gcW9wdC1cXHUwMDNlZW50cmllc1tpXS5nYXRlX21hc2s7XFxuIFxcbi1cXHRcXHRpZiAoZGVsdGFfbnMgXFx1MDAzZSBHRU5NQVNLKHdpZCAtIDEsIDApKVxcbi1cXHRcXHRcXHRyZXR1cm4gLUVSQU5HRTtcXG4tXFx0XFx0aWYgKGdhdGVzIFxcdTAwM2UgR0VOTUFTSygzMSAtIHdpZCwgMCkpXFxuLVxcdFxcdFxcdHJldHVybiAtRVJBTkdFO1xcbitcXHRcXHRpZiAoZGVsdGFfbnMgXFx1MDAzZSBHRU5NQVNLKHdpZCAtIDEsIDApKSB7XFxuK1xcdFxcdFxcdHJldCA9IC1FUkFOR0U7XFxuK1xcdFxcdFxcdGdvdG8gZnJlZV9nY2w7XFxuK1xcdFxcdH1cXG4rXFx0XFx0aWYgKGdhdGVzIFxcdTAwM2UgR0VOTUFTSygzMSAtIHdpZCwgMCkpIHtcXG4rXFx0XFx0XFx0cmV0ID0gLUVSQU5HRTtcXG4rXFx0XFx0XFx0Z290byBmcmVlX2djbDtcXG4rXFx0XFx0fVxcbiBcXG4gXFx0XFx0c3dpdGNoIChxb3B0LVxcdTAwM2VlbnRyaWVzW2ldLmNvbW1hbmQpIHtcXG4gXFx0XFx0Y2FzZSBUQ19UQVBSSU9fQ01EX1NFVF9HQVRFUzpcXG5AQCAtMTA2Miw2NSArMTA2Nyw1OCBAQCBzdGF0aWMgaW50IHRjX3RhcHJpb19jb25maWd1cmUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbiBcXHRcXHRcXHRnYXRlcyBcXHUwMDI2PSB+QklUKDApO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0ZGVmYXVsdDpcXG4tXFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbitcXHRcXHRcXHRyZXQgPSAtRU9QTk9UU1VQUDtcXG4rXFx0XFx0XFx0Z290byBmcmVlX2djbDtcXG4gXFx0XFx0fVxcbiBcXG4tXFx0XFx0cHJpdi1cXHUwMDNlZXN0LVxcdTAwM2VnY2xbaV0gPSBkZWx0YV9ucyB8IChnYXRlcyBcXHUwMDNjXFx1MDAzYyB3aWQpO1xcbitcXHRcXHRnY2xbaV0gPSBkZWx0YV9ucyB8IChnYXRlcyBcXHUwMDNjXFx1MDAzYyB3aWQpO1xcbiBcXHR9XFxuIFxcbi1cXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2Vlc3RfbG9jayk7XFxuLVxcdC8qIEFkanVzdCBmb3IgcmVhbCBzeXN0ZW0gdGltZSAqL1xcbi1cXHRwcml2LVxcdTAwM2VwdHBfY2xvY2tfb3BzLmdldHRpbWU2NChcXHUwMDI2cHJpdi1cXHUwMDNlcHRwX2Nsb2NrX29wcywgXFx1MDAyNmN1cnJlbnRfdGltZSk7XFxuLVxcdGN1cnJlbnRfdGltZV9ucyA9IHRpbWVzcGVjNjRfdG9fa3RpbWUoY3VycmVudF90aW1lKTtcXG4tXFx0dGltZSA9IHN0bW1hY19jYWxjX3Rhc19iYXNldGltZShxb3B0LVxcdTAwM2ViYXNlX3RpbWUsIGN1cnJlbnRfdGltZV9ucyxcXG4tXFx0XFx0XFx0XFx0XFx0cW9wdC1cXHUwMDNlY3ljbGVfdGltZSk7XFxuLVxcbi1cXHRwcml2LVxcdTAwM2Vlc3QtXFx1MDAzZWJ0clswXSA9ICh1MzIpdGltZS50dl9uc2VjO1xcbi1cXHRwcml2LVxcdTAwM2Vlc3QtXFx1MDAzZWJ0clsxXSA9ICh1MzIpdGltZS50dl9zZWM7XFxuK1xcdG1lbXNldChcXHUwMDI2cHJpdi1cXHUwMDNlZXN0LCAwLCBzaXplb2YocHJpdi1cXHUwMDNlZXN0KSk7XFxuK1xcdG1lbWNweShwcml2LVxcdTAwM2Vlc3QuZ2NsLCBnY2wsIHNpemVvZihwcml2LVxcdTAwM2Vlc3QuZ2NsKSk7XFxuK1xcdHByaXYtXFx1MDAzZWVzdC5nY2xfc2l6ZSA9IHNpemU7XFxuIFxcbi1cXHRxb3B0X3RpbWUgPSBrdGltZV90b190aW1lc3BlYzY0KHFvcHQtXFx1MDAzZWJhc2VfdGltZSk7XFxuLVxcdHByaXYtXFx1MDAzZWVzdC1cXHUwMDNlYnRyX3Jlc2VydmVbMF0gPSAodTMyKXFvcHRfdGltZS50dl9uc2VjO1xcbi1cXHRwcml2LVxcdTAwM2Vlc3QtXFx1MDAzZWJ0cl9yZXNlcnZlWzFdID0gKHUzMilxb3B0X3RpbWUudHZfc2VjO1xcbitcXHR0aW1lID0ga3RpbWVfdG9fdGltZXNwZWM2NChxb3B0LVxcdTAwM2ViYXNlX3RpbWUpO1xcbitcXHRwcml2LVxcdTAwM2Vlc3QuYnRyX3Jlc2VydmVbMF0gPSAodTMyKXRpbWUudHZfbnNlYztcXG4rXFx0cHJpdi1cXHUwMDNlZXN0LmJ0cl9yZXNlcnZlWzFdID0gKHUzMil0aW1lLnR2X3NlYztcXG4gXFxuLVxcdGN0ciA9IHFvcHQtXFx1MDAzZWN5Y2xlX3RpbWU7XFxuLVxcdHByaXYtXFx1MDAzZWVzdC1cXHUwMDNlY3RyWzBdID0gZG9fZGl2KGN0ciwgTlNFQ19QRVJfU0VDKTtcXG4tXFx0cHJpdi1cXHUwMDNlZXN0LVxcdTAwM2VjdHJbMV0gPSAodTMyKWN0cjtcXG4tXFxuLVxcdHByaXYtXFx1MDAzZWVzdC1cXHUwMDNldGVyID0gcW9wdC1cXHUwMDNlY3ljbGVfdGltZV9leHRlbnNpb247XFxuK1xcdHByaXYtXFx1MDAzZWVzdC5jdHJbMF0gPSBkb19kaXYoY3RyLCBOU0VDX1BFUl9TRUMpO1xcbitcXHRwcml2LVxcdTAwM2Vlc3QuY3RyWzFdID0gKHUzMiljdHI7XFxuIFxcbitcXHRwcml2LVxcdTAwM2Vlc3QudGVyID0gcW9wdC1cXHUwMDNlY3ljbGVfdGltZV9leHRlbnNpb247XFxuIFxcdHRjX3RhcHJpb19tYXBfbWF4c2R1X3R4cShwcml2LCBxb3B0KTtcXG4gXFxuLVxcdHJldCA9IHN0bW1hY19lc3RfY29uZmlndXJlKHByaXYsIHByaXYsIHByaXYtXFx1MDAzZWVzdCxcXG4tXFx0XFx0XFx0XFx0ICAgcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY2xrX3B0cF9yYXRlKTtcXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2Vlc3RfbG9jayk7XFxuLVxcdGlmIChyZXQpIHtcXG4tXFx0XFx0bmV0ZGV2X2Vycihwcml2LVxcdTAwM2VkZXYsIFxcXCJmYWlsZWQgdG8gY29uZmlndXJlIEVTVFxcXFxuXFxcIik7XFxuK1xcdHJldCA9IF9fc3RtbWFjX3NldHVwX2VzdChwcml2KTtcXG4rXFx0aWYgKHJldClcXG4gXFx0XFx0Z290byBkaXNhYmxlO1xcbi1cXHR9XFxuIFxcbiBcXHRyZXQgPSBzdG1tYWNfZnBlX21hcF9wcmVlbXB0aW9uX2NsYXNzKHByaXYsIHByaXYtXFx1MDAzZWRldiwgZXh0YWNrLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICBxb3B0LVxcdTAwM2VtcXByaW8ucHJlZW1wdGlibGVfdGNzKTtcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0Z290byBkaXNhYmxlO1xcbiBcXG4rXFx0cHJpdi1cXHUwMDNlZXN0LmVuYWJsZSA9IHRydWU7XFxuK1xcdGtmcmVlKGdjbCk7XFxuK1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZWVzdF9sb2NrKTtcXG4rXFxuIFxcdHJldHVybiAwO1xcbiBcXG4gZGlzYWJsZTpcXG4tXFx0aWYgKHByaXYtXFx1MDAzZWVzdCkge1xcbi1cXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2Vlc3RfbG9jayk7XFxuLVxcdFxcdHByaXYtXFx1MDAzZWVzdC1cXHUwMDNlZW5hYmxlID0gZmFsc2U7XFxuLVxcdFxcdHN0bW1hY19lc3RfY29uZmlndXJlKHByaXYsIHByaXYsIHByaXYtXFx1MDAzZWVzdCxcXG4tXFx0XFx0XFx0XFx0ICAgICBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VjbGtfcHRwX3JhdGUpO1xcbi1cXHRcXHQvKiBSZXNldCB0YXByaW8gc3RhdHVzICovXFxuLVxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2V0eF9xdWV1ZXNfdG9fdXNlOyBpKyspIHtcXG4tXFx0XFx0XFx0cHJpdi1cXHUwMDNleHN0YXRzLm1heF9zZHVfdHhxX2Ryb3BbaV0gPSAwO1xcbi1cXHRcXHRcXHRwcml2LVxcdTAwM2V4c3RhdHMubXRsX2VzdF90eHFfaGxiZltpXSA9IDA7XFxuLVxcdFxcdFxcdHByaXYtXFx1MDAzZXhzdGF0cy5tdGxfZXN0X3R4cV9obGJzW2ldID0gMDtcXG4tXFx0XFx0fVxcbi1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZWVzdF9sb2NrKTtcXG4rXFx0cHJpdi1cXHUwMDNlZXN0LmVuYWJsZSA9IGZhbHNlO1xcbitcXHRzdG1tYWNfZXN0X2NvbmZpZ3VyZShwcml2LCBwcml2LCBcXHUwMDI2cHJpdi1cXHUwMDNlZXN0LFxcbitcXHRcXHRcXHQgICAgIHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWNsa19wdHBfcmF0ZSwgZmFsc2UpO1xcbitcXHQvKiBSZXNldCB0YXByaW8gc3RhdHVzICovXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2V0eF9xdWV1ZXNfdG9fdXNlOyBpKyspIHtcXG4rXFx0XFx0cHJpdi1cXHUwMDNleHN0YXRzLm1heF9zZHVfdHhxX2Ryb3BbaV0gPSAwO1xcbitcXHRcXHRwcml2LVxcdTAwM2V4c3RhdHMubXRsX2VzdF90eHFfaGxiZltpXSA9IDA7XFxuK1xcdFxcdHByaXYtXFx1MDAzZXhzdGF0cy5tdGxfZXN0X3R4cV9obGJzW2ldID0gMDtcXG4gXFx0fVxcbi1cXG4gXFx0c3RtbWFjX2ZwZV9tYXBfcHJlZW1wdGlvbl9jbGFzcyhwcml2LCBwcml2LVxcdTAwM2VkZXYsIGV4dGFjaywgMCk7XFxuK2ZyZWVfZ2NsOlxcbitcXHRrZnJlZShnY2wpO1xcbit1bmxvY2s6XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlZXN0X2xvY2spO1xcbiBcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QxOTozMjozOC4zMjI2MTUyMDFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjI1OTc3NDk3MDMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyIHRvIGhhbmRsZSBFU1QgKEVuaGFuY2VtZW50cyBmb3IgU2NoZWR1bGVkIFRyYWZmaWMgLyBUQVBSSU8pIHNldHVwIGFuZCBsaWZlY3ljbGUuIFRoaXMgZHJpdmVyIGNvbnRyb2xzIHBoeXNpY2FsIFNvQy9QQ0kgRXRoZXJuZXQgTUFDIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIFFFTVUvR0NFIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGM5ZjZmNzQwYTNmOTVkNWNhYzhkNmQ0NDkxNDI1NDFmZWYyOTUyMDNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAzIDE5OjMyOjM3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oXG5pbmRleCAwNGRhZmVjMDIxYjRmLi5lNTU3OTE2NmRmMWE1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmhcbkBAIC02MjAsNyArNjIwLDcgQEAgc3RydWN0IHN0bW1hY19tbWNfb3BzIHtcbiBcbiBzdHJ1Y3Qgc3RtbWFjX2VzdF9vcHMge1xuIFx0aW50ICgqY29uZmlndXJlKShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBzdG1tYWNfZXN0ICpjZmcsXG4tXHRcdFx0IHVuc2lnbmVkIGludCBwdHBfcmF0ZSk7XG4rXHRcdFx0IHVuc2lnbmVkIGludCBwdHBfcmF0ZSwgYm9vbCBlbmFibGUpO1xuIFx0dm9pZCAoKmlycV9zdGF0dXMpKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHQgICBzdHJ1Y3Qgc3RtbWFjX2V4dHJhX3N0YXRzICp4LCB1MzIgdHhxY250KTtcbiB9O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmhcbmluZGV4IDc1ODJmY2E2Mzc0MTkuLmE4YzhiZTM0ZmY4MTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmhcbkBAIC0yOTgsNyArMjk4LDcgQEAgc3RydWN0IHN0bW1hY19wcml2IHtcbiBcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdDtcbiBcdC8qIFByb3RlY3QgZXN0IHBhcmFtZXRlcnMgKi9cbiBcdHN0cnVjdCBtdXRleCBlc3RfbG9jaztcbi1cdHN0cnVjdCBzdG1tYWNfZXN0ICplc3Q7XG4rXHRzdHJ1Y3Qgc3RtbWFjX2VzdCBlc3Q7XG4gXHRzdHJ1Y3QgZG1hX2ZlYXR1cmVzIGRtYV9jYXA7XG4gXHRzdHJ1Y3Qgc3RtbWFjX2NvdW50ZXJzIG1tYztcbiBcdGludCBod19jYXBfc3VwcG9ydDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmNcbmluZGV4IGFmYzUxNjA1OWI4OTcuLjQ5ZWRmZWJiYzM5ZTAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuY1xuQEAgLTI2LDcgKzI2LDcgQEAgc3RhdGljIGludCBlc3Rfd3JpdGUodm9pZCBfX2lvbWVtICplc3RfYWRkciwgdTMyIHJlZywgdTMyIHZhbCwgYm9vbCBnY2wpXG4gfVxuIFxuIHN0YXRpYyBpbnQgZXN0X2NvbmZpZ3VyZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBzdG1tYWNfZXN0ICpjZmcsXG4tXHRcdFx0IHVuc2lnbmVkIGludCBwdHBfcmF0ZSlcbitcdFx0XHQgdW5zaWduZWQgaW50IHB0cF9yYXRlLCBib29sIGVuYWJsZSlcbiB7XG4gXHR2b2lkIF9faW9tZW0gKmVzdF9hZGRyID0gcHJpdi1cdTAwM2Vlc3RhZGRyO1xuIFx0aW50IGksIHJldCA9IDA7XG5AQCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgaW50IGVzdF9jb25maWd1cmUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3Qgc3RtbWFjX2VzdCAqY2ZnLFxuIFx0XHRjdHJsIHw9ICgoTlNFQ19QRVJfU0VDIC8gcHRwX3JhdGUpICogRVNUX0dNQUM1X1BUT1ZfTVVMKSBcdTAwM2NcdTAwM2NcbiBcdFx0XHQgRVNUX0dNQUM1X1BUT1ZfU0hJRlQ7XG4gXHR9XG4tXHRpZiAoY2ZnLVx1MDAzZWVuYWJsZSlcbitcdGlmIChlbmFibGUpXG4gXHRcdGN0cmwgfD0gRVNUX0VFU1QgfCBFU1RfU1NXTCB8IEVTVF9ERkJTO1xuIFx0ZWxzZVxuIFx0XHRjdHJsIFx1MDAyNj0gfkVTVF9FRVNUO1xuQEAgLTcwLDcgKzcwLDcgQEAgc3RhdGljIGludCBlc3RfY29uZmlndXJlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IHN0bW1hY19lc3QgKmNmZyxcbiBcdHdyaXRlbChjdHJsLCBlc3RfYWRkciArIEVTVF9DT05UUk9MKTtcbiBcbiBcdC8qIENvbmZpZ3VyZSBFU1QgaW50ZXJydXB0ICovXG4tXHRpZiAoY2ZnLVx1MDAzZWVuYWJsZSlcbitcdGlmIChlbmFibGUpXG4gXHRcdGN0cmwgPSBFU1RfSUVDR0NFIHwgRVNUX0lFSFMgfCBFU1RfSUVIRiB8IEVTVF9JRUJFIHwgRVNUX0lFQ0M7XG4gXHRlbHNlXG4gXHRcdGN0cmwgPSAwO1xuQEAgLTgwLDYgKzgwLDM2IEBAIHN0YXRpYyBpbnQgZXN0X2NvbmZpZ3VyZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBzdG1tYWNfZXN0ICpjZmcsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4raW50IF9fc3RtbWFjX3NldHVwX2VzdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4re1xuK1x0c3RydWN0IHRpbWVzcGVjNjQgY3VycmVudF90aW1lLCB0aW1lO1xuK1x0a3RpbWVfdCBjdXJyZW50X3RpbWVfbnMsIGJhc2V0aW1lO1xuK1x0dTY0IGN5Y2xlX3RpbWU7XG4rXHRpbnQgZXJyO1xuK1xuK1x0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbitcbitcdHByaXYtXHUwMDNlcHRwX2Nsb2NrX29wcy5nZXR0aW1lNjQoXHUwMDI2cHJpdi1cdTAwM2VwdHBfY2xvY2tfb3BzLCBcdTAwMjZjdXJyZW50X3RpbWUpO1xuK1x0Y3VycmVudF90aW1lX25zID0gdGltZXNwZWM2NF90b19rdGltZShjdXJyZW50X3RpbWUpO1xuK1xuK1x0dGltZS50dl9uc2VjID0gcHJpdi1cdTAwM2Vlc3QuYnRyX3Jlc2VydmVbMF07XG4rXHR0aW1lLnR2X3NlYyA9IHByaXYtXHUwMDNlZXN0LmJ0cl9yZXNlcnZlWzFdO1xuK1x0YmFzZXRpbWUgPSB0aW1lc3BlYzY0X3RvX2t0aW1lKHRpbWUpO1xuK1xuK1x0Y3ljbGVfdGltZSA9ICh1NjQpcHJpdi1cdTAwM2Vlc3QuY3RyWzFdICogTlNFQ19QRVJfU0VDICsgcHJpdi1cdTAwM2Vlc3QuY3RyWzBdO1xuK1xuK1x0dGltZSA9IHN0bW1hY19jYWxjX3Rhc19iYXNldGltZShiYXNldGltZSwgY3VycmVudF90aW1lX25zLCBjeWNsZV90aW1lKTtcbitcdHByaXYtXHUwMDNlZXN0LmJ0clswXSA9ICh1MzIpdGltZS50dl9uc2VjO1xuK1x0cHJpdi1cdTAwM2Vlc3QuYnRyWzFdID0gKHUzMil0aW1lLnR2X3NlYztcbitcbitcdGVyciA9IHN0bW1hY19lc3RfY29uZmlndXJlKHByaXYsIHByaXYsIFx1MDAyNnByaXYtXHUwMDNlZXN0LFxuK1x0XHRcdFx0ICAgcHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNsa19wdHBfcmF0ZSwgdHJ1ZSk7XG4rXHRpZiAoZXJyKVxuK1x0XHRuZXRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcImZhaWxlZCB0byByZS1jb25maWd1cmUgRVNUXFxuXCIpO1xuK1xuK1x0cmV0dXJuIGVycjtcbit9XG4rXG4gc3RhdGljIHZvaWQgZXN0X2lycV9zdGF0dXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdCAgIHN0cnVjdCBzdG1tYWNfZXh0cmFfc3RhdHMgKngsIHUzMiB0eHFjbnQpXG4ge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuaFxuaW5kZXggZjcwMjIxYzljODRhZi4uYjRkMWExZjA0ZjEwOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5oXG5AQCAtNjUsMyArNjUsMTYgQEBcbiAjZGVmaW5lIEVTVF9HQ0xfREFUQVx0XHRcdDB4MDAwMDAwMzRcbiBcbiBleHRlcm4gY29uc3Qgc3RydWN0IHN0bW1hY19lc3Rfb3BzIGR3bWFjNTEwX2VzdF9vcHM7XG4rXG4raW50IF9fc3RtbWFjX3NldHVwX2VzdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpO1xuK3N0YXRpYyBpbmxpbmUgaW50IHN0bW1hY19zZXR1cF9lc3Qoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuK3tcbitcdGludCByZXQgPSAwO1xuK1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbitcdGlmIChwcml2LVx1MDAzZWVzdC5lbmFibGUpXG4rXHRcdHJldCA9IF9fc3RtbWFjX3NldHVwX2VzdChwcml2KTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbitcbitcdHJldHVybiByZXQ7XG4rfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCBkNTc2MDU5YzA0ZGY5Li5jNGQzNTM5NDgzNDczIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuQEAgLTQ4LDYgKzQ4LDcgQEBcbiAjaW5jbHVkZSBcInN0bW1hY19wdHAuaFwiXG4gI2luY2x1ZGUgXCJzdG1tYWNfZnBlLmhcIlxuICNpbmNsdWRlIFwic3RtbWFjLmhcIlxuKyNpbmNsdWRlIFwic3RtbWFjX2VzdC5oXCJcbiAjaW5jbHVkZSBcInN0bW1hY19wY3MuaFwiXG4gI2luY2x1ZGUgXCJzdG1tYWNfeGRwLmhcIlxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3Jlc2V0LmhcdTAwM2VcbkBAIC05MzcsMTggKzkzOCwyNyBAQCBzdGF0aWMgaW50IHN0bW1hY19pbml0X3RpbWVzdGFtcGluZyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIHZvaWQgc3RtbWFjX3NldHVwX3B0cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4rc3RhdGljIGludCBzdG1tYWNfc2V0dXBfcHRwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiB7XG4gXHRpbnQgcmV0O1xuIFxuIFx0cmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKHByaXYtXHUwMDNlcGxhdC1cdTAwM2VjbGtfcHRwX3JlZik7XG4tXHRpZiAocmV0IFx1MDAzYyAwKVxuK1x0aWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRuZXRkZXZfd2Fybihwcml2LVx1MDAzZWRldixcbiBcdFx0XHQgICAgXCJmYWlsZWQgdG8gZW5hYmxlIFBUUCByZWZlcmVuY2UgY2xvY2s6ICVwZVxcblwiLFxuIFx0XHRcdCAgICBFUlJfUFRSKHJldCkpO1xuK1x0XHRyZXR1cm4gcmV0O1xuK1x0fVxuK1xuK1x0cmV0ID0gc3RtbWFjX2luaXRfdGltZXN0YW1waW5nKHByaXYpO1xuK1x0aWYgKHJldCkge1xuK1x0XHRjbGtfZGlzYWJsZV91bnByZXBhcmUocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNsa19wdHBfcmVmKTtcbitcdFx0cmV0dXJuIHJldDtcbitcdH1cbiBcbi1cdGlmIChzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcocHJpdikgPT0gMClcbi1cdFx0c3RtbWFjX3B0cF9yZWdpc3Rlcihwcml2KTtcbitcdHN0bW1hY19wdHBfcmVnaXN0ZXIocHJpdik7XG4rXG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIHZvaWQgc3RtbWFjX3JlbGVhc2VfcHRwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbkBAIC0yNzE0LDkgKzI3MjQsOCBAQCBzdGF0aWMgYm9vbCBzdG1tYWNfeGRwX3htaXRfemMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUsIHUzMiBidWRnZXQpXG4gXHRcdGlmICgheHNrX3R4X3BlZWtfZGVzYyhwb29sLCBcdTAwMjZ4ZHBfZGVzYykpXG4gXHRcdFx0YnJlYWs7XG4gXG4tXHRcdGlmIChwcml2LVx1MDAzZWVzdCBcdTAwMjZcdTAwMjYgcHJpdi1cdTAwM2Vlc3QtXHUwMDNlZW5hYmxlIFx1MDAyNlx1MDAyNlxuLVx0XHQgICAgcHJpdi1cdTAwM2Vlc3QtXHUwMDNlbWF4X3NkdVtxdWV1ZV0gXHUwMDI2XHUwMDI2XG4tXHRcdCAgICB4ZHBfZGVzYy5sZW4gXHUwMDNlIHByaXYtXHUwMDNlZXN0LVx1MDAzZW1heF9zZHVbcXVldWVdKSB7XG4rXHRcdGlmIChwcml2LVx1MDAzZWVzdC5lbmFibGUgXHUwMDI2XHUwMDI2IHByaXYtXHUwMDNlZXN0Lm1heF9zZHVbcXVldWVdIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgeGRwX2Rlc2MubGVuIFx1MDAzZSBwcml2LVx1MDAzZWVzdC5tYXhfc2R1W3F1ZXVlXSkge1xuIFx0XHRcdHByaXYtXHUwMDNleHN0YXRzLm1heF9zZHVfdHhxX2Ryb3BbcXVldWVdKys7XG4gXHRcdFx0Y29udGludWU7XG4gXHRcdH1cbkBAIC00MTUzLDEwICs0MTYyLDE5IEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0cmV0ID0gc3RtbWFjX2h3X3NldHVwKGRldik7XG4gXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gXHRcdG5ldGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwiJXM6IEh3IHNldHVwIGZhaWxlZFxcblwiLCBfX2Z1bmNfXyk7XG4tXHRcdGdvdG8gaW5pdF9lcnJvcjtcbitcdFx0cmV0dXJuIHJldDtcbiBcdH1cbiBcbi1cdHN0bW1hY19zZXR1cF9wdHAocHJpdik7XG4rXHRyZXQgPSBzdG1tYWNfc2V0dXBfcHRwKHByaXYpO1xuK1x0aWYgKHJldClcbitcdFx0Z290byBwdHBfZXJyb3I7XG4rXG4rXHQvKiBUaGUgY29yZSBzb2Z0IHJlc2V0IGluIHN0bW1hY19od19zZXR1cCgpIGNsZWFycyB0aGUgTVRMX0VTVFxuK1x0ICogcmVnaXN0ZXJzLCBzbyByZS1hcHBseSB0aGUgdGFwcmlvIG9mZmxvYWQgYWZ0ZXIgUFRQIGlzIHVwLlxuK1x0ICovXG4rXHRyZXQgPSBzdG1tYWNfc2V0dXBfZXN0KHByaXYpO1xuK1x0aWYgKHJldCBcdTAwM2MgMClcbitcdFx0Z290byBlc3RfZXJyb3I7XG4gXG4gXHRzdG1tYWNfaW5pdF9jb2FsZXNjZShwcml2KTtcbiBcbkBAIC00MTc5LDkgKzQxOTcsMTEgQEAgc3RhdGljIGludCBfX3N0bW1hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXG4gXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFx1MDAzYyBwcml2LVx1MDAzZXBsYXQtXHUwMDNldHhfcXVldWVzX3RvX3VzZTsgY2hhbisrKVxuIFx0XHRocnRpbWVyX2NhbmNlbChcdTAwMjZwcml2LVx1MDAzZWRtYV9jb25mLnR4X3F1ZXVlW2NoYW5dLnR4dGltZXIpO1xuLVxuK2VzdF9lcnJvcjpcbiBcdHN0bW1hY19yZWxlYXNlX3B0cChwcml2KTtcbi1pbml0X2Vycm9yOlxuK3B0cF9lcnJvcjpcbitcdHN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7XG4rXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbkBAIC00Nzc2LDEzICs0Nzk2LDEyIEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBzdG1tYWNfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0aWYgKHNrYl9pc19nc28oc2tiKSlcbiBcdFx0cmV0dXJuIHN0bW1hY190c29feG1pdChza2IsIGRldik7XG4gXG4tXHRpZiAocHJpdi1cdTAwM2Vlc3QgXHUwMDI2XHUwMDI2IHByaXYtXHUwMDNlZXN0LVx1MDAzZWVuYWJsZSBcdTAwMjZcdTAwMjZcbi1cdCAgICBwcml2LVx1MDAzZWVzdC1cdTAwM2VtYXhfc2R1W3F1ZXVlXSkge1xuK1x0aWYgKHByaXYtXHUwMDNlZXN0LmVuYWJsZSBcdTAwMjZcdTAwMjYgcHJpdi1cdTAwM2Vlc3QubWF4X3NkdVtxdWV1ZV0pIHtcbiBcdFx0c2R1X2xlbiA9IHNrYi1cdTAwM2VsZW47XG4gXHRcdC8qIEFkZCBWTEFOIHRhZyBsZW5ndGggaWYgVkxBTiB0YWcgaW5zZXJ0aW9uIG9mZmxvYWQgaXMgcmVxdWVzdGVkICovXG4gXHRcdGlmIChwcml2LVx1MDAzZWRtYV9jYXAudmxpbnMgXHUwMDI2XHUwMDI2IHNrYl92bGFuX3RhZ19wcmVzZW50KHNrYikpXG4gXHRcdFx0c2R1X2xlbiArPSBWTEFOX0hMRU47XG4tXHRcdGlmIChzZHVfbGVuIFx1MDAzZSBwcml2LVx1MDAzZWVzdC1cdTAwM2VtYXhfc2R1W3F1ZXVlXSkge1xuK1x0XHRpZiAoc2R1X2xlbiBcdTAwM2UgcHJpdi1cdTAwM2Vlc3QubWF4X3NkdVtxdWV1ZV0pIHtcbiBcdFx0XHRwcml2LVx1MDAzZXhzdGF0cy5tYXhfc2R1X3R4cV9kcm9wW3F1ZXVlXSsrO1xuIFx0XHRcdGdvdG8gbWF4X3NkdV9lcnI7XG4gXHRcdH1cbkBAIC01MTg2LDkgKzUyMDUsOCBAQCBzdGF0aWMgaW50IHN0bW1hY194ZHBfeG1pdF94ZHBmKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgaW50IHF1ZXVlLFxuIFx0aWYgKHN0bW1hY190eF9hdmFpbChwcml2LCBxdWV1ZSkgXHUwMDNjIFNUTU1BQ19UWF9USFJFU0gocHJpdikpXG4gXHRcdHJldHVybiBTVE1NQUNfWERQX0NPTlNVTUVEO1xuIFxuLVx0aWYgKHByaXYtXHUwMDNlZXN0IFx1MDAyNlx1MDAyNiBwcml2LVx1MDAzZWVzdC1cdTAwM2VlbmFibGUgXHUwMDI2XHUwMDI2XG4tXHQgICAgcHJpdi1cdTAwM2Vlc3QtXHUwMDNlbWF4X3NkdVtxdWV1ZV0gXHUwMDI2XHUwMDI2XG4tXHQgICAgeGRwZi1cdTAwM2VsZW4gXHUwMDNlIHByaXYtXHUwMDNlZXN0LVx1MDAzZW1heF9zZHVbcXVldWVdKSB7XG4rXHRpZiAocHJpdi1cdTAwM2Vlc3QuZW5hYmxlIFx1MDAyNlx1MDAyNiBwcml2LVx1MDAzZWVzdC5tYXhfc2R1W3F1ZXVlXSBcdTAwMjZcdTAwMjZcbitcdCAgICB4ZHBmLVx1MDAzZWxlbiBcdTAwM2UgcHJpdi1cdTAwM2Vlc3QubWF4X3NkdVtxdWV1ZV0pIHtcbiBcdFx0cHJpdi1cdTAwM2V4c3RhdHMubWF4X3NkdV90eHFfZHJvcFtxdWV1ZV0rKztcbiBcdFx0cmV0dXJuIFNUTU1BQ19YRFBfQ09OU1VNRUQ7XG4gXHR9XG5AQCAtODAxNyw2ICs4MDM1LDcgQEAgc3RhdGljIGludCBfX3N0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxuIFx0c3RtbWFjX25hcGlfYWRkKG5kZXYpO1xuIFxuIFx0bXV0ZXhfaW5pdChcdTAwMjZwcml2LVx1MDAzZWxvY2spO1xuK1x0bXV0ZXhfaW5pdChcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbiBcbiBcdHN0bW1hY19mcGVfaW5pdChwcml2KTtcbiBcbkBAIC04MTQ4LDYgKzgxNjcsNyBAQCB2b2lkIHN0bW1hY19kdnJfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdHN0bW1hY19tZGlvX3VucmVnaXN0ZXIobmRldik7XG4gXG4gXHRkZXN0cm95X3dvcmtxdWV1ZShwcml2LVx1MDAzZXdxKTtcbitcdG11dGV4X2Rlc3Ryb3koXHUwMDI2cHJpdi1cdTAwM2Vlc3RfbG9jayk7XG4gXHRtdXRleF9kZXN0cm95KFx1MDAyNnByaXYtXHUwMDNlbG9jayk7XG4gXHRiaXRtYXBfZnJlZShwcml2LVx1MDAzZWFmX3hkcF96Y19xcHMpO1xuIFxuQEAgLTgzMTgsMTMgKzgzMzgsMTYgQEAgaW50IHN0bW1hY19yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0cmV0ID0gc3RtbWFjX2h3X3NldHVwKG5kZXYpO1xuIFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRuZXRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcIiVzOiBIdyBzZXR1cCBmYWlsZWRcXG5cIiwgX19mdW5jX18pO1xuLVx0XHRzdG1tYWNfbGVnYWN5X3NlcmRlc19wb3dlcl9kb3duKHByaXYpO1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2Vsb2NrKTtcbi1cdFx0cnRubF91bmxvY2soKTtcbi1cdFx0cmV0dXJuIHJldDtcbitcdFx0Z290byBlcnJvcl91bmxvY2s7XG4gXHR9XG4gXG4tXHRzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcocHJpdik7XG4rXHRyZXQgPSBzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcocHJpdik7XG4rXHRpZiAocmV0KVxuK1x0XHRnb3RvIGVycm9yX3N0b3BfZG1hO1xuK1xuK1x0cmV0ID0gc3RtbWFjX3NldHVwX2VzdChwcml2KTtcbitcdGlmIChyZXQgXHUwMDNjIDApXG4rXHRcdGdvdG8gZXJyb3Jfc3RvcF9kbWE7XG4gXG4gXHRzdG1tYWNfaW5pdF9jb2FsZXNjZShwcml2KTtcbiBcdHBoeWxpbmtfcnhfY2xrX3N0b3BfYmxvY2socHJpdi1cdTAwM2VwaHlsaW5rKTtcbkBAIC04MzQ4LDYgKzgzNzEsMTUgQEAgaW50IHN0bW1hY19yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0bmV0aWZfZGV2aWNlX2F0dGFjaChuZGV2KTtcbiBcbiBcdHJldHVybiAwO1xuK1xuK2Vycm9yX3N0b3BfZG1hOlxuK1x0c3RtbWFjX3N0b3BfYWxsX2RtYShwcml2KTtcbitlcnJvcl91bmxvY2s6XG4rXHRzdG1tYWNfbGVnYWN5X3NlcmRlc19wb3dlcl9kb3duKHByaXYpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlbG9jayk7XG4rXHRydG5sX3VubG9jaygpO1xuK1xuK1x0cmV0dXJuIHJldDtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3Jlc3VtZSk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3B0cC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3B0cC5jXG5pbmRleCA5NjAyNDk5NjAwMDRjLi44ZjNhOTBkZjMxNzhjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3B0cC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcHRwLmNcbkBAIC04LDYgKzgsNyBAQFxuICAgQXV0aG9yOiBSYXlhZ29uZCBLb2thdGFudXIgXHUwMDNjcmF5YWdvbmRAdmF5YXZ5YWxhYnMuY29tXHUwMDNlXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbiAjaW5jbHVkZSBcInN0bW1hYy5oXCJcbisjaW5jbHVkZSBcInN0bW1hY19lc3QuaFwiXG4gI2luY2x1ZGUgXCJzdG1tYWNfcHRwLmhcIlxuIFxuICNkZWZpbmUgUFRQX1NBRkVfVElNRV9PRkZTRVRfTlNcdDUwMDAwMFxuQEAgLTU1LDcgKzU2LDYgQEAgc3RhdGljIGludCBzdG1tYWNfYWRqdXN0X3RpbWUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIHM2NCBkZWx0YSlcbiBcdHUzMiBxdW90aWVudCwgcmVtaW5kZXI7XG4gXHRpbnQgbmVnX2FkaiA9IDA7XG4gXHRib29sIHhtYWMsIGVzdF9yc3QgPSBmYWxzZTtcbi1cdGludCByZXQ7XG4gXG4gXHR4bWFjID0gZHdtYWNfaXNfeG1hYyhwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlKTtcbiBcbkBAIC02OSw0NiArNjksMjEgQEAgc3RhdGljIGludCBzdG1tYWNfYWRqdXN0X3RpbWUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIHM2NCBkZWx0YSlcbiBcdG5zZWMgPSByZW1pbmRlcjtcbiBcbiBcdC8qIElmIEVTVCBpcyBlbmFibGVkLCBkaXNhYmxlZCBpdCBiZWZvcmUgYWRqdXN0IHB0cCB0aW1lLiAqL1xuLVx0aWYgKHByaXYtXHUwMDNlZXN0IFx1MDAyNlx1MDAyNiBwcml2LVx1MDAzZWVzdC1cdTAwM2VlbmFibGUpIHtcbitcdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2Vlc3RfbG9jayk7XG4rXHRpZiAocHJpdi1cdTAwM2Vlc3QuZW5hYmxlKSB7XG4gXHRcdGVzdF9yc3QgPSB0cnVlO1xuLVx0XHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlZXN0X2xvY2spO1xuLVx0XHRwcml2LVx1MDAzZWVzdC1cdTAwM2VlbmFibGUgPSBmYWxzZTtcbi1cdFx0c3RtbWFjX2VzdF9jb25maWd1cmUocHJpdiwgcHJpdiwgcHJpdi1cdTAwM2Vlc3QsXG4tXHRcdFx0XHQgICAgIHByaXYtXHUwMDNlcGxhdC1cdTAwM2VjbGtfcHRwX3JhdGUpO1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2Vlc3RfbG9jayk7XG4rXHRcdHN0bW1hY19lc3RfY29uZmlndXJlKHByaXYsIHByaXYsIFx1MDAyNnByaXYtXHUwMDNlZXN0LFxuK1x0XHRcdFx0ICAgICBwcml2LVx1MDAzZXBsYXQtXHUwMDNlY2xrX3B0cF9yYXRlLCBmYWxzZSk7XG4gXHR9XG4rXHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2Vlc3RfbG9jayk7XG4gXG4gXHR3cml0ZV9sb2NrX2lycXNhdmUoXHUwMDI2cHJpdi1cdTAwM2VwdHBfbG9jaywgZmxhZ3MpO1xuIFx0c3RtbWFjX2FkanVzdF9zeXN0aW1lKHByaXYsIHByaXYtXHUwMDNlcHRwYWRkciwgc2VjLCBuc2VjLCBuZWdfYWRqLCB4bWFjKTtcbiBcdHdyaXRlX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNnByaXYtXHUwMDNlcHRwX2xvY2ssIGZsYWdzKTtcbiBcbiBcdC8qIENhbGN1bGF0ZSBuZXcgYmFzZXRpbWUgYW5kIHJlLWNvbmZpZ3VyZWQgRVNUIGFmdGVyIFBUUCB0aW1lIGFkanVzdC4gKi9cbi1cdGlmIChlc3RfcnN0KSB7XG4tXHRcdHN0cnVjdCB0aW1lc3BlYzY0IGN1cnJlbnRfdGltZSwgdGltZTtcbi1cdFx0a3RpbWVfdCBjdXJyZW50X3RpbWVfbnMsIGJhc2V0aW1lO1xuLVx0XHR1NjQgY3ljbGVfdGltZTtcbi1cbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbi1cdFx0cHJpdi1cdTAwM2VwdHBfY2xvY2tfb3BzLmdldHRpbWU2NChcdTAwMjZwcml2LVx1MDAzZXB0cF9jbG9ja19vcHMsIFx1MDAyNmN1cnJlbnRfdGltZSk7XG4tXHRcdGN1cnJlbnRfdGltZV9ucyA9IHRpbWVzcGVjNjRfdG9fa3RpbWUoY3VycmVudF90aW1lKTtcbi1cdFx0dGltZS50dl9uc2VjID0gcHJpdi1cdTAwM2Vlc3QtXHUwMDNlYnRyX3Jlc2VydmVbMF07XG4tXHRcdHRpbWUudHZfc2VjID0gcHJpdi1cdTAwM2Vlc3QtXHUwMDNlYnRyX3Jlc2VydmVbMV07XG4tXHRcdGJhc2V0aW1lID0gdGltZXNwZWM2NF90b19rdGltZSh0aW1lKTtcbi1cdFx0Y3ljbGVfdGltZSA9ICh1NjQpcHJpdi1cdTAwM2Vlc3QtXHUwMDNlY3RyWzFdICogTlNFQ19QRVJfU0VDICtcbi1cdFx0XHQgICAgIHByaXYtXHUwMDNlZXN0LVx1MDAzZWN0clswXTtcbi1cdFx0dGltZSA9IHN0bW1hY19jYWxjX3Rhc19iYXNldGltZShiYXNldGltZSxcbi1cdFx0XHRcdFx0XHRjdXJyZW50X3RpbWVfbnMsXG4tXHRcdFx0XHRcdFx0Y3ljbGVfdGltZSk7XG4tXG4tXHRcdHByaXYtXHUwMDNlZXN0LVx1MDAzZWJ0clswXSA9ICh1MzIpdGltZS50dl9uc2VjO1xuLVx0XHRwcml2LVx1MDAzZWVzdC1cdTAwM2VidHJbMV0gPSAodTMyKXRpbWUudHZfc2VjO1xuLVx0XHRwcml2LVx1MDAzZWVzdC1cdTAwM2VlbmFibGUgPSB0cnVlO1xuLVx0XHRyZXQgPSBzdG1tYWNfZXN0X2NvbmZpZ3VyZShwcml2LCBwcml2LCBwcml2LVx1MDAzZWVzdCxcbi1cdFx0XHRcdFx0ICAgcHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNsa19wdHBfcmF0ZSk7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbi1cdFx0aWYgKHJldClcbi1cdFx0XHRuZXRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcImZhaWxlZCB0byBjb25maWd1cmUgRVNUXFxuXCIpO1xuLVx0fVxuK1x0aWYgKGVzdF9yc3QpXG4rXHRcdHN0bW1hY19zZXR1cF9lc3QocHJpdik7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuY1xuaW5kZXggMTRjYWJlNzZlNTNlYy4uOTc0NWM5YmFlMzNjMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuY1xuQEAgLTEwLDYgKzEwLDcgQEBcbiAjaW5jbHVkZSBcImR3bWFjNC5oXCJcbiAjaW5jbHVkZSBcImR3bWFjNS5oXCJcbiAjaW5jbHVkZSBcInN0bW1hYy5oXCJcbisjaW5jbHVkZSBcInN0bW1hY19lc3QuaFwiXG4gXG4gc3RhdGljIHZvaWQgdGNfZmlsbF9hbGxfcGFzc19lbnRyeShzdHJ1Y3Qgc3RtbWFjX3RjX2VudHJ5ICplbnRyeSlcbiB7XG5AQCAtOTU5LDcgKzk2MCw3IEBAIHN0YXRpYyB2b2lkIHRjX3RhcHJpb19tYXBfbWF4c2R1X3R4cShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHRcdGNvdW50ID0gcW9wdC1cdTAwM2VtcXByaW8ucW9wdC5jb3VudFtpXTtcbiBcbiBcdFx0Zm9yIChqID0gb2Zmc2V0OyBqIFx1MDAzYyBvZmZzZXQgKyBjb3VudDsgaisrKVxuLVx0XHRcdHByaXYtXHUwMDNlZXN0LVx1MDAzZW1heF9zZHVbal0gPSBxb3B0LVx1MDAzZW1heF9zZHVbaV0gKyBFVEhfSExFTiAtIEVUSF9UTEVOO1xuK1x0XHRcdHByaXYtXHUwMDNlZXN0Lm1heF9zZHVbal0gPSBxb3B0LVx1MDAzZW1heF9zZHVbaV0gKyBFVEhfSExFTiAtIEVUSF9UTEVOO1xuIFx0fVxuIH1cbiBcbkBAIC05NjgsMTAgKzk2OSwxMCBAQCBzdGF0aWMgaW50IHRjX3RhcHJpb19jb25maWd1cmUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIHtcbiBcdHUzMiBzaXplLCB3aWQgPSBwcml2LVx1MDAzZWRtYV9jYXAuZXN0d2lkLCBkZXAgPSBwcml2LVx1MDAzZWRtYV9jYXAuZXN0ZGVwO1xuIFx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrID0gcW9wdC1cdTAwM2VtcXByaW8uZXh0YWNrO1xuLVx0c3RydWN0IHRpbWVzcGVjNjQgdGltZSwgY3VycmVudF90aW1lLCBxb3B0X3RpbWU7XG4tXHRrdGltZV90IGN1cnJlbnRfdGltZV9ucztcbitcdHU2NCBjdHIgPSBxb3B0LVx1MDAzZWN5Y2xlX3RpbWU7XG4rXHRzdHJ1Y3QgdGltZXNwZWM2NCB0aW1lO1xuK1x0dTMyICpnY2wgPSBOVUxMO1xuIFx0aW50IGksIHJldCA9IDA7XG4tXHR1NjQgY3RyO1xuIFxuIFx0aWYgKHFvcHQtXHUwMDNlYmFzZV90aW1lIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gLUVSQU5HRTtcbkBAIC05NzksNiArOTgwLDkgQEAgc3RhdGljIGludCB0Y190YXByaW9fY29uZmlndXJlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdGlmICghcHJpdi1cdTAwM2VkbWFfY2FwLmVzdHNlbClcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuK1x0aWYgKGN0ciBcdTAwM2UgKHU2NClVMzJfTUFYICogTlNFQ19QRVJfU0VDKVxuK1x0XHRyZXR1cm4gLUVSQU5HRTtcbitcbiBcdHN3aXRjaCAod2lkKSB7XG4gXHRjYXNlIDB4MTpcbiBcdFx0d2lkID0gMTY7XG5AQCAtMTAxMyw0NCArMTAxNyw0NSBAQCBzdGF0aWMgaW50IHRjX3RhcHJpb19jb25maWd1cmUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXHR9XG4gXG4rXHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlZXN0X2xvY2spO1xuK1xuIFx0aWYgKHFvcHQtXHUwMDNlY21kID09IFRBUFJJT19DTURfREVTVFJPWSlcbiBcdFx0Z290byBkaXNhYmxlO1xuIFxuLVx0aWYgKHFvcHQtXHUwMDNlbnVtX2VudHJpZXMgXHUwMDNlIGRlcClcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tXHRpZiAoIXFvcHQtXHUwMDNlY3ljbGVfdGltZSlcbi1cdFx0cmV0dXJuIC1FUkFOR0U7XG4tXHRpZiAocW9wdC1cdTAwM2VjeWNsZV90aW1lX2V4dGVuc2lvbiBcdTAwM2U9IEJJVCh3aWQgKyA3KSlcbi1cdFx0cmV0dXJuIC1FUkFOR0U7XG4tXG4tXHRpZiAoIXByaXYtXHUwMDNlZXN0KSB7XG4tXHRcdHByaXYtXHUwMDNlZXN0ID0gZGV2bV9remFsbG9jKHByaXYtXHUwMDNlZGV2aWNlLCBzaXplb2YoKnByaXYtXHUwMDNlZXN0KSxcbi1cdFx0XHRcdFx0IEdGUF9LRVJORUwpO1xuLVx0XHRpZiAoIXByaXYtXHUwMDNlZXN0KVxuLVx0XHRcdHJldHVybiAtRU5PTUVNO1xuK1x0aWYgKHFvcHQtXHUwMDNlbnVtX2VudHJpZXMgXHUwMDNlIGRlcCkge1xuK1x0XHRyZXQgPSAtRUlOVkFMO1xuK1x0XHRnb3RvIHVubG9jaztcbitcdH1cbiBcbi1cdFx0bXV0ZXhfaW5pdChcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbi1cdH0gZWxzZSB7XG4tXHRcdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2Vlc3RfbG9jayk7XG4tXHRcdG1lbXNldChwcml2LVx1MDAzZWVzdCwgMCwgc2l6ZW9mKCpwcml2LVx1MDAzZWVzdCkpO1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2Vlc3RfbG9jayk7XG4rXHRpZiAoIXFvcHQtXHUwMDNlY3ljbGVfdGltZSkge1xuK1x0XHRyZXQgPSAtRVJBTkdFO1xuK1x0XHRnb3RvIHVubG9jaztcbiBcdH1cbiBcbi1cdHNpemUgPSBxb3B0LVx1MDAzZW51bV9lbnRyaWVzO1xuK1x0aWYgKHFvcHQtXHUwMDNlY3ljbGVfdGltZV9leHRlbnNpb24gXHUwMDNlPSBCSVQod2lkICsgNykpIHtcbitcdFx0cmV0ID0gLUVSQU5HRTtcbitcdFx0Z290byB1bmxvY2s7XG4rXHR9XG4gXG4tXHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlZXN0X2xvY2spO1xuLVx0cHJpdi1cdTAwM2Vlc3QtXHUwMDNlZ2NsX3NpemUgPSBzaXplO1xuLVx0cHJpdi1cdTAwM2Vlc3QtXHUwMDNlZW5hYmxlID0gcW9wdC1cdTAwM2VjbWQgPT0gVEFQUklPX0NNRF9SRVBMQUNFO1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlZXN0X2xvY2spO1xuK1x0Z2NsID0ga3phbGxvYyhzaXplb2YoKmdjbCkgKiBFU1RfR0NMLCBHRlBfS0VSTkVMKTtcbitcdGlmICghZ2NsKSB7XG4rXHRcdHJldCA9IC1FTk9NRU07XG4rXHRcdGdvdG8gdW5sb2NrO1xuK1x0fVxuIFxuK1x0c2l6ZSA9IHFvcHQtXHUwMDNlbnVtX2VudHJpZXM7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBzaXplOyBpKyspIHtcbiBcdFx0czY0IGRlbHRhX25zID0gcW9wdC1cdTAwM2VlbnRyaWVzW2ldLmludGVydmFsO1xuIFx0XHR1MzIgZ2F0ZXMgPSBxb3B0LVx1MDAzZWVudHJpZXNbaV0uZ2F0ZV9tYXNrO1xuIFxuLVx0XHRpZiAoZGVsdGFfbnMgXHUwMDNlIEdFTk1BU0sod2lkIC0gMSwgMCkpXG4tXHRcdFx0cmV0dXJuIC1FUkFOR0U7XG4tXHRcdGlmIChnYXRlcyBcdTAwM2UgR0VOTUFTSygzMSAtIHdpZCwgMCkpXG4tXHRcdFx0cmV0dXJuIC1FUkFOR0U7XG4rXHRcdGlmIChkZWx0YV9ucyBcdTAwM2UgR0VOTUFTSyh3aWQgLSAxLCAwKSkge1xuK1x0XHRcdHJldCA9IC1FUkFOR0U7XG4rXHRcdFx0Z290byBmcmVlX2djbDtcbitcdFx0fVxuK1x0XHRpZiAoZ2F0ZXMgXHUwMDNlIEdFTk1BU0soMzEgLSB3aWQsIDApKSB7XG4rXHRcdFx0cmV0ID0gLUVSQU5HRTtcbitcdFx0XHRnb3RvIGZyZWVfZ2NsO1xuK1x0XHR9XG4gXG4gXHRcdHN3aXRjaCAocW9wdC1cdTAwM2VlbnRyaWVzW2ldLmNvbW1hbmQpIHtcbiBcdFx0Y2FzZSBUQ19UQVBSSU9fQ01EX1NFVF9HQVRFUzpcbkBAIC0xMDYyLDY1ICsxMDY3LDU4IEBAIHN0YXRpYyBpbnQgdGNfdGFwcmlvX2NvbmZpZ3VyZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHRcdFx0Z2F0ZXMgXHUwMDI2PSB+QklUKDApO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRkZWZhdWx0OlxuLVx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbitcdFx0XHRyZXQgPSAtRU9QTk9UU1VQUDtcbitcdFx0XHRnb3RvIGZyZWVfZ2NsO1xuIFx0XHR9XG4gXG4tXHRcdHByaXYtXHUwMDNlZXN0LVx1MDAzZWdjbFtpXSA9IGRlbHRhX25zIHwgKGdhdGVzIFx1MDAzY1x1MDAzYyB3aWQpO1xuK1x0XHRnY2xbaV0gPSBkZWx0YV9ucyB8IChnYXRlcyBcdTAwM2NcdTAwM2Mgd2lkKTtcbiBcdH1cbiBcbi1cdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2Vlc3RfbG9jayk7XG4tXHQvKiBBZGp1c3QgZm9yIHJlYWwgc3lzdGVtIHRpbWUgKi9cbi1cdHByaXYtXHUwMDNlcHRwX2Nsb2NrX29wcy5nZXR0aW1lNjQoXHUwMDI2cHJpdi1cdTAwM2VwdHBfY2xvY2tfb3BzLCBcdTAwMjZjdXJyZW50X3RpbWUpO1xuLVx0Y3VycmVudF90aW1lX25zID0gdGltZXNwZWM2NF90b19rdGltZShjdXJyZW50X3RpbWUpO1xuLVx0dGltZSA9IHN0bW1hY19jYWxjX3Rhc19iYXNldGltZShxb3B0LVx1MDAzZWJhc2VfdGltZSwgY3VycmVudF90aW1lX25zLFxuLVx0XHRcdFx0XHRxb3B0LVx1MDAzZWN5Y2xlX3RpbWUpO1xuLVxuLVx0cHJpdi1cdTAwM2Vlc3QtXHUwMDNlYnRyWzBdID0gKHUzMil0aW1lLnR2X25zZWM7XG4tXHRwcml2LVx1MDAzZWVzdC1cdTAwM2VidHJbMV0gPSAodTMyKXRpbWUudHZfc2VjO1xuK1x0bWVtc2V0KFx1MDAyNnByaXYtXHUwMDNlZXN0LCAwLCBzaXplb2YocHJpdi1cdTAwM2Vlc3QpKTtcbitcdG1lbWNweShwcml2LVx1MDAzZWVzdC5nY2wsIGdjbCwgc2l6ZW9mKHByaXYtXHUwMDNlZXN0LmdjbCkpO1xuK1x0cHJpdi1cdTAwM2Vlc3QuZ2NsX3NpemUgPSBzaXplO1xuIFxuLVx0cW9wdF90aW1lID0ga3RpbWVfdG9fdGltZXNwZWM2NChxb3B0LVx1MDAzZWJhc2VfdGltZSk7XG4tXHRwcml2LVx1MDAzZWVzdC1cdTAwM2VidHJfcmVzZXJ2ZVswXSA9ICh1MzIpcW9wdF90aW1lLnR2X25zZWM7XG4tXHRwcml2LVx1MDAzZWVzdC1cdTAwM2VidHJfcmVzZXJ2ZVsxXSA9ICh1MzIpcW9wdF90aW1lLnR2X3NlYztcbitcdHRpbWUgPSBrdGltZV90b190aW1lc3BlYzY0KHFvcHQtXHUwMDNlYmFzZV90aW1lKTtcbitcdHByaXYtXHUwMDNlZXN0LmJ0cl9yZXNlcnZlWzBdID0gKHUzMil0aW1lLnR2X25zZWM7XG4rXHRwcml2LVx1MDAzZWVzdC5idHJfcmVzZXJ2ZVsxXSA9ICh1MzIpdGltZS50dl9zZWM7XG4gXG4tXHRjdHIgPSBxb3B0LVx1MDAzZWN5Y2xlX3RpbWU7XG4tXHRwcml2LVx1MDAzZWVzdC1cdTAwM2VjdHJbMF0gPSBkb19kaXYoY3RyLCBOU0VDX1BFUl9TRUMpO1xuLVx0cHJpdi1cdTAwM2Vlc3QtXHUwMDNlY3RyWzFdID0gKHUzMiljdHI7XG4tXG4tXHRwcml2LVx1MDAzZWVzdC1cdTAwM2V0ZXIgPSBxb3B0LVx1MDAzZWN5Y2xlX3RpbWVfZXh0ZW5zaW9uO1xuK1x0cHJpdi1cdTAwM2Vlc3QuY3RyWzBdID0gZG9fZGl2KGN0ciwgTlNFQ19QRVJfU0VDKTtcbitcdHByaXYtXHUwMDNlZXN0LmN0clsxXSA9ICh1MzIpY3RyO1xuIFxuK1x0cHJpdi1cdTAwM2Vlc3QudGVyID0gcW9wdC1cdTAwM2VjeWNsZV90aW1lX2V4dGVuc2lvbjtcbiBcdHRjX3RhcHJpb19tYXBfbWF4c2R1X3R4cShwcml2LCBxb3B0KTtcbiBcbi1cdHJldCA9IHN0bW1hY19lc3RfY29uZmlndXJlKHByaXYsIHByaXYsIHByaXYtXHUwMDNlZXN0LFxuLVx0XHRcdFx0ICAgcHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNsa19wdHBfcmF0ZSk7XG4tXHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2Vlc3RfbG9jayk7XG4tXHRpZiAocmV0KSB7XG4tXHRcdG5ldGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwiZmFpbGVkIHRvIGNvbmZpZ3VyZSBFU1RcXG5cIik7XG4rXHRyZXQgPSBfX3N0bW1hY19zZXR1cF9lc3QocHJpdik7XG4rXHRpZiAocmV0KVxuIFx0XHRnb3RvIGRpc2FibGU7XG4tXHR9XG4gXG4gXHRyZXQgPSBzdG1tYWNfZnBlX21hcF9wcmVlbXB0aW9uX2NsYXNzKHByaXYsIHByaXYtXHUwMDNlZGV2LCBleHRhY2ssXG4gXHRcdFx0XHRcdCAgICAgIHFvcHQtXHUwMDNlbXFwcmlvLnByZWVtcHRpYmxlX3Rjcyk7XG4gXHRpZiAocmV0KVxuIFx0XHRnb3RvIGRpc2FibGU7XG4gXG4rXHRwcml2LVx1MDAzZWVzdC5lbmFibGUgPSB0cnVlO1xuK1x0a2ZyZWUoZ2NsKTtcbitcbitcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbitcbiBcdHJldHVybiAwO1xuIFxuIGRpc2FibGU6XG4tXHRpZiAocHJpdi1cdTAwM2Vlc3QpIHtcbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbi1cdFx0cHJpdi1cdTAwM2Vlc3QtXHUwMDNlZW5hYmxlID0gZmFsc2U7XG4tXHRcdHN0bW1hY19lc3RfY29uZmlndXJlKHByaXYsIHByaXYsIHByaXYtXHUwMDNlZXN0LFxuLVx0XHRcdFx0ICAgICBwcml2LVx1MDAzZXBsYXQtXHUwMDNlY2xrX3B0cF9yYXRlKTtcbi1cdFx0LyogUmVzZXQgdGFwcmlvIHN0YXR1cyAqL1xuLVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwcml2LVx1MDAzZXBsYXQtXHUwMDNldHhfcXVldWVzX3RvX3VzZTsgaSsrKSB7XG4tXHRcdFx0cHJpdi1cdTAwM2V4c3RhdHMubWF4X3NkdV90eHFfZHJvcFtpXSA9IDA7XG4tXHRcdFx0cHJpdi1cdTAwM2V4c3RhdHMubXRsX2VzdF90eHFfaGxiZltpXSA9IDA7XG4tXHRcdFx0cHJpdi1cdTAwM2V4c3RhdHMubXRsX2VzdF90eHFfaGxic1tpXSA9IDA7XG4tXHRcdH1cbi1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlZXN0X2xvY2spO1xuK1x0cHJpdi1cdTAwM2Vlc3QuZW5hYmxlID0gZmFsc2U7XG4rXHRzdG1tYWNfZXN0X2NvbmZpZ3VyZShwcml2LCBwcml2LCBcdTAwMjZwcml2LVx1MDAzZWVzdCxcbitcdFx0XHQgICAgIHByaXYtXHUwMDNlcGxhdC1cdTAwM2VjbGtfcHRwX3JhdGUsIGZhbHNlKTtcbitcdC8qIFJlc2V0IHRhcHJpbyBzdGF0dXMgKi9cbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHByaXYtXHUwMDNlcGxhdC1cdTAwM2V0eF9xdWV1ZXNfdG9fdXNlOyBpKyspIHtcbitcdFx0cHJpdi1cdTAwM2V4c3RhdHMubWF4X3NkdV90eHFfZHJvcFtpXSA9IDA7XG4rXHRcdHByaXYtXHUwMDNleHN0YXRzLm10bF9lc3RfdHhxX2hsYmZbaV0gPSAwO1xuK1x0XHRwcml2LVx1MDAzZXhzdGF0cy5tdGxfZXN0X3R4cV9obGJzW2ldID0gMDtcbiBcdH1cbi1cbiBcdHN0bW1hY19mcGVfbWFwX3ByZWVtcHRpb25fY2xhc3MocHJpdiwgcHJpdi1cdTAwM2VkZXYsIGV4dGFjaywgMCk7XG4rZnJlZV9nY2w6XG4rXHRrZnJlZShnY2wpO1xuK3VubG9jazpcbitcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbiBcbiBcdHJldHVybiByZXQ7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTk6MzI6MzguMzIyNjE2NjgxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTcwMDc1MzEwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIGZpZ3VyZSBvdXQgaWYgaXQncyBhIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byBxdWlja2x5IGFzc2VzcyBpdHMgZnV6emluZyBwb3RlbnRpYWwsIGNvbnNpZGVyaW5nIHJlYWNoYWJpbGl0eSwgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhbmQgd2hldGhlciBhbnkgc3BlY2lmaWMgc3ltYm9scyBsb29rIHByb21pc2luZy5cblxuRmlyc3QsIEkgbmVlZCB0byBrbm93ICp3aGF0KiB0aGUgcGF0Y2ggYWN0dWFsbHkgdG91Y2hlcy4gTG9va3MgbGlrZSBpdCBtb2RpZmllcyBhIHNpZ25pZmljYW50IGNodW5rIG9mIHRoZSBgc3RtbWFjYCBkcml2ZXI6IGBod2lmLmhgLCBgc3RtbWFjLmhgLCBgc3RtbWFjX2VzdC5jYCwgYHN0bW1hY19lc3QuaGAsIGBzdG1tYWNfbWFpbi5jYCwgYHN0bW1hY19wdHAuY2AsIGFuZCBgc3RtbWFjX3RjLmNgLiBUaGF0J3MgYSBnb29kIHN0YXJ0OyBpdCdzIHNwcmVhZCBhY3Jvc3MgdmFyaW91cyBwYXJ0cyBvZiB0aGUgZHJpdmVyLCB3aGljaCBzdWdnZXN0cyBtb3JlIHN1cmZhY2UgYXJlYSBmb3IgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy5cblxuTmV4dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgYHN0bW1hY2AgaXMgZXZlbiByZWFjaGFibGUgaW4gYSB0eXBpY2FsIGZ1enppbmcgZW52aXJvbm1lbnQuIERvZXMgaXQgd29yayB3aXRoIHRoZSBzdGFuZGFyZCBRRU1VIHNldHVwIEkgdXNlPyBJIGhhdmUgdG8gY29uc2lkZXIgaXRzIHBsYXRmb3JtIGRlcGVuZGVuY2llcy4gV2hhdCBidXNlcyBkb2VzIGBzdG1tYWNgIHV0aWxpemU/IEknbGwgcHJvYmFibHkgcmVhY2ggZm9yIGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB0byBjaGVjayB0aGUgYEtjb25maWdgIGZpbGUgaW4gdGhlIGRyaXZlciBkaXJlY3RvcnkgKGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYCksIGFzIHdlbGwgYXMgYW55IGdsdWUgbGF5ZXIgY29kZSByZWxhdGVkIHRvIFBDSSwgcGxhdGZvcm0gZGV2aWNlcywgb3Igd2hhdGV2ZXIgZWxzZSBpdCByZWxpZXMgb24uIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHBpY3R1cmUgb2YgaXRzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgaGFyZHdhcmUgZGVwZW5kZW5jaWVzLiBUaGlzIHdpbGwgaGVscCBtZSBidWlsZCBhIGZ1enppbmcgc2V0dXAgdGhhdCBjYW4gYWN0dWFsbHkgaGl0IHRoaXMgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA3MDYsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QxOTozMjo0NC4wMjMzNzI0OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzE4Mzc5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJTVE1NQUNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTg6aWYgU1RNTUFDX0VUSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyMDpjb25maWcgU1RNTUFDX1NFTEZURVNUU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjE6XFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgU1RNTUFDIFNlbGZ0ZXN0c1xcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIyLVxcdGRlcGVuZHMgb24gSU5FVFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNC1cXHRoZWxwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyNTpcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzIHVzaW5nIGV0aHRvb2wuIEVuYWJsZSB0aGlzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNi1cXHQgIGZlYXR1cmUgaWYgeW91IGFyZSBmYWNpbmcgcHJvYmxlbXMgd2l0aCB5b3VyIEhXIGFuZCBzdWJtaXQgdGhlIHRlc3RcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOTpjb25maWcgU1RNTUFDX1BMQVRGT1JNXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozMDpcXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzEtXFx0c2VsZWN0IE1GRF9TWVNDT05cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MjppZiBTVE1NQUNfUExBVEZPUk1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz01Mj1jb25maWcgRFdNQUNfR0VORVJJQ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNTMtXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgZHJpdmVyIGZvciBEV01BQ1xcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjU0OlxcdGRlZmF1bHQgU1RNTUFDX1BMQVRGT1JNXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy01NS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM2ND1jb25maWcgRFdNQUNfVklTQ09OVElcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzcxOmVuZGlmICMgU1RNTUFDX1BMQVRGT1JNXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNzM6Y29uZmlnIFNUTU1BQ19MSUJQQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3NC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zODg9Y29uZmlnIERXTUFDX0xPT05HU09OXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM5Mi1cXHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM5MzpcXHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzk0LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzk4PWNvbmZpZyBEV01BQ19NT1RPUkNPTU1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDAxLVxcdHNlbGVjdCBNT1RPUkNPTU1fUEhZXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDI6XFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwMy1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwNzpjb25maWcgU1RNTUFDX1BDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA4OlxcdHRyaXN0YXRlIFxcXCJTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA5LVxcdGRlcGVuZHMgb24gUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MTAtXFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MTE6XFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQxMi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQxOS1cXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MjA6ZW5kaWYgIyBTVE1NQUNfRVRIXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDE5OjMyOjQ0LjA3MDU2MTIyOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI3NDQ5OTIyMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBTVE1NQUMgUENJIElEIFN1cHBvcnQqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc3BlY2lmaWNzIG9mIGhvdyB0aGUgYFNUTU1BQ19QQ0lgIGRyaXZlciBpcyBoYW5kbGVkLiBJcyB0aGlzIHNvbWV0aGluZyB0aGF0J3MgbmF0aXZlbHkgc3VwcG9ydGVkIHdpdGhpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQsIG9yIGlzIGl0IG1vcmUgY29tcGxleCwgcGVyaGFwcyB0aWVkIHRvIHBoeXNpY2FsIGhhcmR3YXJlPyBJJ20gZ29pbmcgdG8gbmVlZCB0byBkaWcgaW50byB0aGUgZHJpdmVyIGNvZGUgaXRzZWxmIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUuIE15IGluaXRpYWwgcGxhbiBpcyB0byBncmVwIHRocm91Z2ggdGhlIHJlbGV2YW50IHNvdXJjZSBmaWxlcyDigJMgc3BlY2lmaWNhbGx5LCBJJ2xsIHN0YXJ0IHdpdGggYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNgLCBhbmQgYHN0bW1hY19wY2kuY2AsIGFuZCBhbnkgb3RoZXIgbGlrZWx5IGNhbmRpZGF0ZXMuIFRoaXMgc2hvdWxkIHJldmVhbCB0aGUgUENJIElEIGRlZmluaXRpb25zIGFuZCB0aGUgb3ZlcmFsbCBpbXBsZW1lbnRhdGlvbiBzdHJhdGVneSBmb3IgYFNUTU1BQ19QQ0lgLCBhbGxvd2luZyBtZSB0byBkZXRlcm1pbmUgaXRzIGJlaGF2aW9yIGFuZCBob3cgaXQgcmVsYXRlcyB0byBlbXVsYXRlZCB2ZXJzdXMgcGh5c2ljYWwgbmV0d29yayBpbnRlcmZhY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjY5NSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDE5OjMyOjQ2LjgxNTU1NTY4M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjUzNTg5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNT0RVTEVfREVWSUNFX1RBQkxFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM9MTE5PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGFuYXJpb25fZHdtYWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMjItfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM6MTIzOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGFuYXJpb25fZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMjQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTM1Mz1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBkd2NfZXRoX2R3bWFjX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTM1OC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzU5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGR3Y19ldGhfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzYwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jPTM1MD1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBlaWM3NzAwX2R3bWFjX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMzU5LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjM2MDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBlaWM3NzAwX2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMzYxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jPTUyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGR3bWFjX2dlbmVyaWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy02Ni19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo2NzpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBkd21hY19nZW5lcmljX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtNjgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz0zODQ9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgaW14X2R3bWFjX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zODktfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozOTA6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgaW14X2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zOTEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmM9MjYyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGluZ2VuaWNfbWFjX29mX21hdGNoZXNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0yNjktfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmM6MjcwOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGluZ2VuaWNfbWFjX29mX21hdGNoZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0yNzEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM9MzY9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgaW50ZWxfZXRoX3BsYXRfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy0zOS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYzo0MDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBpbnRlbF9ldGhfcGxhdF9tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTQxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMzk1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBpbnRlbF9ldGhfcGNpX2lkX3RhYmxlW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTE0MTQtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjE0MTU6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGludGVsX2V0aF9wY2lfaWRfdGFibGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTQxNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYz00OTE9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgaXBxODA2eF9nbWFjX2R3bWFjX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmMtNDk0LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jOjQ5NTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBpcHE4MDZ4X2dtYWNfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy00OTYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTU5Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgbG9vbmdzb25fZHdtYWNfaWRfdGFibGVbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNjAxLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo2MDI6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGxvb25nc29uX2R3bWFjX2lkX3RhYmxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTYwMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jPTIxNj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBsczF4X2R3bWFjX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYy0yMjYtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYzoyMjc6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbHMxeF9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtMjI4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jPTcxPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGxwYzE4eHhfZHdtYWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYy03NC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYzo3NTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBscGMxOHh4X2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNzYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jPTY2Mj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtZWRpYXRla19kd21hY19tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02NjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYzo2NzA6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbWVkaWF0ZWtfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmMtNjcxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYz03Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtZXNvbjZfZHdtYWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmMtNzktfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jOjgwOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG1lc29uNl9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy04MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYz00ODI9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWVzb244Yl9kd21hY19tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jLTUwNC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYzo1MDU6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbWVzb244Yl9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jLTUwNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTM2Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgZHdtYWNfbW90b3Jjb21tX3BjaV9pZF90YWJsZVtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzcwLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MzcxOk1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBkd21hY19tb3RvcmNvbW1fcGNpX2lkX3RhYmxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNzItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmM9MTE4PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG52dF9kd21hY19tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jLTEyMS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW51dm90b24uYzoxMjI6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbnZ0X2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmMtMTIzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYz04MDA9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcWNvbV9ldGhxb3NfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtODA2LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYzo4MDc6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgcWNvbV9ldGhxb3NfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtODA4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jPTIxNj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCByZW5lc2FzX2diZXRoX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMjIxLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jOjIyMjpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCByZW5lc2FzX2diZXRoX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMjIzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYz0xNjE2PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHJrX2dtYWNfZHdtYWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTYzNC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmM6MTYzNTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBya19nbWFjX2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jLTE2MzYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM9NzU9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcnpuMV9kd21hY19tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTc4LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jOjc5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHJ6bjFfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy04MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jPTIxNj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzMzJfZHdtYWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTIxOS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jOjIyMDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzMzJfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTIyMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYz02NzM9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc29jZnBnYV9kd21hY19tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTY3OC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYzo2Nzk6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc29jZnBnYV9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTY4MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jPTcyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHNvcGhnb19kd21hY19tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtNzYtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYzo3NzpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzb3BoZ29fZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jLTc4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYz0yMTA9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc3BhY2VtaXRfZHdtYWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmMtMjEzLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYzoyMTQ6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3BhY2VtaXRfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmMtMjE1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYz0xNjA9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc3RhcmZpdmVfZHdtYWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtMTY0LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYzoxNjU6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3RhcmZpdmVfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtMTY2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmM9Mjk2PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN0aV9kd21hY19tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmMtMjk5LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmM6MzAwOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHN0aV9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmMtMzAxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYz02NjI9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc3RtMzJfZHdtYWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNjY4LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYzo2Njk6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3RtMzJfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNjcwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmM9MTQxPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN1bjU1aV9nbWFjMjAwX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYy0xNDQtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYzoxNDU6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3VuNTVpX2dtYWMyMDBfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jLTE0Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9MTI2OD1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzdW44aV9kd21hY19tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjgyLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMjgzOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHN1bjhpX2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyODQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jPTE1MD1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzdW43aV9kd21hY19tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYy0xNTMtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jOjE1NDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzdW43aV9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYy0xNTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jPTM5Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB0ZWdyYV9tZ2JlX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTQwMC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmM6NDAxOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHRlZ3JhX21nYmVfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtNDAyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYz0yNjc9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgdGhlYWRfZHdtYWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmMtMjcwLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYzoyNzE6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgdGhlYWRfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmMtMjcyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYz0yNTU9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgdmlzY29udGlfZXRoX2R3bWFjX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jLTI1OC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM6MjU5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHZpc2NvbnRpX2V0aF9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yNjAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjAzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIxMDpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgc3RtbWFjX2lkX3RhYmxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjExLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QxOTozMjo0Ni44NjIwOTg1MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE4NTM2MjIxNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIE5ldHdvcmsgRHJpdmVyIEluc3RhbnRpYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgZHJpdmVyIGFuZCB0aGUgaGFyZHdhcmUuIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgYHN0bW1hY19wY2kuY2AgYW5kIGBkd21hYy1pbnRlbC5jYCBhcmUgcHJvcGVybHkgaWRlbnRpZnlpbmcgdGhlIGRldmljZSBJRHMsIGFuZCBjcnVjaWFsbHksIGlmIGBzdG1tYWNgIGlzIGJlaW5nIGNvcnJlY3RseSBpbnN0YW50aWF0ZWQgb3IgaWYgd2UncmUgZGVhbGluZyB3aXRoIGEgcGh5c2ljYWwgaGFyZHdhcmUgc2V0dXAuIEkgaGF2ZSB0byBtYWtlIHN1cmUgdGhlIGRyaXZlciBpcyBhdHRhY2hpbmcgY29ycmVjdGx5LlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgY29udGVudHMgb2YgYHN0bW1hY19wY2kuY2AsIGJlY2F1c2UgdGhhdCB3aWxsIGltbWVkaWF0ZWx5IHRlbGwgbWUgd2hhdCBkZXZpY2UgSURzIGl0IGhhbmRsZXMsIGFuZCBpZiBpdCdzIGNvcnJlY3RseSBpZGVudGlmeWluZyB0aGUgaGFyZHdhcmUgYW5kIGluc3RhbnRpYXRpbmcgdGhlIHN0bW1hYyBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MzUxLCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTk6MzI6NDguNzE1NzIyOTAxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY5MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE5MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE5MDpcXHQgKiBEZXNjcmlwdGlvbjogdGhpcyBmdW5jdGlvbiBjYWxscyB0aGUgbWFpbiB0byBmcmVlIHRoZSBuZXQgcmVzb3VyY2VzLlxcbiAxOTE6XFx0ICovXFxuIDE5MjpcXHRzdGF0aWMgdm9pZCBzdG1tYWNfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4gMTkzOlxcdHtcXG4gMTk0OlxcdFxcdHN0bW1hY19kdnJfcmVtb3ZlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbiAxOTU6XFx0fVxcbiAxOTY6XFx0XFxuIDE5NzpcXHQvKiBzeW50aGV0aWMgSUQsIG5vIG9mZmljaWFsIHZlbmRvciAqL1xcbiAxOTg6XFx0I2RlZmluZSBQQ0lfVkVORE9SX0lEX1NUTU1BQ1xcdFxcdDB4MDcwMFxcbiAxOTk6XFx0XFxuIDIwMDpcXHQjZGVmaW5lIFBDSV9ERVZJQ0VfSURfU1RNTUFDX1NUTU1BQ1xcdFxcdDB4MTEwOFxcbiAyMDE6XFx0I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NZTk9QU1lTX0dNQUM1X0lEXFx0XFx0MHg3MTAyXFxuIDIwMjpcXHRcXG4gMjAzOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcXG4gMjA0OlxcdFxcdHsgUENJX0RFVklDRV9EQVRBKFNUTU1BQywgU1RNTUFDLCBcXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxcbiAyMDU6XFx0XFx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNSUNSTywgTUFDLCBcXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxcbiAyMDY6XFx0XFx0eyBQQ0lfREVWSUNFX0RBVEEoU1lOT1BTWVMsIEdNQUM1X0lELCBcXHUwMDI2c25wc19nbWFjNV9wY2lfaW5mbykgfSxcXG4gMjA3OlxcdFxcdHt9XFxuIDIwODpcXHR9O1xcbiAyMDk6XFx0XFxuIDIxMDpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgc3RtbWFjX2lkX3RhYmxlKTtcXG4gMjExOlxcdFxcbiAyMTI6XFx0c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHN0bW1hY19wY2lfZHJpdmVyID0ge1xcbiAyMTM6XFx0XFx0Lm5hbWUgPSBTVE1NQUNfUkVTT1VSQ0VfTkFNRSxcXG4gMjE0OlxcdFxcdC5pZF90YWJsZSA9IHN0bW1hY19pZF90YWJsZSxcXG4gMjE1OlxcdFxcdC5wcm9iZSA9IHN0bW1hY19wY2lfcHJvYmUsXFxuIDIxNjpcXHRcXHQucmVtb3ZlID0gc3RtbWFjX3BjaV9yZW1vdmUsXFxuIDIxNzpcXHRcXHQuZHJpdmVyICAgICAgICAgPSB7XFxuIDIxODpcXHRcXHRcXHQucG0gICAgID0gXFx1MDAyNnN0bW1hY19zaW1wbGVfcG1fb3BzLFxcbiAyMTk6XFx0XFx0fSxcXG4gMjIwOlxcdH07XFxuIDIyMTpcXHRcXG4gMjIyOlxcdG1vZHVsZV9wY2lfZHJpdmVyKHN0bW1hY19wY2lfZHJpdmVyKTtcXG4gMjIzOlxcdFxcbiAyMjQ6XFx0TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJTVE1NQUMgMTAvMTAwLzEwMDAgRXRoZXJuZXQgUENJIGRyaXZlclxcXCIpO1xcbiAyMjU6XFx0TU9EVUxFX0FVVEhPUihcXFwiUmF5YWdvbmQgS29rYXRhbnVyIFxcdTAwM2NyYXlhZ29uZC5rb2thdGFudXJAdmF5YXZ5YWxhYnMuY29tXFx1MDAzZVxcXCIpO1xcbiAyMjY6XFx0TU9EVUxFX0FVVEhPUihcXFwiR2l1c2VwcGUgQ2F2YWxsYXJvIFxcdTAwM2NwZXBwZS5jYXZhbGxhcm9Ac3QuY29tXFx1MDAzZVxcXCIpO1xcbiAyMjc6XFx0TU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QxOTozMjo0OC43MTU3OTExNTFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MDEwNzU4NDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFFFTVUvU1RNTUFDIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgSSBjYW4gZXZlbiAqcmVhY2gqIHRoaXMgYHN0bW1hY2AgY29kZSB3aXRoIHN0YW5kYXJkIGZ1enppbmcgdGVjaG5pcXVlcy4gRmlyc3QsIGlzIFFFTVUgZXZlbiBlbXVsYXRpbmcgYFNUTU1BQ2Agb3IgYERXTUFDYD8gQW5kIGlmIHNvLCBpcyBpdCBmb3IgQVJNIG9yIHg4Nj8gVGhlIHRhcmdldCBpcyBgYW1kNjRgLCBzbyB0aGF0J3MgdGhlIGZvY3VzLiBJIG5lZWQgdG8ga25vdyBpZiBJIGNhbiBpbnN0YW50aWF0ZSBpdCBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQsIG9yIGV2ZW4gb24gR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBJIHJlbWVtYmVyIGBhbGx3aW5uZXItZW1hY2Agb3IgYHN1bnhpYCBmb3IgQVJNL1JJU0MtViwgYnV0IGZvciB4ODZfNjQsIHdoaWNoIGlzIHRoZSBwbGF0Zm9ybSBvZiBpbnRlcmVzdCwgdGhlIGFuc3dlciBtaWdodCBiZSBkaWZmZXJlbnQuIEkgcmVjYWxsZWQgdGhhdCB0aGUgZG9jdW1lbnRhdGlvbiBzYXlzIFwic3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCIgbGlrZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcyBhbmQgTklDcyByZXF1aXJpbmcgcGh5c2ljYWwgY2FyZHMgYXJlbid0IGVtdWxhdGVkLlxuXG5Tbywgd2hhdCAqaXMqIGVtdWxhdGVkPyBJIGtub3cgYWJvdXQgYGUxMDAwYCwgYGUxMDAwZWAsIGBydGw4MTM5YCwgZXRjLiBCdXQgaXMgYHN0bW1hY2Agb25lIG9mIHRob3NlPyBObywgYHN0bW1hY2AgaXMgYSBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoRFdNQUMpIElQIGNvcmUsIHVzZWQgaW4gU29DcyBsaWtlIFNUTTMyLCBSb2NrY2hpcCwgQWxsd2lubmVyLCBJbnRlbCdzIEFsZGVyIExha2UgUFNFLCBhbmQgb3RoZXJzLiBUaGF0IG1ha2VzIG1lIHRoaW5rIGl0J3MgbW9yZSBkZWVwbHkgdGllZCB0byB0aGUgaGFyZHdhcmUgYW5kIG1pZ2h0IGJlIGEgcHJvYmxlbS5cblxuTGV0IG1lIHJldmlldyB0aGUgcHJvbXB0IGFnYWluLCBzcGVjaWZpY2FsbHkgU2VjdGlvbiAyLiBJdCBleHBsaWNpdGx5IG1lbnRpb25zIFwic3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCIgYW5kIGdpdmVzIGV4YW1wbGVzIGxpa2UgdGhvc2Ugc3BlY2lmaWMgUENJZSBjYXJkcy4gQWxzbywgdGhlIHByb21wdCBkaXNjdXNzZXMgdGhpbmdzIGxpa2UgZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyBhbmQgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUgYXMgXCJ1bnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHNcIiBpbiBhIHZpcnR1YWxpemVkIHNldHRpbmcuXG5cblRoZW4sIFNlY3Rpb24gMSByZWluZm9yY2VzIHRoZSBwb2ludDogcmVhY2hhYmlsaXR5IGlzIHRoZSBwcmltYXJ5IGdhdGUuIElmIHRoZSBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAqYmVjYXVzZSogaXQgZGVwZW5kcyBvbiBoYXJkd2FyZSBub3QgYXZhaWxhYmxlIGluIFFFTVUgKG9yIEdDRSkgdGhlbiBpdCBzaG91bGRuJ3QgYmUgZnV6emVkLlxuXG5UaGVyZWZvcmUsIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGBzdG1tYWNgIGlzIHJlYWNoYWJsZSB0aHJvdWdoIGFueSBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzLiBJcyB0aGVyZSBhbnkgd2F5IHRvIG1vY2sgaXQsIG9yIGNvbm5lY3QgdG8gaXQgdGhyb3VnaCBhIGBuZXRkZXZgLCBvciB1c2UgYSBgdHVuL3RhcGAgZGV2aWNlP1xuXG5JJ2xsIHNlYXJjaCBmb3IgYHN0bW1hY2AgcmVmZXJlbmNlcyBpbiB0aGUga2VybmVsIHRyZWUuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgYW55IHZpcnR1YWwgZGV2aWNlIGRyaXZlcnMgdXRpbGl6ZSB0aGlzLiBNYXliZSB0aGVyZSdzIGEgcGxhdGZvcm0gZGV2aWNlIG9yIG1vY2sgb3IgbmV0ZGV2IGFzc29jaWF0ZWQgd2l0aCBpdC4gVGhpcyBpcyB0aGUgY3J1eCBvZiB3aGV0aGVyIEkgY2FuIGV2ZW4gcHJvY2VlZCB3aXRoIGZ1enppbmcgdGhpcyBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTMxMywiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDE5OjMyOjU0LjcyNjU1MjA4OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTczNDg5OTI5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfZHZyX3Byb2JlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MjgzPXN0YXRpYyBpbnQgZHdjX2V0aF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zMjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozMzA6XFx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzMxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM9NDI9c3RhdGljIGludCBpbnRlbF9ldGhfcGxhdF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTExNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM6MTE4OlxcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTE5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEyNjM9c3RhdGljIGludCBpbnRlbF9ldGhfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzQwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTM0MTpcXHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXQsIFxcdTAwMjZyZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM0Mi1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmM9Mzc0PXN0YXRpYyBpbnQgaXBxODA2eF9nbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmMtNDgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYzo0ODM6XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmMtNDg0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz00OTg9c3RhdGljIGludCBsb29uZ3Nvbl9kd21hY19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01NjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1NjI6XFx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0LCBcXHUwMDI2cmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTU2My1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jPTQyPXN0YXRpYyBpbnQgbHBjMTh4eF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jLTY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYzo2ODpcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYy02OS19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jPTU5OT1zdGF0aWMgaW50IG1lZGlhdGVrX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jLTY0MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jOjY0MjpcXHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02NDMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM9NDc9c3RhdGljIGludCBtZXNvbjZfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmMtNzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYzo3MzpcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmMtNzQtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jPTM4Mj1zdGF0aWMgaW50IG1lc29uOGJfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYy00NjMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jOjQ2NDpcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYy00NjUtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM9MjkzPXN0YXRpYyBpbnQgbW90b3Jjb21tX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MzU5OlxcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXQsIFxcdTAwMjZyZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM2MC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM9NDg9c3RhdGljIGludCByem4xX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtNjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jOjY4OlxcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy02OS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmM9MzU9c3RhdGljIGludCBzb3BoZ29fZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jLTY0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jOjY1OlxcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKGRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy02Ni19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jPTE0Nz1zdGF0aWMgaW50IHNwYWNlbWl0X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTIwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jOjIwNzpcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYy0yMDgtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYz05MD1zdGF0aWMgaW50IHN0YXJmaXZlX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTE1Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jOjE1MzpcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtMTU0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmM9NTI1PXN0YXRpYyBpbnQgc3RtMzJfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNTc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmM6NTc5OlxcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jLTU4MC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz0xMTA1PXN0YXRpYyBpbnQgc3VuOGlfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIwMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjEyMDI6XFx0LyogdGhlIE1BQyBpcyBydW50aW1lIHN1c3BlbmRlZCBhZnRlciBzdG1tYWNfZHZyX3Byb2JlKCksIHNvIHdlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjAzLVxcdCAqIG5lZWQgdG8gZW5zdXJlIHRoZSBNQUMgcmVzdW1lIGJhY2sgYmVmb3JlIG90aGVyIG9wZXJhdGlvbnMgc3VjaFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjA4LVxcdC8qIFRoZSBtdXggbXVzdCBiZSByZWdpc3RlcmVkIGFmdGVyIHBhcmVudCBNRElPXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMjA5OlxcdCAqIHNvIGFmdGVyIHN0bW1hY19kdnJfcHJvYmUoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIxMC1cXHQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmM9MjE0PXN0YXRpYyBpbnQgdGVncmFfbWdiZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy0zNzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYzozNzY6XFx0ZXJyID0gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0LCBcXHUwMDI2cmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTM3Ny1cXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM9MjA1PXN0YXRpYyBpbnQgdmlzY29udGlfZXRoX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jLTIzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jOjIzNzpcXHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yMzgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oPTQxMT12b2lkIHN0bW1hY19kdnJfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg6NDEyOmludCBzdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaC00MTMtXFx0XFx0ICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03ODA1PUVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19wbGF0X2RhdF9hbGxvYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03ODA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzgwNzpzdGF0aWMgaW50IF9fc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03ODA4LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMTAtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MTExOiAqIHN0bW1hY19kdnJfcHJvYmVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMTItICogQGRldjogZGV2aWNlIHBvaW50ZXJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODExOS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgxMjA6aW50IHN0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODEyMS1cXHRcXHQgICAgIHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzICpyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MTMxOlxcdHJldCA9IF9fc3RtbWFjX2R2cl9wcm9iZShkZXYsIHBsYXRfZGF0LCByZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODEzMi1cXHRpZiAocmV0IFxcdTAwMjZcXHUwMDI2IHBsYXRfZGF0LVxcdTAwM2VleGl0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTM2LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgxMzc6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX2R2cl9wcm9iZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTM4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTExOD1zdGF0aWMgaW50IHN0bW1hY19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxODM6XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdCwgXFx1MDAyNnJlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4NC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYz04NDY9aW50IHN0bW1hY19wbHRmcl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODU0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjg1NTpcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0LCByZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTg1Ni19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDE5OjMyOjU2LjQ2MTQ2MTM4NFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3ODM4NjIwMDg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQ6IFN0cnVjdHVyYWxseSBVbnJlYWNoYWJsZSBDb2RlIGluIHN0bW1hYyBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvbmUgdGhyb3VnaCB0aGUgY29kZSBhbmQgbXkgY29uY2x1c2lvbiBpcyB0aGF0IHRoaXMgYHN0bW1hY2AgZHJpdmVyIG1vZGlmaWNhdGlvbiBpcyAqbm90KiB3b3J0aCBmdXp6aW5nLCBiYXNlZCBvbiB0aGUgY3JpdGVyaWEuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbkZpcnN0LCBJIGlkZW50aWZpZWQgdGhhdCBhbGwgdGhlIHByb2JlIGZ1bmN0aW9ucyBjYWxsaW5nIGBzdG1tYWNfZHZyX3Byb2JlYCBhcmUgc3BlY2lmaWNhbGx5IGZvciBwaHlzaWNhbCBoYXJkd2FyZSBkZXZpY2VzLCBlaXRoZXIgUENJLWJhc2VkIChsaWtlIGBzdG1tYWNfcGNpX3Byb2JlYCwgYGludGVsX2V0aF9wY2lfcHJvYmVgKSBvciBpbnRlZ3JhdGVkIGludG8gU29Dcy4gTm9uZSBvZiB0aGVzZSBhcmUgc3RhbmRhcmQgZGV2aWNlcyBhdmFpbGFibGUgaW4gdGhlIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cyBjb21tb25seSB1c2VkIGZvciBmdXp6aW5nLCBhbmQgY2VydGFpbmx5IG5vdCBvbiBhbWQ2NC4gSSBldmVuIGRvdWJsZS1jaGVja2VkIGZvciB2aXJ0dWFsIGBzdG1tYWNgIGRldmljZXMsIFVTQiBnYWRnZXRzLCBvciBsb29wYmFjayBpbnRlcmZhY2VzIHRoYXQgbWlnaHQgb2ZmZXIgYSBwYXRoLCBidXQgZm91bmQgbm9uZS5cblxuTmV4dCwgSSByZWZlcmVuY2VkIHRoZSBmdXp6aW5nIGd1aWRlbGluZXMuIFNlY3Rpb24gMiBjbGVhcmx5IGRlZmluZXMgXCJzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIiBhcyBhIG5lZ2F0aXZlIGNyaXRlcmlvbiwgc3BlY2lmaWNhbGx5IG1lbnRpb25pbmcgTklDIGRyaXZlcnMgcmVxdWlyaW5nIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0J3MgYHN0bW1hY2AgdG8gYSB0ZWU6IGEgU3lub3BzeXMgRGVzaWduV2FyZSBNQUMgKERXTUFDKSBJUCBkcml2ZXIsIHdoZXRoZXIgb24gYW4gU1RNaWNyb2VsZWN0cm9uaWNzIFNvQyBvciBhIFBDSSBhZGQtaW4gYm9hcmQuIFNlY3Rpb24gMyBvdXRsaW5lcyBwb3NpdGl2ZSBjcml0ZXJpYSwgYnV0IG5vbmUgb2YgdGhvc2UgYXBwbHkgaGVyZS4gVGhlcmUncyBubyB2aXJ0dWFsIGJ1cyBhY2Nlc3MsIG5vIGxvb3BiYWNrLCBubyBjb21tb24gc29ja2V0IHVzYWdlIOKAkyBub3RoaW5nIHRoYXQgZ2l2ZXMgYSBwYXRoIGludG8gdGhpcyBjb2RlIGluIGEgc3RhbmRhcmQgZnV6emluZyBzZXR1cC5cblxuVGhlcmVmb3JlLCB0aGUgZml4LCBiZWluZyBmb2N1c2VkIG9uIEVTVCAoU2NoZWR1bGVkIFRyYWZmaWMgLyBUQVBSSU8pIGxpZmVjeWNsZSBhbmQgY29uZmlndXJhdGlvbiB3aXRoaW4gdGhlIGBzdG1tYWNgIGRyaXZlciwgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiBJdCBuZWVkcyBwaHlzaWNhbCBoYXJkd2FyZSwgd2hpY2ggbWVhbnMgaXQgY2FuJ3QgYmUgcmVhY2hlZCBieSBzdGFuZGFyZCBmdXp6aW5nLlxuXG5NeSBmaW5hbCB2ZXJpZmljYXRpb24gY29uZmlybXMgYWxsIG1vZGlmaWVkIGZpbGVzIGFyZSBpbmRlZWQgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvYCBkaXJlY3RvcnkuXG5cblNvLCBJJ20gY29uZmlkZW50IGluIHNldHRpbmcgdGhlIHJlc3VsdHM6IGBXb3J0aEZ1enppbmc9ZmFsc2VgLCBgRW5hYmxlQ29uZmlncz1bXWAsIGBGb2N1c1N5bWJvbHM9W11gLiBUaGUgcmVhc29uaW5nIGlzIGNsZWFyOiB0aGUgYHN0bW1hY2AgZHJpdmVyIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSBpbiB0aGUgY29udGV4dCBvZiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMuXG5XZSdyZSBkb25lIGhlcmUsIGxldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ2NTgsIk91dHB1dFRva2VucyI6MTA4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Nzg3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDE5OjMzOjA0LjMwMDA4Mzg3MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIgdG8gaGFuZGxlIEVTVCAoRW5oYW5jZW1lbnRzIGZvciBTY2hlZHVsZWQgVHJhZmZpYyAvIFRBUFJJTykgc2V0dXAgYW5kIGxpZmVjeWNsZS4gVGhpcyBkcml2ZXIgY29udHJvbHMgcGh5c2ljYWwgU29DL1BDSSBFdGhlcm5ldCBNQUMgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIgdG8gaGFuZGxlIEVTVCAoRW5oYW5jZW1lbnRzIGZvciBTY2hlZHVsZWQgVHJhZmZpYyAvIFRBUFJJTykgc2V0dXAgYW5kIGxpZmVjeWNsZS4gVGhpcyBkcml2ZXIgY29udHJvbHMgcGh5c2ljYWwgU29DL1BDSSBFdGhlcm5ldCBNQUMgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDE5OjMzOjA0LjMwMDExMzg5MloiLCJTZXEiOjEzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowr8rrq[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-03 19:31:30 +0000 UTC FinishedAt: 2026-09-03 19:33:05 +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+CgkJCTx0ZD4yMDI2LzA5LzAzIDE5OjMyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFNUTWljcm9lbGVjdHJvbmljcyAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIChzdG1tYWMpIGRyaXZlciB0byBoYW5kbGUgRVNUIChFbmhhbmNlbWVudHMgZm9yIFNjaGVkdWxlZCBUcmFmZmljIC8gVEFQUklPKSBzZXR1cCBhbmQgbGlmZWN5Y2xlLiBUaGlzIGRyaXZlciBjb250cm9scyBwaHlzaWNhbCBTb0MvUENJIEV0aGVybmV0IE1BQyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxOTozMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGM5ZjZmNzQwYTNmOTVkNWNhYzhkNmQ0NDkxNDI1NDFmZWYyOTUyMDNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAzIDE5OjMyOjM3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaFxuaW5kZXggMDRkYWZlYzAyMWI0Zi4uZTU1NzkxNjZkZjFhNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oXG5AQCAtNjIwLDcgJiM0Mzs2MjAsNyBAQCBzdHJ1Y3Qgc3RtbWFjX21tY19vcHMge1xuIFxuIHN0cnVjdCBzdG1tYWNfZXN0X29wcyB7XG4gXHRpbnQgKCpjb25maWd1cmUpKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IHN0bW1hY19lc3QgKmNmZyxcbi1cdFx0XHQgdW5zaWduZWQgaW50IHB0cF9yYXRlKTtcbiYjNDM7XHRcdFx0IHVuc2lnbmVkIGludCBwdHBfcmF0ZSwgYm9vbCBlbmFibGUpO1xuIFx0dm9pZCAoKmlycV9zdGF0dXMpKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHQgICBzdHJ1Y3Qgc3RtbWFjX2V4dHJhX3N0YXRzICp4LCB1MzIgdHhxY250KTtcbiB9O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmhcbmluZGV4IDc1ODJmY2E2Mzc0MTkuLmE4YzhiZTM0ZmY4MTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmhcbkBAIC0yOTgsNyAmIzQzOzI5OCw3IEBAIHN0cnVjdCBzdG1tYWNfcHJpdiB7XG4gXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQ7XG4gXHQvKiBQcm90ZWN0IGVzdCBwYXJhbWV0ZXJzICovXG4gXHRzdHJ1Y3QgbXV0ZXggZXN0X2xvY2s7XG4tXHRzdHJ1Y3Qgc3RtbWFjX2VzdCAqZXN0O1xuJiM0MztcdHN0cnVjdCBzdG1tYWNfZXN0IGVzdDtcbiBcdHN0cnVjdCBkbWFfZmVhdHVyZXMgZG1hX2NhcDtcbiBcdHN0cnVjdCBzdG1tYWNfY291bnRlcnMgbW1jO1xuIFx0aW50IGh3X2NhcF9zdXBwb3J0O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuY1xuaW5kZXggYWZjNTE2MDU5Yjg5Ny4uNDllZGZlYmJjMzllMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5jXG5AQCAtMjYsNyAmIzQzOzI2LDcgQEAgc3RhdGljIGludCBlc3Rfd3JpdGUodm9pZCBfX2lvbWVtICplc3RfYWRkciwgdTMyIHJlZywgdTMyIHZhbCwgYm9vbCBnY2wpXG4gfVxuIFxuIHN0YXRpYyBpbnQgZXN0X2NvbmZpZ3VyZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBzdG1tYWNfZXN0ICpjZmcsXG4tXHRcdFx0IHVuc2lnbmVkIGludCBwdHBfcmF0ZSlcbiYjNDM7XHRcdFx0IHVuc2lnbmVkIGludCBwdHBfcmF0ZSwgYm9vbCBlbmFibGUpXG4ge1xuIFx0dm9pZCBfX2lvbWVtICplc3RfYWRkciA9IHByaXYtXHUwMDNlZXN0YWRkcjtcbiBcdGludCBpLCByZXQgPSAwO1xuQEAgLTYyLDcgJiM0Mzs2Miw3IEBAIHN0YXRpYyBpbnQgZXN0X2NvbmZpZ3VyZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBzdG1tYWNfZXN0ICpjZmcsXG4gXHRcdGN0cmwgfD0gKChOU0VDX1BFUl9TRUMgLyBwdHBfcmF0ZSkgKiBFU1RfR01BQzVfUFRPVl9NVUwpIFx1MDAzY1x1MDAzY1xuIFx0XHRcdCBFU1RfR01BQzVfUFRPVl9TSElGVDtcbiBcdH1cbi1cdGlmIChjZmctXHUwMDNlZW5hYmxlKVxuJiM0MztcdGlmIChlbmFibGUpXG4gXHRcdGN0cmwgfD0gRVNUX0VFU1QgfCBFU1RfU1NXTCB8IEVTVF9ERkJTO1xuIFx0ZWxzZVxuIFx0XHRjdHJsIFx1MDAyNj0gfkVTVF9FRVNUO1xuQEAgLTcwLDcgJiM0Mzs3MCw3IEBAIHN0YXRpYyBpbnQgZXN0X2NvbmZpZ3VyZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBzdG1tYWNfZXN0ICpjZmcsXG4gXHR3cml0ZWwoY3RybCwgZXN0X2FkZHIgJiM0MzsgRVNUX0NPTlRST0wpO1xuIFxuIFx0LyogQ29uZmlndXJlIEVTVCBpbnRlcnJ1cHQgKi9cbi1cdGlmIChjZmctXHUwMDNlZW5hYmxlKVxuJiM0MztcdGlmIChlbmFibGUpXG4gXHRcdGN0cmwgPSBFU1RfSUVDR0NFIHwgRVNUX0lFSFMgfCBFU1RfSUVIRiB8IEVTVF9JRUJFIHwgRVNUX0lFQ0M7XG4gXHRlbHNlXG4gXHRcdGN0cmwgPSAwO1xuQEAgLTgwLDYgJiM0Mzs4MCwzNiBAQCBzdGF0aWMgaW50IGVzdF9jb25maWd1cmUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3Qgc3RtbWFjX2VzdCAqY2ZnLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztpbnQgX19zdG1tYWNfc2V0dXBfZXN0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCB0aW1lc3BlYzY0IGN1cnJlbnRfdGltZSwgdGltZTtcbiYjNDM7XHRrdGltZV90IGN1cnJlbnRfdGltZV9ucywgYmFzZXRpbWU7XG4mIzQzO1x0dTY0IGN5Y2xlX3RpbWU7XG4mIzQzO1x0aW50IGVycjtcbiYjNDM7XG4mIzQzO1x0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0cHJpdi1cdTAwM2VwdHBfY2xvY2tfb3BzLmdldHRpbWU2NChcdTAwMjZwcml2LVx1MDAzZXB0cF9jbG9ja19vcHMsIFx1MDAyNmN1cnJlbnRfdGltZSk7XG4mIzQzO1x0Y3VycmVudF90aW1lX25zID0gdGltZXNwZWM2NF90b19rdGltZShjdXJyZW50X3RpbWUpO1xuJiM0MztcbiYjNDM7XHR0aW1lLnR2X25zZWMgPSBwcml2LVx1MDAzZWVzdC5idHJfcmVzZXJ2ZVswXTtcbiYjNDM7XHR0aW1lLnR2X3NlYyA9IHByaXYtXHUwMDNlZXN0LmJ0cl9yZXNlcnZlWzFdO1xuJiM0MztcdGJhc2V0aW1lID0gdGltZXNwZWM2NF90b19rdGltZSh0aW1lKTtcbiYjNDM7XG4mIzQzO1x0Y3ljbGVfdGltZSA9ICh1NjQpcHJpdi1cdTAwM2Vlc3QuY3RyWzFdICogTlNFQ19QRVJfU0VDICYjNDM7IHByaXYtXHUwMDNlZXN0LmN0clswXTtcbiYjNDM7XG4mIzQzO1x0dGltZSA9IHN0bW1hY19jYWxjX3Rhc19iYXNldGltZShiYXNldGltZSwgY3VycmVudF90aW1lX25zLCBjeWNsZV90aW1lKTtcbiYjNDM7XHRwcml2LVx1MDAzZWVzdC5idHJbMF0gPSAodTMyKXRpbWUudHZfbnNlYztcbiYjNDM7XHRwcml2LVx1MDAzZWVzdC5idHJbMV0gPSAodTMyKXRpbWUudHZfc2VjO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBzdG1tYWNfZXN0X2NvbmZpZ3VyZShwcml2LCBwcml2LCBcdTAwMjZwcml2LVx1MDAzZWVzdCxcbiYjNDM7XHRcdFx0XHQgICBwcml2LVx1MDAzZXBsYXQtXHUwMDNlY2xrX3B0cF9yYXRlLCB0cnVlKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0bmV0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCYjMzQ7ZmFpbGVkIHRvIHJlLWNvbmZpZ3VyZSBFU1RcXG5cJiMzNDspO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gZXJyO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB2b2lkIGVzdF9pcnFfc3RhdHVzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHQgICBzdHJ1Y3Qgc3RtbWFjX2V4dHJhX3N0YXRzICp4LCB1MzIgdHhxY250KVxuIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmhcbmluZGV4IGY3MDIyMWM5Yzg0YWYuLmI0ZDFhMWYwNGYxMDggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuaFxuQEAgLTY1LDMgJiM0Mzs2NSwxNiBAQFxuICNkZWZpbmUgRVNUX0dDTF9EQVRBXHRcdFx0MHgwMDAwMDAzNFxuIFxuIGV4dGVybiBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2VzdF9vcHMgZHdtYWM1MTBfZXN0X29wcztcbiYjNDM7XG4mIzQzO2ludCBfX3N0bW1hY19zZXR1cF9lc3Qoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KTtcbiYjNDM7c3RhdGljIGlubGluZSBpbnQgc3RtbWFjX3NldHVwX2VzdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4mIzQzO3tcbiYjNDM7XHRpbnQgcmV0ID0gMDtcbiYjNDM7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbiYjNDM7XHRpZiAocHJpdi1cdTAwM2Vlc3QuZW5hYmxlKVxuJiM0MztcdFx0cmV0ID0gX19zdG1tYWNfc2V0dXBfZXN0KHByaXYpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiYjNDM7fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCBkNTc2MDU5YzA0ZGY5Li5jNGQzNTM5NDgzNDczIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuQEAgLTQ4LDYgJiM0Mzs0OCw3IEBAXG4gI2luY2x1ZGUgXCYjMzQ7c3RtbWFjX3B0cC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7c3RtbWFjX2ZwZS5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7c3RtbWFjLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7c3RtbWFjX2VzdC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7c3RtbWFjX3Bjcy5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7c3RtbWFjX3hkcC5oXCYjMzQ7XG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmVzZXQuaFx1MDAzZVxuQEAgLTkzNywxOCAmIzQzOzkzOCwyNyBAQCBzdGF0aWMgaW50IHN0bW1hY19pbml0X3RpbWVzdGFtcGluZyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIHZvaWQgc3RtbWFjX3NldHVwX3B0cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4mIzQzO3N0YXRpYyBpbnQgc3RtbWFjX3NldHVwX3B0cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4ge1xuIFx0aW50IHJldDtcbiBcbiBcdHJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShwcml2LVx1MDAzZXBsYXQtXHUwMDNlY2xrX3B0cF9yZWYpO1xuLVx0aWYgKHJldCBcdTAwM2MgMClcbiYjNDM7XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gXHRcdG5ldGRldl93YXJuKHByaXYtXHUwMDNlZGV2LFxuIFx0XHRcdCAgICBcJiMzNDtmYWlsZWQgdG8gZW5hYmxlIFBUUCByZWZlcmVuY2UgY2xvY2s6ICVwZVxcblwmIzM0OyxcbiBcdFx0XHQgICAgRVJSX1BUUihyZXQpKTtcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXQgPSBzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcocHJpdik7XG4mIzQzO1x0aWYgKHJldCkge1xuJiM0MztcdFx0Y2xrX2Rpc2FibGVfdW5wcmVwYXJlKHByaXYtXHUwMDNlcGxhdC1cdTAwM2VjbGtfcHRwX3JlZik7XG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcdH1cbiBcbi1cdGlmIChzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcocHJpdikgPT0gMClcbi1cdFx0c3RtbWFjX3B0cF9yZWdpc3Rlcihwcml2KTtcbiYjNDM7XHRzdG1tYWNfcHRwX3JlZ2lzdGVyKHByaXYpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIHZvaWQgc3RtbWFjX3JlbGVhc2VfcHRwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbkBAIC0yNzE0LDkgJiM0MzsyNzI0LDggQEAgc3RhdGljIGJvb2wgc3RtbWFjX3hkcF94bWl0X3pjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlLCB1MzIgYnVkZ2V0KVxuIFx0XHRpZiAoIXhza190eF9wZWVrX2Rlc2MocG9vbCwgXHUwMDI2eGRwX2Rlc2MpKVxuIFx0XHRcdGJyZWFrO1xuIFxuLVx0XHRpZiAocHJpdi1cdTAwM2Vlc3QgXHUwMDI2XHUwMDI2IHByaXYtXHUwMDNlZXN0LVx1MDAzZWVuYWJsZSBcdTAwMjZcdTAwMjZcbi1cdFx0ICAgIHByaXYtXHUwMDNlZXN0LVx1MDAzZW1heF9zZHVbcXVldWVdIFx1MDAyNlx1MDAyNlxuLVx0XHQgICAgeGRwX2Rlc2MubGVuIFx1MDAzZSBwcml2LVx1MDAzZWVzdC1cdTAwM2VtYXhfc2R1W3F1ZXVlXSkge1xuJiM0MztcdFx0aWYgKHByaXYtXHUwMDNlZXN0LmVuYWJsZSBcdTAwMjZcdTAwMjYgcHJpdi1cdTAwM2Vlc3QubWF4X3NkdVtxdWV1ZV0gXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgeGRwX2Rlc2MubGVuIFx1MDAzZSBwcml2LVx1MDAzZWVzdC5tYXhfc2R1W3F1ZXVlXSkge1xuIFx0XHRcdHByaXYtXHUwMDNleHN0YXRzLm1heF9zZHVfdHhxX2Ryb3BbcXVldWVdJiM0MzsmIzQzOztcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0fVxuQEAgLTQxNTMsMTAgJiM0Mzs0MTYyLDE5IEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0cmV0ID0gc3RtbWFjX2h3X3NldHVwKGRldik7XG4gXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gXHRcdG5ldGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwmIzM0OyVzOiBIdyBzZXR1cCBmYWlsZWRcXG5cJiMzNDssIF9fZnVuY19fKTtcbi1cdFx0Z290byBpbml0X2Vycm9yO1xuJiM0MztcdFx0cmV0dXJuIHJldDtcbiBcdH1cbiBcbi1cdHN0bW1hY19zZXR1cF9wdHAocHJpdik7XG4mIzQzO1x0cmV0ID0gc3RtbWFjX3NldHVwX3B0cChwcml2KTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0Z290byBwdHBfZXJyb3I7XG4mIzQzO1xuJiM0MztcdC8qIFRoZSBjb3JlIHNvZnQgcmVzZXQgaW4gc3RtbWFjX2h3X3NldHVwKCkgY2xlYXJzIHRoZSBNVExfRVNUXG4mIzQzO1x0ICogcmVnaXN0ZXJzLCBzbyByZS1hcHBseSB0aGUgdGFwcmlvIG9mZmxvYWQgYWZ0ZXIgUFRQIGlzIHVwLlxuJiM0MztcdCAqL1xuJiM0MztcdHJldCA9IHN0bW1hY19zZXR1cF9lc3QocHJpdik7XG4mIzQzO1x0aWYgKHJldCBcdTAwM2MgMClcbiYjNDM7XHRcdGdvdG8gZXN0X2Vycm9yO1xuIFxuIFx0c3RtbWFjX2luaXRfY29hbGVzY2UocHJpdik7XG4gXG5AQCAtNDE3OSw5ICYjNDM7NDE5NywxMSBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcbiBcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHByaXYtXHUwMDNlcGxhdC1cdTAwM2V0eF9xdWV1ZXNfdG9fdXNlOyBjaGFuJiM0MzsmIzQzOylcbiBcdFx0aHJ0aW1lcl9jYW5jZWwoXHUwMDI2cHJpdi1cdTAwM2VkbWFfY29uZi50eF9xdWV1ZVtjaGFuXS50eHRpbWVyKTtcbi1cbiYjNDM7ZXN0X2Vycm9yOlxuIFx0c3RtbWFjX3JlbGVhc2VfcHRwKHByaXYpO1xuLWluaXRfZXJyb3I6XG4mIzQzO3B0cF9lcnJvcjpcbiYjNDM7XHRzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpO1xuJiM0MztcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTQ3NzYsMTMgJiM0Mzs0Nzk2LDEyIEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBzdG1tYWNfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0aWYgKHNrYl9pc19nc28oc2tiKSlcbiBcdFx0cmV0dXJuIHN0bW1hY190c29feG1pdChza2IsIGRldik7XG4gXG4tXHRpZiAocHJpdi1cdTAwM2Vlc3QgXHUwMDI2XHUwMDI2IHByaXYtXHUwMDNlZXN0LVx1MDAzZWVuYWJsZSBcdTAwMjZcdTAwMjZcbi1cdCAgICBwcml2LVx1MDAzZWVzdC1cdTAwM2VtYXhfc2R1W3F1ZXVlXSkge1xuJiM0MztcdGlmIChwcml2LVx1MDAzZWVzdC5lbmFibGUgXHUwMDI2XHUwMDI2IHByaXYtXHUwMDNlZXN0Lm1heF9zZHVbcXVldWVdKSB7XG4gXHRcdHNkdV9sZW4gPSBza2ItXHUwMDNlbGVuO1xuIFx0XHQvKiBBZGQgVkxBTiB0YWcgbGVuZ3RoIGlmIFZMQU4gdGFnIGluc2VydGlvbiBvZmZsb2FkIGlzIHJlcXVlc3RlZCAqL1xuIFx0XHRpZiAocHJpdi1cdTAwM2VkbWFfY2FwLnZsaW5zIFx1MDAyNlx1MDAyNiBza2Jfdmxhbl90YWdfcHJlc2VudChza2IpKVxuIFx0XHRcdHNkdV9sZW4gJiM0Mzs9IFZMQU5fSExFTjtcbi1cdFx0aWYgKHNkdV9sZW4gXHUwMDNlIHByaXYtXHUwMDNlZXN0LVx1MDAzZW1heF9zZHVbcXVldWVdKSB7XG4mIzQzO1x0XHRpZiAoc2R1X2xlbiBcdTAwM2UgcHJpdi1cdTAwM2Vlc3QubWF4X3NkdVtxdWV1ZV0pIHtcbiBcdFx0XHRwcml2LVx1MDAzZXhzdGF0cy5tYXhfc2R1X3R4cV9kcm9wW3F1ZXVlXSYjNDM7JiM0Mzs7XG4gXHRcdFx0Z290byBtYXhfc2R1X2VycjtcbiBcdFx0fVxuQEAgLTUxODYsOSAmIzQzOzUyMDUsOCBAQCBzdGF0aWMgaW50IHN0bW1hY194ZHBfeG1pdF94ZHBmKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgaW50IHF1ZXVlLFxuIFx0aWYgKHN0bW1hY190eF9hdmFpbChwcml2LCBxdWV1ZSkgXHUwMDNjIFNUTU1BQ19UWF9USFJFU0gocHJpdikpXG4gXHRcdHJldHVybiBTVE1NQUNfWERQX0NPTlNVTUVEO1xuIFxuLVx0aWYgKHByaXYtXHUwMDNlZXN0IFx1MDAyNlx1MDAyNiBwcml2LVx1MDAzZWVzdC1cdTAwM2VlbmFibGUgXHUwMDI2XHUwMDI2XG4tXHQgICAgcHJpdi1cdTAwM2Vlc3QtXHUwMDNlbWF4X3NkdVtxdWV1ZV0gXHUwMDI2XHUwMDI2XG4tXHQgICAgeGRwZi1cdTAwM2VsZW4gXHUwMDNlIHByaXYtXHUwMDNlZXN0LVx1MDAzZW1heF9zZHVbcXVldWVdKSB7XG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlZXN0LmVuYWJsZSBcdTAwMjZcdTAwMjYgcHJpdi1cdTAwM2Vlc3QubWF4X3NkdVtxdWV1ZV0gXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIHhkcGYtXHUwMDNlbGVuIFx1MDAzZSBwcml2LVx1MDAzZWVzdC5tYXhfc2R1W3F1ZXVlXSkge1xuIFx0XHRwcml2LVx1MDAzZXhzdGF0cy5tYXhfc2R1X3R4cV9kcm9wW3F1ZXVlXSYjNDM7JiM0Mzs7XG4gXHRcdHJldHVybiBTVE1NQUNfWERQX0NPTlNVTUVEO1xuIFx0fVxuQEAgLTgwMTcsNiAmIzQzOzgwMzUsNyBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsXG4gXHRzdG1tYWNfbmFwaV9hZGQobmRldik7XG4gXG4gXHRtdXRleF9pbml0KFx1MDAyNnByaXYtXHUwMDNlbG9jayk7XG4mIzQzO1x0bXV0ZXhfaW5pdChcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbiBcbiBcdHN0bW1hY19mcGVfaW5pdChwcml2KTtcbiBcbkBAIC04MTQ4LDYgJiM0Mzs4MTY3LDcgQEAgdm9pZCBzdG1tYWNfZHZyX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRzdG1tYWNfbWRpb191bnJlZ2lzdGVyKG5kZXYpO1xuIFxuIFx0ZGVzdHJveV93b3JrcXVldWUocHJpdi1cdTAwM2V3cSk7XG4mIzQzO1x0bXV0ZXhfZGVzdHJveShcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbiBcdG11dGV4X2Rlc3Ryb3koXHUwMDI2cHJpdi1cdTAwM2Vsb2NrKTtcbiBcdGJpdG1hcF9mcmVlKHByaXYtXHUwMDNlYWZfeGRwX3pjX3Fwcyk7XG4gXG5AQCAtODMxOCwxMyAmIzQzOzgzMzgsMTYgQEAgaW50IHN0bW1hY19yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0cmV0ID0gc3RtbWFjX2h3X3NldHVwKG5kZXYpO1xuIFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRuZXRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcJiMzNDslczogSHcgc2V0dXAgZmFpbGVkXFxuXCYjMzQ7LCBfX2Z1bmNfXyk7XG4tXHRcdHN0bW1hY19sZWdhY3lfc2VyZGVzX3Bvd2VyX2Rvd24ocHJpdik7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZWxvY2spO1xuLVx0XHRydG5sX3VubG9jaygpO1xuLVx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdFx0Z290byBlcnJvcl91bmxvY2s7XG4gXHR9XG4gXG4tXHRzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcocHJpdik7XG4mIzQzO1x0cmV0ID0gc3RtbWFjX2luaXRfdGltZXN0YW1waW5nKHByaXYpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRnb3RvIGVycm9yX3N0b3BfZG1hO1xuJiM0MztcbiYjNDM7XHRyZXQgPSBzdG1tYWNfc2V0dXBfZXN0KHByaXYpO1xuJiM0MztcdGlmIChyZXQgXHUwMDNjIDApXG4mIzQzO1x0XHRnb3RvIGVycm9yX3N0b3BfZG1hO1xuIFxuIFx0c3RtbWFjX2luaXRfY29hbGVzY2UocHJpdik7XG4gXHRwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKHByaXYtXHUwMDNlcGh5bGluayk7XG5AQCAtODM0OCw2ICYjNDM7ODM3MSwxNSBAQCBpbnQgc3RtbWFjX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRuZXRpZl9kZXZpY2VfYXR0YWNoKG5kZXYpO1xuIFxuIFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztlcnJvcl9zdG9wX2RtYTpcbiYjNDM7XHRzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpO1xuJiM0MztlcnJvcl91bmxvY2s6XG4mIzQzO1x0c3RtbWFjX2xlZ2FjeV9zZXJkZXNfcG93ZXJfZG93bihwcml2KTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRydG5sX3VubG9jaygpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmV0O1xuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfcmVzdW1lKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcHRwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcHRwLmNcbmluZGV4IDk2MDI0OTk2MDAwNGMuLjhmM2E5MGRmMzE3OGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcHRwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wdHAuY1xuQEAgLTgsNiAmIzQzOzgsNyBAQFxuICAgQXV0aG9yOiBSYXlhZ29uZCBLb2thdGFudXIgXHUwMDNjcmF5YWdvbmRAdmF5YXZ5YWxhYnMuY29tXHUwMDNlXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbiAjaW5jbHVkZSBcJiMzNDtzdG1tYWMuaFwmIzM0O1xuJiM0MzsjaW5jbHVkZSBcJiMzNDtzdG1tYWNfZXN0LmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtzdG1tYWNfcHRwLmhcJiMzNDtcbiBcbiAjZGVmaW5lIFBUUF9TQUZFX1RJTUVfT0ZGU0VUX05TXHQ1MDAwMDBcbkBAIC01NSw3ICYjNDM7NTYsNiBAQCBzdGF0aWMgaW50IHN0bW1hY19hZGp1c3RfdGltZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgczY0IGRlbHRhKVxuIFx0dTMyIHF1b3RpZW50LCByZW1pbmRlcjtcbiBcdGludCBuZWdfYWRqID0gMDtcbiBcdGJvb2wgeG1hYywgZXN0X3JzdCA9IGZhbHNlO1xuLVx0aW50IHJldDtcbiBcbiBcdHhtYWMgPSBkd21hY19pc194bWFjKHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUpO1xuIFxuQEAgLTY5LDQ2ICYjNDM7NjksMjEgQEAgc3RhdGljIGludCBzdG1tYWNfYWRqdXN0X3RpbWUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIHM2NCBkZWx0YSlcbiBcdG5zZWMgPSByZW1pbmRlcjtcbiBcbiBcdC8qIElmIEVTVCBpcyBlbmFibGVkLCBkaXNhYmxlZCBpdCBiZWZvcmUgYWRqdXN0IHB0cCB0aW1lLiAqL1xuLVx0aWYgKHByaXYtXHUwMDNlZXN0IFx1MDAyNlx1MDAyNiBwcml2LVx1MDAzZWVzdC1cdTAwM2VlbmFibGUpIHtcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlZXN0X2xvY2spO1xuJiM0MztcdGlmIChwcml2LVx1MDAzZWVzdC5lbmFibGUpIHtcbiBcdFx0ZXN0X3JzdCA9IHRydWU7XG4tXHRcdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2Vlc3RfbG9jayk7XG4tXHRcdHByaXYtXHUwMDNlZXN0LVx1MDAzZWVuYWJsZSA9IGZhbHNlO1xuLVx0XHRzdG1tYWNfZXN0X2NvbmZpZ3VyZShwcml2LCBwcml2LCBwcml2LVx1MDAzZWVzdCxcbi1cdFx0XHRcdCAgICAgcHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNsa19wdHBfcmF0ZSk7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbiYjNDM7XHRcdHN0bW1hY19lc3RfY29uZmlndXJlKHByaXYsIHByaXYsIFx1MDAyNnByaXYtXHUwMDNlZXN0LFxuJiM0MztcdFx0XHRcdCAgICAgcHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNsa19wdHBfcmF0ZSwgZmFsc2UpO1xuIFx0fVxuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbiBcbiBcdHdyaXRlX2xvY2tfaXJxc2F2ZShcdTAwMjZwcml2LVx1MDAzZXB0cF9sb2NrLCBmbGFncyk7XG4gXHRzdG1tYWNfYWRqdXN0X3N5c3RpbWUocHJpdiwgcHJpdi1cdTAwM2VwdHBhZGRyLCBzZWMsIG5zZWMsIG5lZ19hZGosIHhtYWMpO1xuIFx0d3JpdGVfdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2cHJpdi1cdTAwM2VwdHBfbG9jaywgZmxhZ3MpO1xuIFxuIFx0LyogQ2FsY3VsYXRlIG5ldyBiYXNldGltZSBhbmQgcmUtY29uZmlndXJlZCBFU1QgYWZ0ZXIgUFRQIHRpbWUgYWRqdXN0LiAqL1xuLVx0aWYgKGVzdF9yc3QpIHtcbi1cdFx0c3RydWN0IHRpbWVzcGVjNjQgY3VycmVudF90aW1lLCB0aW1lO1xuLVx0XHRrdGltZV90IGN1cnJlbnRfdGltZV9ucywgYmFzZXRpbWU7XG4tXHRcdHU2NCBjeWNsZV90aW1lO1xuLVxuLVx0XHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlZXN0X2xvY2spO1xuLVx0XHRwcml2LVx1MDAzZXB0cF9jbG9ja19vcHMuZ2V0dGltZTY0KFx1MDAyNnByaXYtXHUwMDNlcHRwX2Nsb2NrX29wcywgXHUwMDI2Y3VycmVudF90aW1lKTtcbi1cdFx0Y3VycmVudF90aW1lX25zID0gdGltZXNwZWM2NF90b19rdGltZShjdXJyZW50X3RpbWUpO1xuLVx0XHR0aW1lLnR2X25zZWMgPSBwcml2LVx1MDAzZWVzdC1cdTAwM2VidHJfcmVzZXJ2ZVswXTtcbi1cdFx0dGltZS50dl9zZWMgPSBwcml2LVx1MDAzZWVzdC1cdTAwM2VidHJfcmVzZXJ2ZVsxXTtcbi1cdFx0YmFzZXRpbWUgPSB0aW1lc3BlYzY0X3RvX2t0aW1lKHRpbWUpO1xuLVx0XHRjeWNsZV90aW1lID0gKHU2NClwcml2LVx1MDAzZWVzdC1cdTAwM2VjdHJbMV0gKiBOU0VDX1BFUl9TRUMgJiM0Mztcbi1cdFx0XHQgICAgIHByaXYtXHUwMDNlZXN0LVx1MDAzZWN0clswXTtcbi1cdFx0dGltZSA9IHN0bW1hY19jYWxjX3Rhc19iYXNldGltZShiYXNldGltZSxcbi1cdFx0XHRcdFx0XHRjdXJyZW50X3RpbWVfbnMsXG4tXHRcdFx0XHRcdFx0Y3ljbGVfdGltZSk7XG4tXG4tXHRcdHByaXYtXHUwMDNlZXN0LVx1MDAzZWJ0clswXSA9ICh1MzIpdGltZS50dl9uc2VjO1xuLVx0XHRwcml2LVx1MDAzZWVzdC1cdTAwM2VidHJbMV0gPSAodTMyKXRpbWUudHZfc2VjO1xuLVx0XHRwcml2LVx1MDAzZWVzdC1cdTAwM2VlbmFibGUgPSB0cnVlO1xuLVx0XHRyZXQgPSBzdG1tYWNfZXN0X2NvbmZpZ3VyZShwcml2LCBwcml2LCBwcml2LVx1MDAzZWVzdCxcbi1cdFx0XHRcdFx0ICAgcHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNsa19wdHBfcmF0ZSk7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbi1cdFx0aWYgKHJldClcbi1cdFx0XHRuZXRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcJiMzNDtmYWlsZWQgdG8gY29uZmlndXJlIEVTVFxcblwmIzM0Oyk7XG4tXHR9XG4mIzQzO1x0aWYgKGVzdF9yc3QpXG4mIzQzO1x0XHRzdG1tYWNfc2V0dXBfZXN0KHByaXYpO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmNcbmluZGV4IDE0Y2FiZTc2ZTUzZWMuLjk3NDVjOWJhZTMzYzEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmNcbkBAIC0xMCw2ICYjNDM7MTAsNyBAQFxuICNpbmNsdWRlIFwmIzM0O2R3bWFjNC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7ZHdtYWM1LmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtzdG1tYWMuaFwmIzM0O1xuJiM0MzsjaW5jbHVkZSBcJiMzNDtzdG1tYWNfZXN0LmhcJiMzNDtcbiBcbiBzdGF0aWMgdm9pZCB0Y19maWxsX2FsbF9wYXNzX2VudHJ5KHN0cnVjdCBzdG1tYWNfdGNfZW50cnkgKmVudHJ5KVxuIHtcbkBAIC05NTksNyAmIzQzOzk2MCw3IEBAIHN0YXRpYyB2b2lkIHRjX3RhcHJpb19tYXBfbWF4c2R1X3R4cShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHRcdGNvdW50ID0gcW9wdC1cdTAwM2VtcXByaW8ucW9wdC5jb3VudFtpXTtcbiBcbiBcdFx0Zm9yIChqID0gb2Zmc2V0OyBqIFx1MDAzYyBvZmZzZXQgJiM0MzsgY291bnQ7IGomIzQzOyYjNDM7KVxuLVx0XHRcdHByaXYtXHUwMDNlZXN0LVx1MDAzZW1heF9zZHVbal0gPSBxb3B0LVx1MDAzZW1heF9zZHVbaV0gJiM0MzsgRVRIX0hMRU4gLSBFVEhfVExFTjtcbiYjNDM7XHRcdFx0cHJpdi1cdTAwM2Vlc3QubWF4X3NkdVtqXSA9IHFvcHQtXHUwMDNlbWF4X3NkdVtpXSAmIzQzOyBFVEhfSExFTiAtIEVUSF9UTEVOO1xuIFx0fVxuIH1cbiBcbkBAIC05NjgsMTAgJiM0Mzs5NjksMTAgQEAgc3RhdGljIGludCB0Y190YXByaW9fY29uZmlndXJlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiB7XG4gXHR1MzIgc2l6ZSwgd2lkID0gcHJpdi1cdTAwM2VkbWFfY2FwLmVzdHdpZCwgZGVwID0gcHJpdi1cdTAwM2VkbWFfY2FwLmVzdGRlcDtcbiBcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayA9IHFvcHQtXHUwMDNlbXFwcmlvLmV4dGFjaztcbi1cdHN0cnVjdCB0aW1lc3BlYzY0IHRpbWUsIGN1cnJlbnRfdGltZSwgcW9wdF90aW1lO1xuLVx0a3RpbWVfdCBjdXJyZW50X3RpbWVfbnM7XG4mIzQzO1x0dTY0IGN0ciA9IHFvcHQtXHUwMDNlY3ljbGVfdGltZTtcbiYjNDM7XHRzdHJ1Y3QgdGltZXNwZWM2NCB0aW1lO1xuJiM0MztcdHUzMiAqZ2NsID0gTlVMTDtcbiBcdGludCBpLCByZXQgPSAwO1xuLVx0dTY0IGN0cjtcbiBcbiBcdGlmIChxb3B0LVx1MDAzZWJhc2VfdGltZSBcdTAwM2MgMClcbiBcdFx0cmV0dXJuIC1FUkFOR0U7XG5AQCAtOTc5LDYgJiM0Mzs5ODAsOSBAQCBzdGF0aWMgaW50IHRjX3RhcHJpb19jb25maWd1cmUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0aWYgKCFwcml2LVx1MDAzZWRtYV9jYXAuZXN0c2VsKVxuIFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXG4mIzQzO1x0aWYgKGN0ciBcdTAwM2UgKHU2NClVMzJfTUFYICogTlNFQ19QRVJfU0VDKVxuJiM0MztcdFx0cmV0dXJuIC1FUkFOR0U7XG4mIzQzO1xuIFx0c3dpdGNoICh3aWQpIHtcbiBcdGNhc2UgMHgxOlxuIFx0XHR3aWQgPSAxNjtcbkBAIC0xMDEzLDQ0ICYjNDM7MTAxNyw0NSBAQCBzdGF0aWMgaW50IHRjX3RhcHJpb19jb25maWd1cmUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXHR9XG4gXG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbiYjNDM7XG4gXHRpZiAocW9wdC1cdTAwM2VjbWQgPT0gVEFQUklPX0NNRF9ERVNUUk9ZKVxuIFx0XHRnb3RvIGRpc2FibGU7XG4gXG4tXHRpZiAocW9wdC1cdTAwM2VudW1fZW50cmllcyBcdTAwM2UgZGVwKVxuLVx0XHRyZXR1cm4gLUVJTlZBTDtcbi1cdGlmICghcW9wdC1cdTAwM2VjeWNsZV90aW1lKVxuLVx0XHRyZXR1cm4gLUVSQU5HRTtcbi1cdGlmIChxb3B0LVx1MDAzZWN5Y2xlX3RpbWVfZXh0ZW5zaW9uIFx1MDAzZT0gQklUKHdpZCAmIzQzOyA3KSlcbi1cdFx0cmV0dXJuIC1FUkFOR0U7XG4tXG4tXHRpZiAoIXByaXYtXHUwMDNlZXN0KSB7XG4tXHRcdHByaXYtXHUwMDNlZXN0ID0gZGV2bV9remFsbG9jKHByaXYtXHUwMDNlZGV2aWNlLCBzaXplb2YoKnByaXYtXHUwMDNlZXN0KSxcbi1cdFx0XHRcdFx0IEdGUF9LRVJORUwpO1xuLVx0XHRpZiAoIXByaXYtXHUwMDNlZXN0KVxuLVx0XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcdGlmIChxb3B0LVx1MDAzZW51bV9lbnRyaWVzIFx1MDAzZSBkZXApIHtcbiYjNDM7XHRcdHJldCA9IC1FSU5WQUw7XG4mIzQzO1x0XHRnb3RvIHVubG9jaztcbiYjNDM7XHR9XG4gXG4tXHRcdG11dGV4X2luaXQoXHUwMDI2cHJpdi1cdTAwM2Vlc3RfbG9jayk7XG4tXHR9IGVsc2Uge1xuLVx0XHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlZXN0X2xvY2spO1xuLVx0XHRtZW1zZXQocHJpdi1cdTAwM2Vlc3QsIDAsIHNpemVvZigqcHJpdi1cdTAwM2Vlc3QpKTtcbi1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlZXN0X2xvY2spO1xuJiM0MztcdGlmICghcW9wdC1cdTAwM2VjeWNsZV90aW1lKSB7XG4mIzQzO1x0XHRyZXQgPSAtRVJBTkdFO1xuJiM0MztcdFx0Z290byB1bmxvY2s7XG4gXHR9XG4gXG4tXHRzaXplID0gcW9wdC1cdTAwM2VudW1fZW50cmllcztcbiYjNDM7XHRpZiAocW9wdC1cdTAwM2VjeWNsZV90aW1lX2V4dGVuc2lvbiBcdTAwM2U9IEJJVCh3aWQgJiM0MzsgNykpIHtcbiYjNDM7XHRcdHJldCA9IC1FUkFOR0U7XG4mIzQzO1x0XHRnb3RvIHVubG9jaztcbiYjNDM7XHR9XG4gXG4tXHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlZXN0X2xvY2spO1xuLVx0cHJpdi1cdTAwM2Vlc3QtXHUwMDNlZ2NsX3NpemUgPSBzaXplO1xuLVx0cHJpdi1cdTAwM2Vlc3QtXHUwMDNlZW5hYmxlID0gcW9wdC1cdTAwM2VjbWQgPT0gVEFQUklPX0NNRF9SRVBMQUNFO1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlZXN0X2xvY2spO1xuJiM0MztcdGdjbCA9IGt6YWxsb2Moc2l6ZW9mKCpnY2wpICogRVNUX0dDTCwgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0aWYgKCFnY2wpIHtcbiYjNDM7XHRcdHJldCA9IC1FTk9NRU07XG4mIzQzO1x0XHRnb3RvIHVubG9jaztcbiYjNDM7XHR9XG4gXG4mIzQzO1x0c2l6ZSA9IHFvcHQtXHUwMDNlbnVtX2VudHJpZXM7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBzaXplOyBpJiM0MzsmIzQzOykge1xuIFx0XHRzNjQgZGVsdGFfbnMgPSBxb3B0LVx1MDAzZWVudHJpZXNbaV0uaW50ZXJ2YWw7XG4gXHRcdHUzMiBnYXRlcyA9IHFvcHQtXHUwMDNlZW50cmllc1tpXS5nYXRlX21hc2s7XG4gXG4tXHRcdGlmIChkZWx0YV9ucyBcdTAwM2UgR0VOTUFTSyh3aWQgLSAxLCAwKSlcbi1cdFx0XHRyZXR1cm4gLUVSQU5HRTtcbi1cdFx0aWYgKGdhdGVzIFx1MDAzZSBHRU5NQVNLKDMxIC0gd2lkLCAwKSlcbi1cdFx0XHRyZXR1cm4gLUVSQU5HRTtcbiYjNDM7XHRcdGlmIChkZWx0YV9ucyBcdTAwM2UgR0VOTUFTSyh3aWQgLSAxLCAwKSkge1xuJiM0MztcdFx0XHRyZXQgPSAtRVJBTkdFO1xuJiM0MztcdFx0XHRnb3RvIGZyZWVfZ2NsO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0aWYgKGdhdGVzIFx1MDAzZSBHRU5NQVNLKDMxIC0gd2lkLCAwKSkge1xuJiM0MztcdFx0XHRyZXQgPSAtRVJBTkdFO1xuJiM0MztcdFx0XHRnb3RvIGZyZWVfZ2NsO1xuJiM0MztcdFx0fVxuIFxuIFx0XHRzd2l0Y2ggKHFvcHQtXHUwMDNlZW50cmllc1tpXS5jb21tYW5kKSB7XG4gXHRcdGNhc2UgVENfVEFQUklPX0NNRF9TRVRfR0FURVM6XG5AQCAtMTA2Miw2NSAmIzQzOzEwNjcsNTggQEAgc3RhdGljIGludCB0Y190YXByaW9fY29uZmlndXJlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdFx0XHRnYXRlcyBcdTAwMjY9IH5CSVQoMCk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGRlZmF1bHQ6XG4tXHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuJiM0MztcdFx0XHRyZXQgPSAtRU9QTk9UU1VQUDtcbiYjNDM7XHRcdFx0Z290byBmcmVlX2djbDtcbiBcdFx0fVxuIFxuLVx0XHRwcml2LVx1MDAzZWVzdC1cdTAwM2VnY2xbaV0gPSBkZWx0YV9ucyB8IChnYXRlcyBcdTAwM2NcdTAwM2Mgd2lkKTtcbiYjNDM7XHRcdGdjbFtpXSA9IGRlbHRhX25zIHwgKGdhdGVzIFx1MDAzY1x1MDAzYyB3aWQpO1xuIFx0fVxuIFxuLVx0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbi1cdC8qIEFkanVzdCBmb3IgcmVhbCBzeXN0ZW0gdGltZSAqL1xuLVx0cHJpdi1cdTAwM2VwdHBfY2xvY2tfb3BzLmdldHRpbWU2NChcdTAwMjZwcml2LVx1MDAzZXB0cF9jbG9ja19vcHMsIFx1MDAyNmN1cnJlbnRfdGltZSk7XG4tXHRjdXJyZW50X3RpbWVfbnMgPSB0aW1lc3BlYzY0X3RvX2t0aW1lKGN1cnJlbnRfdGltZSk7XG4tXHR0aW1lID0gc3RtbWFjX2NhbGNfdGFzX2Jhc2V0aW1lKHFvcHQtXHUwMDNlYmFzZV90aW1lLCBjdXJyZW50X3RpbWVfbnMsXG4tXHRcdFx0XHRcdHFvcHQtXHUwMDNlY3ljbGVfdGltZSk7XG4tXG4tXHRwcml2LVx1MDAzZWVzdC1cdTAwM2VidHJbMF0gPSAodTMyKXRpbWUudHZfbnNlYztcbi1cdHByaXYtXHUwMDNlZXN0LVx1MDAzZWJ0clsxXSA9ICh1MzIpdGltZS50dl9zZWM7XG4mIzQzO1x0bWVtc2V0KFx1MDAyNnByaXYtXHUwMDNlZXN0LCAwLCBzaXplb2YocHJpdi1cdTAwM2Vlc3QpKTtcbiYjNDM7XHRtZW1jcHkocHJpdi1cdTAwM2Vlc3QuZ2NsLCBnY2wsIHNpemVvZihwcml2LVx1MDAzZWVzdC5nY2wpKTtcbiYjNDM7XHRwcml2LVx1MDAzZWVzdC5nY2xfc2l6ZSA9IHNpemU7XG4gXG4tXHRxb3B0X3RpbWUgPSBrdGltZV90b190aW1lc3BlYzY0KHFvcHQtXHUwMDNlYmFzZV90aW1lKTtcbi1cdHByaXYtXHUwMDNlZXN0LVx1MDAzZWJ0cl9yZXNlcnZlWzBdID0gKHUzMilxb3B0X3RpbWUudHZfbnNlYztcbi1cdHByaXYtXHUwMDNlZXN0LVx1MDAzZWJ0cl9yZXNlcnZlWzFdID0gKHUzMilxb3B0X3RpbWUudHZfc2VjO1xuJiM0MztcdHRpbWUgPSBrdGltZV90b190aW1lc3BlYzY0KHFvcHQtXHUwMDNlYmFzZV90aW1lKTtcbiYjNDM7XHRwcml2LVx1MDAzZWVzdC5idHJfcmVzZXJ2ZVswXSA9ICh1MzIpdGltZS50dl9uc2VjO1xuJiM0MztcdHByaXYtXHUwMDNlZXN0LmJ0cl9yZXNlcnZlWzFdID0gKHUzMil0aW1lLnR2X3NlYztcbiBcbi1cdGN0ciA9IHFvcHQtXHUwMDNlY3ljbGVfdGltZTtcbi1cdHByaXYtXHUwMDNlZXN0LVx1MDAzZWN0clswXSA9IGRvX2RpdihjdHIsIE5TRUNfUEVSX1NFQyk7XG4tXHRwcml2LVx1MDAzZWVzdC1cdTAwM2VjdHJbMV0gPSAodTMyKWN0cjtcbi1cbi1cdHByaXYtXHUwMDNlZXN0LVx1MDAzZXRlciA9IHFvcHQtXHUwMDNlY3ljbGVfdGltZV9leHRlbnNpb247XG4mIzQzO1x0cHJpdi1cdTAwM2Vlc3QuY3RyWzBdID0gZG9fZGl2KGN0ciwgTlNFQ19QRVJfU0VDKTtcbiYjNDM7XHRwcml2LVx1MDAzZWVzdC5jdHJbMV0gPSAodTMyKWN0cjtcbiBcbiYjNDM7XHRwcml2LVx1MDAzZWVzdC50ZXIgPSBxb3B0LVx1MDAzZWN5Y2xlX3RpbWVfZXh0ZW5zaW9uO1xuIFx0dGNfdGFwcmlvX21hcF9tYXhzZHVfdHhxKHByaXYsIHFvcHQpO1xuIFxuLVx0cmV0ID0gc3RtbWFjX2VzdF9jb25maWd1cmUocHJpdiwgcHJpdiwgcHJpdi1cdTAwM2Vlc3QsXG4tXHRcdFx0XHQgICBwcml2LVx1MDAzZXBsYXQtXHUwMDNlY2xrX3B0cF9yYXRlKTtcbi1cdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbi1cdGlmIChyZXQpIHtcbi1cdFx0bmV0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCYjMzQ7ZmFpbGVkIHRvIGNvbmZpZ3VyZSBFU1RcXG5cJiMzNDspO1xuJiM0MztcdHJldCA9IF9fc3RtbWFjX3NldHVwX2VzdChwcml2KTtcbiYjNDM7XHRpZiAocmV0KVxuIFx0XHRnb3RvIGRpc2FibGU7XG4tXHR9XG4gXG4gXHRyZXQgPSBzdG1tYWNfZnBlX21hcF9wcmVlbXB0aW9uX2NsYXNzKHByaXYsIHByaXYtXHUwMDNlZGV2LCBleHRhY2ssXG4gXHRcdFx0XHRcdCAgICAgIHFvcHQtXHUwMDNlbXFwcmlvLnByZWVtcHRpYmxlX3Rjcyk7XG4gXHRpZiAocmV0KVxuIFx0XHRnb3RvIGRpc2FibGU7XG4gXG4mIzQzO1x0cHJpdi1cdTAwM2Vlc3QuZW5hYmxlID0gdHJ1ZTtcbiYjNDM7XHRrZnJlZShnY2wpO1xuJiM0MztcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2Vlc3RfbG9jayk7XG4mIzQzO1xuIFx0cmV0dXJuIDA7XG4gXG4gZGlzYWJsZTpcbi1cdGlmIChwcml2LVx1MDAzZWVzdCkge1xuLVx0XHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlZXN0X2xvY2spO1xuLVx0XHRwcml2LVx1MDAzZWVzdC1cdTAwM2VlbmFibGUgPSBmYWxzZTtcbi1cdFx0c3RtbWFjX2VzdF9jb25maWd1cmUocHJpdiwgcHJpdiwgcHJpdi1cdTAwM2Vlc3QsXG4tXHRcdFx0XHQgICAgIHByaXYtXHUwMDNlcGxhdC1cdTAwM2VjbGtfcHRwX3JhdGUpO1xuLVx0XHQvKiBSZXNldCB0YXByaW8gc3RhdHVzICovXG4tXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHByaXYtXHUwMDNlcGxhdC1cdTAwM2V0eF9xdWV1ZXNfdG9fdXNlOyBpJiM0MzsmIzQzOykge1xuLVx0XHRcdHByaXYtXHUwMDNleHN0YXRzLm1heF9zZHVfdHhxX2Ryb3BbaV0gPSAwO1xuLVx0XHRcdHByaXYtXHUwMDNleHN0YXRzLm10bF9lc3RfdHhxX2hsYmZbaV0gPSAwO1xuLVx0XHRcdHByaXYtXHUwMDNleHN0YXRzLm10bF9lc3RfdHhxX2hsYnNbaV0gPSAwO1xuLVx0XHR9XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbiYjNDM7XHRwcml2LVx1MDAzZWVzdC5lbmFibGUgPSBmYWxzZTtcbiYjNDM7XHRzdG1tYWNfZXN0X2NvbmZpZ3VyZShwcml2LCBwcml2LCBcdTAwMjZwcml2LVx1MDAzZWVzdCxcbiYjNDM7XHRcdFx0ICAgICBwcml2LVx1MDAzZXBsYXQtXHUwMDNlY2xrX3B0cF9yYXRlLCBmYWxzZSk7XG4mIzQzO1x0LyogUmVzZXQgdGFwcmlvIHN0YXR1cyAqL1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHByaXYtXHUwMDNlcGxhdC1cdTAwM2V0eF9xdWV1ZXNfdG9fdXNlOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0cHJpdi1cdTAwM2V4c3RhdHMubWF4X3NkdV90eHFfZHJvcFtpXSA9IDA7XG4mIzQzO1x0XHRwcml2LVx1MDAzZXhzdGF0cy5tdGxfZXN0X3R4cV9obGJmW2ldID0gMDtcbiYjNDM7XHRcdHByaXYtXHUwMDNleHN0YXRzLm10bF9lc3RfdHhxX2hsYnNbaV0gPSAwO1xuIFx0fVxuLVxuIFx0c3RtbWFjX2ZwZV9tYXBfcHJlZW1wdGlvbl9jbGFzcyhwcml2LCBwcml2LVx1MDAzZWRldiwgZXh0YWNrLCAwKTtcbiYjNDM7ZnJlZV9nY2w6XG4mIzQzO1x0a2ZyZWUoZ2NsKTtcbiYjNDM7dW5sb2NrOlxuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbiBcbiBcdHJldHVybiByZXQ7XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDE5OjMyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIgdG8gaGFuZGxlIEVTVCAoRW5oYW5jZW1lbnRzIGZvciBTY2hlZHVsZWQgVHJhZmZpYyAvIFRBUFJJTykgc2V0dXAgYW5kIGxpZmVjeWNsZS4gVGhpcyBkcml2ZXIgY29udHJvbHMgcGh5c2ljYWwgU29DL1BDSSBFdGhlcm5ldCBNQUMgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjOWY2Zjc0MGEzZjk1ZDVjYWM4ZDZkNDQ5MTQyNTQxZmVmMjk1MjAzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBTZXAgMyAxOTozMjozNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaAppbmRleCAwNGRhZmVjMDIxYjRmLi5lNTU3OTE2NmRmMWE1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oCkBAIC02MjAsNyAmIzQzOzYyMCw3IEBAIHN0cnVjdCBzdG1tYWNfbW1jX29wcyB7CiAKIHN0cnVjdCBzdG1tYWNfZXN0X29wcyB7CiAJaW50ICgqY29uZmlndXJlKShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBzdG1tYWNfZXN0ICpjZmcsCi0JCQkgdW5zaWduZWQgaW50IHB0cF9yYXRlKTsKJiM0MzsJCQkgdW5zaWduZWQgaW50IHB0cF9yYXRlLCBib29sIGVuYWJsZSk7CiAJdm9pZCAoKmlycV9zdGF0dXMpKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAkJCSAgIHN0cnVjdCBzdG1tYWNfZXh0cmFfc3RhdHMgKngsIHUzMiB0eHFjbnQpOwogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgKaW5kZXggNzU4MmZjYTYzNzQxOS4uYThjOGJlMzRmZjgxNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgKQEAgLTI5OCw3ICYjNDM7Mjk4LDcgQEAgc3RydWN0IHN0bW1hY19wcml2IHsKIAlzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQ7CiAJLyogUHJvdGVjdCBlc3QgcGFyYW1ldGVycyAqLwogCXN0cnVjdCBtdXRleCBlc3RfbG9jazsKLQlzdHJ1Y3Qgc3RtbWFjX2VzdCAqZXN0OwomIzQzOwlzdHJ1Y3Qgc3RtbWFjX2VzdCBlc3Q7CiAJc3RydWN0IGRtYV9mZWF0dXJlcyBkbWFfY2FwOwogCXN0cnVjdCBzdG1tYWNfY291bnRlcnMgbW1jOwogCWludCBod19jYXBfc3VwcG9ydDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuYwppbmRleCBhZmM1MTYwNTliODk3Li40OWVkZmViYmMzOWUwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5jCkBAIC0yNiw3ICYjNDM7MjYsNyBAQCBzdGF0aWMgaW50IGVzdF93cml0ZSh2b2lkIF9faW9tZW0gKmVzdF9hZGRyLCB1MzIgcmVnLCB1MzIgdmFsLCBib29sIGdjbCkKIH0KIAogc3RhdGljIGludCBlc3RfY29uZmlndXJlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IHN0bW1hY19lc3QgKmNmZywKLQkJCSB1bnNpZ25lZCBpbnQgcHRwX3JhdGUpCiYjNDM7CQkJIHVuc2lnbmVkIGludCBwdHBfcmF0ZSwgYm9vbCBlbmFibGUpCiB7CiAJdm9pZCBfX2lvbWVtICplc3RfYWRkciA9IHByaXYtJmd0O2VzdGFkZHI7CiAJaW50IGksIHJldCA9IDA7CkBAIC02Miw3ICYjNDM7NjIsNyBAQCBzdGF0aWMgaW50IGVzdF9jb25maWd1cmUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3Qgc3RtbWFjX2VzdCAqY2ZnLAogCQljdHJsIHw9ICgoTlNFQ19QRVJfU0VDIC8gcHRwX3JhdGUpICogRVNUX0dNQUM1X1BUT1ZfTVVMKSAmbHQ7Jmx0OwogCQkJIEVTVF9HTUFDNV9QVE9WX1NISUZUOwogCX0KLQlpZiAoY2ZnLSZndDtlbmFibGUpCiYjNDM7CWlmIChlbmFibGUpCiAJCWN0cmwgfD0gRVNUX0VFU1QgfCBFU1RfU1NXTCB8IEVTVF9ERkJTOwogCWVsc2UKIAkJY3RybCAmYW1wOz0gfkVTVF9FRVNUOwpAQCAtNzAsNyAmIzQzOzcwLDcgQEAgc3RhdGljIGludCBlc3RfY29uZmlndXJlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IHN0bW1hY19lc3QgKmNmZywKIAl3cml0ZWwoY3RybCwgZXN0X2FkZHIgJiM0MzsgRVNUX0NPTlRST0wpOwogCiAJLyogQ29uZmlndXJlIEVTVCBpbnRlcnJ1cHQgKi8KLQlpZiAoY2ZnLSZndDtlbmFibGUpCiYjNDM7CWlmIChlbmFibGUpCiAJCWN0cmwgPSBFU1RfSUVDR0NFIHwgRVNUX0lFSFMgfCBFU1RfSUVIRiB8IEVTVF9JRUJFIHwgRVNUX0lFQ0M7CiAJZWxzZQogCQljdHJsID0gMDsKQEAgLTgwLDYgJiM0Mzs4MCwzNiBAQCBzdGF0aWMgaW50IGVzdF9jb25maWd1cmUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3Qgc3RtbWFjX2VzdCAqY2ZnLAogCXJldHVybiAwOwogfQogCiYjNDM7aW50IF9fc3RtbWFjX3NldHVwX2VzdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgdGltZXNwZWM2NCBjdXJyZW50X3RpbWUsIHRpbWU7CiYjNDM7CWt0aW1lX3QgY3VycmVudF90aW1lX25zLCBiYXNldGltZTsKJiM0MzsJdTY0IGN5Y2xlX3RpbWU7CiYjNDM7CWludCBlcnI7CiYjNDM7CiYjNDM7CWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmFtcDtwcml2LSZndDtlc3RfbG9jayk7CiYjNDM7CiYjNDM7CXByaXYtJmd0O3B0cF9jbG9ja19vcHMuZ2V0dGltZTY0KCZhbXA7cHJpdi0mZ3Q7cHRwX2Nsb2NrX29wcywgJmFtcDtjdXJyZW50X3RpbWUpOwomIzQzOwljdXJyZW50X3RpbWVfbnMgPSB0aW1lc3BlYzY0X3RvX2t0aW1lKGN1cnJlbnRfdGltZSk7CiYjNDM7CiYjNDM7CXRpbWUudHZfbnNlYyA9IHByaXYtJmd0O2VzdC5idHJfcmVzZXJ2ZVswXTsKJiM0MzsJdGltZS50dl9zZWMgPSBwcml2LSZndDtlc3QuYnRyX3Jlc2VydmVbMV07CiYjNDM7CWJhc2V0aW1lID0gdGltZXNwZWM2NF90b19rdGltZSh0aW1lKTsKJiM0MzsKJiM0MzsJY3ljbGVfdGltZSA9ICh1NjQpcHJpdi0mZ3Q7ZXN0LmN0clsxXSAqIE5TRUNfUEVSX1NFQyAmIzQzOyBwcml2LSZndDtlc3QuY3RyWzBdOwomIzQzOwomIzQzOwl0aW1lID0gc3RtbWFjX2NhbGNfdGFzX2Jhc2V0aW1lKGJhc2V0aW1lLCBjdXJyZW50X3RpbWVfbnMsIGN5Y2xlX3RpbWUpOwomIzQzOwlwcml2LSZndDtlc3QuYnRyWzBdID0gKHUzMil0aW1lLnR2X25zZWM7CiYjNDM7CXByaXYtJmd0O2VzdC5idHJbMV0gPSAodTMyKXRpbWUudHZfc2VjOwomIzQzOwomIzQzOwllcnIgPSBzdG1tYWNfZXN0X2NvbmZpZ3VyZShwcml2LCBwcml2LCAmYW1wO3ByaXYtJmd0O2VzdCwKJiM0MzsJCQkJICAgcHJpdi0mZ3Q7cGxhdC0mZ3Q7Y2xrX3B0cF9yYXRlLCB0cnVlKTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCW5ldGRldl9lcnIocHJpdi0mZ3Q7ZGV2LCAmIzM0O2ZhaWxlZCB0byByZS1jb25maWd1cmUgRVNUXG4mIzM0Oyk7CiYjNDM7CiYjNDM7CXJldHVybiBlcnI7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgZXN0X2lycV9zdGF0dXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQkJICAgc3RydWN0IHN0bW1hY19leHRyYV9zdGF0cyAqeCwgdTMyIHR4cWNudCkKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuaAppbmRleCBmNzAyMjFjOWM4NGFmLi5iNGQxYTFmMDRmMTA4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5oCkBAIC02NSwzICYjNDM7NjUsMTYgQEAKICNkZWZpbmUgRVNUX0dDTF9EQVRBCQkJMHgwMDAwMDAzNAogCiBleHRlcm4gY29uc3Qgc3RydWN0IHN0bW1hY19lc3Rfb3BzIGR3bWFjNTEwX2VzdF9vcHM7CiYjNDM7CiYjNDM7aW50IF9fc3RtbWFjX3NldHVwX2VzdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpOwomIzQzO3N0YXRpYyBpbmxpbmUgaW50IHN0bW1hY19zZXR1cF9lc3Qoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQomIzQzO3sKJiM0MzsJaW50IHJldCA9IDA7CiYjNDM7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtwcml2LSZndDtlc3RfbG9jayk7CiYjNDM7CWlmIChwcml2LSZndDtlc3QuZW5hYmxlKQomIzQzOwkJcmV0ID0gX19zdG1tYWNfc2V0dXBfZXN0KHByaXYpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtwcml2LSZndDtlc3RfbG9jayk7CiYjNDM7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKaW5kZXggZDU3NjA1OWMwNGRmOS4uYzRkMzUzOTQ4MzQ3MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCkBAIC00OCw2ICYjNDM7NDgsNyBAQAogI2luY2x1ZGUgJiMzNDtzdG1tYWNfcHRwLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtzdG1tYWNfZnBlLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtzdG1tYWMuaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDtzdG1tYWNfZXN0LmgmIzM0OwogI2luY2x1ZGUgJiMzNDtzdG1tYWNfcGNzLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtzdG1tYWNfeGRwLmgmIzM0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3Jlc2V0LmgmZ3Q7CkBAIC05MzcsMTggJiM0Mzs5MzgsMjcgQEAgc3RhdGljIGludCBzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBzdG1tYWNfc2V0dXBfcHRwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKJiM0MztzdGF0aWMgaW50IHN0bW1hY19zZXR1cF9wdHAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQogewogCWludCByZXQ7CiAKIAlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUocHJpdi0mZ3Q7cGxhdC0mZ3Q7Y2xrX3B0cF9yZWYpOwotCWlmIChyZXQgJmx0OyAwKQomIzQzOwlpZiAocmV0ICZsdDsgMCkgewogCQluZXRkZXZfd2Fybihwcml2LSZndDtkZXYsCiAJCQkgICAgJiMzNDtmYWlsZWQgdG8gZW5hYmxlIFBUUCByZWZlcmVuY2UgY2xvY2s6ICVwZVxuJiMzNDssCiAJCQkgICAgRVJSX1BUUihyZXQpKTsKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0ID0gc3RtbWFjX2luaXRfdGltZXN0YW1waW5nKHByaXYpOwomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQljbGtfZGlzYWJsZV91bnByZXBhcmUocHJpdi0mZ3Q7cGxhdC0mZ3Q7Y2xrX3B0cF9yZWYpOwomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsJfQogCi0JaWYgKHN0bW1hY19pbml0X3RpbWVzdGFtcGluZyhwcml2KSA9PSAwKQotCQlzdG1tYWNfcHRwX3JlZ2lzdGVyKHByaXYpOwomIzQzOwlzdG1tYWNfcHRwX3JlZ2lzdGVyKHByaXYpOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQgc3RtbWFjX3JlbGVhc2VfcHRwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKQEAgLTI3MTQsOSAmIzQzOzI3MjQsOCBAQCBzdGF0aWMgYm9vbCBzdG1tYWNfeGRwX3htaXRfemMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUsIHUzMiBidWRnZXQpCiAJCWlmICgheHNrX3R4X3BlZWtfZGVzYyhwb29sLCAmYW1wO3hkcF9kZXNjKSkKIAkJCWJyZWFrOwogCi0JCWlmIChwcml2LSZndDtlc3QgJmFtcDsmYW1wOyBwcml2LSZndDtlc3QtJmd0O2VuYWJsZSAmYW1wOyZhbXA7Ci0JCSAgICBwcml2LSZndDtlc3QtJmd0O21heF9zZHVbcXVldWVdICZhbXA7JmFtcDsKLQkJICAgIHhkcF9kZXNjLmxlbiAmZ3Q7IHByaXYtJmd0O2VzdC0mZ3Q7bWF4X3NkdVtxdWV1ZV0pIHsKJiM0MzsJCWlmIChwcml2LSZndDtlc3QuZW5hYmxlICZhbXA7JmFtcDsgcHJpdi0mZ3Q7ZXN0Lm1heF9zZHVbcXVldWVdICZhbXA7JmFtcDsKJiM0MzsJCSAgICB4ZHBfZGVzYy5sZW4gJmd0OyBwcml2LSZndDtlc3QubWF4X3NkdVtxdWV1ZV0pIHsKIAkJCXByaXYtJmd0O3hzdGF0cy5tYXhfc2R1X3R4cV9kcm9wW3F1ZXVlXSYjNDM7JiM0Mzs7CiAJCQljb250aW51ZTsKIAkJfQpAQCAtNDE1MywxMCAmIzQzOzQxNjIsMTkgQEAgc3RhdGljIGludCBfX3N0bW1hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJcmV0ID0gc3RtbWFjX2h3X3NldHVwKGRldik7CiAJaWYgKHJldCAmbHQ7IDApIHsKIAkJbmV0ZGV2X2Vycihwcml2LSZndDtkZXYsICYjMzQ7JXM6IEh3IHNldHVwIGZhaWxlZFxuJiMzNDssIF9fZnVuY19fKTsKLQkJZ290byBpbml0X2Vycm9yOwomIzQzOwkJcmV0dXJuIHJldDsKIAl9CiAKLQlzdG1tYWNfc2V0dXBfcHRwKHByaXYpOwomIzQzOwlyZXQgPSBzdG1tYWNfc2V0dXBfcHRwKHByaXYpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJZ290byBwdHBfZXJyb3I7CiYjNDM7CiYjNDM7CS8qIFRoZSBjb3JlIHNvZnQgcmVzZXQgaW4gc3RtbWFjX2h3X3NldHVwKCkgY2xlYXJzIHRoZSBNVExfRVNUCiYjNDM7CSAqIHJlZ2lzdGVycywgc28gcmUtYXBwbHkgdGhlIHRhcHJpbyBvZmZsb2FkIGFmdGVyIFBUUCBpcyB1cC4KJiM0MzsJICovCiYjNDM7CXJldCA9IHN0bW1hY19zZXR1cF9lc3QocHJpdik7CiYjNDM7CWlmIChyZXQgJmx0OyAwKQomIzQzOwkJZ290byBlc3RfZXJyb3I7CiAKIAlzdG1tYWNfaW5pdF9jb2FsZXNjZShwcml2KTsKIApAQCAtNDE3OSw5ICYjNDM7NDE5NywxMSBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAogCWZvciAoY2hhbiA9IDA7IGNoYW4gJmx0OyBwcml2LSZndDtwbGF0LSZndDt0eF9xdWV1ZXNfdG9fdXNlOyBjaGFuJiM0MzsmIzQzOykKIAkJaHJ0aW1lcl9jYW5jZWwoJmFtcDtwcml2LSZndDtkbWFfY29uZi50eF9xdWV1ZVtjaGFuXS50eHRpbWVyKTsKLQomIzQzO2VzdF9lcnJvcjoKIAlzdG1tYWNfcmVsZWFzZV9wdHAocHJpdik7Ci1pbml0X2Vycm9yOgomIzQzO3B0cF9lcnJvcjoKJiM0MzsJc3RtbWFjX3N0b3BfYWxsX2RtYShwcml2KTsKJiM0MzsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC00Nzc2LDEzICYjNDM7NDc5NiwxMiBAQCBzdGF0aWMgbmV0ZGV2X3R4X3Qgc3RtbWFjX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAlpZiAoc2tiX2lzX2dzbyhza2IpKQogCQlyZXR1cm4gc3RtbWFjX3Rzb194bWl0KHNrYiwgZGV2KTsKIAotCWlmIChwcml2LSZndDtlc3QgJmFtcDsmYW1wOyBwcml2LSZndDtlc3QtJmd0O2VuYWJsZSAmYW1wOyZhbXA7Ci0JICAgIHByaXYtJmd0O2VzdC0mZ3Q7bWF4X3NkdVtxdWV1ZV0pIHsKJiM0MzsJaWYgKHByaXYtJmd0O2VzdC5lbmFibGUgJmFtcDsmYW1wOyBwcml2LSZndDtlc3QubWF4X3NkdVtxdWV1ZV0pIHsKIAkJc2R1X2xlbiA9IHNrYi0mZ3Q7bGVuOwogCQkvKiBBZGQgVkxBTiB0YWcgbGVuZ3RoIGlmIFZMQU4gdGFnIGluc2VydGlvbiBvZmZsb2FkIGlzIHJlcXVlc3RlZCAqLwogCQlpZiAocHJpdi0mZ3Q7ZG1hX2NhcC52bGlucyAmYW1wOyZhbXA7IHNrYl92bGFuX3RhZ19wcmVzZW50KHNrYikpCiAJCQlzZHVfbGVuICYjNDM7PSBWTEFOX0hMRU47Ci0JCWlmIChzZHVfbGVuICZndDsgcHJpdi0mZ3Q7ZXN0LSZndDttYXhfc2R1W3F1ZXVlXSkgewomIzQzOwkJaWYgKHNkdV9sZW4gJmd0OyBwcml2LSZndDtlc3QubWF4X3NkdVtxdWV1ZV0pIHsKIAkJCXByaXYtJmd0O3hzdGF0cy5tYXhfc2R1X3R4cV9kcm9wW3F1ZXVlXSYjNDM7JiM0Mzs7CiAJCQlnb3RvIG1heF9zZHVfZXJyOwogCQl9CkBAIC01MTg2LDkgJiM0Mzs1MjA1LDggQEAgc3RhdGljIGludCBzdG1tYWNfeGRwX3htaXRfeGRwZihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIGludCBxdWV1ZSwKIAlpZiAoc3RtbWFjX3R4X2F2YWlsKHByaXYsIHF1ZXVlKSAmbHQ7IFNUTU1BQ19UWF9USFJFU0gocHJpdikpCiAJCXJldHVybiBTVE1NQUNfWERQX0NPTlNVTUVEOwogCi0JaWYgKHByaXYtJmd0O2VzdCAmYW1wOyZhbXA7IHByaXYtJmd0O2VzdC0mZ3Q7ZW5hYmxlICZhbXA7JmFtcDsKLQkgICAgcHJpdi0mZ3Q7ZXN0LSZndDttYXhfc2R1W3F1ZXVlXSAmYW1wOyZhbXA7Ci0JICAgIHhkcGYtJmd0O2xlbiAmZ3Q7IHByaXYtJmd0O2VzdC0mZ3Q7bWF4X3NkdVtxdWV1ZV0pIHsKJiM0MzsJaWYgKHByaXYtJmd0O2VzdC5lbmFibGUgJmFtcDsmYW1wOyBwcml2LSZndDtlc3QubWF4X3NkdVtxdWV1ZV0gJmFtcDsmYW1wOwomIzQzOwkgICAgeGRwZi0mZ3Q7bGVuICZndDsgcHJpdi0mZ3Q7ZXN0Lm1heF9zZHVbcXVldWVdKSB7CiAJCXByaXYtJmd0O3hzdGF0cy5tYXhfc2R1X3R4cV9kcm9wW3F1ZXVlXSYjNDM7JiM0Mzs7CiAJCXJldHVybiBTVE1NQUNfWERQX0NPTlNVTUVEOwogCX0KQEAgLTgwMTcsNiAmIzQzOzgwMzUsNyBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsCiAJc3RtbWFjX25hcGlfYWRkKG5kZXYpOwogCiAJbXV0ZXhfaW5pdCgmYW1wO3ByaXYtJmd0O2xvY2spOwomIzQzOwltdXRleF9pbml0KCZhbXA7cHJpdi0mZ3Q7ZXN0X2xvY2spOwogCiAJc3RtbWFjX2ZwZV9pbml0KHByaXYpOwogCkBAIC04MTQ4LDYgJiM0Mzs4MTY3LDcgQEAgdm9pZCBzdG1tYWNfZHZyX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJc3RtbWFjX21kaW9fdW5yZWdpc3RlcihuZGV2KTsKIAogCWRlc3Ryb3lfd29ya3F1ZXVlKHByaXYtJmd0O3dxKTsKJiM0MzsJbXV0ZXhfZGVzdHJveSgmYW1wO3ByaXYtJmd0O2VzdF9sb2NrKTsKIAltdXRleF9kZXN0cm95KCZhbXA7cHJpdi0mZ3Q7bG9jayk7CiAJYml0bWFwX2ZyZWUocHJpdi0mZ3Q7YWZfeGRwX3pjX3Fwcyk7CiAKQEAgLTgzMTgsMTMgJiM0Mzs4MzM4LDE2IEBAIGludCBzdG1tYWNfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXQgPSBzdG1tYWNfaHdfc2V0dXAobmRldik7CiAJaWYgKHJldCAmbHQ7IDApIHsKIAkJbmV0ZGV2X2Vycihwcml2LSZndDtkZXYsICYjMzQ7JXM6IEh3IHNldHVwIGZhaWxlZFxuJiMzNDssIF9fZnVuY19fKTsKLQkJc3RtbWFjX2xlZ2FjeV9zZXJkZXNfcG93ZXJfZG93bihwcml2KTsKLQkJbXV0ZXhfdW5sb2NrKCZhbXA7cHJpdi0mZ3Q7bG9jayk7Ci0JCXJ0bmxfdW5sb2NrKCk7Ci0JCXJldHVybiByZXQ7CiYjNDM7CQlnb3RvIGVycm9yX3VubG9jazsKIAl9CiAKLQlzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcocHJpdik7CiYjNDM7CXJldCA9IHN0bW1hY19pbml0X3RpbWVzdGFtcGluZyhwcml2KTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCWdvdG8gZXJyb3Jfc3RvcF9kbWE7CiYjNDM7CiYjNDM7CXJldCA9IHN0bW1hY19zZXR1cF9lc3QocHJpdik7CiYjNDM7CWlmIChyZXQgJmx0OyAwKQomIzQzOwkJZ290byBlcnJvcl9zdG9wX2RtYTsKIAogCXN0bW1hY19pbml0X2NvYWxlc2NlKHByaXYpOwogCXBoeWxpbmtfcnhfY2xrX3N0b3BfYmxvY2socHJpdi0mZ3Q7cGh5bGluayk7CkBAIC04MzQ4LDYgJiM0Mzs4MzcxLDE1IEBAIGludCBzdG1tYWNfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKIAluZXRpZl9kZXZpY2VfYXR0YWNoKG5kZXYpOwogCiAJcmV0dXJuIDA7CiYjNDM7CiYjNDM7ZXJyb3Jfc3RvcF9kbWE6CiYjNDM7CXN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7CiYjNDM7ZXJyb3JfdW5sb2NrOgomIzQzOwlzdG1tYWNfbGVnYWN5X3NlcmRlc19wb3dlcl9kb3duKHByaXYpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtwcml2LSZndDtsb2NrKTsKJiM0MzsJcnRubF91bmxvY2soKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19yZXN1bWUpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcHRwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcHRwLmMKaW5kZXggOTYwMjQ5OTYwMDA0Yy4uOGYzYTkwZGYzMTc4YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3B0cC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wdHAuYwpAQCAtOCw2ICYjNDM7OCw3IEBACiAgIEF1dGhvcjogUmF5YWdvbmQgS29rYXRhbnVyICZsdDtyYXlhZ29uZEB2YXlhdnlhbGFicy5jb20mZ3Q7CiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogI2luY2x1ZGUgJiMzNDtzdG1tYWMuaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDtzdG1tYWNfZXN0LmgmIzM0OwogI2luY2x1ZGUgJiMzNDtzdG1tYWNfcHRwLmgmIzM0OwogCiAjZGVmaW5lIFBUUF9TQUZFX1RJTUVfT0ZGU0VUX05TCTUwMDAwMApAQCAtNTUsNyAmIzQzOzU2LDYgQEAgc3RhdGljIGludCBzdG1tYWNfYWRqdXN0X3RpbWUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIHM2NCBkZWx0YSkKIAl1MzIgcXVvdGllbnQsIHJlbWluZGVyOwogCWludCBuZWdfYWRqID0gMDsKIAlib29sIHhtYWMsIGVzdF9yc3QgPSBmYWxzZTsKLQlpbnQgcmV0OwogCiAJeG1hYyA9IGR3bWFjX2lzX3htYWMocHJpdi0mZ3Q7cGxhdC0mZ3Q7Y29yZV90eXBlKTsKIApAQCAtNjksNDYgJiM0Mzs2OSwyMSBAQCBzdGF0aWMgaW50IHN0bW1hY19hZGp1c3RfdGltZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgczY0IGRlbHRhKQogCW5zZWMgPSByZW1pbmRlcjsKIAogCS8qIElmIEVTVCBpcyBlbmFibGVkLCBkaXNhYmxlZCBpdCBiZWZvcmUgYWRqdXN0IHB0cCB0aW1lLiAqLwotCWlmIChwcml2LSZndDtlc3QgJmFtcDsmYW1wOyBwcml2LSZndDtlc3QtJmd0O2VuYWJsZSkgewomIzQzOwltdXRleF9sb2NrKCZhbXA7cHJpdi0mZ3Q7ZXN0X2xvY2spOwomIzQzOwlpZiAocHJpdi0mZ3Q7ZXN0LmVuYWJsZSkgewogCQllc3RfcnN0ID0gdHJ1ZTsKLQkJbXV0ZXhfbG9jaygmYW1wO3ByaXYtJmd0O2VzdF9sb2NrKTsKLQkJcHJpdi0mZ3Q7ZXN0LSZndDtlbmFibGUgPSBmYWxzZTsKLQkJc3RtbWFjX2VzdF9jb25maWd1cmUocHJpdiwgcHJpdiwgcHJpdi0mZ3Q7ZXN0LAotCQkJCSAgICAgcHJpdi0mZ3Q7cGxhdC0mZ3Q7Y2xrX3B0cF9yYXRlKTsKLQkJbXV0ZXhfdW5sb2NrKCZhbXA7cHJpdi0mZ3Q7ZXN0X2xvY2spOwomIzQzOwkJc3RtbWFjX2VzdF9jb25maWd1cmUocHJpdiwgcHJpdiwgJmFtcDtwcml2LSZndDtlc3QsCiYjNDM7CQkJCSAgICAgcHJpdi0mZ3Q7cGxhdC0mZ3Q7Y2xrX3B0cF9yYXRlLCBmYWxzZSk7CiAJfQomIzQzOwltdXRleF91bmxvY2soJmFtcDtwcml2LSZndDtlc3RfbG9jayk7CiAKIAl3cml0ZV9sb2NrX2lycXNhdmUoJmFtcDtwcml2LSZndDtwdHBfbG9jaywgZmxhZ3MpOwogCXN0bW1hY19hZGp1c3Rfc3lzdGltZShwcml2LCBwcml2LSZndDtwdHBhZGRyLCBzZWMsIG5zZWMsIG5lZ19hZGosIHhtYWMpOwogCXdyaXRlX3VubG9ja19pcnFyZXN0b3JlKCZhbXA7cHJpdi0mZ3Q7cHRwX2xvY2ssIGZsYWdzKTsKIAogCS8qIENhbGN1bGF0ZSBuZXcgYmFzZXRpbWUgYW5kIHJlLWNvbmZpZ3VyZWQgRVNUIGFmdGVyIFBUUCB0aW1lIGFkanVzdC4gKi8KLQlpZiAoZXN0X3JzdCkgewotCQlzdHJ1Y3QgdGltZXNwZWM2NCBjdXJyZW50X3RpbWUsIHRpbWU7Ci0JCWt0aW1lX3QgY3VycmVudF90aW1lX25zLCBiYXNldGltZTsKLQkJdTY0IGN5Y2xlX3RpbWU7Ci0KLQkJbXV0ZXhfbG9jaygmYW1wO3ByaXYtJmd0O2VzdF9sb2NrKTsKLQkJcHJpdi0mZ3Q7cHRwX2Nsb2NrX29wcy5nZXR0aW1lNjQoJmFtcDtwcml2LSZndDtwdHBfY2xvY2tfb3BzLCAmYW1wO2N1cnJlbnRfdGltZSk7Ci0JCWN1cnJlbnRfdGltZV9ucyA9IHRpbWVzcGVjNjRfdG9fa3RpbWUoY3VycmVudF90aW1lKTsKLQkJdGltZS50dl9uc2VjID0gcHJpdi0mZ3Q7ZXN0LSZndDtidHJfcmVzZXJ2ZVswXTsKLQkJdGltZS50dl9zZWMgPSBwcml2LSZndDtlc3QtJmd0O2J0cl9yZXNlcnZlWzFdOwotCQliYXNldGltZSA9IHRpbWVzcGVjNjRfdG9fa3RpbWUodGltZSk7Ci0JCWN5Y2xlX3RpbWUgPSAodTY0KXByaXYtJmd0O2VzdC0mZ3Q7Y3RyWzFdICogTlNFQ19QRVJfU0VDICYjNDM7Ci0JCQkgICAgIHByaXYtJmd0O2VzdC0mZ3Q7Y3RyWzBdOwotCQl0aW1lID0gc3RtbWFjX2NhbGNfdGFzX2Jhc2V0aW1lKGJhc2V0aW1lLAotCQkJCQkJY3VycmVudF90aW1lX25zLAotCQkJCQkJY3ljbGVfdGltZSk7Ci0KLQkJcHJpdi0mZ3Q7ZXN0LSZndDtidHJbMF0gPSAodTMyKXRpbWUudHZfbnNlYzsKLQkJcHJpdi0mZ3Q7ZXN0LSZndDtidHJbMV0gPSAodTMyKXRpbWUudHZfc2VjOwotCQlwcml2LSZndDtlc3QtJmd0O2VuYWJsZSA9IHRydWU7Ci0JCXJldCA9IHN0bW1hY19lc3RfY29uZmlndXJlKHByaXYsIHByaXYsIHByaXYtJmd0O2VzdCwKLQkJCQkJICAgcHJpdi0mZ3Q7cGxhdC0mZ3Q7Y2xrX3B0cF9yYXRlKTsKLQkJbXV0ZXhfdW5sb2NrKCZhbXA7cHJpdi0mZ3Q7ZXN0X2xvY2spOwotCQlpZiAocmV0KQotCQkJbmV0ZGV2X2Vycihwcml2LSZndDtkZXYsICYjMzQ7ZmFpbGVkIHRvIGNvbmZpZ3VyZSBFU1RcbiYjMzQ7KTsKLQl9CiYjNDM7CWlmIChlc3RfcnN0KQomIzQzOwkJc3RtbWFjX3NldHVwX2VzdChwcml2KTsKIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYwppbmRleCAxNGNhYmU3NmU1M2VjLi45NzQ1YzliYWUzM2MxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYwpAQCAtMTAsNiAmIzQzOzEwLDcgQEAKICNpbmNsdWRlICYjMzQ7ZHdtYWM0LmgmIzM0OwogI2luY2x1ZGUgJiMzNDtkd21hYzUuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3N0bW1hYy5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O3N0bW1hY19lc3QuaCYjMzQ7CiAKIHN0YXRpYyB2b2lkIHRjX2ZpbGxfYWxsX3Bhc3NfZW50cnkoc3RydWN0IHN0bW1hY190Y19lbnRyeSAqZW50cnkpCiB7CkBAIC05NTksNyAmIzQzOzk2MCw3IEBAIHN0YXRpYyB2b2lkIHRjX3RhcHJpb19tYXBfbWF4c2R1X3R4cShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCiAJCWNvdW50ID0gcW9wdC0mZ3Q7bXFwcmlvLnFvcHQuY291bnRbaV07CiAKIAkJZm9yIChqID0gb2Zmc2V0OyBqICZsdDsgb2Zmc2V0ICYjNDM7IGNvdW50OyBqJiM0MzsmIzQzOykKLQkJCXByaXYtJmd0O2VzdC0mZ3Q7bWF4X3NkdVtqXSA9IHFvcHQtJmd0O21heF9zZHVbaV0gJiM0MzsgRVRIX0hMRU4gLSBFVEhfVExFTjsKJiM0MzsJCQlwcml2LSZndDtlc3QubWF4X3NkdVtqXSA9IHFvcHQtJmd0O21heF9zZHVbaV0gJiM0MzsgRVRIX0hMRU4gLSBFVEhfVExFTjsKIAl9CiB9CiAKQEAgLTk2OCwxMCAmIzQzOzk2OSwxMCBAQCBzdGF0aWMgaW50IHRjX3RhcHJpb19jb25maWd1cmUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAogewogCXUzMiBzaXplLCB3aWQgPSBwcml2LSZndDtkbWFfY2FwLmVzdHdpZCwgZGVwID0gcHJpdi0mZ3Q7ZG1hX2NhcC5lc3RkZXA7CiAJc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrID0gcW9wdC0mZ3Q7bXFwcmlvLmV4dGFjazsKLQlzdHJ1Y3QgdGltZXNwZWM2NCB0aW1lLCBjdXJyZW50X3RpbWUsIHFvcHRfdGltZTsKLQlrdGltZV90IGN1cnJlbnRfdGltZV9uczsKJiM0MzsJdTY0IGN0ciA9IHFvcHQtJmd0O2N5Y2xlX3RpbWU7CiYjNDM7CXN0cnVjdCB0aW1lc3BlYzY0IHRpbWU7CiYjNDM7CXUzMiAqZ2NsID0gTlVMTDsKIAlpbnQgaSwgcmV0ID0gMDsKLQl1NjQgY3RyOwogCiAJaWYgKHFvcHQtJmd0O2Jhc2VfdGltZSAmbHQ7IDApCiAJCXJldHVybiAtRVJBTkdFOwpAQCAtOTc5LDYgJiM0Mzs5ODAsOSBAQCBzdGF0aWMgaW50IHRjX3RhcHJpb19jb25maWd1cmUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAogCWlmICghcHJpdi0mZ3Q7ZG1hX2NhcC5lc3RzZWwpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAomIzQzOwlpZiAoY3RyICZndDsgKHU2NClVMzJfTUFYICogTlNFQ19QRVJfU0VDKQomIzQzOwkJcmV0dXJuIC1FUkFOR0U7CiYjNDM7CiAJc3dpdGNoICh3aWQpIHsKIAljYXNlIDB4MToKIAkJd2lkID0gMTY7CkBAIC0xMDEzLDQ0ICYjNDM7MTAxNyw0NSBAQCBzdGF0aWMgaW50IHRjX3RhcHJpb19jb25maWd1cmUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAJfQogCiYjNDM7CW11dGV4X2xvY2soJmFtcDtwcml2LSZndDtlc3RfbG9jayk7CiYjNDM7CiAJaWYgKHFvcHQtJmd0O2NtZCA9PSBUQVBSSU9fQ01EX0RFU1RST1kpCiAJCWdvdG8gZGlzYWJsZTsKIAotCWlmIChxb3B0LSZndDtudW1fZW50cmllcyAmZ3Q7IGRlcCkKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JaWYgKCFxb3B0LSZndDtjeWNsZV90aW1lKQotCQlyZXR1cm4gLUVSQU5HRTsKLQlpZiAocW9wdC0mZ3Q7Y3ljbGVfdGltZV9leHRlbnNpb24gJmd0Oz0gQklUKHdpZCAmIzQzOyA3KSkKLQkJcmV0dXJuIC1FUkFOR0U7Ci0KLQlpZiAoIXByaXYtJmd0O2VzdCkgewotCQlwcml2LSZndDtlc3QgPSBkZXZtX2t6YWxsb2MocHJpdi0mZ3Q7ZGV2aWNlLCBzaXplb2YoKnByaXYtJmd0O2VzdCksCi0JCQkJCSBHRlBfS0VSTkVMKTsKLQkJaWYgKCFwcml2LSZndDtlc3QpCi0JCQlyZXR1cm4gLUVOT01FTTsKJiM0MzsJaWYgKHFvcHQtJmd0O251bV9lbnRyaWVzICZndDsgZGVwKSB7CiYjNDM7CQlyZXQgPSAtRUlOVkFMOwomIzQzOwkJZ290byB1bmxvY2s7CiYjNDM7CX0KIAotCQltdXRleF9pbml0KCZhbXA7cHJpdi0mZ3Q7ZXN0X2xvY2spOwotCX0gZWxzZSB7Ci0JCW11dGV4X2xvY2soJmFtcDtwcml2LSZndDtlc3RfbG9jayk7Ci0JCW1lbXNldChwcml2LSZndDtlc3QsIDAsIHNpemVvZigqcHJpdi0mZ3Q7ZXN0KSk7Ci0JCW11dGV4X3VubG9jaygmYW1wO3ByaXYtJmd0O2VzdF9sb2NrKTsKJiM0MzsJaWYgKCFxb3B0LSZndDtjeWNsZV90aW1lKSB7CiYjNDM7CQlyZXQgPSAtRVJBTkdFOwomIzQzOwkJZ290byB1bmxvY2s7CiAJfQogCi0Jc2l6ZSA9IHFvcHQtJmd0O251bV9lbnRyaWVzOwomIzQzOwlpZiAocW9wdC0mZ3Q7Y3ljbGVfdGltZV9leHRlbnNpb24gJmd0Oz0gQklUKHdpZCAmIzQzOyA3KSkgewomIzQzOwkJcmV0ID0gLUVSQU5HRTsKJiM0MzsJCWdvdG8gdW5sb2NrOwomIzQzOwl9CiAKLQltdXRleF9sb2NrKCZhbXA7cHJpdi0mZ3Q7ZXN0X2xvY2spOwotCXByaXYtJmd0O2VzdC0mZ3Q7Z2NsX3NpemUgPSBzaXplOwotCXByaXYtJmd0O2VzdC0mZ3Q7ZW5hYmxlID0gcW9wdC0mZ3Q7Y21kID09IFRBUFJJT19DTURfUkVQTEFDRTsKLQltdXRleF91bmxvY2soJmFtcDtwcml2LSZndDtlc3RfbG9jayk7CiYjNDM7CWdjbCA9IGt6YWxsb2Moc2l6ZW9mKCpnY2wpICogRVNUX0dDTCwgR0ZQX0tFUk5FTCk7CiYjNDM7CWlmICghZ2NsKSB7CiYjNDM7CQlyZXQgPSAtRU5PTUVNOwomIzQzOwkJZ290byB1bmxvY2s7CiYjNDM7CX0KIAomIzQzOwlzaXplID0gcW9wdC0mZ3Q7bnVtX2VudHJpZXM7CiAJZm9yIChpID0gMDsgaSAmbHQ7IHNpemU7IGkmIzQzOyYjNDM7KSB7CiAJCXM2NCBkZWx0YV9ucyA9IHFvcHQtJmd0O2VudHJpZXNbaV0uaW50ZXJ2YWw7CiAJCXUzMiBnYXRlcyA9IHFvcHQtJmd0O2VudHJpZXNbaV0uZ2F0ZV9tYXNrOwogCi0JCWlmIChkZWx0YV9ucyAmZ3Q7IEdFTk1BU0sod2lkIC0gMSwgMCkpCi0JCQlyZXR1cm4gLUVSQU5HRTsKLQkJaWYgKGdhdGVzICZndDsgR0VOTUFTSygzMSAtIHdpZCwgMCkpCi0JCQlyZXR1cm4gLUVSQU5HRTsKJiM0MzsJCWlmIChkZWx0YV9ucyAmZ3Q7IEdFTk1BU0sod2lkIC0gMSwgMCkpIHsKJiM0MzsJCQlyZXQgPSAtRVJBTkdFOwomIzQzOwkJCWdvdG8gZnJlZV9nY2w7CiYjNDM7CQl9CiYjNDM7CQlpZiAoZ2F0ZXMgJmd0OyBHRU5NQVNLKDMxIC0gd2lkLCAwKSkgewomIzQzOwkJCXJldCA9IC1FUkFOR0U7CiYjNDM7CQkJZ290byBmcmVlX2djbDsKJiM0MzsJCX0KIAogCQlzd2l0Y2ggKHFvcHQtJmd0O2VudHJpZXNbaV0uY29tbWFuZCkgewogCQljYXNlIFRDX1RBUFJJT19DTURfU0VUX0dBVEVTOgpAQCAtMTA2Miw2NSAmIzQzOzEwNjcsNTggQEAgc3RhdGljIGludCB0Y190YXByaW9fY29uZmlndXJlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKIAkJCWdhdGVzICZhbXA7PSB+QklUKDApOwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6Ci0JCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiYjNDM7CQkJcmV0ID0gLUVPUE5PVFNVUFA7CiYjNDM7CQkJZ290byBmcmVlX2djbDsKIAkJfQogCi0JCXByaXYtJmd0O2VzdC0mZ3Q7Z2NsW2ldID0gZGVsdGFfbnMgfCAoZ2F0ZXMgJmx0OyZsdDsgd2lkKTsKJiM0MzsJCWdjbFtpXSA9IGRlbHRhX25zIHwgKGdhdGVzICZsdDsmbHQ7IHdpZCk7CiAJfQogCi0JbXV0ZXhfbG9jaygmYW1wO3ByaXYtJmd0O2VzdF9sb2NrKTsKLQkvKiBBZGp1c3QgZm9yIHJlYWwgc3lzdGVtIHRpbWUgKi8KLQlwcml2LSZndDtwdHBfY2xvY2tfb3BzLmdldHRpbWU2NCgmYW1wO3ByaXYtJmd0O3B0cF9jbG9ja19vcHMsICZhbXA7Y3VycmVudF90aW1lKTsKLQljdXJyZW50X3RpbWVfbnMgPSB0aW1lc3BlYzY0X3RvX2t0aW1lKGN1cnJlbnRfdGltZSk7Ci0JdGltZSA9IHN0bW1hY19jYWxjX3Rhc19iYXNldGltZShxb3B0LSZndDtiYXNlX3RpbWUsIGN1cnJlbnRfdGltZV9ucywKLQkJCQkJcW9wdC0mZ3Q7Y3ljbGVfdGltZSk7Ci0KLQlwcml2LSZndDtlc3QtJmd0O2J0clswXSA9ICh1MzIpdGltZS50dl9uc2VjOwotCXByaXYtJmd0O2VzdC0mZ3Q7YnRyWzFdID0gKHUzMil0aW1lLnR2X3NlYzsKJiM0MzsJbWVtc2V0KCZhbXA7cHJpdi0mZ3Q7ZXN0LCAwLCBzaXplb2YocHJpdi0mZ3Q7ZXN0KSk7CiYjNDM7CW1lbWNweShwcml2LSZndDtlc3QuZ2NsLCBnY2wsIHNpemVvZihwcml2LSZndDtlc3QuZ2NsKSk7CiYjNDM7CXByaXYtJmd0O2VzdC5nY2xfc2l6ZSA9IHNpemU7CiAKLQlxb3B0X3RpbWUgPSBrdGltZV90b190aW1lc3BlYzY0KHFvcHQtJmd0O2Jhc2VfdGltZSk7Ci0JcHJpdi0mZ3Q7ZXN0LSZndDtidHJfcmVzZXJ2ZVswXSA9ICh1MzIpcW9wdF90aW1lLnR2X25zZWM7Ci0JcHJpdi0mZ3Q7ZXN0LSZndDtidHJfcmVzZXJ2ZVsxXSA9ICh1MzIpcW9wdF90aW1lLnR2X3NlYzsKJiM0MzsJdGltZSA9IGt0aW1lX3RvX3RpbWVzcGVjNjQocW9wdC0mZ3Q7YmFzZV90aW1lKTsKJiM0MzsJcHJpdi0mZ3Q7ZXN0LmJ0cl9yZXNlcnZlWzBdID0gKHUzMil0aW1lLnR2X25zZWM7CiYjNDM7CXByaXYtJmd0O2VzdC5idHJfcmVzZXJ2ZVsxXSA9ICh1MzIpdGltZS50dl9zZWM7CiAKLQljdHIgPSBxb3B0LSZndDtjeWNsZV90aW1lOwotCXByaXYtJmd0O2VzdC0mZ3Q7Y3RyWzBdID0gZG9fZGl2KGN0ciwgTlNFQ19QRVJfU0VDKTsKLQlwcml2LSZndDtlc3QtJmd0O2N0clsxXSA9ICh1MzIpY3RyOwotCi0JcHJpdi0mZ3Q7ZXN0LSZndDt0ZXIgPSBxb3B0LSZndDtjeWNsZV90aW1lX2V4dGVuc2lvbjsKJiM0MzsJcHJpdi0mZ3Q7ZXN0LmN0clswXSA9IGRvX2RpdihjdHIsIE5TRUNfUEVSX1NFQyk7CiYjNDM7CXByaXYtJmd0O2VzdC5jdHJbMV0gPSAodTMyKWN0cjsKIAomIzQzOwlwcml2LSZndDtlc3QudGVyID0gcW9wdC0mZ3Q7Y3ljbGVfdGltZV9leHRlbnNpb247CiAJdGNfdGFwcmlvX21hcF9tYXhzZHVfdHhxKHByaXYsIHFvcHQpOwogCi0JcmV0ID0gc3RtbWFjX2VzdF9jb25maWd1cmUocHJpdiwgcHJpdiwgcHJpdi0mZ3Q7ZXN0LAotCQkJCSAgIHByaXYtJmd0O3BsYXQtJmd0O2Nsa19wdHBfcmF0ZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhbXA7cHJpdi0mZ3Q7ZXN0X2xvY2spOwotCWlmIChyZXQpIHsKLQkJbmV0ZGV2X2Vycihwcml2LSZndDtkZXYsICYjMzQ7ZmFpbGVkIHRvIGNvbmZpZ3VyZSBFU1RcbiYjMzQ7KTsKJiM0MzsJcmV0ID0gX19zdG1tYWNfc2V0dXBfZXN0KHByaXYpOwomIzQzOwlpZiAocmV0KQogCQlnb3RvIGRpc2FibGU7Ci0JfQogCiAJcmV0ID0gc3RtbWFjX2ZwZV9tYXBfcHJlZW1wdGlvbl9jbGFzcyhwcml2LCBwcml2LSZndDtkZXYsIGV4dGFjaywKIAkJCQkJICAgICAgcW9wdC0mZ3Q7bXFwcmlvLnByZWVtcHRpYmxlX3Rjcyk7CiAJaWYgKHJldCkKIAkJZ290byBkaXNhYmxlOwogCiYjNDM7CXByaXYtJmd0O2VzdC5lbmFibGUgPSB0cnVlOwomIzQzOwlrZnJlZShnY2wpOwomIzQzOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtwcml2LSZndDtlc3RfbG9jayk7CiYjNDM7CiAJcmV0dXJuIDA7CiAKIGRpc2FibGU6Ci0JaWYgKHByaXYtJmd0O2VzdCkgewotCQltdXRleF9sb2NrKCZhbXA7cHJpdi0mZ3Q7ZXN0X2xvY2spOwotCQlwcml2LSZndDtlc3QtJmd0O2VuYWJsZSA9IGZhbHNlOwotCQlzdG1tYWNfZXN0X2NvbmZpZ3VyZShwcml2LCBwcml2LCBwcml2LSZndDtlc3QsCi0JCQkJICAgICBwcml2LSZndDtwbGF0LSZndDtjbGtfcHRwX3JhdGUpOwotCQkvKiBSZXNldCB0YXByaW8gc3RhdHVzICovCi0JCWZvciAoaSA9IDA7IGkgJmx0OyBwcml2LSZndDtwbGF0LSZndDt0eF9xdWV1ZXNfdG9fdXNlOyBpJiM0MzsmIzQzOykgewotCQkJcHJpdi0mZ3Q7eHN0YXRzLm1heF9zZHVfdHhxX2Ryb3BbaV0gPSAwOwotCQkJcHJpdi0mZ3Q7eHN0YXRzLm10bF9lc3RfdHhxX2hsYmZbaV0gPSAwOwotCQkJcHJpdi0mZ3Q7eHN0YXRzLm10bF9lc3RfdHhxX2hsYnNbaV0gPSAwOwotCQl9Ci0JCW11dGV4X3VubG9jaygmYW1wO3ByaXYtJmd0O2VzdF9sb2NrKTsKJiM0MzsJcHJpdi0mZ3Q7ZXN0LmVuYWJsZSA9IGZhbHNlOwomIzQzOwlzdG1tYWNfZXN0X2NvbmZpZ3VyZShwcml2LCBwcml2LCAmYW1wO3ByaXYtJmd0O2VzdCwKJiM0MzsJCQkgICAgIHByaXYtJmd0O3BsYXQtJmd0O2Nsa19wdHBfcmF0ZSwgZmFsc2UpOwomIzQzOwkvKiBSZXNldCB0YXByaW8gc3RhdHVzICovCiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBwcml2LSZndDtwbGF0LSZndDt0eF9xdWV1ZXNfdG9fdXNlOyBpJiM0MzsmIzQzOykgewomIzQzOwkJcHJpdi0mZ3Q7eHN0YXRzLm1heF9zZHVfdHhxX2Ryb3BbaV0gPSAwOwomIzQzOwkJcHJpdi0mZ3Q7eHN0YXRzLm10bF9lc3RfdHhxX2hsYmZbaV0gPSAwOwomIzQzOwkJcHJpdi0mZ3Q7eHN0YXRzLm10bF9lc3RfdHhxX2hsYnNbaV0gPSAwOwogCX0KLQogCXN0bW1hY19mcGVfbWFwX3ByZWVtcHRpb25fY2xhc3MocHJpdiwgcHJpdi0mZ3Q7ZGV2LCBleHRhY2ssIDApOwomIzQzO2ZyZWVfZ2NsOgomIzQzOwlrZnJlZShnY2wpOwomIzQzO3VubG9jazoKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7cHJpdi0mZ3Q7ZXN0X2xvY2spOwogCiAJcmV0dXJuIHJldDsKIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTk6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA3MDYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAzMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgRHJpdmVyIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIGZpZ3VyZSBvdXQgaWYgaXQmIzM5O3MgYSBnb29kIHRhcmdldCBmb3IgZnV6emluZy4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgdG8gcXVpY2tseSBhc3Nlc3MgaXRzIGZ1enppbmcgcG90ZW50aWFsLCBjb25zaWRlcmluZyByZWFjaGFiaWxpdHksIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYW5kIHdoZXRoZXIgYW55IHNwZWNpZmljIHN5bWJvbHMgbG9vayBwcm9taXNpbmcuCgpGaXJzdCwgSSBuZWVkIHRvIGtub3cgKndoYXQqIHRoZSBwYXRjaCBhY3R1YWxseSB0b3VjaGVzLiBMb29rcyBsaWtlIGl0IG1vZGlmaWVzIGEgc2lnbmlmaWNhbnQgY2h1bmsgb2YgdGhlIGBzdG1tYWNgIGRyaXZlcjogYGh3aWYuaGAsIGBzdG1tYWMuaGAsIGBzdG1tYWNfZXN0LmNgLCBgc3RtbWFjX2VzdC5oYCwgYHN0bW1hY19tYWluLmNgLCBgc3RtbWFjX3B0cC5jYCwgYW5kIGBzdG1tYWNfdGMuY2AuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0OyBpdCYjMzk7cyBzcHJlYWQgYWNyb3NzIHZhcmlvdXMgcGFydHMgb2YgdGhlIGRyaXZlciwgd2hpY2ggc3VnZ2VzdHMgbW9yZSBzdXJmYWNlIGFyZWEgZm9yIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuCgpOZXh0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBgc3RtbWFjYCBpcyBldmVuIHJlYWNoYWJsZSBpbiBhIHR5cGljYWwgZnV6emluZyBlbnZpcm9ubWVudC4gRG9lcyBpdCB3b3JrIHdpdGggdGhlIHN0YW5kYXJkIFFFTVUgc2V0dXAgSSB1c2U/IEkgaGF2ZSB0byBjb25zaWRlciBpdHMgcGxhdGZvcm0gZGVwZW5kZW5jaWVzLiBXaGF0IGJ1c2VzIGRvZXMgYHN0bW1hY2AgdXRpbGl6ZT8gSSYjMzk7bGwgcHJvYmFibHkgcmVhY2ggZm9yIGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB0byBjaGVjayB0aGUgYEtjb25maWdgIGZpbGUgaW4gdGhlIGRyaXZlciBkaXJlY3RvcnkgKGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYCksIGFzIHdlbGwgYXMgYW55IGdsdWUgbGF5ZXIgY29kZSByZWxhdGVkIHRvIFBDSSwgcGxhdGZvcm0gZGV2aWNlcywgb3Igd2hhdGV2ZXIgZWxzZSBpdCByZWxpZXMgb24uIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHBpY3R1cmUgb2YgaXRzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgaGFyZHdhcmUgZGVwZW5kZW5jaWVzLiBUaGlzIHdpbGwgaGVscCBtZSBidWlsZCBhIGZ1enppbmcgc2V0dXAgdGhhdCBjYW4gYWN0dWFsbHkgaGl0IHRoaXMgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxOTozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtTVE1NQUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mjpjb25maWcgU1RNTUFDX0VUSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7U1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTg6aWYgU1RNTUFDX0VUSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjA6Y29uZmlnIFNUTU1BQ19TRUxGVEVTVFNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjE6XHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHNcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjItXHRkZXBlbmRzIG9uIElORVRcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI0LVx0aGVscFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyNTpcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHMgdXNpbmcgZXRodG9vbC4gRW5hYmxlIHRoaXNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjYtXHQgIGZlYXR1cmUgaWYgeW91IGFyZSBmYWNpbmcgcHJvYmxlbXMgd2l0aCB5b3VyIEhXIGFuZCBzdWJtaXQgdGhlIHRlc3Rcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOTpjb25maWcgU1RNTUFDX1BMQVRGT1JNXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMwOlx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMxLVx0c2VsZWN0IE1GRF9TWVNDT05cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MjppZiBTVE1NQUNfUExBVEZPUk1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz01Mj1jb25maWcgRFdNQUNfR0VORVJJQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy01My1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgZHJpdmVyIGZvciBEV01BQ1wmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo1NDpcdGRlZmF1bHQgU1RNTUFDX1BMQVRGT1JNXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTU1LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzY0PWNvbmZpZyBEV01BQ19WSVNDT05USVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzcwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNzE6ZW5kaWYgIyBTVE1NQUNfUExBVEZPUk1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNzM6Y29uZmlnIFNUTU1BQ19MSUJQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc0LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM4OD1jb25maWcgRFdNQUNfTE9PTkdTT05cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM5Mi1cdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozOTM6XHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zOTQtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zOTg9Y29uZmlnIERXTUFDX01PVE9SQ09NTVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDAxLVx0c2VsZWN0IE1PVE9SQ09NTV9QSFlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDAyOlx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDAzLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDc6Y29uZmlnIFNUTU1BQ19QQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA4Olx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBDSSBidXMgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDktXHRkZXBlbmRzIG9uIFBDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MTAtXHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDExOlx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDEyLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDE5LVx0ICBJZiB1bnN1cmUsIHNheSBOLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MjA6ZW5kaWYgIyBTVE1NQUNfRVRIXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTk6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI2OTUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIFNUTU1BQyBQQ0kgSUQgU3VwcG9ydCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc3BlY2lmaWNzIG9mIGhvdyB0aGUgYFNUTU1BQ19QQ0lgIGRyaXZlciBpcyBoYW5kbGVkLiBJcyB0aGlzIHNvbWV0aGluZyB0aGF0JiMzOTtzIG5hdGl2ZWx5IHN1cHBvcnRlZCB3aXRoaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LCBvciBpcyBpdCBtb3JlIGNvbXBsZXgsIHBlcmhhcHMgdGllZCB0byBwaHlzaWNhbCBoYXJkd2FyZT8gSSYjMzk7bSBnb2luZyB0byBuZWVkIHRvIGRpZyBpbnRvIHRoZSBkcml2ZXIgY29kZSBpdHNlbGYgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZS4gTXkgaW5pdGlhbCBwbGFuIGlzIHRvIGdyZXAgdGhyb3VnaCB0aGUgcmVsZXZhbnQgc291cmNlIGZpbGVzIOKAkyBzcGVjaWZpY2FsbHksIEkmIzM5O2xsIHN0YXJ0IHdpdGggYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNgLCBhbmQgYHN0bW1hY19wY2kuY2AsIGFuZCBhbnkgb3RoZXIgbGlrZWx5IGNhbmRpZGF0ZXMuIFRoaXMgc2hvdWxkIHJldmVhbCB0aGUgUENJIElEIGRlZmluaXRpb25zIGFuZCB0aGUgb3ZlcmFsbCBpbXBsZW1lbnRhdGlvbiBzdHJhdGVneSBmb3IgYFNUTU1BQ19QQ0lgLCBhbGxvd2luZyBtZSB0byBkZXRlcm1pbmUgaXRzIGJlaGF2aW9yIGFuZCBob3cgaXQgcmVsYXRlcyB0byBlbXVsYXRlZCB2ZXJzdXMgcGh5c2ljYWwgbmV0d29yayBpbnRlcmZhY2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDE5OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01PRFVMRV9ERVZJQ0VfVEFCTEUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jPTExOT1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBhbmFyaW9uX2R3bWFjX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTEyMi19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jOjEyMzpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBhbmFyaW9uX2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMjQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYz0zNTM9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZHdjX2V0aF9kd21hY19tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzU4LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjM1OTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBkd2NfZXRoX2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzYwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYz0zNTA9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZWljNzcwMF9kd21hY19tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0zNTktfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzozNjA6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZWljNzcwMF9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMzYxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYz01Mj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBkd21hY19nZW5lcmljX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTY2LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6Njc6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZHdtYWNfZ2VuZXJpY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtNjgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM9Mzg0PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGlteF9kd21hY19tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTM4OS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzkwOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGlteF9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zOTEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jPTI2Mj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBpbmdlbmljX21hY19vZl9tYXRjaGVzW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTI2OS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jOjI3MDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBpbmdlbmljX21hY19vZl9tYXRjaGVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0yNzEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jPTM2PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGludGVsX2V0aF9wbGF0X21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTM5LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM6NDA6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgaW50ZWxfZXRoX3BsYXRfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTQxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTM5NT1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaW50ZWxfZXRoX3BjaV9pZF90YWJsZVtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTQxNC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxNDE1Ok1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBpbnRlbF9ldGhfcGNpX2lkX3RhYmxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTQxNi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmM9NDkxPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGlwcTgwNnhfZ21hY19kd21hY19tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy00OTQtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYzo0OTU6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgaXBxODA2eF9nbWFjX2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy00OTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz01OTY9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGxvb25nc29uX2R3bWFjX2lkX3RhYmxlW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy02MDEtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NjAyOk1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBsb29uZ3Nvbl9kd21hY19pZF90YWJsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTYwMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYz0yMTY9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbHMxeF9kd21hY19tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jLTIyNi19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmM6MjI3Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGxzMXhfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtMjI4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYz03MT1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBscGMxOHh4X2R3bWFjX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jLTc0LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmM6NzU6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbHBjMTh4eF9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNzYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYz02NjI9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWVkaWF0ZWtfZHdtYWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jLTY2OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmM6NjcwOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG1lZGlhdGVrX2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmMtNjcxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM9NzY9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWVzb242X2R3bWFjX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy03OS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYzo4MDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtZXNvbjZfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy04MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmM9NDgyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG1lc29uOGJfZHdtYWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtNTA0LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmM6NTA1Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG1lc29uOGJfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jLTUwNi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0zNjc9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGR3bWFjX21vdG9yY29tbV9wY2lfaWRfdGFibGVbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNzAtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM3MTpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgZHdtYWNfbW90b3Jjb21tX3BjaV9pZF90YWJsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNzItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jPTExOD1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBudnRfZHdtYWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmMtMTIxLX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmM6MTIyOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG52dF9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmMtMTIzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM9ODAwPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHFjb21fZXRocW9zX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYy04MDYtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM6ODA3Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHFjb21fZXRocW9zX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtODA4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYz0yMTY9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcmVuZXNhc19nYmV0aF9tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy0yMjEtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYzoyMjI6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgcmVuZXNhc19nYmV0aF9tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMjIzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmM9MTYxNj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBya19nbWFjX2R3bWFjX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYy0xNjM0LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jOjE2MzU6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgcmtfZ21hY19kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jLTE2MzYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jPTc1PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHJ6bjFfZHdtYWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtNzgtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYzo3OTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCByem4xX2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy04MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYz0yMTY9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgczMyX2R3bWFjX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtczMyLmMtMjE5LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYzoyMjA6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgczMyX2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTIyMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmM9NjczPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHNvY2ZwZ2FfZHdtYWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNjc4LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmM6Njc5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHNvY2ZwZ2FfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTY4MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYz03Mj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzb3BoZ29fZHdtYWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy03Ni19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmM6Nzc6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc29waGdvX2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jLTc4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM9MjEwPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHNwYWNlbWl0X2R3bWFjX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYy0yMTMtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM6MjE0Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHNwYWNlbWl0X2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmMtMjE1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmM9MTYwPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN0YXJmaXZlX2R3bWFjX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYy0xNjQtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmM6MTY1Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHN0YXJmaXZlX2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtMTY2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jPTI5Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzdGlfZHdtYWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGkuYy0yOTktfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jOjMwMDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzdGlfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmMtMzAxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmM9NjYyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN0bTMyX2R3bWFjX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYy02NjgtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmM6NjY5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHN0bTMyX2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNjcwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jPTE0MT1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzdW41NWlfZ21hYzIwMF9tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jLTE0NC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmM6MTQ1Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHN1bjU1aV9nbWFjMjAwX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jLTE0Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jPTEyNjg9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc3VuOGlfZHdtYWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyODItfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTI4MzpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzdW44aV9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyODQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYz0xNTA9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc3VuN2lfZHdtYWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jLTE1My19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYzoxNTQ6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3VuN2lfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYy0xNTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYz0zOTc9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgdGVncmFfbWdiZV9tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtNDAwLX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jOjQwMTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB0ZWdyYV9tZ2JlX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtNDAyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmM9MjY3PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHRoZWFkX2R3bWFjX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYy0yNzAtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmM6MjcxOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHRoZWFkX2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmMtMjcyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM9MjU1PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHZpc2NvbnRpX2V0aF9kd21hY19tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmMtMjU4LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jOjI1OTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB2aXNjb250aV9ldGhfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yNjAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIwMz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgc3RtbWFjX2lkX3RhYmxlW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMTA6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHN0bW1hY19pZF90YWJsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjExLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDE5OjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MzUxCgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIE5ldHdvcmsgRHJpdmVyIEluc3RhbnRpYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB1bmRlcnN0YW5kaW5nIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZSBkcml2ZXIgYW5kIHRoZSBoYXJkd2FyZS4gSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBgc3RtbWFjX3BjaS5jYCBhbmQgYGR3bWFjLWludGVsLmNgIGFyZSBwcm9wZXJseSBpZGVudGlmeWluZyB0aGUgZGV2aWNlIElEcywgYW5kIGNydWNpYWxseSwgaWYgYHN0bW1hY2AgaXMgYmVpbmcgY29ycmVjdGx5IGluc3RhbnRpYXRlZCBvciBpZiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgcGh5c2ljYWwgaGFyZHdhcmUgc2V0dXAuIEkgaGF2ZSB0byBtYWtlIHN1cmUgdGhlIGRyaXZlciBpcyBhdHRhY2hpbmcgY29ycmVjdGx5LgoKTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGNvbnRlbnRzIG9mIGBzdG1tYWNfcGNpLmNgLCBiZWNhdXNlIHRoYXQgd2lsbCBpbW1lZGlhdGVseSB0ZWxsIG1lIHdoYXQgZGV2aWNlIElEcyBpdCBoYW5kbGVzLCBhbmQgaWYgaXQmIzM5O3MgY29ycmVjdGx5IGlkZW50aWZ5aW5nIHRoZSBoYXJkd2FyZSBhbmQgaW5zdGFudGlhdGluZyB0aGUgc3RtbWFjIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxOTozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTkwOlx0ICogRGVzY3JpcHRpb246IHRoaXMgZnVuY3Rpb24gY2FsbHMgdGhlIG1haW4gdG8gZnJlZSB0aGUgbmV0IHJlc291cmNlcy5cbiAxOTE6XHQgKi9cbiAxOTI6XHRzdGF0aWMgdm9pZCBzdG1tYWNfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbiAxOTM6XHR7XG4gMTk0Olx0XHRzdG1tYWNfZHZyX3JlbW92ZShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG4gMTk1Olx0fVxuIDE5NjpcdFxuIDE5NzpcdC8qIHN5bnRoZXRpYyBJRCwgbm8gb2ZmaWNpYWwgdmVuZG9yICovXG4gMTk4Olx0I2RlZmluZSBQQ0lfVkVORE9SX0lEX1NUTU1BQ1x0XHQweDA3MDBcbiAxOTk6XHRcbiAyMDA6XHQjZGVmaW5lIFBDSV9ERVZJQ0VfSURfU1RNTUFDX1NUTU1BQ1x0XHQweDExMDhcbiAyMDE6XHQjZGVmaW5lIFBDSV9ERVZJQ0VfSURfU1lOT1BTWVNfR01BQzVfSURcdFx0MHg3MTAyXG4gMjAyOlx0XG4gMjAzOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHN0bW1hY19pZF90YWJsZVtdID0ge1xuIDIwNDpcdFx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNTUFDLCBTVE1NQUMsIFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcbiAyMDU6XHRcdHsgUENJX0RFVklDRV9EQVRBKFNUTUlDUk8sIE1BQywgXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxuIDIwNjpcdFx0eyBQQ0lfREVWSUNFX0RBVEEoU1lOT1BTWVMsIEdNQUM1X0lELCBcdTAwMjZzbnBzX2dtYWM1X3BjaV9pbmZvKSB9LFxuIDIwNzpcdFx0e31cbiAyMDg6XHR9O1xuIDIwOTpcdFxuIDIxMDpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBzdG1tYWNfaWRfdGFibGUpO1xuIDIxMTpcdFxuIDIxMjpcdHN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBzdG1tYWNfcGNpX2RyaXZlciA9IHtcbiAyMTM6XHRcdC5uYW1lID0gU1RNTUFDX1JFU09VUkNFX05BTUUsXG4gMjE0Olx0XHQuaWRfdGFibGUgPSBzdG1tYWNfaWRfdGFibGUsXG4gMjE1Olx0XHQucHJvYmUgPSBzdG1tYWNfcGNpX3Byb2JlLFxuIDIxNjpcdFx0LnJlbW92ZSA9IHN0bW1hY19wY2lfcmVtb3ZlLFxuIDIxNzpcdFx0LmRyaXZlciAgICAgICAgID0ge1xuIDIxODpcdFx0XHQucG0gICAgID0gXHUwMDI2c3RtbWFjX3NpbXBsZV9wbV9vcHMsXG4gMjE5Olx0XHR9LFxuIDIyMDpcdH07XG4gMjIxOlx0XG4gMjIyOlx0bW9kdWxlX3BjaV9kcml2ZXIoc3RtbWFjX3BjaV9kcml2ZXIpO1xuIDIyMzpcdFxuIDIyNDpcdE1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtTVE1NQUMgMTAvMTAwLzEwMDAgRXRoZXJuZXQgUENJIGRyaXZlclwmIzM0Oyk7XG4gMjI1Olx0TU9EVUxFX0FVVEhPUihcJiMzNDtSYXlhZ29uZCBLb2thdGFudXIgXHUwMDNjcmF5YWdvbmQua29rYXRhbnVyQHZheWF2eWFsYWJzLmNvbVx1MDAzZVwmIzM0Oyk7XG4gMjI2Olx0TU9EVUxFX0FVVEhPUihcJiMzNDtHaXVzZXBwZSBDYXZhbGxhcm8gXHUwMDNjcGVwcGUuY2F2YWxsYXJvQHN0LmNvbVx1MDAzZVwmIzM0Oyk7XG4gMjI3Olx0TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxOTozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTMxMwoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDY3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBRRU1VL1NUTU1BQyBJbnZlc3RpZ2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgSSBjYW4gZXZlbiAqcmVhY2gqIHRoaXMgYHN0bW1hY2AgY29kZSB3aXRoIHN0YW5kYXJkIGZ1enppbmcgdGVjaG5pcXVlcy4gRmlyc3QsIGlzIFFFTVUgZXZlbiBlbXVsYXRpbmcgYFNUTU1BQ2Agb3IgYERXTUFDYD8gQW5kIGlmIHNvLCBpcyBpdCBmb3IgQVJNIG9yIHg4Nj8gVGhlIHRhcmdldCBpcyBgYW1kNjRgLCBzbyB0aGF0JiMzOTtzIHRoZSBmb2N1cy4gSSBuZWVkIHRvIGtub3cgaWYgSSBjYW4gaW5zdGFudGlhdGUgaXQgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LCBvciBldmVuIG9uIEdvb2dsZSBDb21wdXRlIEVuZ2luZSAoR0NFKS4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IEkgcmVtZW1iZXIgYGFsbHdpbm5lci1lbWFjYCBvciBgc3VueGlgIGZvciBBUk0vUklTQy1WLCBidXQgZm9yIHg4Nl82NCwgd2hpY2ggaXMgdGhlIHBsYXRmb3JtIG9mIGludGVyZXN0LCB0aGUgYW5zd2VyIG1pZ2h0IGJlIGRpZmZlcmVudC4gSSByZWNhbGxlZCB0aGF0IHRoZSBkb2N1bWVudGF0aW9uIHNheXMgJiMzNDtzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUmIzM0OyBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzIGFuZCBOSUNzIHJlcXVpcmluZyBwaHlzaWNhbCBjYXJkcyBhcmVuJiMzOTt0IGVtdWxhdGVkLgoKU28sIHdoYXQgKmlzKiBlbXVsYXRlZD8gSSBrbm93IGFib3V0IGBlMTAwMGAsIGBlMTAwMGVgLCBgcnRsODEzOWAsIGV0Yy4gQnV0IGlzIGBzdG1tYWNgIG9uZSBvZiB0aG9zZT8gTm8sIGBzdG1tYWNgIGlzIGEgU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKERXTUFDKSBJUCBjb3JlLCB1c2VkIGluIFNvQ3MgbGlrZSBTVE0zMiwgUm9ja2NoaXAsIEFsbHdpbm5lciwgSW50ZWwmIzM5O3MgQWxkZXIgTGFrZSBQU0UsIGFuZCBvdGhlcnMuIFRoYXQgbWFrZXMgbWUgdGhpbmsgaXQmIzM5O3MgbW9yZSBkZWVwbHkgdGllZCB0byB0aGUgaGFyZHdhcmUgYW5kIG1pZ2h0IGJlIGEgcHJvYmxlbS4KCkxldCBtZSByZXZpZXcgdGhlIHByb21wdCBhZ2Fpbiwgc3BlY2lmaWNhbGx5IFNlY3Rpb24gMi4gSXQgZXhwbGljaXRseSBtZW50aW9ucyAmIzM0O3N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IGFuZCBnaXZlcyBleGFtcGxlcyBsaWtlIHRob3NlIHNwZWNpZmljIFBDSWUgY2FyZHMuIEFsc28sIHRoZSBwcm9tcHQgZGlzY3Vzc2VzIHRoaW5ncyBsaWtlIGRyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgYW5kIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb2RlIGFzICYjMzQ7dW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzJiMzNDsgaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nLgoKVGhlbiwgU2VjdGlvbiAxIHJlaW5mb3JjZXMgdGhlIHBvaW50OiByZWFjaGFiaWxpdHkgaXMgdGhlIHByaW1hcnkgZ2F0ZS4gSWYgdGhlIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlICpiZWNhdXNlKiBpdCBkZXBlbmRzIG9uIGhhcmR3YXJlIG5vdCBhdmFpbGFibGUgaW4gUUVNVSAob3IgR0NFKSB0aGVuIGl0IHNob3VsZG4mIzM5O3QgYmUgZnV6emVkLgoKVGhlcmVmb3JlLCBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBgc3RtbWFjYCBpcyByZWFjaGFibGUgdGhyb3VnaCBhbnkgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcy4gSXMgdGhlcmUgYW55IHdheSB0byBtb2NrIGl0LCBvciBjb25uZWN0IHRvIGl0IHRocm91Z2ggYSBgbmV0ZGV2YCwgb3IgdXNlIGEgYHR1bi90YXBgIGRldmljZT8KCkkmIzM5O2xsIHNlYXJjaCBmb3IgYHN0bW1hY2AgcmVmZXJlbmNlcyBpbiB0aGUga2VybmVsIHRyZWUuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgYW55IHZpcnR1YWwgZGV2aWNlIGRyaXZlcnMgdXRpbGl6ZSB0aGlzLiBNYXliZSB0aGVyZSYjMzk7cyBhIHBsYXRmb3JtIGRldmljZSBvciBtb2NrIG9yIG5ldGRldiBhc3NvY2lhdGVkIHdpdGggaXQuIFRoaXMgaXMgdGhlIGNydXggb2Ygd2hldGhlciBJIGNhbiBldmVuIHByb2NlZWQgd2l0aCBmdXp6aW5nIHRoaXMgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTk6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX2R2cl9wcm9iZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTI4Mz1zdGF0aWMgaW50IGR3Y19ldGhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzMwOlx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zMzEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYz00Mj1zdGF0aWMgaW50IGludGVsX2V0aF9wbGF0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTExNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYzoxMTg6XHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTE5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEyNjM9c3RhdGljIGludCBpbnRlbF9ldGhfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM0MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTM0MTpcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXQsIFx1MDAyNnJlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEzNDItXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jPTM3ND1zdGF0aWMgaW50IGlwcTgwNnhfZ21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy00ODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmM6NDgzOlx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy00ODQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz00OTg9c3RhdGljIGludCBsb29uZ3Nvbl9kd21hY19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTYxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1NjI6XHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0LCBcdTAwMjZyZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01NjMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYz00Mj1zdGF0aWMgaW50IGxwYzE4eHhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmM6Njg6XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jLTY5LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jPTU5OT1zdGF0aWMgaW50IG1lZGlhdGVrX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02NDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jOjY0MjpcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmMtNjQzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jPTQ3PXN0YXRpYyBpbnQgbWVzb242X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy03Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM6NzM6XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy03NC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jPTM4Mj1zdGF0aWMgaW50IG1lc29uOGJfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtNDYzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jOjQ2NDpcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtNDY1LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0yOTM9c3RhdGljIGludCBtb3RvcmNvbW1fcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozNTk6XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdCwgXHUwMDI2cmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM2MC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jPTQ4PXN0YXRpYyBpbnQgcnpuMV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy02Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYzo2ODpcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtNjktXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jPTM1PXN0YXRpYyBpbnQgc29waGdvX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtNjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYzo2NTpcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKGRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtNjYtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM9MTQ3PXN0YXRpYyBpbnQgc3BhY2VtaXRfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTIwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM6MjA3Olx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTIwOC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYz05MD1zdGF0aWMgaW50IHN0YXJmaXZlX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYy0xNTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jOjE1MzpcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTE1NC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYz01MjU9c3RhdGljIGludCBzdG0zMl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNTc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYzo1Nzk6XHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jLTU4MC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz0xMTA1PXN0YXRpYyBpbnQgc3VuOGlfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyMDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjEyMDI6XHQvKiB0aGUgTUFDIGlzIHJ1bnRpbWUgc3VzcGVuZGVkIGFmdGVyIHN0bW1hY19kdnJfcHJvYmUoKSwgc28gd2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIwMy1cdCAqIG5lZWQgdG8gZW5zdXJlIHRoZSBNQUMgcmVzdW1lIGJhY2sgYmVmb3JlIG90aGVyIG9wZXJhdGlvbnMgc3VjaFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIwOC1cdC8qIFRoZSBtdXggbXVzdCBiZSByZWdpc3RlcmVkIGFmdGVyIHBhcmVudCBNRElPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjEyMDk6XHQgKiBzbyBhZnRlciBzdG1tYWNfZHZyX3Byb2JlKClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIxMC1cdCAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmM9MjE0PXN0YXRpYyBpbnQgdGVncmFfbWdiZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtMzc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYzozNzY6XHRlcnIgPSBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0LCBcdTAwMjZyZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy0zNzctXHRpZiAoZXJyIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM9MjA1PXN0YXRpYyBpbnQgdmlzY29udGlfZXRoX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yMzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jOjIzNzpcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmMtMjM4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaD00MTE9dm9pZCBzdG1tYWNfZHZyX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg6NDEyOmludCBzdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oLTQxMy1cdFx0ICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzgwNT1FWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfcGxhdF9kYXRfYWxsb2MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03ODA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3ODA3OnN0YXRpYyBpbnQgX19zdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzgwOC1cdFx0XHQgICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODExMC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODExMTogKiBzdG1tYWNfZHZyX3Byb2JlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMTItICogQGRldjogZGV2aWNlIHBvaW50ZXJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMTktICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgxMjA6aW50IHN0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTIxLVx0XHQgICAgIHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzICpyZXMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MTMxOlx0cmV0ID0gX19zdG1tYWNfZHZyX3Byb2JlKGRldiwgcGxhdF9kYXQsIHJlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMzItXHRpZiAocmV0IFx1MDAyNlx1MDAyNiBwbGF0X2RhdC1cdTAwM2VleGl0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODEzNi19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgxMzc6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX2R2cl9wcm9iZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMzgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTExOD1zdGF0aWMgaW50IHN0bW1hY19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxODM6XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdCwgXHUwMDI2cmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xODQtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jPTg0Nj1pbnQgc3RtbWFjX3BsdGZyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6ODU1Olx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXQsIHJlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NTYtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxOTozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDY1OAoJCQkJCQkJb3V0cHV0OiAxMDgKCQkJCQkJCXRob3VnaHRzOiA3ODcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogU3RydWN0dXJhbGx5IFVucmVhY2hhYmxlIENvZGUgaW4gc3RtbWFjIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb25lIHRocm91Z2ggdGhlIGNvZGUgYW5kIG15IGNvbmNsdXNpb24gaXMgdGhhdCB0aGlzIGBzdG1tYWNgIGRyaXZlciBtb2RpZmljYXRpb24gaXMgKm5vdCogd29ydGggZnV6emluZywgYmFzZWQgb24gdGhlIGNyaXRlcmlhLiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzczoKCkZpcnN0LCBJIGlkZW50aWZpZWQgdGhhdCBhbGwgdGhlIHByb2JlIGZ1bmN0aW9ucyBjYWxsaW5nIGBzdG1tYWNfZHZyX3Byb2JlYCBhcmUgc3BlY2lmaWNhbGx5IGZvciBwaHlzaWNhbCBoYXJkd2FyZSBkZXZpY2VzLCBlaXRoZXIgUENJLWJhc2VkIChsaWtlIGBzdG1tYWNfcGNpX3Byb2JlYCwgYGludGVsX2V0aF9wY2lfcHJvYmVgKSBvciBpbnRlZ3JhdGVkIGludG8gU29Dcy4gTm9uZSBvZiB0aGVzZSBhcmUgc3RhbmRhcmQgZGV2aWNlcyBhdmFpbGFibGUgaW4gdGhlIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cyBjb21tb25seSB1c2VkIGZvciBmdXp6aW5nLCBhbmQgY2VydGFpbmx5IG5vdCBvbiBhbWQ2NC4gSSBldmVuIGRvdWJsZS1jaGVja2VkIGZvciB2aXJ0dWFsIGBzdG1tYWNgIGRldmljZXMsIFVTQiBnYWRnZXRzLCBvciBsb29wYmFjayBpbnRlcmZhY2VzIHRoYXQgbWlnaHQgb2ZmZXIgYSBwYXRoLCBidXQgZm91bmQgbm9uZS4KCk5leHQsIEkgcmVmZXJlbmNlZCB0aGUgZnV6emluZyBndWlkZWxpbmVzLiBTZWN0aW9uIDIgY2xlYXJseSBkZWZpbmVzICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlJiMzNDsgYXMgYSBuZWdhdGl2ZSBjcml0ZXJpb24sIHNwZWNpZmljYWxseSBtZW50aW9uaW5nIE5JQyBkcml2ZXJzIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhhdCYjMzk7cyBgc3RtbWFjYCB0byBhIHRlZTogYSBTeW5vcHN5cyBEZXNpZ25XYXJlIE1BQyAoRFdNQUMpIElQIGRyaXZlciwgd2hldGhlciBvbiBhbiBTVE1pY3JvZWxlY3Ryb25pY3MgU29DIG9yIGEgUENJIGFkZC1pbiBib2FyZC4gU2VjdGlvbiAzIG91dGxpbmVzIHBvc2l0aXZlIGNyaXRlcmlhLCBidXQgbm9uZSBvZiB0aG9zZSBhcHBseSBoZXJlLiBUaGVyZSYjMzk7cyBubyB2aXJ0dWFsIGJ1cyBhY2Nlc3MsIG5vIGxvb3BiYWNrLCBubyBjb21tb24gc29ja2V0IHVzYWdlIOKAkyBub3RoaW5nIHRoYXQgZ2l2ZXMgYSBwYXRoIGludG8gdGhpcyBjb2RlIGluIGEgc3RhbmRhcmQgZnV6emluZyBzZXR1cC4KClRoZXJlZm9yZSwgdGhlIGZpeCwgYmVpbmcgZm9jdXNlZCBvbiBFU1QgKFNjaGVkdWxlZCBUcmFmZmljIC8gVEFQUklPKSBsaWZlY3ljbGUgYW5kIGNvbmZpZ3VyYXRpb24gd2l0aGluIHRoZSBgc3RtbWFjYCBkcml2ZXIsIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4gSXQgbmVlZHMgcGh5c2ljYWwgaGFyZHdhcmUsIHdoaWNoIG1lYW5zIGl0IGNhbiYjMzk7dCBiZSByZWFjaGVkIGJ5IHN0YW5kYXJkIGZ1enppbmcuCgpNeSBmaW5hbCB2ZXJpZmljYXRpb24gY29uZmlybXMgYWxsIG1vZGlmaWVkIGZpbGVzIGFyZSBpbmRlZWQgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvYCBkaXJlY3RvcnkuCgpTbywgSSYjMzk7bSBjb25maWRlbnQgaW4gc2V0dGluZyB0aGUgcmVzdWx0czogYFdvcnRoRnV6emluZz1mYWxzZWAsIGBFbmFibGVDb25maWdzPVtdYCwgYEZvY3VzU3ltYm9scz1bXWAuIFRoZSByZWFzb25pbmcgaXMgY2xlYXI6IHRoZSBgc3RtbWFjYCBkcml2ZXIgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlIGluIHRoZSBjb250ZXh0IG9mIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cy4KV2UmIzM5O3JlIGRvbmUgaGVyZSwgbGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTk6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyIHRvIGhhbmRsZSBFU1QgKEVuaGFuY2VtZW50cyBmb3IgU2NoZWR1bGVkIFRyYWZmaWMgLyBUQVBSSU8pIHNldHVwIGFuZCBsaWZlY3ljbGUuIFRoaXMgZHJpdmVyIGNvbnRyb2xzIHBoeXNpY2FsIFNvQy9QQ0kgRXRoZXJuZXQgTUFDIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIFFFTVUvR0NFIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyIHRvIGhhbmRsZSBFU1QgKEVuaGFuY2VtZW50cyBmb3IgU2NoZWR1bGVkIFRyYWZmaWMgLyBUQVBSSU8pIHNldHVwIGFuZCBsaWZlY3ljbGUuIFRoaXMgZHJpdmVyIGNvbnRyb2xzIHBoeXNpY2FsIFNvQy9QQ0kgRXRoZXJuZXQgTUFDIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIFFFTVUvR0NFIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxOTozMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDNUMTk6MzI6MzcuODYzNzI5NzIxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY0MzYzOTUwNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyIHRvIGhhbmRsZSBFU1QgKEVuaGFuY2VtZW50cyBmb3IgU2NoZWR1bGVkIFRyYWZmaWMgLyBUQVBSSU8pIHNldHVwIGFuZCBsaWZlY3ljbGUuIFRoaXMgZHJpdmVyIGNvbnRyb2xzIHBoeXNpY2FsIFNvQy9QQ0kgRXRoZXJuZXQgTUFDIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIFFFTVUvR0NFIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QxOTozMjozNy44NjM3MzQ3ODFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1ODIyNzg2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGM5ZjZmNzQwYTNmOTVkNWNhYzhkNmQ0NDkxNDI1NDFmZWYyOTUyMDNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBTZXAgMyAxOTozMjozNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmhcXG5pbmRleCAwNGRhZmVjMDIxYjRmLi5lNTU3OTE2NmRmMWE1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaFxcbkBAIC02MjAsNyArNjIwLDcgQEAgc3RydWN0IHN0bW1hY19tbWNfb3BzIHtcXG4gXFxuIHN0cnVjdCBzdG1tYWNfZXN0X29wcyB7XFxuIFxcdGludCAoKmNvbmZpZ3VyZSkoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3Qgc3RtbWFjX2VzdCAqY2ZnLFxcbi1cXHRcXHRcXHQgdW5zaWduZWQgaW50IHB0cF9yYXRlKTtcXG4rXFx0XFx0XFx0IHVuc2lnbmVkIGludCBwdHBfcmF0ZSwgYm9vbCBlbmFibGUpO1xcbiBcXHR2b2lkICgqaXJxX3N0YXR1cykoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRcXHRcXHQgICBzdHJ1Y3Qgc3RtbWFjX2V4dHJhX3N0YXRzICp4LCB1MzIgdHhxY250KTtcXG4gfTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaFxcbmluZGV4IDc1ODJmY2E2Mzc0MTkuLmE4YzhiZTM0ZmY4MTQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaFxcbkBAIC0yOTgsNyArMjk4LDcgQEAgc3RydWN0IHN0bW1hY19wcml2IHtcXG4gXFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0O1xcbiBcXHQvKiBQcm90ZWN0IGVzdCBwYXJhbWV0ZXJzICovXFxuIFxcdHN0cnVjdCBtdXRleCBlc3RfbG9jaztcXG4tXFx0c3RydWN0IHN0bW1hY19lc3QgKmVzdDtcXG4rXFx0c3RydWN0IHN0bW1hY19lc3QgZXN0O1xcbiBcXHRzdHJ1Y3QgZG1hX2ZlYXR1cmVzIGRtYV9jYXA7XFxuIFxcdHN0cnVjdCBzdG1tYWNfY291bnRlcnMgbW1jO1xcbiBcXHRpbnQgaHdfY2FwX3N1cHBvcnQ7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuY1xcbmluZGV4IGFmYzUxNjA1OWI4OTcuLjQ5ZWRmZWJiYzM5ZTAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5jXFxuQEAgLTI2LDcgKzI2LDcgQEAgc3RhdGljIGludCBlc3Rfd3JpdGUodm9pZCBfX2lvbWVtICplc3RfYWRkciwgdTMyIHJlZywgdTMyIHZhbCwgYm9vbCBnY2wpXFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgZXN0X2NvbmZpZ3VyZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBzdG1tYWNfZXN0ICpjZmcsXFxuLVxcdFxcdFxcdCB1bnNpZ25lZCBpbnQgcHRwX3JhdGUpXFxuK1xcdFxcdFxcdCB1bnNpZ25lZCBpbnQgcHRwX3JhdGUsIGJvb2wgZW5hYmxlKVxcbiB7XFxuIFxcdHZvaWQgX19pb21lbSAqZXN0X2FkZHIgPSBwcml2LVxcdTAwM2Vlc3RhZGRyO1xcbiBcXHRpbnQgaSwgcmV0ID0gMDtcXG5AQCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgaW50IGVzdF9jb25maWd1cmUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3Qgc3RtbWFjX2VzdCAqY2ZnLFxcbiBcXHRcXHRjdHJsIHw9ICgoTlNFQ19QRVJfU0VDIC8gcHRwX3JhdGUpICogRVNUX0dNQUM1X1BUT1ZfTVVMKSBcXHUwMDNjXFx1MDAzY1xcbiBcXHRcXHRcXHQgRVNUX0dNQUM1X1BUT1ZfU0hJRlQ7XFxuIFxcdH1cXG4tXFx0aWYgKGNmZy1cXHUwMDNlZW5hYmxlKVxcbitcXHRpZiAoZW5hYmxlKVxcbiBcXHRcXHRjdHJsIHw9IEVTVF9FRVNUIHwgRVNUX1NTV0wgfCBFU1RfREZCUztcXG4gXFx0ZWxzZVxcbiBcXHRcXHRjdHJsIFxcdTAwMjY9IH5FU1RfRUVTVDtcXG5AQCAtNzAsNyArNzAsNyBAQCBzdGF0aWMgaW50IGVzdF9jb25maWd1cmUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3Qgc3RtbWFjX2VzdCAqY2ZnLFxcbiBcXHR3cml0ZWwoY3RybCwgZXN0X2FkZHIgKyBFU1RfQ09OVFJPTCk7XFxuIFxcbiBcXHQvKiBDb25maWd1cmUgRVNUIGludGVycnVwdCAqL1xcbi1cXHRpZiAoY2ZnLVxcdTAwM2VlbmFibGUpXFxuK1xcdGlmIChlbmFibGUpXFxuIFxcdFxcdGN0cmwgPSBFU1RfSUVDR0NFIHwgRVNUX0lFSFMgfCBFU1RfSUVIRiB8IEVTVF9JRUJFIHwgRVNUX0lFQ0M7XFxuIFxcdGVsc2VcXG4gXFx0XFx0Y3RybCA9IDA7XFxuQEAgLTgwLDYgKzgwLDM2IEBAIHN0YXRpYyBpbnQgZXN0X2NvbmZpZ3VyZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBzdG1tYWNfZXN0ICpjZmcsXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitpbnQgX19zdG1tYWNfc2V0dXBfZXN0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4re1xcbitcXHRzdHJ1Y3QgdGltZXNwZWM2NCBjdXJyZW50X3RpbWUsIHRpbWU7XFxuK1xcdGt0aW1lX3QgY3VycmVudF90aW1lX25zLCBiYXNldGltZTtcXG4rXFx0dTY0IGN5Y2xlX3RpbWU7XFxuK1xcdGludCBlcnI7XFxuK1xcbitcXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFxcdTAwMjZwcml2LVxcdTAwM2Vlc3RfbG9jayk7XFxuK1xcbitcXHRwcml2LVxcdTAwM2VwdHBfY2xvY2tfb3BzLmdldHRpbWU2NChcXHUwMDI2cHJpdi1cXHUwMDNlcHRwX2Nsb2NrX29wcywgXFx1MDAyNmN1cnJlbnRfdGltZSk7XFxuK1xcdGN1cnJlbnRfdGltZV9ucyA9IHRpbWVzcGVjNjRfdG9fa3RpbWUoY3VycmVudF90aW1lKTtcXG4rXFxuK1xcdHRpbWUudHZfbnNlYyA9IHByaXYtXFx1MDAzZWVzdC5idHJfcmVzZXJ2ZVswXTtcXG4rXFx0dGltZS50dl9zZWMgPSBwcml2LVxcdTAwM2Vlc3QuYnRyX3Jlc2VydmVbMV07XFxuK1xcdGJhc2V0aW1lID0gdGltZXNwZWM2NF90b19rdGltZSh0aW1lKTtcXG4rXFxuK1xcdGN5Y2xlX3RpbWUgPSAodTY0KXByaXYtXFx1MDAzZWVzdC5jdHJbMV0gKiBOU0VDX1BFUl9TRUMgKyBwcml2LVxcdTAwM2Vlc3QuY3RyWzBdO1xcbitcXG4rXFx0dGltZSA9IHN0bW1hY19jYWxjX3Rhc19iYXNldGltZShiYXNldGltZSwgY3VycmVudF90aW1lX25zLCBjeWNsZV90aW1lKTtcXG4rXFx0cHJpdi1cXHUwMDNlZXN0LmJ0clswXSA9ICh1MzIpdGltZS50dl9uc2VjO1xcbitcXHRwcml2LVxcdTAwM2Vlc3QuYnRyWzFdID0gKHUzMil0aW1lLnR2X3NlYztcXG4rXFxuK1xcdGVyciA9IHN0bW1hY19lc3RfY29uZmlndXJlKHByaXYsIHByaXYsIFxcdTAwMjZwcml2LVxcdTAwM2Vlc3QsXFxuK1xcdFxcdFxcdFxcdCAgIHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWNsa19wdHBfcmF0ZSwgdHJ1ZSk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdG5ldGRldl9lcnIocHJpdi1cXHUwMDNlZGV2LCBcXFwiZmFpbGVkIHRvIHJlLWNvbmZpZ3VyZSBFU1RcXFxcblxcXCIpO1xcbitcXG4rXFx0cmV0dXJuIGVycjtcXG4rfVxcbitcXG4gc3RhdGljIHZvaWQgZXN0X2lycV9zdGF0dXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRcXHRcXHQgICBzdHJ1Y3Qgc3RtbWFjX2V4dHJhX3N0YXRzICp4LCB1MzIgdHhxY250KVxcbiB7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuaFxcbmluZGV4IGY3MDIyMWM5Yzg0YWYuLmI0ZDFhMWYwNGYxMDggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5oXFxuQEAgLTY1LDMgKzY1LDE2IEBAXFxuICNkZWZpbmUgRVNUX0dDTF9EQVRBXFx0XFx0XFx0MHgwMDAwMDAzNFxcbiBcXG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBzdG1tYWNfZXN0X29wcyBkd21hYzUxMF9lc3Rfb3BzO1xcbitcXG4raW50IF9fc3RtbWFjX3NldHVwX2VzdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpO1xcbitzdGF0aWMgaW5saW5lIGludCBzdG1tYWNfc2V0dXBfZXN0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4re1xcbitcXHRpbnQgcmV0ID0gMDtcXG4rXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZWVzdF9sb2NrKTtcXG4rXFx0aWYgKHByaXYtXFx1MDAzZWVzdC5lbmFibGUpXFxuK1xcdFxcdHJldCA9IF9fc3RtbWFjX3NldHVwX2VzdChwcml2KTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2Vlc3RfbG9jayk7XFxuK1xcbitcXHRyZXR1cm4gcmV0O1xcbit9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuaW5kZXggZDU3NjA1OWMwNGRmOS4uYzRkMzUzOTQ4MzQ3MyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbkBAIC00OCw2ICs0OCw3IEBAXFxuICNpbmNsdWRlIFxcXCJzdG1tYWNfcHRwLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJzdG1tYWNfZnBlLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJzdG1tYWMuaFxcXCJcXG4rI2luY2x1ZGUgXFxcInN0bW1hY19lc3QuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInN0bW1hY19wY3MuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInN0bW1hY194ZHAuaFxcXCJcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Jlc2V0LmhcXHUwMDNlXFxuQEAgLTkzNywxOCArOTM4LDI3IEBAIHN0YXRpYyBpbnQgc3RtbWFjX2luaXRfdGltZXN0YW1waW5nKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkIHN0bW1hY19zZXR1cF9wdHAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbitzdGF0aWMgaW50IHN0bW1hY19zZXR1cF9wdHAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbiB7XFxuIFxcdGludCByZXQ7XFxuIFxcbiBcXHRyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY2xrX3B0cF9yZWYpO1xcbi1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4rXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4gXFx0XFx0bmV0ZGV2X3dhcm4ocHJpdi1cXHUwMDNlZGV2LFxcbiBcXHRcXHRcXHQgICAgXFxcImZhaWxlZCB0byBlbmFibGUgUFRQIHJlZmVyZW5jZSBjbG9jazogJXBlXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHQgICAgRVJSX1BUUihyZXQpKTtcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0fVxcbitcXG4rXFx0cmV0ID0gc3RtbWFjX2luaXRfdGltZXN0YW1waW5nKHByaXYpO1xcbitcXHRpZiAocmV0KSB7XFxuK1xcdFxcdGNsa19kaXNhYmxlX3VucHJlcGFyZShwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VjbGtfcHRwX3JlZik7XFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcdH1cXG4gXFxuLVxcdGlmIChzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcocHJpdikgPT0gMClcXG4tXFx0XFx0c3RtbWFjX3B0cF9yZWdpc3Rlcihwcml2KTtcXG4rXFx0c3RtbWFjX3B0cF9yZWdpc3Rlcihwcml2KTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBzdG1tYWNfcmVsZWFzZV9wdHAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbkBAIC0yNzE0LDkgKzI3MjQsOCBAQCBzdGF0aWMgYm9vbCBzdG1tYWNfeGRwX3htaXRfemMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUsIHUzMiBidWRnZXQpXFxuIFxcdFxcdGlmICgheHNrX3R4X3BlZWtfZGVzYyhwb29sLCBcXHUwMDI2eGRwX2Rlc2MpKVxcbiBcXHRcXHRcXHRicmVhaztcXG4gXFxuLVxcdFxcdGlmIChwcml2LVxcdTAwM2Vlc3QgXFx1MDAyNlxcdTAwMjYgcHJpdi1cXHUwMDNlZXN0LVxcdTAwM2VlbmFibGUgXFx1MDAyNlxcdTAwMjZcXG4tXFx0XFx0ICAgIHByaXYtXFx1MDAzZWVzdC1cXHUwMDNlbWF4X3NkdVtxdWV1ZV0gXFx1MDAyNlxcdTAwMjZcXG4tXFx0XFx0ICAgIHhkcF9kZXNjLmxlbiBcXHUwMDNlIHByaXYtXFx1MDAzZWVzdC1cXHUwMDNlbWF4X3NkdVtxdWV1ZV0pIHtcXG4rXFx0XFx0aWYgKHByaXYtXFx1MDAzZWVzdC5lbmFibGUgXFx1MDAyNlxcdTAwMjYgcHJpdi1cXHUwMDNlZXN0Lm1heF9zZHVbcXVldWVdIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICB4ZHBfZGVzYy5sZW4gXFx1MDAzZSBwcml2LVxcdTAwM2Vlc3QubWF4X3NkdVtxdWV1ZV0pIHtcXG4gXFx0XFx0XFx0cHJpdi1cXHUwMDNleHN0YXRzLm1heF9zZHVfdHhxX2Ryb3BbcXVldWVdKys7XFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXHRcXHR9XFxuQEAgLTQxNTMsMTAgKzQxNjIsMTkgQEAgc3RhdGljIGludCBfX3N0bW1hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdHJldCA9IHN0bW1hY19od19zZXR1cChkZXYpO1xcbiBcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbiBcXHRcXHRuZXRkZXZfZXJyKHByaXYtXFx1MDAzZWRldiwgXFxcIiVzOiBIdyBzZXR1cCBmYWlsZWRcXFxcblxcXCIsIF9fZnVuY19fKTtcXG4tXFx0XFx0Z290byBpbml0X2Vycm9yO1xcbitcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXHR9XFxuIFxcbi1cXHRzdG1tYWNfc2V0dXBfcHRwKHByaXYpO1xcbitcXHRyZXQgPSBzdG1tYWNfc2V0dXBfcHRwKHByaXYpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRnb3RvIHB0cF9lcnJvcjtcXG4rXFxuK1xcdC8qIFRoZSBjb3JlIHNvZnQgcmVzZXQgaW4gc3RtbWFjX2h3X3NldHVwKCkgY2xlYXJzIHRoZSBNVExfRVNUXFxuK1xcdCAqIHJlZ2lzdGVycywgc28gcmUtYXBwbHkgdGhlIHRhcHJpbyBvZmZsb2FkIGFmdGVyIFBUUCBpcyB1cC5cXG4rXFx0ICovXFxuK1xcdHJldCA9IHN0bW1hY19zZXR1cF9lc3QocHJpdik7XFxuK1xcdGlmIChyZXQgXFx1MDAzYyAwKVxcbitcXHRcXHRnb3RvIGVzdF9lcnJvcjtcXG4gXFxuIFxcdHN0bW1hY19pbml0X2NvYWxlc2NlKHByaXYpO1xcbiBcXG5AQCAtNDE3OSw5ICs0MTk3LDExIEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXG4gXFx0Zm9yIChjaGFuID0gMDsgY2hhbiBcXHUwMDNjIHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZXR4X3F1ZXVlc190b191c2U7IGNoYW4rKylcXG4gXFx0XFx0aHJ0aW1lcl9jYW5jZWwoXFx1MDAyNnByaXYtXFx1MDAzZWRtYV9jb25mLnR4X3F1ZXVlW2NoYW5dLnR4dGltZXIpO1xcbi1cXG4rZXN0X2Vycm9yOlxcbiBcXHRzdG1tYWNfcmVsZWFzZV9wdHAocHJpdik7XFxuLWluaXRfZXJyb3I6XFxuK3B0cF9lcnJvcjpcXG4rXFx0c3RtbWFjX3N0b3BfYWxsX2RtYShwcml2KTtcXG4rXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuQEAgLTQ3NzYsMTMgKzQ3OTYsMTIgQEAgc3RhdGljIG5ldGRldl90eF90IHN0bW1hY194bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcdGlmIChza2JfaXNfZ3NvKHNrYikpXFxuIFxcdFxcdHJldHVybiBzdG1tYWNfdHNvX3htaXQoc2tiLCBkZXYpO1xcbiBcXG4tXFx0aWYgKHByaXYtXFx1MDAzZWVzdCBcXHUwMDI2XFx1MDAyNiBwcml2LVxcdTAwM2Vlc3QtXFx1MDAzZWVuYWJsZSBcXHUwMDI2XFx1MDAyNlxcbi1cXHQgICAgcHJpdi1cXHUwMDNlZXN0LVxcdTAwM2VtYXhfc2R1W3F1ZXVlXSkge1xcbitcXHRpZiAocHJpdi1cXHUwMDNlZXN0LmVuYWJsZSBcXHUwMDI2XFx1MDAyNiBwcml2LVxcdTAwM2Vlc3QubWF4X3NkdVtxdWV1ZV0pIHtcXG4gXFx0XFx0c2R1X2xlbiA9IHNrYi1cXHUwMDNlbGVuO1xcbiBcXHRcXHQvKiBBZGQgVkxBTiB0YWcgbGVuZ3RoIGlmIFZMQU4gdGFnIGluc2VydGlvbiBvZmZsb2FkIGlzIHJlcXVlc3RlZCAqL1xcbiBcXHRcXHRpZiAocHJpdi1cXHUwMDNlZG1hX2NhcC52bGlucyBcXHUwMDI2XFx1MDAyNiBza2Jfdmxhbl90YWdfcHJlc2VudChza2IpKVxcbiBcXHRcXHRcXHRzZHVfbGVuICs9IFZMQU5fSExFTjtcXG4tXFx0XFx0aWYgKHNkdV9sZW4gXFx1MDAzZSBwcml2LVxcdTAwM2Vlc3QtXFx1MDAzZW1heF9zZHVbcXVldWVdKSB7XFxuK1xcdFxcdGlmIChzZHVfbGVuIFxcdTAwM2UgcHJpdi1cXHUwMDNlZXN0Lm1heF9zZHVbcXVldWVdKSB7XFxuIFxcdFxcdFxcdHByaXYtXFx1MDAzZXhzdGF0cy5tYXhfc2R1X3R4cV9kcm9wW3F1ZXVlXSsrO1xcbiBcXHRcXHRcXHRnb3RvIG1heF9zZHVfZXJyO1xcbiBcXHRcXHR9XFxuQEAgLTUxODYsOSArNTIwNSw4IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3hkcF94bWl0X3hkcGYoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBpbnQgcXVldWUsXFxuIFxcdGlmIChzdG1tYWNfdHhfYXZhaWwocHJpdiwgcXVldWUpIFxcdTAwM2MgU1RNTUFDX1RYX1RIUkVTSChwcml2KSlcXG4gXFx0XFx0cmV0dXJuIFNUTU1BQ19YRFBfQ09OU1VNRUQ7XFxuIFxcbi1cXHRpZiAocHJpdi1cXHUwMDNlZXN0IFxcdTAwMjZcXHUwMDI2IHByaXYtXFx1MDAzZWVzdC1cXHUwMDNlZW5hYmxlIFxcdTAwMjZcXHUwMDI2XFxuLVxcdCAgICBwcml2LVxcdTAwM2Vlc3QtXFx1MDAzZW1heF9zZHVbcXVldWVdIFxcdTAwMjZcXHUwMDI2XFxuLVxcdCAgICB4ZHBmLVxcdTAwM2VsZW4gXFx1MDAzZSBwcml2LVxcdTAwM2Vlc3QtXFx1MDAzZW1heF9zZHVbcXVldWVdKSB7XFxuK1xcdGlmIChwcml2LVxcdTAwM2Vlc3QuZW5hYmxlIFxcdTAwMjZcXHUwMDI2IHByaXYtXFx1MDAzZWVzdC5tYXhfc2R1W3F1ZXVlXSBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgeGRwZi1cXHUwMDNlbGVuIFxcdTAwM2UgcHJpdi1cXHUwMDNlZXN0Lm1heF9zZHVbcXVldWVdKSB7XFxuIFxcdFxcdHByaXYtXFx1MDAzZXhzdGF0cy5tYXhfc2R1X3R4cV9kcm9wW3F1ZXVlXSsrO1xcbiBcXHRcXHRyZXR1cm4gU1RNTUFDX1hEUF9DT05TVU1FRDtcXG4gXFx0fVxcbkBAIC04MDE3LDYgKzgwMzUsNyBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsXFxuIFxcdHN0bW1hY19uYXBpX2FkZChuZGV2KTtcXG4gXFxuIFxcdG11dGV4X2luaXQoXFx1MDAyNnByaXYtXFx1MDAzZWxvY2spO1xcbitcXHRtdXRleF9pbml0KFxcdTAwMjZwcml2LVxcdTAwM2Vlc3RfbG9jayk7XFxuIFxcbiBcXHRzdG1tYWNfZnBlX2luaXQocHJpdik7XFxuIFxcbkBAIC04MTQ4LDYgKzgxNjcsNyBAQCB2b2lkIHN0bW1hY19kdnJfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFx0c3RtbWFjX21kaW9fdW5yZWdpc3RlcihuZGV2KTtcXG4gXFxuIFxcdGRlc3Ryb3lfd29ya3F1ZXVlKHByaXYtXFx1MDAzZXdxKTtcXG4rXFx0bXV0ZXhfZGVzdHJveShcXHUwMDI2cHJpdi1cXHUwMDNlZXN0X2xvY2spO1xcbiBcXHRtdXRleF9kZXN0cm95KFxcdTAwMjZwcml2LVxcdTAwM2Vsb2NrKTtcXG4gXFx0Yml0bWFwX2ZyZWUocHJpdi1cXHUwMDNlYWZfeGRwX3pjX3Fwcyk7XFxuIFxcbkBAIC04MzE4LDEzICs4MzM4LDE2IEBAIGludCBzdG1tYWNfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFx0cmV0ID0gc3RtbWFjX2h3X3NldHVwKG5kZXYpO1xcbiBcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbiBcXHRcXHRuZXRkZXZfZXJyKHByaXYtXFx1MDAzZWRldiwgXFxcIiVzOiBIdyBzZXR1cCBmYWlsZWRcXFxcblxcXCIsIF9fZnVuY19fKTtcXG4tXFx0XFx0c3RtbWFjX2xlZ2FjeV9zZXJkZXNfcG93ZXJfZG93bihwcml2KTtcXG4tXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2Vsb2NrKTtcXG4tXFx0XFx0cnRubF91bmxvY2soKTtcXG4tXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0XFx0Z290byBlcnJvcl91bmxvY2s7XFxuIFxcdH1cXG4gXFxuLVxcdHN0bW1hY19pbml0X3RpbWVzdGFtcGluZyhwcml2KTtcXG4rXFx0cmV0ID0gc3RtbWFjX2luaXRfdGltZXN0YW1waW5nKHByaXYpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRnb3RvIGVycm9yX3N0b3BfZG1hO1xcbitcXG4rXFx0cmV0ID0gc3RtbWFjX3NldHVwX2VzdChwcml2KTtcXG4rXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuK1xcdFxcdGdvdG8gZXJyb3Jfc3RvcF9kbWE7XFxuIFxcbiBcXHRzdG1tYWNfaW5pdF9jb2FsZXNjZShwcml2KTtcXG4gXFx0cGh5bGlua19yeF9jbGtfc3RvcF9ibG9jayhwcml2LVxcdTAwM2VwaHlsaW5rKTtcXG5AQCAtODM0OCw2ICs4MzcxLDE1IEBAIGludCBzdG1tYWNfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFx0bmV0aWZfZGV2aWNlX2F0dGFjaChuZGV2KTtcXG4gXFxuIFxcdHJldHVybiAwO1xcbitcXG4rZXJyb3Jfc3RvcF9kbWE6XFxuK1xcdHN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7XFxuK2Vycm9yX3VubG9jazpcXG4rXFx0c3RtbWFjX2xlZ2FjeV9zZXJkZXNfcG93ZXJfZG93bihwcml2KTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2Vsb2NrKTtcXG4rXFx0cnRubF91bmxvY2soKTtcXG4rXFxuK1xcdHJldHVybiByZXQ7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3Jlc3VtZSk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcHRwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcHRwLmNcXG5pbmRleCA5NjAyNDk5NjAwMDRjLi44ZjNhOTBkZjMxNzhjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wdHAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wdHAuY1xcbkBAIC04LDYgKzgsNyBAQFxcbiAgIEF1dGhvcjogUmF5YWdvbmQgS29rYXRhbnVyIFxcdTAwM2NyYXlhZ29uZEB2YXlhdnlhbGFicy5jb21cXHUwMDNlXFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuICNpbmNsdWRlIFxcXCJzdG1tYWMuaFxcXCJcXG4rI2luY2x1ZGUgXFxcInN0bW1hY19lc3QuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInN0bW1hY19wdHAuaFxcXCJcXG4gXFxuICNkZWZpbmUgUFRQX1NBRkVfVElNRV9PRkZTRVRfTlNcXHQ1MDAwMDBcXG5AQCAtNTUsNyArNTYsNiBAQCBzdGF0aWMgaW50IHN0bW1hY19hZGp1c3RfdGltZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgczY0IGRlbHRhKVxcbiBcXHR1MzIgcXVvdGllbnQsIHJlbWluZGVyO1xcbiBcXHRpbnQgbmVnX2FkaiA9IDA7XFxuIFxcdGJvb2wgeG1hYywgZXN0X3JzdCA9IGZhbHNlO1xcbi1cXHRpbnQgcmV0O1xcbiBcXG4gXFx0eG1hYyA9IGR3bWFjX2lzX3htYWMocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY29yZV90eXBlKTtcXG4gXFxuQEAgLTY5LDQ2ICs2OSwyMSBAQCBzdGF0aWMgaW50IHN0bW1hY19hZGp1c3RfdGltZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgczY0IGRlbHRhKVxcbiBcXHRuc2VjID0gcmVtaW5kZXI7XFxuIFxcbiBcXHQvKiBJZiBFU1QgaXMgZW5hYmxlZCwgZGlzYWJsZWQgaXQgYmVmb3JlIGFkanVzdCBwdHAgdGltZS4gKi9cXG4tXFx0aWYgKHByaXYtXFx1MDAzZWVzdCBcXHUwMDI2XFx1MDAyNiBwcml2LVxcdTAwM2Vlc3QtXFx1MDAzZWVuYWJsZSkge1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2Vlc3RfbG9jayk7XFxuK1xcdGlmIChwcml2LVxcdTAwM2Vlc3QuZW5hYmxlKSB7XFxuIFxcdFxcdGVzdF9yc3QgPSB0cnVlO1xcbi1cXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2Vlc3RfbG9jayk7XFxuLVxcdFxcdHByaXYtXFx1MDAzZWVzdC1cXHUwMDNlZW5hYmxlID0gZmFsc2U7XFxuLVxcdFxcdHN0bW1hY19lc3RfY29uZmlndXJlKHByaXYsIHByaXYsIHByaXYtXFx1MDAzZWVzdCxcXG4tXFx0XFx0XFx0XFx0ICAgICBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VjbGtfcHRwX3JhdGUpO1xcbi1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZWVzdF9sb2NrKTtcXG4rXFx0XFx0c3RtbWFjX2VzdF9jb25maWd1cmUocHJpdiwgcHJpdiwgXFx1MDAyNnByaXYtXFx1MDAzZWVzdCxcXG4rXFx0XFx0XFx0XFx0ICAgICBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VjbGtfcHRwX3JhdGUsIGZhbHNlKTtcXG4gXFx0fVxcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZWVzdF9sb2NrKTtcXG4gXFxuIFxcdHdyaXRlX2xvY2tfaXJxc2F2ZShcXHUwMDI2cHJpdi1cXHUwMDNlcHRwX2xvY2ssIGZsYWdzKTtcXG4gXFx0c3RtbWFjX2FkanVzdF9zeXN0aW1lKHByaXYsIHByaXYtXFx1MDAzZXB0cGFkZHIsIHNlYywgbnNlYywgbmVnX2FkaiwgeG1hYyk7XFxuIFxcdHdyaXRlX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZwcml2LVxcdTAwM2VwdHBfbG9jaywgZmxhZ3MpO1xcbiBcXG4gXFx0LyogQ2FsY3VsYXRlIG5ldyBiYXNldGltZSBhbmQgcmUtY29uZmlndXJlZCBFU1QgYWZ0ZXIgUFRQIHRpbWUgYWRqdXN0LiAqL1xcbi1cXHRpZiAoZXN0X3JzdCkge1xcbi1cXHRcXHRzdHJ1Y3QgdGltZXNwZWM2NCBjdXJyZW50X3RpbWUsIHRpbWU7XFxuLVxcdFxcdGt0aW1lX3QgY3VycmVudF90aW1lX25zLCBiYXNldGltZTtcXG4tXFx0XFx0dTY0IGN5Y2xlX3RpbWU7XFxuLVxcbi1cXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2Vlc3RfbG9jayk7XFxuLVxcdFxcdHByaXYtXFx1MDAzZXB0cF9jbG9ja19vcHMuZ2V0dGltZTY0KFxcdTAwMjZwcml2LVxcdTAwM2VwdHBfY2xvY2tfb3BzLCBcXHUwMDI2Y3VycmVudF90aW1lKTtcXG4tXFx0XFx0Y3VycmVudF90aW1lX25zID0gdGltZXNwZWM2NF90b19rdGltZShjdXJyZW50X3RpbWUpO1xcbi1cXHRcXHR0aW1lLnR2X25zZWMgPSBwcml2LVxcdTAwM2Vlc3QtXFx1MDAzZWJ0cl9yZXNlcnZlWzBdO1xcbi1cXHRcXHR0aW1lLnR2X3NlYyA9IHByaXYtXFx1MDAzZWVzdC1cXHUwMDNlYnRyX3Jlc2VydmVbMV07XFxuLVxcdFxcdGJhc2V0aW1lID0gdGltZXNwZWM2NF90b19rdGltZSh0aW1lKTtcXG4tXFx0XFx0Y3ljbGVfdGltZSA9ICh1NjQpcHJpdi1cXHUwMDNlZXN0LVxcdTAwM2VjdHJbMV0gKiBOU0VDX1BFUl9TRUMgK1xcbi1cXHRcXHRcXHQgICAgIHByaXYtXFx1MDAzZWVzdC1cXHUwMDNlY3RyWzBdO1xcbi1cXHRcXHR0aW1lID0gc3RtbWFjX2NhbGNfdGFzX2Jhc2V0aW1lKGJhc2V0aW1lLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHRjdXJyZW50X3RpbWVfbnMsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdGN5Y2xlX3RpbWUpO1xcbi1cXG4tXFx0XFx0cHJpdi1cXHUwMDNlZXN0LVxcdTAwM2VidHJbMF0gPSAodTMyKXRpbWUudHZfbnNlYztcXG4tXFx0XFx0cHJpdi1cXHUwMDNlZXN0LVxcdTAwM2VidHJbMV0gPSAodTMyKXRpbWUudHZfc2VjO1xcbi1cXHRcXHRwcml2LVxcdTAwM2Vlc3QtXFx1MDAzZWVuYWJsZSA9IHRydWU7XFxuLVxcdFxcdHJldCA9IHN0bW1hY19lc3RfY29uZmlndXJlKHByaXYsIHByaXYsIHByaXYtXFx1MDAzZWVzdCxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY2xrX3B0cF9yYXRlKTtcXG4tXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2Vlc3RfbG9jayk7XFxuLVxcdFxcdGlmIChyZXQpXFxuLVxcdFxcdFxcdG5ldGRldl9lcnIocHJpdi1cXHUwMDNlZGV2LCBcXFwiZmFpbGVkIHRvIGNvbmZpZ3VyZSBFU1RcXFxcblxcXCIpO1xcbi1cXHR9XFxuK1xcdGlmIChlc3RfcnN0KVxcbitcXHRcXHRzdG1tYWNfc2V0dXBfZXN0KHByaXYpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuY1xcbmluZGV4IDE0Y2FiZTc2ZTUzZWMuLjk3NDVjOWJhZTMzYzEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuY1xcbkBAIC0xMCw2ICsxMCw3IEBAXFxuICNpbmNsdWRlIFxcXCJkd21hYzQuaFxcXCJcXG4gI2luY2x1ZGUgXFxcImR3bWFjNS5oXFxcIlxcbiAjaW5jbHVkZSBcXFwic3RtbWFjLmhcXFwiXFxuKyNpbmNsdWRlIFxcXCJzdG1tYWNfZXN0LmhcXFwiXFxuIFxcbiBzdGF0aWMgdm9pZCB0Y19maWxsX2FsbF9wYXNzX2VudHJ5KHN0cnVjdCBzdG1tYWNfdGNfZW50cnkgKmVudHJ5KVxcbiB7XFxuQEAgLTk1OSw3ICs5NjAsNyBAQCBzdGF0aWMgdm9pZCB0Y190YXByaW9fbWFwX21heHNkdV90eHEoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbiBcXHRcXHRjb3VudCA9IHFvcHQtXFx1MDAzZW1xcHJpby5xb3B0LmNvdW50W2ldO1xcbiBcXG4gXFx0XFx0Zm9yIChqID0gb2Zmc2V0OyBqIFxcdTAwM2Mgb2Zmc2V0ICsgY291bnQ7IGorKylcXG4tXFx0XFx0XFx0cHJpdi1cXHUwMDNlZXN0LVxcdTAwM2VtYXhfc2R1W2pdID0gcW9wdC1cXHUwMDNlbWF4X3NkdVtpXSArIEVUSF9ITEVOIC0gRVRIX1RMRU47XFxuK1xcdFxcdFxcdHByaXYtXFx1MDAzZWVzdC5tYXhfc2R1W2pdID0gcW9wdC1cXHUwMDNlbWF4X3NkdVtpXSArIEVUSF9ITEVOIC0gRVRIX1RMRU47XFxuIFxcdH1cXG4gfVxcbiBcXG5AQCAtOTY4LDEwICs5NjksMTAgQEAgc3RhdGljIGludCB0Y190YXByaW9fY29uZmlndXJlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4ge1xcbiBcXHR1MzIgc2l6ZSwgd2lkID0gcHJpdi1cXHUwMDNlZG1hX2NhcC5lc3R3aWQsIGRlcCA9IHByaXYtXFx1MDAzZWRtYV9jYXAuZXN0ZGVwO1xcbiBcXHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2sgPSBxb3B0LVxcdTAwM2VtcXByaW8uZXh0YWNrO1xcbi1cXHRzdHJ1Y3QgdGltZXNwZWM2NCB0aW1lLCBjdXJyZW50X3RpbWUsIHFvcHRfdGltZTtcXG4tXFx0a3RpbWVfdCBjdXJyZW50X3RpbWVfbnM7XFxuK1xcdHU2NCBjdHIgPSBxb3B0LVxcdTAwM2VjeWNsZV90aW1lO1xcbitcXHRzdHJ1Y3QgdGltZXNwZWM2NCB0aW1lO1xcbitcXHR1MzIgKmdjbCA9IE5VTEw7XFxuIFxcdGludCBpLCByZXQgPSAwO1xcbi1cXHR1NjQgY3RyO1xcbiBcXG4gXFx0aWYgKHFvcHQtXFx1MDAzZWJhc2VfdGltZSBcXHUwMDNjIDApXFxuIFxcdFxcdHJldHVybiAtRVJBTkdFO1xcbkBAIC05NzksNiArOTgwLDkgQEAgc3RhdGljIGludCB0Y190YXByaW9fY29uZmlndXJlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4gXFx0aWYgKCFwcml2LVxcdTAwM2VkbWFfY2FwLmVzdHNlbClcXG4gXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiBcXG4rXFx0aWYgKGN0ciBcXHUwMDNlICh1NjQpVTMyX01BWCAqIE5TRUNfUEVSX1NFQylcXG4rXFx0XFx0cmV0dXJuIC1FUkFOR0U7XFxuK1xcbiBcXHRzd2l0Y2ggKHdpZCkge1xcbiBcXHRjYXNlIDB4MTpcXG4gXFx0XFx0d2lkID0gMTY7XFxuQEAgLTEwMTMsNDQgKzEwMTcsNDUgQEAgc3RhdGljIGludCB0Y190YXByaW9fY29uZmlndXJlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4gXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiBcXHR9XFxuIFxcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2Vlc3RfbG9jayk7XFxuK1xcbiBcXHRpZiAocW9wdC1cXHUwMDNlY21kID09IFRBUFJJT19DTURfREVTVFJPWSlcXG4gXFx0XFx0Z290byBkaXNhYmxlO1xcbiBcXG4tXFx0aWYgKHFvcHQtXFx1MDAzZW51bV9lbnRyaWVzIFxcdTAwM2UgZGVwKVxcbi1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tXFx0aWYgKCFxb3B0LVxcdTAwM2VjeWNsZV90aW1lKVxcbi1cXHRcXHRyZXR1cm4gLUVSQU5HRTtcXG4tXFx0aWYgKHFvcHQtXFx1MDAzZWN5Y2xlX3RpbWVfZXh0ZW5zaW9uIFxcdTAwM2U9IEJJVCh3aWQgKyA3KSlcXG4tXFx0XFx0cmV0dXJuIC1FUkFOR0U7XFxuLVxcbi1cXHRpZiAoIXByaXYtXFx1MDAzZWVzdCkge1xcbi1cXHRcXHRwcml2LVxcdTAwM2Vlc3QgPSBkZXZtX2t6YWxsb2MocHJpdi1cXHUwMDNlZGV2aWNlLCBzaXplb2YoKnByaXYtXFx1MDAzZWVzdCksXFxuLVxcdFxcdFxcdFxcdFxcdCBHRlBfS0VSTkVMKTtcXG4tXFx0XFx0aWYgKCFwcml2LVxcdTAwM2Vlc3QpXFxuLVxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXHRpZiAocW9wdC1cXHUwMDNlbnVtX2VudHJpZXMgXFx1MDAzZSBkZXApIHtcXG4rXFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4rXFx0XFx0Z290byB1bmxvY2s7XFxuK1xcdH1cXG4gXFxuLVxcdFxcdG11dGV4X2luaXQoXFx1MDAyNnByaXYtXFx1MDAzZWVzdF9sb2NrKTtcXG4tXFx0fSBlbHNlIHtcXG4tXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlZXN0X2xvY2spO1xcbi1cXHRcXHRtZW1zZXQocHJpdi1cXHUwMDNlZXN0LCAwLCBzaXplb2YoKnByaXYtXFx1MDAzZWVzdCkpO1xcbi1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZWVzdF9sb2NrKTtcXG4rXFx0aWYgKCFxb3B0LVxcdTAwM2VjeWNsZV90aW1lKSB7XFxuK1xcdFxcdHJldCA9IC1FUkFOR0U7XFxuK1xcdFxcdGdvdG8gdW5sb2NrO1xcbiBcXHR9XFxuIFxcbi1cXHRzaXplID0gcW9wdC1cXHUwMDNlbnVtX2VudHJpZXM7XFxuK1xcdGlmIChxb3B0LVxcdTAwM2VjeWNsZV90aW1lX2V4dGVuc2lvbiBcXHUwMDNlPSBCSVQod2lkICsgNykpIHtcXG4rXFx0XFx0cmV0ID0gLUVSQU5HRTtcXG4rXFx0XFx0Z290byB1bmxvY2s7XFxuK1xcdH1cXG4gXFxuLVxcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZWVzdF9sb2NrKTtcXG4tXFx0cHJpdi1cXHUwMDNlZXN0LVxcdTAwM2VnY2xfc2l6ZSA9IHNpemU7XFxuLVxcdHByaXYtXFx1MDAzZWVzdC1cXHUwMDNlZW5hYmxlID0gcW9wdC1cXHUwMDNlY21kID09IFRBUFJJT19DTURfUkVQTEFDRTtcXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2Vlc3RfbG9jayk7XFxuK1xcdGdjbCA9IGt6YWxsb2Moc2l6ZW9mKCpnY2wpICogRVNUX0dDTCwgR0ZQX0tFUk5FTCk7XFxuK1xcdGlmICghZ2NsKSB7XFxuK1xcdFxcdHJldCA9IC1FTk9NRU07XFxuK1xcdFxcdGdvdG8gdW5sb2NrO1xcbitcXHR9XFxuIFxcbitcXHRzaXplID0gcW9wdC1cXHUwMDNlbnVtX2VudHJpZXM7XFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBzaXplOyBpKyspIHtcXG4gXFx0XFx0czY0IGRlbHRhX25zID0gcW9wdC1cXHUwMDNlZW50cmllc1tpXS5pbnRlcnZhbDtcXG4gXFx0XFx0dTMyIGdhdGVzID0gcW9wdC1cXHUwMDNlZW50cmllc1tpXS5nYXRlX21hc2s7XFxuIFxcbi1cXHRcXHRpZiAoZGVsdGFfbnMgXFx1MDAzZSBHRU5NQVNLKHdpZCAtIDEsIDApKVxcbi1cXHRcXHRcXHRyZXR1cm4gLUVSQU5HRTtcXG4tXFx0XFx0aWYgKGdhdGVzIFxcdTAwM2UgR0VOTUFTSygzMSAtIHdpZCwgMCkpXFxuLVxcdFxcdFxcdHJldHVybiAtRVJBTkdFO1xcbitcXHRcXHRpZiAoZGVsdGFfbnMgXFx1MDAzZSBHRU5NQVNLKHdpZCAtIDEsIDApKSB7XFxuK1xcdFxcdFxcdHJldCA9IC1FUkFOR0U7XFxuK1xcdFxcdFxcdGdvdG8gZnJlZV9nY2w7XFxuK1xcdFxcdH1cXG4rXFx0XFx0aWYgKGdhdGVzIFxcdTAwM2UgR0VOTUFTSygzMSAtIHdpZCwgMCkpIHtcXG4rXFx0XFx0XFx0cmV0ID0gLUVSQU5HRTtcXG4rXFx0XFx0XFx0Z290byBmcmVlX2djbDtcXG4rXFx0XFx0fVxcbiBcXG4gXFx0XFx0c3dpdGNoIChxb3B0LVxcdTAwM2VlbnRyaWVzW2ldLmNvbW1hbmQpIHtcXG4gXFx0XFx0Y2FzZSBUQ19UQVBSSU9fQ01EX1NFVF9HQVRFUzpcXG5AQCAtMTA2Miw2NSArMTA2Nyw1OCBAQCBzdGF0aWMgaW50IHRjX3RhcHJpb19jb25maWd1cmUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbiBcXHRcXHRcXHRnYXRlcyBcXHUwMDI2PSB+QklUKDApO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0ZGVmYXVsdDpcXG4tXFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbitcXHRcXHRcXHRyZXQgPSAtRU9QTk9UU1VQUDtcXG4rXFx0XFx0XFx0Z290byBmcmVlX2djbDtcXG4gXFx0XFx0fVxcbiBcXG4tXFx0XFx0cHJpdi1cXHUwMDNlZXN0LVxcdTAwM2VnY2xbaV0gPSBkZWx0YV9ucyB8IChnYXRlcyBcXHUwMDNjXFx1MDAzYyB3aWQpO1xcbitcXHRcXHRnY2xbaV0gPSBkZWx0YV9ucyB8IChnYXRlcyBcXHUwMDNjXFx1MDAzYyB3aWQpO1xcbiBcXHR9XFxuIFxcbi1cXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2Vlc3RfbG9jayk7XFxuLVxcdC8qIEFkanVzdCBmb3IgcmVhbCBzeXN0ZW0gdGltZSAqL1xcbi1cXHRwcml2LVxcdTAwM2VwdHBfY2xvY2tfb3BzLmdldHRpbWU2NChcXHUwMDI2cHJpdi1cXHUwMDNlcHRwX2Nsb2NrX29wcywgXFx1MDAyNmN1cnJlbnRfdGltZSk7XFxuLVxcdGN1cnJlbnRfdGltZV9ucyA9IHRpbWVzcGVjNjRfdG9fa3RpbWUoY3VycmVudF90aW1lKTtcXG4tXFx0dGltZSA9IHN0bW1hY19jYWxjX3Rhc19iYXNldGltZShxb3B0LVxcdTAwM2ViYXNlX3RpbWUsIGN1cnJlbnRfdGltZV9ucyxcXG4tXFx0XFx0XFx0XFx0XFx0cW9wdC1cXHUwMDNlY3ljbGVfdGltZSk7XFxuLVxcbi1cXHRwcml2LVxcdTAwM2Vlc3QtXFx1MDAzZWJ0clswXSA9ICh1MzIpdGltZS50dl9uc2VjO1xcbi1cXHRwcml2LVxcdTAwM2Vlc3QtXFx1MDAzZWJ0clsxXSA9ICh1MzIpdGltZS50dl9zZWM7XFxuK1xcdG1lbXNldChcXHUwMDI2cHJpdi1cXHUwMDNlZXN0LCAwLCBzaXplb2YocHJpdi1cXHUwMDNlZXN0KSk7XFxuK1xcdG1lbWNweShwcml2LVxcdTAwM2Vlc3QuZ2NsLCBnY2wsIHNpemVvZihwcml2LVxcdTAwM2Vlc3QuZ2NsKSk7XFxuK1xcdHByaXYtXFx1MDAzZWVzdC5nY2xfc2l6ZSA9IHNpemU7XFxuIFxcbi1cXHRxb3B0X3RpbWUgPSBrdGltZV90b190aW1lc3BlYzY0KHFvcHQtXFx1MDAzZWJhc2VfdGltZSk7XFxuLVxcdHByaXYtXFx1MDAzZWVzdC1cXHUwMDNlYnRyX3Jlc2VydmVbMF0gPSAodTMyKXFvcHRfdGltZS50dl9uc2VjO1xcbi1cXHRwcml2LVxcdTAwM2Vlc3QtXFx1MDAzZWJ0cl9yZXNlcnZlWzFdID0gKHUzMilxb3B0X3RpbWUudHZfc2VjO1xcbitcXHR0aW1lID0ga3RpbWVfdG9fdGltZXNwZWM2NChxb3B0LVxcdTAwM2ViYXNlX3RpbWUpO1xcbitcXHRwcml2LVxcdTAwM2Vlc3QuYnRyX3Jlc2VydmVbMF0gPSAodTMyKXRpbWUudHZfbnNlYztcXG4rXFx0cHJpdi1cXHUwMDNlZXN0LmJ0cl9yZXNlcnZlWzFdID0gKHUzMil0aW1lLnR2X3NlYztcXG4gXFxuLVxcdGN0ciA9IHFvcHQtXFx1MDAzZWN5Y2xlX3RpbWU7XFxuLVxcdHByaXYtXFx1MDAzZWVzdC1cXHUwMDNlY3RyWzBdID0gZG9fZGl2KGN0ciwgTlNFQ19QRVJfU0VDKTtcXG4tXFx0cHJpdi1cXHUwMDNlZXN0LVxcdTAwM2VjdHJbMV0gPSAodTMyKWN0cjtcXG4tXFxuLVxcdHByaXYtXFx1MDAzZWVzdC1cXHUwMDNldGVyID0gcW9wdC1cXHUwMDNlY3ljbGVfdGltZV9leHRlbnNpb247XFxuK1xcdHByaXYtXFx1MDAzZWVzdC5jdHJbMF0gPSBkb19kaXYoY3RyLCBOU0VDX1BFUl9TRUMpO1xcbitcXHRwcml2LVxcdTAwM2Vlc3QuY3RyWzFdID0gKHUzMiljdHI7XFxuIFxcbitcXHRwcml2LVxcdTAwM2Vlc3QudGVyID0gcW9wdC1cXHUwMDNlY3ljbGVfdGltZV9leHRlbnNpb247XFxuIFxcdHRjX3RhcHJpb19tYXBfbWF4c2R1X3R4cShwcml2LCBxb3B0KTtcXG4gXFxuLVxcdHJldCA9IHN0bW1hY19lc3RfY29uZmlndXJlKHByaXYsIHByaXYsIHByaXYtXFx1MDAzZWVzdCxcXG4tXFx0XFx0XFx0XFx0ICAgcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY2xrX3B0cF9yYXRlKTtcXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2Vlc3RfbG9jayk7XFxuLVxcdGlmIChyZXQpIHtcXG4tXFx0XFx0bmV0ZGV2X2Vycihwcml2LVxcdTAwM2VkZXYsIFxcXCJmYWlsZWQgdG8gY29uZmlndXJlIEVTVFxcXFxuXFxcIik7XFxuK1xcdHJldCA9IF9fc3RtbWFjX3NldHVwX2VzdChwcml2KTtcXG4rXFx0aWYgKHJldClcXG4gXFx0XFx0Z290byBkaXNhYmxlO1xcbi1cXHR9XFxuIFxcbiBcXHRyZXQgPSBzdG1tYWNfZnBlX21hcF9wcmVlbXB0aW9uX2NsYXNzKHByaXYsIHByaXYtXFx1MDAzZWRldiwgZXh0YWNrLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICBxb3B0LVxcdTAwM2VtcXByaW8ucHJlZW1wdGlibGVfdGNzKTtcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0Z290byBkaXNhYmxlO1xcbiBcXG4rXFx0cHJpdi1cXHUwMDNlZXN0LmVuYWJsZSA9IHRydWU7XFxuK1xcdGtmcmVlKGdjbCk7XFxuK1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZWVzdF9sb2NrKTtcXG4rXFxuIFxcdHJldHVybiAwO1xcbiBcXG4gZGlzYWJsZTpcXG4tXFx0aWYgKHByaXYtXFx1MDAzZWVzdCkge1xcbi1cXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2Vlc3RfbG9jayk7XFxuLVxcdFxcdHByaXYtXFx1MDAzZWVzdC1cXHUwMDNlZW5hYmxlID0gZmFsc2U7XFxuLVxcdFxcdHN0bW1hY19lc3RfY29uZmlndXJlKHByaXYsIHByaXYsIHByaXYtXFx1MDAzZWVzdCxcXG4tXFx0XFx0XFx0XFx0ICAgICBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VjbGtfcHRwX3JhdGUpO1xcbi1cXHRcXHQvKiBSZXNldCB0YXByaW8gc3RhdHVzICovXFxuLVxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2V0eF9xdWV1ZXNfdG9fdXNlOyBpKyspIHtcXG4tXFx0XFx0XFx0cHJpdi1cXHUwMDNleHN0YXRzLm1heF9zZHVfdHhxX2Ryb3BbaV0gPSAwO1xcbi1cXHRcXHRcXHRwcml2LVxcdTAwM2V4c3RhdHMubXRsX2VzdF90eHFfaGxiZltpXSA9IDA7XFxuLVxcdFxcdFxcdHByaXYtXFx1MDAzZXhzdGF0cy5tdGxfZXN0X3R4cV9obGJzW2ldID0gMDtcXG4tXFx0XFx0fVxcbi1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZWVzdF9sb2NrKTtcXG4rXFx0cHJpdi1cXHUwMDNlZXN0LmVuYWJsZSA9IGZhbHNlO1xcbitcXHRzdG1tYWNfZXN0X2NvbmZpZ3VyZShwcml2LCBwcml2LCBcXHUwMDI2cHJpdi1cXHUwMDNlZXN0LFxcbitcXHRcXHRcXHQgICAgIHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWNsa19wdHBfcmF0ZSwgZmFsc2UpO1xcbitcXHQvKiBSZXNldCB0YXByaW8gc3RhdHVzICovXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2V0eF9xdWV1ZXNfdG9fdXNlOyBpKyspIHtcXG4rXFx0XFx0cHJpdi1cXHUwMDNleHN0YXRzLm1heF9zZHVfdHhxX2Ryb3BbaV0gPSAwO1xcbitcXHRcXHRwcml2LVxcdTAwM2V4c3RhdHMubXRsX2VzdF90eHFfaGxiZltpXSA9IDA7XFxuK1xcdFxcdHByaXYtXFx1MDAzZXhzdGF0cy5tdGxfZXN0X3R4cV9obGJzW2ldID0gMDtcXG4gXFx0fVxcbi1cXG4gXFx0c3RtbWFjX2ZwZV9tYXBfcHJlZW1wdGlvbl9jbGFzcyhwcml2LCBwcml2LVxcdTAwM2VkZXYsIGV4dGFjaywgMCk7XFxuK2ZyZWVfZ2NsOlxcbitcXHRrZnJlZShnY2wpO1xcbit1bmxvY2s6XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlZXN0X2xvY2spO1xcbiBcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QxOTozMjozOC4zMjI2MTUyMDFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjI1OTc3NDk3MDMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyIHRvIGhhbmRsZSBFU1QgKEVuaGFuY2VtZW50cyBmb3IgU2NoZWR1bGVkIFRyYWZmaWMgLyBUQVBSSU8pIHNldHVwIGFuZCBsaWZlY3ljbGUuIFRoaXMgZHJpdmVyIGNvbnRyb2xzIHBoeXNpY2FsIFNvQy9QQ0kgRXRoZXJuZXQgTUFDIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIFFFTVUvR0NFIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGM5ZjZmNzQwYTNmOTVkNWNhYzhkNmQ0NDkxNDI1NDFmZWYyOTUyMDNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAzIDE5OjMyOjM3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oXG5pbmRleCAwNGRhZmVjMDIxYjRmLi5lNTU3OTE2NmRmMWE1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmhcbkBAIC02MjAsNyArNjIwLDcgQEAgc3RydWN0IHN0bW1hY19tbWNfb3BzIHtcbiBcbiBzdHJ1Y3Qgc3RtbWFjX2VzdF9vcHMge1xuIFx0aW50ICgqY29uZmlndXJlKShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBzdG1tYWNfZXN0ICpjZmcsXG4tXHRcdFx0IHVuc2lnbmVkIGludCBwdHBfcmF0ZSk7XG4rXHRcdFx0IHVuc2lnbmVkIGludCBwdHBfcmF0ZSwgYm9vbCBlbmFibGUpO1xuIFx0dm9pZCAoKmlycV9zdGF0dXMpKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHQgICBzdHJ1Y3Qgc3RtbWFjX2V4dHJhX3N0YXRzICp4LCB1MzIgdHhxY250KTtcbiB9O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmhcbmluZGV4IDc1ODJmY2E2Mzc0MTkuLmE4YzhiZTM0ZmY4MTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmhcbkBAIC0yOTgsNyArMjk4LDcgQEAgc3RydWN0IHN0bW1hY19wcml2IHtcbiBcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdDtcbiBcdC8qIFByb3RlY3QgZXN0IHBhcmFtZXRlcnMgKi9cbiBcdHN0cnVjdCBtdXRleCBlc3RfbG9jaztcbi1cdHN0cnVjdCBzdG1tYWNfZXN0ICplc3Q7XG4rXHRzdHJ1Y3Qgc3RtbWFjX2VzdCBlc3Q7XG4gXHRzdHJ1Y3QgZG1hX2ZlYXR1cmVzIGRtYV9jYXA7XG4gXHRzdHJ1Y3Qgc3RtbWFjX2NvdW50ZXJzIG1tYztcbiBcdGludCBod19jYXBfc3VwcG9ydDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmNcbmluZGV4IGFmYzUxNjA1OWI4OTcuLjQ5ZWRmZWJiYzM5ZTAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuY1xuQEAgLTI2LDcgKzI2LDcgQEAgc3RhdGljIGludCBlc3Rfd3JpdGUodm9pZCBfX2lvbWVtICplc3RfYWRkciwgdTMyIHJlZywgdTMyIHZhbCwgYm9vbCBnY2wpXG4gfVxuIFxuIHN0YXRpYyBpbnQgZXN0X2NvbmZpZ3VyZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBzdG1tYWNfZXN0ICpjZmcsXG4tXHRcdFx0IHVuc2lnbmVkIGludCBwdHBfcmF0ZSlcbitcdFx0XHQgdW5zaWduZWQgaW50IHB0cF9yYXRlLCBib29sIGVuYWJsZSlcbiB7XG4gXHR2b2lkIF9faW9tZW0gKmVzdF9hZGRyID0gcHJpdi1cdTAwM2Vlc3RhZGRyO1xuIFx0aW50IGksIHJldCA9IDA7XG5AQCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgaW50IGVzdF9jb25maWd1cmUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3Qgc3RtbWFjX2VzdCAqY2ZnLFxuIFx0XHRjdHJsIHw9ICgoTlNFQ19QRVJfU0VDIC8gcHRwX3JhdGUpICogRVNUX0dNQUM1X1BUT1ZfTVVMKSBcdTAwM2NcdTAwM2NcbiBcdFx0XHQgRVNUX0dNQUM1X1BUT1ZfU0hJRlQ7XG4gXHR9XG4tXHRpZiAoY2ZnLVx1MDAzZWVuYWJsZSlcbitcdGlmIChlbmFibGUpXG4gXHRcdGN0cmwgfD0gRVNUX0VFU1QgfCBFU1RfU1NXTCB8IEVTVF9ERkJTO1xuIFx0ZWxzZVxuIFx0XHRjdHJsIFx1MDAyNj0gfkVTVF9FRVNUO1xuQEAgLTcwLDcgKzcwLDcgQEAgc3RhdGljIGludCBlc3RfY29uZmlndXJlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IHN0bW1hY19lc3QgKmNmZyxcbiBcdHdyaXRlbChjdHJsLCBlc3RfYWRkciArIEVTVF9DT05UUk9MKTtcbiBcbiBcdC8qIENvbmZpZ3VyZSBFU1QgaW50ZXJydXB0ICovXG4tXHRpZiAoY2ZnLVx1MDAzZWVuYWJsZSlcbitcdGlmIChlbmFibGUpXG4gXHRcdGN0cmwgPSBFU1RfSUVDR0NFIHwgRVNUX0lFSFMgfCBFU1RfSUVIRiB8IEVTVF9JRUJFIHwgRVNUX0lFQ0M7XG4gXHRlbHNlXG4gXHRcdGN0cmwgPSAwO1xuQEAgLTgwLDYgKzgwLDM2IEBAIHN0YXRpYyBpbnQgZXN0X2NvbmZpZ3VyZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBzdG1tYWNfZXN0ICpjZmcsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4raW50IF9fc3RtbWFjX3NldHVwX2VzdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4re1xuK1x0c3RydWN0IHRpbWVzcGVjNjQgY3VycmVudF90aW1lLCB0aW1lO1xuK1x0a3RpbWVfdCBjdXJyZW50X3RpbWVfbnMsIGJhc2V0aW1lO1xuK1x0dTY0IGN5Y2xlX3RpbWU7XG4rXHRpbnQgZXJyO1xuK1xuK1x0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbitcbitcdHByaXYtXHUwMDNlcHRwX2Nsb2NrX29wcy5nZXR0aW1lNjQoXHUwMDI2cHJpdi1cdTAwM2VwdHBfY2xvY2tfb3BzLCBcdTAwMjZjdXJyZW50X3RpbWUpO1xuK1x0Y3VycmVudF90aW1lX25zID0gdGltZXNwZWM2NF90b19rdGltZShjdXJyZW50X3RpbWUpO1xuK1xuK1x0dGltZS50dl9uc2VjID0gcHJpdi1cdTAwM2Vlc3QuYnRyX3Jlc2VydmVbMF07XG4rXHR0aW1lLnR2X3NlYyA9IHByaXYtXHUwMDNlZXN0LmJ0cl9yZXNlcnZlWzFdO1xuK1x0YmFzZXRpbWUgPSB0aW1lc3BlYzY0X3RvX2t0aW1lKHRpbWUpO1xuK1xuK1x0Y3ljbGVfdGltZSA9ICh1NjQpcHJpdi1cdTAwM2Vlc3QuY3RyWzFdICogTlNFQ19QRVJfU0VDICsgcHJpdi1cdTAwM2Vlc3QuY3RyWzBdO1xuK1xuK1x0dGltZSA9IHN0bW1hY19jYWxjX3Rhc19iYXNldGltZShiYXNldGltZSwgY3VycmVudF90aW1lX25zLCBjeWNsZV90aW1lKTtcbitcdHByaXYtXHUwMDNlZXN0LmJ0clswXSA9ICh1MzIpdGltZS50dl9uc2VjO1xuK1x0cHJpdi1cdTAwM2Vlc3QuYnRyWzFdID0gKHUzMil0aW1lLnR2X3NlYztcbitcbitcdGVyciA9IHN0bW1hY19lc3RfY29uZmlndXJlKHByaXYsIHByaXYsIFx1MDAyNnByaXYtXHUwMDNlZXN0LFxuK1x0XHRcdFx0ICAgcHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNsa19wdHBfcmF0ZSwgdHJ1ZSk7XG4rXHRpZiAoZXJyKVxuK1x0XHRuZXRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcImZhaWxlZCB0byByZS1jb25maWd1cmUgRVNUXFxuXCIpO1xuK1xuK1x0cmV0dXJuIGVycjtcbit9XG4rXG4gc3RhdGljIHZvaWQgZXN0X2lycV9zdGF0dXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdCAgIHN0cnVjdCBzdG1tYWNfZXh0cmFfc3RhdHMgKngsIHUzMiB0eHFjbnQpXG4ge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuaFxuaW5kZXggZjcwMjIxYzljODRhZi4uYjRkMWExZjA0ZjEwOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5oXG5AQCAtNjUsMyArNjUsMTYgQEBcbiAjZGVmaW5lIEVTVF9HQ0xfREFUQVx0XHRcdDB4MDAwMDAwMzRcbiBcbiBleHRlcm4gY29uc3Qgc3RydWN0IHN0bW1hY19lc3Rfb3BzIGR3bWFjNTEwX2VzdF9vcHM7XG4rXG4raW50IF9fc3RtbWFjX3NldHVwX2VzdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpO1xuK3N0YXRpYyBpbmxpbmUgaW50IHN0bW1hY19zZXR1cF9lc3Qoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuK3tcbitcdGludCByZXQgPSAwO1xuK1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbitcdGlmIChwcml2LVx1MDAzZWVzdC5lbmFibGUpXG4rXHRcdHJldCA9IF9fc3RtbWFjX3NldHVwX2VzdChwcml2KTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbitcbitcdHJldHVybiByZXQ7XG4rfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCBkNTc2MDU5YzA0ZGY5Li5jNGQzNTM5NDgzNDczIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuQEAgLTQ4LDYgKzQ4LDcgQEBcbiAjaW5jbHVkZSBcInN0bW1hY19wdHAuaFwiXG4gI2luY2x1ZGUgXCJzdG1tYWNfZnBlLmhcIlxuICNpbmNsdWRlIFwic3RtbWFjLmhcIlxuKyNpbmNsdWRlIFwic3RtbWFjX2VzdC5oXCJcbiAjaW5jbHVkZSBcInN0bW1hY19wY3MuaFwiXG4gI2luY2x1ZGUgXCJzdG1tYWNfeGRwLmhcIlxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3Jlc2V0LmhcdTAwM2VcbkBAIC05MzcsMTggKzkzOCwyNyBAQCBzdGF0aWMgaW50IHN0bW1hY19pbml0X3RpbWVzdGFtcGluZyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIHZvaWQgc3RtbWFjX3NldHVwX3B0cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4rc3RhdGljIGludCBzdG1tYWNfc2V0dXBfcHRwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiB7XG4gXHRpbnQgcmV0O1xuIFxuIFx0cmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKHByaXYtXHUwMDNlcGxhdC1cdTAwM2VjbGtfcHRwX3JlZik7XG4tXHRpZiAocmV0IFx1MDAzYyAwKVxuK1x0aWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRuZXRkZXZfd2Fybihwcml2LVx1MDAzZWRldixcbiBcdFx0XHQgICAgXCJmYWlsZWQgdG8gZW5hYmxlIFBUUCByZWZlcmVuY2UgY2xvY2s6ICVwZVxcblwiLFxuIFx0XHRcdCAgICBFUlJfUFRSKHJldCkpO1xuK1x0XHRyZXR1cm4gcmV0O1xuK1x0fVxuK1xuK1x0cmV0ID0gc3RtbWFjX2luaXRfdGltZXN0YW1waW5nKHByaXYpO1xuK1x0aWYgKHJldCkge1xuK1x0XHRjbGtfZGlzYWJsZV91bnByZXBhcmUocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNsa19wdHBfcmVmKTtcbitcdFx0cmV0dXJuIHJldDtcbitcdH1cbiBcbi1cdGlmIChzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcocHJpdikgPT0gMClcbi1cdFx0c3RtbWFjX3B0cF9yZWdpc3Rlcihwcml2KTtcbitcdHN0bW1hY19wdHBfcmVnaXN0ZXIocHJpdik7XG4rXG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIHZvaWQgc3RtbWFjX3JlbGVhc2VfcHRwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbkBAIC0yNzE0LDkgKzI3MjQsOCBAQCBzdGF0aWMgYm9vbCBzdG1tYWNfeGRwX3htaXRfemMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUsIHUzMiBidWRnZXQpXG4gXHRcdGlmICgheHNrX3R4X3BlZWtfZGVzYyhwb29sLCBcdTAwMjZ4ZHBfZGVzYykpXG4gXHRcdFx0YnJlYWs7XG4gXG4tXHRcdGlmIChwcml2LVx1MDAzZWVzdCBcdTAwMjZcdTAwMjYgcHJpdi1cdTAwM2Vlc3QtXHUwMDNlZW5hYmxlIFx1MDAyNlx1MDAyNlxuLVx0XHQgICAgcHJpdi1cdTAwM2Vlc3QtXHUwMDNlbWF4X3NkdVtxdWV1ZV0gXHUwMDI2XHUwMDI2XG4tXHRcdCAgICB4ZHBfZGVzYy5sZW4gXHUwMDNlIHByaXYtXHUwMDNlZXN0LVx1MDAzZW1heF9zZHVbcXVldWVdKSB7XG4rXHRcdGlmIChwcml2LVx1MDAzZWVzdC5lbmFibGUgXHUwMDI2XHUwMDI2IHByaXYtXHUwMDNlZXN0Lm1heF9zZHVbcXVldWVdIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgeGRwX2Rlc2MubGVuIFx1MDAzZSBwcml2LVx1MDAzZWVzdC5tYXhfc2R1W3F1ZXVlXSkge1xuIFx0XHRcdHByaXYtXHUwMDNleHN0YXRzLm1heF9zZHVfdHhxX2Ryb3BbcXVldWVdKys7XG4gXHRcdFx0Y29udGludWU7XG4gXHRcdH1cbkBAIC00MTUzLDEwICs0MTYyLDE5IEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0cmV0ID0gc3RtbWFjX2h3X3NldHVwKGRldik7XG4gXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gXHRcdG5ldGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwiJXM6IEh3IHNldHVwIGZhaWxlZFxcblwiLCBfX2Z1bmNfXyk7XG4tXHRcdGdvdG8gaW5pdF9lcnJvcjtcbitcdFx0cmV0dXJuIHJldDtcbiBcdH1cbiBcbi1cdHN0bW1hY19zZXR1cF9wdHAocHJpdik7XG4rXHRyZXQgPSBzdG1tYWNfc2V0dXBfcHRwKHByaXYpO1xuK1x0aWYgKHJldClcbitcdFx0Z290byBwdHBfZXJyb3I7XG4rXG4rXHQvKiBUaGUgY29yZSBzb2Z0IHJlc2V0IGluIHN0bW1hY19od19zZXR1cCgpIGNsZWFycyB0aGUgTVRMX0VTVFxuK1x0ICogcmVnaXN0ZXJzLCBzbyByZS1hcHBseSB0aGUgdGFwcmlvIG9mZmxvYWQgYWZ0ZXIgUFRQIGlzIHVwLlxuK1x0ICovXG4rXHRyZXQgPSBzdG1tYWNfc2V0dXBfZXN0KHByaXYpO1xuK1x0aWYgKHJldCBcdTAwM2MgMClcbitcdFx0Z290byBlc3RfZXJyb3I7XG4gXG4gXHRzdG1tYWNfaW5pdF9jb2FsZXNjZShwcml2KTtcbiBcbkBAIC00MTc5LDkgKzQxOTcsMTEgQEAgc3RhdGljIGludCBfX3N0bW1hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXG4gXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFx1MDAzYyBwcml2LVx1MDAzZXBsYXQtXHUwMDNldHhfcXVldWVzX3RvX3VzZTsgY2hhbisrKVxuIFx0XHRocnRpbWVyX2NhbmNlbChcdTAwMjZwcml2LVx1MDAzZWRtYV9jb25mLnR4X3F1ZXVlW2NoYW5dLnR4dGltZXIpO1xuLVxuK2VzdF9lcnJvcjpcbiBcdHN0bW1hY19yZWxlYXNlX3B0cChwcml2KTtcbi1pbml0X2Vycm9yOlxuK3B0cF9lcnJvcjpcbitcdHN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7XG4rXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbkBAIC00Nzc2LDEzICs0Nzk2LDEyIEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBzdG1tYWNfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0aWYgKHNrYl9pc19nc28oc2tiKSlcbiBcdFx0cmV0dXJuIHN0bW1hY190c29feG1pdChza2IsIGRldik7XG4gXG4tXHRpZiAocHJpdi1cdTAwM2Vlc3QgXHUwMDI2XHUwMDI2IHByaXYtXHUwMDNlZXN0LVx1MDAzZWVuYWJsZSBcdTAwMjZcdTAwMjZcbi1cdCAgICBwcml2LVx1MDAzZWVzdC1cdTAwM2VtYXhfc2R1W3F1ZXVlXSkge1xuK1x0aWYgKHByaXYtXHUwMDNlZXN0LmVuYWJsZSBcdTAwMjZcdTAwMjYgcHJpdi1cdTAwM2Vlc3QubWF4X3NkdVtxdWV1ZV0pIHtcbiBcdFx0c2R1X2xlbiA9IHNrYi1cdTAwM2VsZW47XG4gXHRcdC8qIEFkZCBWTEFOIHRhZyBsZW5ndGggaWYgVkxBTiB0YWcgaW5zZXJ0aW9uIG9mZmxvYWQgaXMgcmVxdWVzdGVkICovXG4gXHRcdGlmIChwcml2LVx1MDAzZWRtYV9jYXAudmxpbnMgXHUwMDI2XHUwMDI2IHNrYl92bGFuX3RhZ19wcmVzZW50KHNrYikpXG4gXHRcdFx0c2R1X2xlbiArPSBWTEFOX0hMRU47XG4tXHRcdGlmIChzZHVfbGVuIFx1MDAzZSBwcml2LVx1MDAzZWVzdC1cdTAwM2VtYXhfc2R1W3F1ZXVlXSkge1xuK1x0XHRpZiAoc2R1X2xlbiBcdTAwM2UgcHJpdi1cdTAwM2Vlc3QubWF4X3NkdVtxdWV1ZV0pIHtcbiBcdFx0XHRwcml2LVx1MDAzZXhzdGF0cy5tYXhfc2R1X3R4cV9kcm9wW3F1ZXVlXSsrO1xuIFx0XHRcdGdvdG8gbWF4X3NkdV9lcnI7XG4gXHRcdH1cbkBAIC01MTg2LDkgKzUyMDUsOCBAQCBzdGF0aWMgaW50IHN0bW1hY194ZHBfeG1pdF94ZHBmKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgaW50IHF1ZXVlLFxuIFx0aWYgKHN0bW1hY190eF9hdmFpbChwcml2LCBxdWV1ZSkgXHUwMDNjIFNUTU1BQ19UWF9USFJFU0gocHJpdikpXG4gXHRcdHJldHVybiBTVE1NQUNfWERQX0NPTlNVTUVEO1xuIFxuLVx0aWYgKHByaXYtXHUwMDNlZXN0IFx1MDAyNlx1MDAyNiBwcml2LVx1MDAzZWVzdC1cdTAwM2VlbmFibGUgXHUwMDI2XHUwMDI2XG4tXHQgICAgcHJpdi1cdTAwM2Vlc3QtXHUwMDNlbWF4X3NkdVtxdWV1ZV0gXHUwMDI2XHUwMDI2XG4tXHQgICAgeGRwZi1cdTAwM2VsZW4gXHUwMDNlIHByaXYtXHUwMDNlZXN0LVx1MDAzZW1heF9zZHVbcXVldWVdKSB7XG4rXHRpZiAocHJpdi1cdTAwM2Vlc3QuZW5hYmxlIFx1MDAyNlx1MDAyNiBwcml2LVx1MDAzZWVzdC5tYXhfc2R1W3F1ZXVlXSBcdTAwMjZcdTAwMjZcbitcdCAgICB4ZHBmLVx1MDAzZWxlbiBcdTAwM2UgcHJpdi1cdTAwM2Vlc3QubWF4X3NkdVtxdWV1ZV0pIHtcbiBcdFx0cHJpdi1cdTAwM2V4c3RhdHMubWF4X3NkdV90eHFfZHJvcFtxdWV1ZV0rKztcbiBcdFx0cmV0dXJuIFNUTU1BQ19YRFBfQ09OU1VNRUQ7XG4gXHR9XG5AQCAtODAxNyw2ICs4MDM1LDcgQEAgc3RhdGljIGludCBfX3N0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxuIFx0c3RtbWFjX25hcGlfYWRkKG5kZXYpO1xuIFxuIFx0bXV0ZXhfaW5pdChcdTAwMjZwcml2LVx1MDAzZWxvY2spO1xuK1x0bXV0ZXhfaW5pdChcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbiBcbiBcdHN0bW1hY19mcGVfaW5pdChwcml2KTtcbiBcbkBAIC04MTQ4LDYgKzgxNjcsNyBAQCB2b2lkIHN0bW1hY19kdnJfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdHN0bW1hY19tZGlvX3VucmVnaXN0ZXIobmRldik7XG4gXG4gXHRkZXN0cm95X3dvcmtxdWV1ZShwcml2LVx1MDAzZXdxKTtcbitcdG11dGV4X2Rlc3Ryb3koXHUwMDI2cHJpdi1cdTAwM2Vlc3RfbG9jayk7XG4gXHRtdXRleF9kZXN0cm95KFx1MDAyNnByaXYtXHUwMDNlbG9jayk7XG4gXHRiaXRtYXBfZnJlZShwcml2LVx1MDAzZWFmX3hkcF96Y19xcHMpO1xuIFxuQEAgLTgzMTgsMTMgKzgzMzgsMTYgQEAgaW50IHN0bW1hY19yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0cmV0ID0gc3RtbWFjX2h3X3NldHVwKG5kZXYpO1xuIFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRuZXRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcIiVzOiBIdyBzZXR1cCBmYWlsZWRcXG5cIiwgX19mdW5jX18pO1xuLVx0XHRzdG1tYWNfbGVnYWN5X3NlcmRlc19wb3dlcl9kb3duKHByaXYpO1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2Vsb2NrKTtcbi1cdFx0cnRubF91bmxvY2soKTtcbi1cdFx0cmV0dXJuIHJldDtcbitcdFx0Z290byBlcnJvcl91bmxvY2s7XG4gXHR9XG4gXG4tXHRzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcocHJpdik7XG4rXHRyZXQgPSBzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcocHJpdik7XG4rXHRpZiAocmV0KVxuK1x0XHRnb3RvIGVycm9yX3N0b3BfZG1hO1xuK1xuK1x0cmV0ID0gc3RtbWFjX3NldHVwX2VzdChwcml2KTtcbitcdGlmIChyZXQgXHUwMDNjIDApXG4rXHRcdGdvdG8gZXJyb3Jfc3RvcF9kbWE7XG4gXG4gXHRzdG1tYWNfaW5pdF9jb2FsZXNjZShwcml2KTtcbiBcdHBoeWxpbmtfcnhfY2xrX3N0b3BfYmxvY2socHJpdi1cdTAwM2VwaHlsaW5rKTtcbkBAIC04MzQ4LDYgKzgzNzEsMTUgQEAgaW50IHN0bW1hY19yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0bmV0aWZfZGV2aWNlX2F0dGFjaChuZGV2KTtcbiBcbiBcdHJldHVybiAwO1xuK1xuK2Vycm9yX3N0b3BfZG1hOlxuK1x0c3RtbWFjX3N0b3BfYWxsX2RtYShwcml2KTtcbitlcnJvcl91bmxvY2s6XG4rXHRzdG1tYWNfbGVnYWN5X3NlcmRlc19wb3dlcl9kb3duKHByaXYpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlbG9jayk7XG4rXHRydG5sX3VubG9jaygpO1xuK1xuK1x0cmV0dXJuIHJldDtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3Jlc3VtZSk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3B0cC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3B0cC5jXG5pbmRleCA5NjAyNDk5NjAwMDRjLi44ZjNhOTBkZjMxNzhjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3B0cC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcHRwLmNcbkBAIC04LDYgKzgsNyBAQFxuICAgQXV0aG9yOiBSYXlhZ29uZCBLb2thdGFudXIgXHUwMDNjcmF5YWdvbmRAdmF5YXZ5YWxhYnMuY29tXHUwMDNlXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbiAjaW5jbHVkZSBcInN0bW1hYy5oXCJcbisjaW5jbHVkZSBcInN0bW1hY19lc3QuaFwiXG4gI2luY2x1ZGUgXCJzdG1tYWNfcHRwLmhcIlxuIFxuICNkZWZpbmUgUFRQX1NBRkVfVElNRV9PRkZTRVRfTlNcdDUwMDAwMFxuQEAgLTU1LDcgKzU2LDYgQEAgc3RhdGljIGludCBzdG1tYWNfYWRqdXN0X3RpbWUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIHM2NCBkZWx0YSlcbiBcdHUzMiBxdW90aWVudCwgcmVtaW5kZXI7XG4gXHRpbnQgbmVnX2FkaiA9IDA7XG4gXHRib29sIHhtYWMsIGVzdF9yc3QgPSBmYWxzZTtcbi1cdGludCByZXQ7XG4gXG4gXHR4bWFjID0gZHdtYWNfaXNfeG1hYyhwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlKTtcbiBcbkBAIC02OSw0NiArNjksMjEgQEAgc3RhdGljIGludCBzdG1tYWNfYWRqdXN0X3RpbWUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIHM2NCBkZWx0YSlcbiBcdG5zZWMgPSByZW1pbmRlcjtcbiBcbiBcdC8qIElmIEVTVCBpcyBlbmFibGVkLCBkaXNhYmxlZCBpdCBiZWZvcmUgYWRqdXN0IHB0cCB0aW1lLiAqL1xuLVx0aWYgKHByaXYtXHUwMDNlZXN0IFx1MDAyNlx1MDAyNiBwcml2LVx1MDAzZWVzdC1cdTAwM2VlbmFibGUpIHtcbitcdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2Vlc3RfbG9jayk7XG4rXHRpZiAocHJpdi1cdTAwM2Vlc3QuZW5hYmxlKSB7XG4gXHRcdGVzdF9yc3QgPSB0cnVlO1xuLVx0XHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlZXN0X2xvY2spO1xuLVx0XHRwcml2LVx1MDAzZWVzdC1cdTAwM2VlbmFibGUgPSBmYWxzZTtcbi1cdFx0c3RtbWFjX2VzdF9jb25maWd1cmUocHJpdiwgcHJpdiwgcHJpdi1cdTAwM2Vlc3QsXG4tXHRcdFx0XHQgICAgIHByaXYtXHUwMDNlcGxhdC1cdTAwM2VjbGtfcHRwX3JhdGUpO1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2Vlc3RfbG9jayk7XG4rXHRcdHN0bW1hY19lc3RfY29uZmlndXJlKHByaXYsIHByaXYsIFx1MDAyNnByaXYtXHUwMDNlZXN0LFxuK1x0XHRcdFx0ICAgICBwcml2LVx1MDAzZXBsYXQtXHUwMDNlY2xrX3B0cF9yYXRlLCBmYWxzZSk7XG4gXHR9XG4rXHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2Vlc3RfbG9jayk7XG4gXG4gXHR3cml0ZV9sb2NrX2lycXNhdmUoXHUwMDI2cHJpdi1cdTAwM2VwdHBfbG9jaywgZmxhZ3MpO1xuIFx0c3RtbWFjX2FkanVzdF9zeXN0aW1lKHByaXYsIHByaXYtXHUwMDNlcHRwYWRkciwgc2VjLCBuc2VjLCBuZWdfYWRqLCB4bWFjKTtcbiBcdHdyaXRlX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNnByaXYtXHUwMDNlcHRwX2xvY2ssIGZsYWdzKTtcbiBcbiBcdC8qIENhbGN1bGF0ZSBuZXcgYmFzZXRpbWUgYW5kIHJlLWNvbmZpZ3VyZWQgRVNUIGFmdGVyIFBUUCB0aW1lIGFkanVzdC4gKi9cbi1cdGlmIChlc3RfcnN0KSB7XG4tXHRcdHN0cnVjdCB0aW1lc3BlYzY0IGN1cnJlbnRfdGltZSwgdGltZTtcbi1cdFx0a3RpbWVfdCBjdXJyZW50X3RpbWVfbnMsIGJhc2V0aW1lO1xuLVx0XHR1NjQgY3ljbGVfdGltZTtcbi1cbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbi1cdFx0cHJpdi1cdTAwM2VwdHBfY2xvY2tfb3BzLmdldHRpbWU2NChcdTAwMjZwcml2LVx1MDAzZXB0cF9jbG9ja19vcHMsIFx1MDAyNmN1cnJlbnRfdGltZSk7XG4tXHRcdGN1cnJlbnRfdGltZV9ucyA9IHRpbWVzcGVjNjRfdG9fa3RpbWUoY3VycmVudF90aW1lKTtcbi1cdFx0dGltZS50dl9uc2VjID0gcHJpdi1cdTAwM2Vlc3QtXHUwMDNlYnRyX3Jlc2VydmVbMF07XG4tXHRcdHRpbWUudHZfc2VjID0gcHJpdi1cdTAwM2Vlc3QtXHUwMDNlYnRyX3Jlc2VydmVbMV07XG4tXHRcdGJhc2V0aW1lID0gdGltZXNwZWM2NF90b19rdGltZSh0aW1lKTtcbi1cdFx0Y3ljbGVfdGltZSA9ICh1NjQpcHJpdi1cdTAwM2Vlc3QtXHUwMDNlY3RyWzFdICogTlNFQ19QRVJfU0VDICtcbi1cdFx0XHQgICAgIHByaXYtXHUwMDNlZXN0LVx1MDAzZWN0clswXTtcbi1cdFx0dGltZSA9IHN0bW1hY19jYWxjX3Rhc19iYXNldGltZShiYXNldGltZSxcbi1cdFx0XHRcdFx0XHRjdXJyZW50X3RpbWVfbnMsXG4tXHRcdFx0XHRcdFx0Y3ljbGVfdGltZSk7XG4tXG4tXHRcdHByaXYtXHUwMDNlZXN0LVx1MDAzZWJ0clswXSA9ICh1MzIpdGltZS50dl9uc2VjO1xuLVx0XHRwcml2LVx1MDAzZWVzdC1cdTAwM2VidHJbMV0gPSAodTMyKXRpbWUudHZfc2VjO1xuLVx0XHRwcml2LVx1MDAzZWVzdC1cdTAwM2VlbmFibGUgPSB0cnVlO1xuLVx0XHRyZXQgPSBzdG1tYWNfZXN0X2NvbmZpZ3VyZShwcml2LCBwcml2LCBwcml2LVx1MDAzZWVzdCxcbi1cdFx0XHRcdFx0ICAgcHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNsa19wdHBfcmF0ZSk7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbi1cdFx0aWYgKHJldClcbi1cdFx0XHRuZXRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcImZhaWxlZCB0byBjb25maWd1cmUgRVNUXFxuXCIpO1xuLVx0fVxuK1x0aWYgKGVzdF9yc3QpXG4rXHRcdHN0bW1hY19zZXR1cF9lc3QocHJpdik7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuY1xuaW5kZXggMTRjYWJlNzZlNTNlYy4uOTc0NWM5YmFlMzNjMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuY1xuQEAgLTEwLDYgKzEwLDcgQEBcbiAjaW5jbHVkZSBcImR3bWFjNC5oXCJcbiAjaW5jbHVkZSBcImR3bWFjNS5oXCJcbiAjaW5jbHVkZSBcInN0bW1hYy5oXCJcbisjaW5jbHVkZSBcInN0bW1hY19lc3QuaFwiXG4gXG4gc3RhdGljIHZvaWQgdGNfZmlsbF9hbGxfcGFzc19lbnRyeShzdHJ1Y3Qgc3RtbWFjX3RjX2VudHJ5ICplbnRyeSlcbiB7XG5AQCAtOTU5LDcgKzk2MCw3IEBAIHN0YXRpYyB2b2lkIHRjX3RhcHJpb19tYXBfbWF4c2R1X3R4cShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHRcdGNvdW50ID0gcW9wdC1cdTAwM2VtcXByaW8ucW9wdC5jb3VudFtpXTtcbiBcbiBcdFx0Zm9yIChqID0gb2Zmc2V0OyBqIFx1MDAzYyBvZmZzZXQgKyBjb3VudDsgaisrKVxuLVx0XHRcdHByaXYtXHUwMDNlZXN0LVx1MDAzZW1heF9zZHVbal0gPSBxb3B0LVx1MDAzZW1heF9zZHVbaV0gKyBFVEhfSExFTiAtIEVUSF9UTEVOO1xuK1x0XHRcdHByaXYtXHUwMDNlZXN0Lm1heF9zZHVbal0gPSBxb3B0LVx1MDAzZW1heF9zZHVbaV0gKyBFVEhfSExFTiAtIEVUSF9UTEVOO1xuIFx0fVxuIH1cbiBcbkBAIC05NjgsMTAgKzk2OSwxMCBAQCBzdGF0aWMgaW50IHRjX3RhcHJpb19jb25maWd1cmUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIHtcbiBcdHUzMiBzaXplLCB3aWQgPSBwcml2LVx1MDAzZWRtYV9jYXAuZXN0d2lkLCBkZXAgPSBwcml2LVx1MDAzZWRtYV9jYXAuZXN0ZGVwO1xuIFx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrID0gcW9wdC1cdTAwM2VtcXByaW8uZXh0YWNrO1xuLVx0c3RydWN0IHRpbWVzcGVjNjQgdGltZSwgY3VycmVudF90aW1lLCBxb3B0X3RpbWU7XG4tXHRrdGltZV90IGN1cnJlbnRfdGltZV9ucztcbitcdHU2NCBjdHIgPSBxb3B0LVx1MDAzZWN5Y2xlX3RpbWU7XG4rXHRzdHJ1Y3QgdGltZXNwZWM2NCB0aW1lO1xuK1x0dTMyICpnY2wgPSBOVUxMO1xuIFx0aW50IGksIHJldCA9IDA7XG4tXHR1NjQgY3RyO1xuIFxuIFx0aWYgKHFvcHQtXHUwMDNlYmFzZV90aW1lIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gLUVSQU5HRTtcbkBAIC05NzksNiArOTgwLDkgQEAgc3RhdGljIGludCB0Y190YXByaW9fY29uZmlndXJlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdGlmICghcHJpdi1cdTAwM2VkbWFfY2FwLmVzdHNlbClcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuK1x0aWYgKGN0ciBcdTAwM2UgKHU2NClVMzJfTUFYICogTlNFQ19QRVJfU0VDKVxuK1x0XHRyZXR1cm4gLUVSQU5HRTtcbitcbiBcdHN3aXRjaCAod2lkKSB7XG4gXHRjYXNlIDB4MTpcbiBcdFx0d2lkID0gMTY7XG5AQCAtMTAxMyw0NCArMTAxNyw0NSBAQCBzdGF0aWMgaW50IHRjX3RhcHJpb19jb25maWd1cmUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXHR9XG4gXG4rXHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlZXN0X2xvY2spO1xuK1xuIFx0aWYgKHFvcHQtXHUwMDNlY21kID09IFRBUFJJT19DTURfREVTVFJPWSlcbiBcdFx0Z290byBkaXNhYmxlO1xuIFxuLVx0aWYgKHFvcHQtXHUwMDNlbnVtX2VudHJpZXMgXHUwMDNlIGRlcClcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tXHRpZiAoIXFvcHQtXHUwMDNlY3ljbGVfdGltZSlcbi1cdFx0cmV0dXJuIC1FUkFOR0U7XG4tXHRpZiAocW9wdC1cdTAwM2VjeWNsZV90aW1lX2V4dGVuc2lvbiBcdTAwM2U9IEJJVCh3aWQgKyA3KSlcbi1cdFx0cmV0dXJuIC1FUkFOR0U7XG4tXG4tXHRpZiAoIXByaXYtXHUwMDNlZXN0KSB7XG4tXHRcdHByaXYtXHUwMDNlZXN0ID0gZGV2bV9remFsbG9jKHByaXYtXHUwMDNlZGV2aWNlLCBzaXplb2YoKnByaXYtXHUwMDNlZXN0KSxcbi1cdFx0XHRcdFx0IEdGUF9LRVJORUwpO1xuLVx0XHRpZiAoIXByaXYtXHUwMDNlZXN0KVxuLVx0XHRcdHJldHVybiAtRU5PTUVNO1xuK1x0aWYgKHFvcHQtXHUwMDNlbnVtX2VudHJpZXMgXHUwMDNlIGRlcCkge1xuK1x0XHRyZXQgPSAtRUlOVkFMO1xuK1x0XHRnb3RvIHVubG9jaztcbitcdH1cbiBcbi1cdFx0bXV0ZXhfaW5pdChcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbi1cdH0gZWxzZSB7XG4tXHRcdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2Vlc3RfbG9jayk7XG4tXHRcdG1lbXNldChwcml2LVx1MDAzZWVzdCwgMCwgc2l6ZW9mKCpwcml2LVx1MDAzZWVzdCkpO1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2Vlc3RfbG9jayk7XG4rXHRpZiAoIXFvcHQtXHUwMDNlY3ljbGVfdGltZSkge1xuK1x0XHRyZXQgPSAtRVJBTkdFO1xuK1x0XHRnb3RvIHVubG9jaztcbiBcdH1cbiBcbi1cdHNpemUgPSBxb3B0LVx1MDAzZW51bV9lbnRyaWVzO1xuK1x0aWYgKHFvcHQtXHUwMDNlY3ljbGVfdGltZV9leHRlbnNpb24gXHUwMDNlPSBCSVQod2lkICsgNykpIHtcbitcdFx0cmV0ID0gLUVSQU5HRTtcbitcdFx0Z290byB1bmxvY2s7XG4rXHR9XG4gXG4tXHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlZXN0X2xvY2spO1xuLVx0cHJpdi1cdTAwM2Vlc3QtXHUwMDNlZ2NsX3NpemUgPSBzaXplO1xuLVx0cHJpdi1cdTAwM2Vlc3QtXHUwMDNlZW5hYmxlID0gcW9wdC1cdTAwM2VjbWQgPT0gVEFQUklPX0NNRF9SRVBMQUNFO1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlZXN0X2xvY2spO1xuK1x0Z2NsID0ga3phbGxvYyhzaXplb2YoKmdjbCkgKiBFU1RfR0NMLCBHRlBfS0VSTkVMKTtcbitcdGlmICghZ2NsKSB7XG4rXHRcdHJldCA9IC1FTk9NRU07XG4rXHRcdGdvdG8gdW5sb2NrO1xuK1x0fVxuIFxuK1x0c2l6ZSA9IHFvcHQtXHUwMDNlbnVtX2VudHJpZXM7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBzaXplOyBpKyspIHtcbiBcdFx0czY0IGRlbHRhX25zID0gcW9wdC1cdTAwM2VlbnRyaWVzW2ldLmludGVydmFsO1xuIFx0XHR1MzIgZ2F0ZXMgPSBxb3B0LVx1MDAzZWVudHJpZXNbaV0uZ2F0ZV9tYXNrO1xuIFxuLVx0XHRpZiAoZGVsdGFfbnMgXHUwMDNlIEdFTk1BU0sod2lkIC0gMSwgMCkpXG4tXHRcdFx0cmV0dXJuIC1FUkFOR0U7XG4tXHRcdGlmIChnYXRlcyBcdTAwM2UgR0VOTUFTSygzMSAtIHdpZCwgMCkpXG4tXHRcdFx0cmV0dXJuIC1FUkFOR0U7XG4rXHRcdGlmIChkZWx0YV9ucyBcdTAwM2UgR0VOTUFTSyh3aWQgLSAxLCAwKSkge1xuK1x0XHRcdHJldCA9IC1FUkFOR0U7XG4rXHRcdFx0Z290byBmcmVlX2djbDtcbitcdFx0fVxuK1x0XHRpZiAoZ2F0ZXMgXHUwMDNlIEdFTk1BU0soMzEgLSB3aWQsIDApKSB7XG4rXHRcdFx0cmV0ID0gLUVSQU5HRTtcbitcdFx0XHRnb3RvIGZyZWVfZ2NsO1xuK1x0XHR9XG4gXG4gXHRcdHN3aXRjaCAocW9wdC1cdTAwM2VlbnRyaWVzW2ldLmNvbW1hbmQpIHtcbiBcdFx0Y2FzZSBUQ19UQVBSSU9fQ01EX1NFVF9HQVRFUzpcbkBAIC0xMDYyLDY1ICsxMDY3LDU4IEBAIHN0YXRpYyBpbnQgdGNfdGFwcmlvX2NvbmZpZ3VyZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHRcdFx0Z2F0ZXMgXHUwMDI2PSB+QklUKDApO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRkZWZhdWx0OlxuLVx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbitcdFx0XHRyZXQgPSAtRU9QTk9UU1VQUDtcbitcdFx0XHRnb3RvIGZyZWVfZ2NsO1xuIFx0XHR9XG4gXG4tXHRcdHByaXYtXHUwMDNlZXN0LVx1MDAzZWdjbFtpXSA9IGRlbHRhX25zIHwgKGdhdGVzIFx1MDAzY1x1MDAzYyB3aWQpO1xuK1x0XHRnY2xbaV0gPSBkZWx0YV9ucyB8IChnYXRlcyBcdTAwM2NcdTAwM2Mgd2lkKTtcbiBcdH1cbiBcbi1cdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2Vlc3RfbG9jayk7XG4tXHQvKiBBZGp1c3QgZm9yIHJlYWwgc3lzdGVtIHRpbWUgKi9cbi1cdHByaXYtXHUwMDNlcHRwX2Nsb2NrX29wcy5nZXR0aW1lNjQoXHUwMDI2cHJpdi1cdTAwM2VwdHBfY2xvY2tfb3BzLCBcdTAwMjZjdXJyZW50X3RpbWUpO1xuLVx0Y3VycmVudF90aW1lX25zID0gdGltZXNwZWM2NF90b19rdGltZShjdXJyZW50X3RpbWUpO1xuLVx0dGltZSA9IHN0bW1hY19jYWxjX3Rhc19iYXNldGltZShxb3B0LVx1MDAzZWJhc2VfdGltZSwgY3VycmVudF90aW1lX25zLFxuLVx0XHRcdFx0XHRxb3B0LVx1MDAzZWN5Y2xlX3RpbWUpO1xuLVxuLVx0cHJpdi1cdTAwM2Vlc3QtXHUwMDNlYnRyWzBdID0gKHUzMil0aW1lLnR2X25zZWM7XG4tXHRwcml2LVx1MDAzZWVzdC1cdTAwM2VidHJbMV0gPSAodTMyKXRpbWUudHZfc2VjO1xuK1x0bWVtc2V0KFx1MDAyNnByaXYtXHUwMDNlZXN0LCAwLCBzaXplb2YocHJpdi1cdTAwM2Vlc3QpKTtcbitcdG1lbWNweShwcml2LVx1MDAzZWVzdC5nY2wsIGdjbCwgc2l6ZW9mKHByaXYtXHUwMDNlZXN0LmdjbCkpO1xuK1x0cHJpdi1cdTAwM2Vlc3QuZ2NsX3NpemUgPSBzaXplO1xuIFxuLVx0cW9wdF90aW1lID0ga3RpbWVfdG9fdGltZXNwZWM2NChxb3B0LVx1MDAzZWJhc2VfdGltZSk7XG4tXHRwcml2LVx1MDAzZWVzdC1cdTAwM2VidHJfcmVzZXJ2ZVswXSA9ICh1MzIpcW9wdF90aW1lLnR2X25zZWM7XG4tXHRwcml2LVx1MDAzZWVzdC1cdTAwM2VidHJfcmVzZXJ2ZVsxXSA9ICh1MzIpcW9wdF90aW1lLnR2X3NlYztcbitcdHRpbWUgPSBrdGltZV90b190aW1lc3BlYzY0KHFvcHQtXHUwMDNlYmFzZV90aW1lKTtcbitcdHByaXYtXHUwMDNlZXN0LmJ0cl9yZXNlcnZlWzBdID0gKHUzMil0aW1lLnR2X25zZWM7XG4rXHRwcml2LVx1MDAzZWVzdC5idHJfcmVzZXJ2ZVsxXSA9ICh1MzIpdGltZS50dl9zZWM7XG4gXG4tXHRjdHIgPSBxb3B0LVx1MDAzZWN5Y2xlX3RpbWU7XG4tXHRwcml2LVx1MDAzZWVzdC1cdTAwM2VjdHJbMF0gPSBkb19kaXYoY3RyLCBOU0VDX1BFUl9TRUMpO1xuLVx0cHJpdi1cdTAwM2Vlc3QtXHUwMDNlY3RyWzFdID0gKHUzMiljdHI7XG4tXG4tXHRwcml2LVx1MDAzZWVzdC1cdTAwM2V0ZXIgPSBxb3B0LVx1MDAzZWN5Y2xlX3RpbWVfZXh0ZW5zaW9uO1xuK1x0cHJpdi1cdTAwM2Vlc3QuY3RyWzBdID0gZG9fZGl2KGN0ciwgTlNFQ19QRVJfU0VDKTtcbitcdHByaXYtXHUwMDNlZXN0LmN0clsxXSA9ICh1MzIpY3RyO1xuIFxuK1x0cHJpdi1cdTAwM2Vlc3QudGVyID0gcW9wdC1cdTAwM2VjeWNsZV90aW1lX2V4dGVuc2lvbjtcbiBcdHRjX3RhcHJpb19tYXBfbWF4c2R1X3R4cShwcml2LCBxb3B0KTtcbiBcbi1cdHJldCA9IHN0bW1hY19lc3RfY29uZmlndXJlKHByaXYsIHByaXYsIHByaXYtXHUwMDNlZXN0LFxuLVx0XHRcdFx0ICAgcHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNsa19wdHBfcmF0ZSk7XG4tXHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2Vlc3RfbG9jayk7XG4tXHRpZiAocmV0KSB7XG4tXHRcdG5ldGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwiZmFpbGVkIHRvIGNvbmZpZ3VyZSBFU1RcXG5cIik7XG4rXHRyZXQgPSBfX3N0bW1hY19zZXR1cF9lc3QocHJpdik7XG4rXHRpZiAocmV0KVxuIFx0XHRnb3RvIGRpc2FibGU7XG4tXHR9XG4gXG4gXHRyZXQgPSBzdG1tYWNfZnBlX21hcF9wcmVlbXB0aW9uX2NsYXNzKHByaXYsIHByaXYtXHUwMDNlZGV2LCBleHRhY2ssXG4gXHRcdFx0XHRcdCAgICAgIHFvcHQtXHUwMDNlbXFwcmlvLnByZWVtcHRpYmxlX3Rjcyk7XG4gXHRpZiAocmV0KVxuIFx0XHRnb3RvIGRpc2FibGU7XG4gXG4rXHRwcml2LVx1MDAzZWVzdC5lbmFibGUgPSB0cnVlO1xuK1x0a2ZyZWUoZ2NsKTtcbitcbitcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbitcbiBcdHJldHVybiAwO1xuIFxuIGRpc2FibGU6XG4tXHRpZiAocHJpdi1cdTAwM2Vlc3QpIHtcbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbi1cdFx0cHJpdi1cdTAwM2Vlc3QtXHUwMDNlZW5hYmxlID0gZmFsc2U7XG4tXHRcdHN0bW1hY19lc3RfY29uZmlndXJlKHByaXYsIHByaXYsIHByaXYtXHUwMDNlZXN0LFxuLVx0XHRcdFx0ICAgICBwcml2LVx1MDAzZXBsYXQtXHUwMDNlY2xrX3B0cF9yYXRlKTtcbi1cdFx0LyogUmVzZXQgdGFwcmlvIHN0YXR1cyAqL1xuLVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwcml2LVx1MDAzZXBsYXQtXHUwMDNldHhfcXVldWVzX3RvX3VzZTsgaSsrKSB7XG4tXHRcdFx0cHJpdi1cdTAwM2V4c3RhdHMubWF4X3NkdV90eHFfZHJvcFtpXSA9IDA7XG4tXHRcdFx0cHJpdi1cdTAwM2V4c3RhdHMubXRsX2VzdF90eHFfaGxiZltpXSA9IDA7XG4tXHRcdFx0cHJpdi1cdTAwM2V4c3RhdHMubXRsX2VzdF90eHFfaGxic1tpXSA9IDA7XG4tXHRcdH1cbi1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlZXN0X2xvY2spO1xuK1x0cHJpdi1cdTAwM2Vlc3QuZW5hYmxlID0gZmFsc2U7XG4rXHRzdG1tYWNfZXN0X2NvbmZpZ3VyZShwcml2LCBwcml2LCBcdTAwMjZwcml2LVx1MDAzZWVzdCxcbitcdFx0XHQgICAgIHByaXYtXHUwMDNlcGxhdC1cdTAwM2VjbGtfcHRwX3JhdGUsIGZhbHNlKTtcbitcdC8qIFJlc2V0IHRhcHJpbyBzdGF0dXMgKi9cbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHByaXYtXHUwMDNlcGxhdC1cdTAwM2V0eF9xdWV1ZXNfdG9fdXNlOyBpKyspIHtcbitcdFx0cHJpdi1cdTAwM2V4c3RhdHMubWF4X3NkdV90eHFfZHJvcFtpXSA9IDA7XG4rXHRcdHByaXYtXHUwMDNleHN0YXRzLm10bF9lc3RfdHhxX2hsYmZbaV0gPSAwO1xuK1x0XHRwcml2LVx1MDAzZXhzdGF0cy5tdGxfZXN0X3R4cV9obGJzW2ldID0gMDtcbiBcdH1cbi1cbiBcdHN0bW1hY19mcGVfbWFwX3ByZWVtcHRpb25fY2xhc3MocHJpdiwgcHJpdi1cdTAwM2VkZXYsIGV4dGFjaywgMCk7XG4rZnJlZV9nY2w6XG4rXHRrZnJlZShnY2wpO1xuK3VubG9jazpcbitcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZWVzdF9sb2NrKTtcbiBcbiBcdHJldHVybiByZXQ7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTk6MzI6MzguMzIyNjE2NjgxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTcwMDc1MzEwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIGZpZ3VyZSBvdXQgaWYgaXQncyBhIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byBxdWlja2x5IGFzc2VzcyBpdHMgZnV6emluZyBwb3RlbnRpYWwsIGNvbnNpZGVyaW5nIHJlYWNoYWJpbGl0eSwgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhbmQgd2hldGhlciBhbnkgc3BlY2lmaWMgc3ltYm9scyBsb29rIHByb21pc2luZy5cblxuRmlyc3QsIEkgbmVlZCB0byBrbm93ICp3aGF0KiB0aGUgcGF0Y2ggYWN0dWFsbHkgdG91Y2hlcy4gTG9va3MgbGlrZSBpdCBtb2RpZmllcyBhIHNpZ25pZmljYW50IGNodW5rIG9mIHRoZSBgc3RtbWFjYCBkcml2ZXI6IGBod2lmLmhgLCBgc3RtbWFjLmhgLCBgc3RtbWFjX2VzdC5jYCwgYHN0bW1hY19lc3QuaGAsIGBzdG1tYWNfbWFpbi5jYCwgYHN0bW1hY19wdHAuY2AsIGFuZCBgc3RtbWFjX3RjLmNgLiBUaGF0J3MgYSBnb29kIHN0YXJ0OyBpdCdzIHNwcmVhZCBhY3Jvc3MgdmFyaW91cyBwYXJ0cyBvZiB0aGUgZHJpdmVyLCB3aGljaCBzdWdnZXN0cyBtb3JlIHN1cmZhY2UgYXJlYSBmb3IgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy5cblxuTmV4dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgYHN0bW1hY2AgaXMgZXZlbiByZWFjaGFibGUgaW4gYSB0eXBpY2FsIGZ1enppbmcgZW52aXJvbm1lbnQuIERvZXMgaXQgd29yayB3aXRoIHRoZSBzdGFuZGFyZCBRRU1VIHNldHVwIEkgdXNlPyBJIGhhdmUgdG8gY29uc2lkZXIgaXRzIHBsYXRmb3JtIGRlcGVuZGVuY2llcy4gV2hhdCBidXNlcyBkb2VzIGBzdG1tYWNgIHV0aWxpemU/IEknbGwgcHJvYmFibHkgcmVhY2ggZm9yIGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB0byBjaGVjayB0aGUgYEtjb25maWdgIGZpbGUgaW4gdGhlIGRyaXZlciBkaXJlY3RvcnkgKGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYCksIGFzIHdlbGwgYXMgYW55IGdsdWUgbGF5ZXIgY29kZSByZWxhdGVkIHRvIFBDSSwgcGxhdGZvcm0gZGV2aWNlcywgb3Igd2hhdGV2ZXIgZWxzZSBpdCByZWxpZXMgb24uIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHBpY3R1cmUgb2YgaXRzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgaGFyZHdhcmUgZGVwZW5kZW5jaWVzLiBUaGlzIHdpbGwgaGVscCBtZSBidWlsZCBhIGZ1enppbmcgc2V0dXAgdGhhdCBjYW4gYWN0dWFsbHkgaGl0IHRoaXMgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA3MDYsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QxOTozMjo0NC4wMjMzNzI0OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzE4Mzc5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJTVE1NQUNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTg6aWYgU1RNTUFDX0VUSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyMDpjb25maWcgU1RNTUFDX1NFTEZURVNUU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjE6XFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgU1RNTUFDIFNlbGZ0ZXN0c1xcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIyLVxcdGRlcGVuZHMgb24gSU5FVFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNC1cXHRoZWxwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyNTpcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzIHVzaW5nIGV0aHRvb2wuIEVuYWJsZSB0aGlzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNi1cXHQgIGZlYXR1cmUgaWYgeW91IGFyZSBmYWNpbmcgcHJvYmxlbXMgd2l0aCB5b3VyIEhXIGFuZCBzdWJtaXQgdGhlIHRlc3RcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOTpjb25maWcgU1RNTUFDX1BMQVRGT1JNXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozMDpcXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzEtXFx0c2VsZWN0IE1GRF9TWVNDT05cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MjppZiBTVE1NQUNfUExBVEZPUk1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz01Mj1jb25maWcgRFdNQUNfR0VORVJJQ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNTMtXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgZHJpdmVyIGZvciBEV01BQ1xcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjU0OlxcdGRlZmF1bHQgU1RNTUFDX1BMQVRGT1JNXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy01NS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM2ND1jb25maWcgRFdNQUNfVklTQ09OVElcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzcxOmVuZGlmICMgU1RNTUFDX1BMQVRGT1JNXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNzM6Y29uZmlnIFNUTU1BQ19MSUJQQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3NC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zODg9Y29uZmlnIERXTUFDX0xPT05HU09OXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM5Mi1cXHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM5MzpcXHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzk0LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzk4PWNvbmZpZyBEV01BQ19NT1RPUkNPTU1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDAxLVxcdHNlbGVjdCBNT1RPUkNPTU1fUEhZXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDI6XFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwMy1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwNzpjb25maWcgU1RNTUFDX1BDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA4OlxcdHRyaXN0YXRlIFxcXCJTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA5LVxcdGRlcGVuZHMgb24gUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MTAtXFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MTE6XFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQxMi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQxOS1cXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MjA6ZW5kaWYgIyBTVE1NQUNfRVRIXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDE5OjMyOjQ0LjA3MDU2MTIyOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI3NDQ5OTIyMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBTVE1NQUMgUENJIElEIFN1cHBvcnQqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc3BlY2lmaWNzIG9mIGhvdyB0aGUgYFNUTU1BQ19QQ0lgIGRyaXZlciBpcyBoYW5kbGVkLiBJcyB0aGlzIHNvbWV0aGluZyB0aGF0J3MgbmF0aXZlbHkgc3VwcG9ydGVkIHdpdGhpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQsIG9yIGlzIGl0IG1vcmUgY29tcGxleCwgcGVyaGFwcyB0aWVkIHRvIHBoeXNpY2FsIGhhcmR3YXJlPyBJJ20gZ29pbmcgdG8gbmVlZCB0byBkaWcgaW50byB0aGUgZHJpdmVyIGNvZGUgaXRzZWxmIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUuIE15IGluaXRpYWwgcGxhbiBpcyB0byBncmVwIHRocm91Z2ggdGhlIHJlbGV2YW50IHNvdXJjZSBmaWxlcyDigJMgc3BlY2lmaWNhbGx5LCBJJ2xsIHN0YXJ0IHdpdGggYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNgLCBhbmQgYHN0bW1hY19wY2kuY2AsIGFuZCBhbnkgb3RoZXIgbGlrZWx5IGNhbmRpZGF0ZXMuIFRoaXMgc2hvdWxkIHJldmVhbCB0aGUgUENJIElEIGRlZmluaXRpb25zIGFuZCB0aGUgb3ZlcmFsbCBpbXBsZW1lbnRhdGlvbiBzdHJhdGVneSBmb3IgYFNUTU1BQ19QQ0lgLCBhbGxvd2luZyBtZSB0byBkZXRlcm1pbmUgaXRzIGJlaGF2aW9yIGFuZCBob3cgaXQgcmVsYXRlcyB0byBlbXVsYXRlZCB2ZXJzdXMgcGh5c2ljYWwgbmV0d29yayBpbnRlcmZhY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjY5NSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDE5OjMyOjQ2LjgxNTU1NTY4M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjUzNTg5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNT0RVTEVfREVWSUNFX1RBQkxFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM9MTE5PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGFuYXJpb25fZHdtYWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMjItfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM6MTIzOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGFuYXJpb25fZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMjQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTM1Mz1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBkd2NfZXRoX2R3bWFjX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTM1OC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzU5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGR3Y19ldGhfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzYwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jPTM1MD1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBlaWM3NzAwX2R3bWFjX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMzU5LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjM2MDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBlaWM3NzAwX2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMzYxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jPTUyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGR3bWFjX2dlbmVyaWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy02Ni19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo2NzpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBkd21hY19nZW5lcmljX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtNjgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz0zODQ9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgaW14X2R3bWFjX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zODktfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozOTA6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgaW14X2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zOTEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmM9MjYyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGluZ2VuaWNfbWFjX29mX21hdGNoZXNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0yNjktfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmM6MjcwOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGluZ2VuaWNfbWFjX29mX21hdGNoZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0yNzEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM9MzY9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgaW50ZWxfZXRoX3BsYXRfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy0zOS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYzo0MDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBpbnRlbF9ldGhfcGxhdF9tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTQxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMzk1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBpbnRlbF9ldGhfcGNpX2lkX3RhYmxlW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTE0MTQtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjE0MTU6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGludGVsX2V0aF9wY2lfaWRfdGFibGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTQxNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYz00OTE9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgaXBxODA2eF9nbWFjX2R3bWFjX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmMtNDk0LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jOjQ5NTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBpcHE4MDZ4X2dtYWNfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy00OTYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTU5Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgbG9vbmdzb25fZHdtYWNfaWRfdGFibGVbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNjAxLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo2MDI6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGxvb25nc29uX2R3bWFjX2lkX3RhYmxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTYwMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jPTIxNj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBsczF4X2R3bWFjX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYy0yMjYtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYzoyMjc6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbHMxeF9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtMjI4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jPTcxPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGxwYzE4eHhfZHdtYWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYy03NC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYzo3NTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBscGMxOHh4X2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNzYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jPTY2Mj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtZWRpYXRla19kd21hY19tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02NjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYzo2NzA6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbWVkaWF0ZWtfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmMtNjcxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYz03Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtZXNvbjZfZHdtYWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmMtNzktfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jOjgwOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG1lc29uNl9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy04MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYz00ODI9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWVzb244Yl9kd21hY19tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jLTUwNC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYzo1MDU6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbWVzb244Yl9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jLTUwNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTM2Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgZHdtYWNfbW90b3Jjb21tX3BjaV9pZF90YWJsZVtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzcwLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MzcxOk1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBkd21hY19tb3RvcmNvbW1fcGNpX2lkX3RhYmxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNzItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmM9MTE4PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG52dF9kd21hY19tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jLTEyMS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW51dm90b24uYzoxMjI6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbnZ0X2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmMtMTIzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYz04MDA9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcWNvbV9ldGhxb3NfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtODA2LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYzo4MDc6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgcWNvbV9ldGhxb3NfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtODA4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jPTIxNj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCByZW5lc2FzX2diZXRoX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMjIxLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jOjIyMjpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCByZW5lc2FzX2diZXRoX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMjIzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYz0xNjE2PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHJrX2dtYWNfZHdtYWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTYzNC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmM6MTYzNTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBya19nbWFjX2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jLTE2MzYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM9NzU9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcnpuMV9kd21hY19tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTc4LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jOjc5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHJ6bjFfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy04MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jPTIxNj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzMzJfZHdtYWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTIxOS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jOjIyMDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzMzJfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTIyMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYz02NzM9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc29jZnBnYV9kd21hY19tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTY3OC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYzo2Nzk6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc29jZnBnYV9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTY4MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jPTcyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHNvcGhnb19kd21hY19tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtNzYtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYzo3NzpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzb3BoZ29fZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jLTc4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYz0yMTA9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc3BhY2VtaXRfZHdtYWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmMtMjEzLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYzoyMTQ6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3BhY2VtaXRfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmMtMjE1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYz0xNjA9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc3RhcmZpdmVfZHdtYWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtMTY0LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYzoxNjU6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3RhcmZpdmVfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtMTY2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmM9Mjk2PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN0aV9kd21hY19tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmMtMjk5LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmM6MzAwOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHN0aV9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmMtMzAxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYz02NjI9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc3RtMzJfZHdtYWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNjY4LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYzo2Njk6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3RtMzJfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNjcwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmM9MTQxPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN1bjU1aV9nbWFjMjAwX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYy0xNDQtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYzoxNDU6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3VuNTVpX2dtYWMyMDBfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jLTE0Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9MTI2OD1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzdW44aV9kd21hY19tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjgyLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMjgzOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHN1bjhpX2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyODQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jPTE1MD1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzdW43aV9kd21hY19tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYy0xNTMtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jOjE1NDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzdW43aV9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYy0xNTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jPTM5Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB0ZWdyYV9tZ2JlX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTQwMC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmM6NDAxOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHRlZ3JhX21nYmVfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtNDAyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYz0yNjc9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgdGhlYWRfZHdtYWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmMtMjcwLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYzoyNzE6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgdGhlYWRfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmMtMjcyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYz0yNTU9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgdmlzY29udGlfZXRoX2R3bWFjX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jLTI1OC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM6MjU5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHZpc2NvbnRpX2V0aF9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yNjAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjAzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIxMDpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgc3RtbWFjX2lkX3RhYmxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjExLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QxOTozMjo0Ni44NjIwOTg1MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE4NTM2MjIxNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIE5ldHdvcmsgRHJpdmVyIEluc3RhbnRpYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgZHJpdmVyIGFuZCB0aGUgaGFyZHdhcmUuIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgYHN0bW1hY19wY2kuY2AgYW5kIGBkd21hYy1pbnRlbC5jYCBhcmUgcHJvcGVybHkgaWRlbnRpZnlpbmcgdGhlIGRldmljZSBJRHMsIGFuZCBjcnVjaWFsbHksIGlmIGBzdG1tYWNgIGlzIGJlaW5nIGNvcnJlY3RseSBpbnN0YW50aWF0ZWQgb3IgaWYgd2UncmUgZGVhbGluZyB3aXRoIGEgcGh5c2ljYWwgaGFyZHdhcmUgc2V0dXAuIEkgaGF2ZSB0byBtYWtlIHN1cmUgdGhlIGRyaXZlciBpcyBhdHRhY2hpbmcgY29ycmVjdGx5LlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgY29udGVudHMgb2YgYHN0bW1hY19wY2kuY2AsIGJlY2F1c2UgdGhhdCB3aWxsIGltbWVkaWF0ZWx5IHRlbGwgbWUgd2hhdCBkZXZpY2UgSURzIGl0IGhhbmRsZXMsIGFuZCBpZiBpdCdzIGNvcnJlY3RseSBpZGVudGlmeWluZyB0aGUgaGFyZHdhcmUgYW5kIGluc3RhbnRpYXRpbmcgdGhlIHN0bW1hYyBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MzUxLCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTk6MzI6NDguNzE1NzIyOTAxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY5MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE5MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE5MDpcXHQgKiBEZXNjcmlwdGlvbjogdGhpcyBmdW5jdGlvbiBjYWxscyB0aGUgbWFpbiB0byBmcmVlIHRoZSBuZXQgcmVzb3VyY2VzLlxcbiAxOTE6XFx0ICovXFxuIDE5MjpcXHRzdGF0aWMgdm9pZCBzdG1tYWNfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4gMTkzOlxcdHtcXG4gMTk0OlxcdFxcdHN0bW1hY19kdnJfcmVtb3ZlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbiAxOTU6XFx0fVxcbiAxOTY6XFx0XFxuIDE5NzpcXHQvKiBzeW50aGV0aWMgSUQsIG5vIG9mZmljaWFsIHZlbmRvciAqL1xcbiAxOTg6XFx0I2RlZmluZSBQQ0lfVkVORE9SX0lEX1NUTU1BQ1xcdFxcdDB4MDcwMFxcbiAxOTk6XFx0XFxuIDIwMDpcXHQjZGVmaW5lIFBDSV9ERVZJQ0VfSURfU1RNTUFDX1NUTU1BQ1xcdFxcdDB4MTEwOFxcbiAyMDE6XFx0I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NZTk9QU1lTX0dNQUM1X0lEXFx0XFx0MHg3MTAyXFxuIDIwMjpcXHRcXG4gMjAzOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcXG4gMjA0OlxcdFxcdHsgUENJX0RFVklDRV9EQVRBKFNUTU1BQywgU1RNTUFDLCBcXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxcbiAyMDU6XFx0XFx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNSUNSTywgTUFDLCBcXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxcbiAyMDY6XFx0XFx0eyBQQ0lfREVWSUNFX0RBVEEoU1lOT1BTWVMsIEdNQUM1X0lELCBcXHUwMDI2c25wc19nbWFjNV9wY2lfaW5mbykgfSxcXG4gMjA3OlxcdFxcdHt9XFxuIDIwODpcXHR9O1xcbiAyMDk6XFx0XFxuIDIxMDpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgc3RtbWFjX2lkX3RhYmxlKTtcXG4gMjExOlxcdFxcbiAyMTI6XFx0c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHN0bW1hY19wY2lfZHJpdmVyID0ge1xcbiAyMTM6XFx0XFx0Lm5hbWUgPSBTVE1NQUNfUkVTT1VSQ0VfTkFNRSxcXG4gMjE0OlxcdFxcdC5pZF90YWJsZSA9IHN0bW1hY19pZF90YWJsZSxcXG4gMjE1OlxcdFxcdC5wcm9iZSA9IHN0bW1hY19wY2lfcHJvYmUsXFxuIDIxNjpcXHRcXHQucmVtb3ZlID0gc3RtbWFjX3BjaV9yZW1vdmUsXFxuIDIxNzpcXHRcXHQuZHJpdmVyICAgICAgICAgPSB7XFxuIDIxODpcXHRcXHRcXHQucG0gICAgID0gXFx1MDAyNnN0bW1hY19zaW1wbGVfcG1fb3BzLFxcbiAyMTk6XFx0XFx0fSxcXG4gMjIwOlxcdH07XFxuIDIyMTpcXHRcXG4gMjIyOlxcdG1vZHVsZV9wY2lfZHJpdmVyKHN0bW1hY19wY2lfZHJpdmVyKTtcXG4gMjIzOlxcdFxcbiAyMjQ6XFx0TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJTVE1NQUMgMTAvMTAwLzEwMDAgRXRoZXJuZXQgUENJIGRyaXZlclxcXCIpO1xcbiAyMjU6XFx0TU9EVUxFX0FVVEhPUihcXFwiUmF5YWdvbmQgS29rYXRhbnVyIFxcdTAwM2NyYXlhZ29uZC5rb2thdGFudXJAdmF5YXZ5YWxhYnMuY29tXFx1MDAzZVxcXCIpO1xcbiAyMjY6XFx0TU9EVUxFX0FVVEhPUihcXFwiR2l1c2VwcGUgQ2F2YWxsYXJvIFxcdTAwM2NwZXBwZS5jYXZhbGxhcm9Ac3QuY29tXFx1MDAzZVxcXCIpO1xcbiAyMjc6XFx0TU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QxOTozMjo0OC43MTU3OTExNTFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MDEwNzU4NDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFFFTVUvU1RNTUFDIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgSSBjYW4gZXZlbiAqcmVhY2gqIHRoaXMgYHN0bW1hY2AgY29kZSB3aXRoIHN0YW5kYXJkIGZ1enppbmcgdGVjaG5pcXVlcy4gRmlyc3QsIGlzIFFFTVUgZXZlbiBlbXVsYXRpbmcgYFNUTU1BQ2Agb3IgYERXTUFDYD8gQW5kIGlmIHNvLCBpcyBpdCBmb3IgQVJNIG9yIHg4Nj8gVGhlIHRhcmdldCBpcyBgYW1kNjRgLCBzbyB0aGF0J3MgdGhlIGZvY3VzLiBJIG5lZWQgdG8ga25vdyBpZiBJIGNhbiBpbnN0YW50aWF0ZSBpdCBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQsIG9yIGV2ZW4gb24gR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBJIHJlbWVtYmVyIGBhbGx3aW5uZXItZW1hY2Agb3IgYHN1bnhpYCBmb3IgQVJNL1JJU0MtViwgYnV0IGZvciB4ODZfNjQsIHdoaWNoIGlzIHRoZSBwbGF0Zm9ybSBvZiBpbnRlcmVzdCwgdGhlIGFuc3dlciBtaWdodCBiZSBkaWZmZXJlbnQuIEkgcmVjYWxsZWQgdGhhdCB0aGUgZG9jdW1lbnRhdGlvbiBzYXlzIFwic3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCIgbGlrZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcyBhbmQgTklDcyByZXF1aXJpbmcgcGh5c2ljYWwgY2FyZHMgYXJlbid0IGVtdWxhdGVkLlxuXG5Tbywgd2hhdCAqaXMqIGVtdWxhdGVkPyBJIGtub3cgYWJvdXQgYGUxMDAwYCwgYGUxMDAwZWAsIGBydGw4MTM5YCwgZXRjLiBCdXQgaXMgYHN0bW1hY2Agb25lIG9mIHRob3NlPyBObywgYHN0bW1hY2AgaXMgYSBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoRFdNQUMpIElQIGNvcmUsIHVzZWQgaW4gU29DcyBsaWtlIFNUTTMyLCBSb2NrY2hpcCwgQWxsd2lubmVyLCBJbnRlbCdzIEFsZGVyIExha2UgUFNFLCBhbmQgb3RoZXJzLiBUaGF0IG1ha2VzIG1lIHRoaW5rIGl0J3MgbW9yZSBkZWVwbHkgdGllZCB0byB0aGUgaGFyZHdhcmUgYW5kIG1pZ2h0IGJlIGEgcHJvYmxlbS5cblxuTGV0IG1lIHJldmlldyB0aGUgcHJvbXB0IGFnYWluLCBzcGVjaWZpY2FsbHkgU2VjdGlvbiAyLiBJdCBleHBsaWNpdGx5IG1lbnRpb25zIFwic3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCIgYW5kIGdpdmVzIGV4YW1wbGVzIGxpa2UgdGhvc2Ugc3BlY2lmaWMgUENJZSBjYXJkcy4gQWxzbywgdGhlIHByb21wdCBkaXNjdXNzZXMgdGhpbmdzIGxpa2UgZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyBhbmQgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUgYXMgXCJ1bnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHNcIiBpbiBhIHZpcnR1YWxpemVkIHNldHRpbmcuXG5cblRoZW4sIFNlY3Rpb24gMSByZWluZm9yY2VzIHRoZSBwb2ludDogcmVhY2hhYmlsaXR5IGlzIHRoZSBwcmltYXJ5IGdhdGUuIElmIHRoZSBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAqYmVjYXVzZSogaXQgZGVwZW5kcyBvbiBoYXJkd2FyZSBub3QgYXZhaWxhYmxlIGluIFFFTVUgKG9yIEdDRSkgdGhlbiBpdCBzaG91bGRuJ3QgYmUgZnV6emVkLlxuXG5UaGVyZWZvcmUsIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGBzdG1tYWNgIGlzIHJlYWNoYWJsZSB0aHJvdWdoIGFueSBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzLiBJcyB0aGVyZSBhbnkgd2F5IHRvIG1vY2sgaXQsIG9yIGNvbm5lY3QgdG8gaXQgdGhyb3VnaCBhIGBuZXRkZXZgLCBvciB1c2UgYSBgdHVuL3RhcGAgZGV2aWNlP1xuXG5JJ2xsIHNlYXJjaCBmb3IgYHN0bW1hY2AgcmVmZXJlbmNlcyBpbiB0aGUga2VybmVsIHRyZWUuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgYW55IHZpcnR1YWwgZGV2aWNlIGRyaXZlcnMgdXRpbGl6ZSB0aGlzLiBNYXliZSB0aGVyZSdzIGEgcGxhdGZvcm0gZGV2aWNlIG9yIG1vY2sgb3IgbmV0ZGV2IGFzc29jaWF0ZWQgd2l0aCBpdC4gVGhpcyBpcyB0aGUgY3J1eCBvZiB3aGV0aGVyIEkgY2FuIGV2ZW4gcHJvY2VlZCB3aXRoIGZ1enppbmcgdGhpcyBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTMxMywiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDE5OjMyOjU0LjcyNjU1MjA4OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTczNDg5OTI5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfZHZyX3Byb2JlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MjgzPXN0YXRpYyBpbnQgZHdjX2V0aF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zMjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozMzA6XFx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzMxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM9NDI9c3RhdGljIGludCBpbnRlbF9ldGhfcGxhdF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTExNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM6MTE4OlxcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTE5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEyNjM9c3RhdGljIGludCBpbnRlbF9ldGhfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzQwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTM0MTpcXHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXQsIFxcdTAwMjZyZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM0Mi1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmM9Mzc0PXN0YXRpYyBpbnQgaXBxODA2eF9nbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmMtNDgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYzo0ODM6XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmMtNDg0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz00OTg9c3RhdGljIGludCBsb29uZ3Nvbl9kd21hY19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01NjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1NjI6XFx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0LCBcXHUwMDI2cmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTU2My1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jPTQyPXN0YXRpYyBpbnQgbHBjMTh4eF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jLTY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYzo2ODpcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYy02OS19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jPTU5OT1zdGF0aWMgaW50IG1lZGlhdGVrX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jLTY0MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jOjY0MjpcXHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02NDMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM9NDc9c3RhdGljIGludCBtZXNvbjZfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmMtNzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYzo3MzpcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmMtNzQtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jPTM4Mj1zdGF0aWMgaW50IG1lc29uOGJfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYy00NjMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jOjQ2NDpcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYy00NjUtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM9MjkzPXN0YXRpYyBpbnQgbW90b3Jjb21tX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MzU5OlxcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXQsIFxcdTAwMjZyZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM2MC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM9NDg9c3RhdGljIGludCByem4xX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtNjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jOjY4OlxcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy02OS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmM9MzU9c3RhdGljIGludCBzb3BoZ29fZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jLTY0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jOjY1OlxcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKGRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy02Ni19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jPTE0Nz1zdGF0aWMgaW50IHNwYWNlbWl0X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTIwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jOjIwNzpcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYy0yMDgtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYz05MD1zdGF0aWMgaW50IHN0YXJmaXZlX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTE1Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jOjE1MzpcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtMTU0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmM9NTI1PXN0YXRpYyBpbnQgc3RtMzJfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNTc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmM6NTc5OlxcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jLTU4MC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz0xMTA1PXN0YXRpYyBpbnQgc3VuOGlfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIwMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjEyMDI6XFx0LyogdGhlIE1BQyBpcyBydW50aW1lIHN1c3BlbmRlZCBhZnRlciBzdG1tYWNfZHZyX3Byb2JlKCksIHNvIHdlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjAzLVxcdCAqIG5lZWQgdG8gZW5zdXJlIHRoZSBNQUMgcmVzdW1lIGJhY2sgYmVmb3JlIG90aGVyIG9wZXJhdGlvbnMgc3VjaFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjA4LVxcdC8qIFRoZSBtdXggbXVzdCBiZSByZWdpc3RlcmVkIGFmdGVyIHBhcmVudCBNRElPXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMjA5OlxcdCAqIHNvIGFmdGVyIHN0bW1hY19kdnJfcHJvYmUoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIxMC1cXHQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmM9MjE0PXN0YXRpYyBpbnQgdGVncmFfbWdiZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy0zNzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYzozNzY6XFx0ZXJyID0gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0LCBcXHUwMDI2cmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTM3Ny1cXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM9MjA1PXN0YXRpYyBpbnQgdmlzY29udGlfZXRoX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jLTIzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jOjIzNzpcXHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yMzgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oPTQxMT12b2lkIHN0bW1hY19kdnJfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg6NDEyOmludCBzdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaC00MTMtXFx0XFx0ICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03ODA1PUVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19wbGF0X2RhdF9hbGxvYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03ODA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzgwNzpzdGF0aWMgaW50IF9fc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03ODA4LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMTAtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MTExOiAqIHN0bW1hY19kdnJfcHJvYmVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMTItICogQGRldjogZGV2aWNlIHBvaW50ZXJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODExOS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgxMjA6aW50IHN0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODEyMS1cXHRcXHQgICAgIHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzICpyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MTMxOlxcdHJldCA9IF9fc3RtbWFjX2R2cl9wcm9iZShkZXYsIHBsYXRfZGF0LCByZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODEzMi1cXHRpZiAocmV0IFxcdTAwMjZcXHUwMDI2IHBsYXRfZGF0LVxcdTAwM2VleGl0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTM2LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgxMzc6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX2R2cl9wcm9iZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTM4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTExOD1zdGF0aWMgaW50IHN0bW1hY19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxODM6XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdCwgXFx1MDAyNnJlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4NC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYz04NDY9aW50IHN0bW1hY19wbHRmcl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODU0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjg1NTpcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0LCByZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTg1Ni19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDE5OjMyOjU2LjQ2MTQ2MTM4NFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3ODM4NjIwMDg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQ6IFN0cnVjdHVyYWxseSBVbnJlYWNoYWJsZSBDb2RlIGluIHN0bW1hYyBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvbmUgdGhyb3VnaCB0aGUgY29kZSBhbmQgbXkgY29uY2x1c2lvbiBpcyB0aGF0IHRoaXMgYHN0bW1hY2AgZHJpdmVyIG1vZGlmaWNhdGlvbiBpcyAqbm90KiB3b3J0aCBmdXp6aW5nLCBiYXNlZCBvbiB0aGUgY3JpdGVyaWEuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbkZpcnN0LCBJIGlkZW50aWZpZWQgdGhhdCBhbGwgdGhlIHByb2JlIGZ1bmN0aW9ucyBjYWxsaW5nIGBzdG1tYWNfZHZyX3Byb2JlYCBhcmUgc3BlY2lmaWNhbGx5IGZvciBwaHlzaWNhbCBoYXJkd2FyZSBkZXZpY2VzLCBlaXRoZXIgUENJLWJhc2VkIChsaWtlIGBzdG1tYWNfcGNpX3Byb2JlYCwgYGludGVsX2V0aF9wY2lfcHJvYmVgKSBvciBpbnRlZ3JhdGVkIGludG8gU29Dcy4gTm9uZSBvZiB0aGVzZSBhcmUgc3RhbmRhcmQgZGV2aWNlcyBhdmFpbGFibGUgaW4gdGhlIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cyBjb21tb25seSB1c2VkIGZvciBmdXp6aW5nLCBhbmQgY2VydGFpbmx5IG5vdCBvbiBhbWQ2NC4gSSBldmVuIGRvdWJsZS1jaGVja2VkIGZvciB2aXJ0dWFsIGBzdG1tYWNgIGRldmljZXMsIFVTQiBnYWRnZXRzLCBvciBsb29wYmFjayBpbnRlcmZhY2VzIHRoYXQgbWlnaHQgb2ZmZXIgYSBwYXRoLCBidXQgZm91bmQgbm9uZS5cblxuTmV4dCwgSSByZWZlcmVuY2VkIHRoZSBmdXp6aW5nIGd1aWRlbGluZXMuIFNlY3Rpb24gMiBjbGVhcmx5IGRlZmluZXMgXCJzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIiBhcyBhIG5lZ2F0aXZlIGNyaXRlcmlvbiwgc3BlY2lmaWNhbGx5IG1lbnRpb25pbmcgTklDIGRyaXZlcnMgcmVxdWlyaW5nIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0J3MgYHN0bW1hY2AgdG8gYSB0ZWU6IGEgU3lub3BzeXMgRGVzaWduV2FyZSBNQUMgKERXTUFDKSBJUCBkcml2ZXIsIHdoZXRoZXIgb24gYW4gU1RNaWNyb2VsZWN0cm9uaWNzIFNvQyBvciBhIFBDSSBhZGQtaW4gYm9hcmQuIFNlY3Rpb24gMyBvdXRsaW5lcyBwb3NpdGl2ZSBjcml0ZXJpYSwgYnV0IG5vbmUgb2YgdGhvc2UgYXBwbHkgaGVyZS4gVGhlcmUncyBubyB2aXJ0dWFsIGJ1cyBhY2Nlc3MsIG5vIGxvb3BiYWNrLCBubyBjb21tb24gc29ja2V0IHVzYWdlIOKAkyBub3RoaW5nIHRoYXQgZ2l2ZXMgYSBwYXRoIGludG8gdGhpcyBjb2RlIGluIGEgc3RhbmRhcmQgZnV6emluZyBzZXR1cC5cblxuVGhlcmVmb3JlLCB0aGUgZml4LCBiZWluZyBmb2N1c2VkIG9uIEVTVCAoU2NoZWR1bGVkIFRyYWZmaWMgLyBUQVBSSU8pIGxpZmVjeWNsZSBhbmQgY29uZmlndXJhdGlvbiB3aXRoaW4gdGhlIGBzdG1tYWNgIGRyaXZlciwgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiBJdCBuZWVkcyBwaHlzaWNhbCBoYXJkd2FyZSwgd2hpY2ggbWVhbnMgaXQgY2FuJ3QgYmUgcmVhY2hlZCBieSBzdGFuZGFyZCBmdXp6aW5nLlxuXG5NeSBmaW5hbCB2ZXJpZmljYXRpb24gY29uZmlybXMgYWxsIG1vZGlmaWVkIGZpbGVzIGFyZSBpbmRlZWQgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvYCBkaXJlY3RvcnkuXG5cblNvLCBJJ20gY29uZmlkZW50IGluIHNldHRpbmcgdGhlIHJlc3VsdHM6IGBXb3J0aEZ1enppbmc9ZmFsc2VgLCBgRW5hYmxlQ29uZmlncz1bXWAsIGBGb2N1c1N5bWJvbHM9W11gLiBUaGUgcmVhc29uaW5nIGlzIGNsZWFyOiB0aGUgYHN0bW1hY2AgZHJpdmVyIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSBpbiB0aGUgY29udGV4dCBvZiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMuXG5XZSdyZSBkb25lIGhlcmUsIGxldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ2NTgsIk91dHB1dFRva2VucyI6MTA4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Nzg3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDE5OjMzOjA0LjMwMDA4Mzg3MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIgdG8gaGFuZGxlIEVTVCAoRW5oYW5jZW1lbnRzIGZvciBTY2hlZHVsZWQgVHJhZmZpYyAvIFRBUFJJTykgc2V0dXAgYW5kIGxpZmVjeWNsZS4gVGhpcyBkcml2ZXIgY29udHJvbHMgcGh5c2ljYWwgU29DL1BDSSBFdGhlcm5ldCBNQUMgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIgdG8gaGFuZGxlIEVTVCAoRW5oYW5jZW1lbnRzIGZvciBTY2hlZHVsZWQgVHJhZmZpYyAvIFRBUFJJTykgc2V0dXAgYW5kIGxpZmVjeWNsZS4gVGhpcyBkcml2ZXIgY29udHJvbHMgcGh5c2ljYWwgU29DL1BDSSBFdGhlcm5ldCBNQUMgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDE5OjMzOjA0LjMwMDExMzg5MloiLCJTZXEiOjEzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowr8rrq[1] Phase: Running StartedAt: 2026-09-03 19:33:15 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr8rrq[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-03 19:33:15 +0000 UTC FinishedAt: 2026-09-03 19:33:20 +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,}