Name: series-workflowkbqhh Phase: Failed StartedAt: 2026-07-27 18:55:37 +0000 UTC FinishedAt: 2026-07-27 19:41:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkbqhh[0] Phase: Succeeded StartedAt: 2026-07-27 18:55:38 +0000 UTC FinishedAt: 2026-07-27 19:41:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkbqhh[0].run-triage Phase: Succeeded StartedAt: 2026-07-27 18:55:38 +0000 UTC FinishedAt: 2026-07-27 19:41:25 +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+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSB2ZW5kb3Itc3BlY2lmaWMgUEhZIGRyaXZlciBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWS4gVGhlIGRyaXZlciBvbmx5IGNvbnRhaW5zIHRyaXZpYWwgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gbG9naWMgKHJlYWRpbmcgZGV2aWNlIHRyZWUgcHJvcGVydGllcyBhbmQgd3JpdGluZyB0byBNRElPIHJlZ2lzdGVycykgYW5kIHJlbGllcyBvbiBnZW5lcmljIFBIWSBmdW5jdGlvbnMgZm9yIGFsbCBvdGhlciBvcGVyYXRpb25zLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCBhbmQgZXZlbiBpZiByZWFjaGVkIHZpYSBhIG1vY2sgTURJTyBidXMsIHRoZSBjb2RlIGxhY2tzIGNvbXBsZXggbG9naWMsIG1lbW9yeSBtYW5hZ2VtZW50LCBvciB1c2Vyc3BhY2UgaW50ZXJmYWNlcyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTozNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDU2MTdhZDM0OGE5NzJiNjI2ZTdmYTcxZGRiNjI4NGVlYThhYzc1YTdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyNyAxOTozNTo1OCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RhcHUsZGFwODIxMXIueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZGFwdSxkYXA4MjExci55YW1sXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmJhOWIzMDFlYTFmNTEzXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RhcHUsZGFwODIxMXIueWFtbFxuQEAgLTAsMCAmIzQzOzEsNjMgQEBcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAtb25seSBPUiBCU0QtMi1DbGF1c2UpXG4mIzQzOyVZQU1MIDEuMlxuJiM0MzstLS1cbiYjNDM7JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvZGFwdSxkYXA4MjExci55YW1sI1xuJiM0Mzskc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcbiYjNDM7XG4mIzQzO3RpdGxlOiBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFlcbiYjNDM7XG4mIzQzO21haW50YWluZXJzOlxuJiM0MzsgIC0gQXJ0ZW0gU2hpbWtvIFx1MDAzY2Euc2hpbWtvLmRldkBnbWFpbC5jb21cdTAwM2VcbiYjNDM7XG4mIzQzO2Rlc2NyaXB0aW9uOiB8XG4mIzQzOyAgVGhlIERBUDgyMTFSKEkpIGlzIGEgR2lnYWJpdCBFdGhlcm5ldCBQSFkgd2l0aCBSR01JSSBpbnRlcmZhY2UsXG4mIzQzOyAgc3VwcG9ydGluZyBJRUVFIDgwMi4zYXogRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCwgSUVFRSAxNTg4IFN5bmNFLFxuJiM0MzsgIGFuZCBhbiBpbnRlcm5hbCBwYWNrZXQgZ2VuZXJhdG9yIGZvciBkaWFnbm9zdGljcy5cbiYjNDM7XG4mIzQzOyAgU3BlY2lmaWNhdGlvbnM6XG4mIzQzOyAgICAtIDEwQkFTRS1UZSwgMTAwQkFTRS1UWCwgMTAwMEJBU0UtVFxuJiM0MzsgICAgLSBSR01JSSB3aXRoIGNvbmZpZ3VyYWJsZSBUWC9SWCBjbG9jayBkZWxheXMgKDE1MCBwcyBzdGVwcywgMC0yMjUwIHBzKVxuJiM0MzsgICAgLSBJRUVFIDgwMi4zYXotMjAxMCBFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0XG4mIzQzOyAgICAtIElFRUUgMTU4OCBTeW5jRSBzdXBwb3J0XG4mIzQzOyAgICAtIEludGVybmFsIHBhY2tldCBnZW5lcmF0b3IgYW5kIGNoZWNrZXIgZm9yIGxpbmsgZGlhZ25vc3RpY3NcbiYjNDM7XG4mIzQzO2FsbE9mOlxuJiM0MzsgIC0gJHJlZjogZXRoZXJuZXQtcGh5LnlhbWwjXG4mIzQzO1xuJiM0Mztwcm9wZXJ0aWVzOlxuJiM0MzsgIGNvbXBhdGlibGU6XG4mIzQzOyAgICBjb25zdDogZXRoZXJuZXQtcGh5LWlkMDAwOC4wMTFiXG4mIzQzO1xuJiM0MzsgIHJlZzpcbiYjNDM7ICAgIG1heEl0ZW1zOiAxXG4mIzQzO1xuJiM0MzsgIHJ4LWludGVybmFsLWRlbGF5LXBzOlxuJiM0MzsgICAgZGVzY3JpcHRpb246XG4mIzQzOyAgICAgIFJHTUlJIFJYIGNsb2NrIGRlbGF5IGluIHBpY29zZWNvbmRzICgwIHRvIG1heGltdW0pLlxuJiM0MzsgICAgbXVsdGlwbGVPZjogMTUwXG4mIzQzOyAgICBtYXhpbXVtOiAyMjUwXG4mIzQzOyAgICBkZWZhdWx0OiAxOTUwXG4mIzQzO1xuJiM0MzsgIHR4LWludGVybmFsLWRlbGF5LXBzOlxuJiM0MzsgICAgZGVzY3JpcHRpb246XG4mIzQzOyAgICAgIFJHTUlJIFRYIGNsb2NrIGRlbGF5IGluIHBpY29zZWNvbmRzICgwIHRvIG1heGltdW0pLlxuJiM0MzsgICAgbXVsdGlwbGVPZjogMTUwXG4mIzQzOyAgICBtYXhpbXVtOiAyMjUwXG4mIzQzOyAgICBkZWZhdWx0OiAxOTUwXG4mIzQzO1xuJiM0Mzt1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlXG4mIzQzO1xuJiM0MztleGFtcGxlczpcbiYjNDM7ICAtIHxcbiYjNDM7ICAgIG1kaW8ge1xuJiM0MzsgICAgICAgICNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7ICAgICAgICAjc2l6ZS1jZWxscyA9IFx1MDAzYzBcdTAwM2U7XG4mIzQzO1xuJiM0MzsgICAgICAgIGV0aGVybmV0LXBoeUAxIHtcbiYjNDM7ICAgICAgICAgICAgY29tcGF0aWJsZSA9IFwmIzM0O2V0aGVybmV0LXBoeS1pZDAwMDguMDExYlwmIzM0OztcbiYjNDM7ICAgICAgICAgICAgcmVnID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7ICAgICAgICAgICAgcngtaW50ZXJuYWwtZGVsYXktcHMgPSBcdTAwM2MyMTAwXHUwMDNlO1xuJiM0MzsgICAgICAgICAgICB0eC1pbnRlcm5hbC1kZWxheS1wcyA9IFx1MDAzYzIxMDBcdTAwM2U7XG4mIzQzOyAgICAgICAgfTtcbiYjNDM7ICAgIH07XG4mIzQzO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnIGIvZHJpdmVycy9uZXQvcGh5L0tjb25maWdcbmluZGV4IDA5OWYyNWRjZWFiYmM3Li40NTc2ZjcwN2FjOTQ0NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvS2NvbmZpZ1xuQEAgLTIzNyw2ICYjNDM7MjM3LDE2IEBAIGNvbmZpZyBEQVZJQ09NX1BIWVxuIFx0aGVscFxuIFx0ICBDdXJyZW50bHkgc3VwcG9ydHMgZG05MTYxZSBhbmQgZG05MTMxXG4gXG4mIzQzO2NvbmZpZyBEQVA4MjExUl9QSFlcbiYjNDM7XHR0cmlzdGF0ZSBcJiMzNDtEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFlcJiMzNDtcbiYjNDM7XHRkZXBlbmRzIG9uIE9GXG4mIzQzO1x0aGVscFxuJiM0MztcdCAgU3VwcG9ydCBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWS5cbiYjNDM7XHQgIFRoaXMgUEhZIGlzIGRlc2lnbmVkIGZvciBlbnRlcnByaXNlIGFuZCBpbmR1c3RyaWFsIG5ldHdvcmtpbmdcbiYjNDM7XHQgIGFwcGxpY2F0aW9ucywgc3VwcG9ydGluZyAxMC8xMDAvMTAwMCBNYnBzIG9wZXJhdGlvbi5cbiYjNDM7XHQgIFJHTUlJIHdpdGg6IGNvbmZpZ3VyYWJsZSBUWC9SWCBjbG9jayBkZWxheXMsIG9wdGlvbmFsIGZsYWcgdG8gZW5hYmxlXG4mIzQzO1x0ICAxODAtZGVncmVlIFRYIGNsb2NrIHBoYXNlIHNoaWZ0IGFuZCBpbnRlcm5hbCBwYWNrZXQgZ2VuZXJhdG9yLlxuJiM0MztcbiBjb25maWcgSUNQTFVTX1BIWVxuIFx0dHJpc3RhdGUgXCYjMzQ7SUNQbHVzIFBIWXNcJiMzNDtcbiBcdGhlbHBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGVcbmluZGV4IGRlNjYwYWU5NDk0NTNkLi5hZDM1NzMzZWI0YmI2MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZVxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXG5AQCAtNTMsNiAmIzQzOzUzLDcgQEAgb2JqLSQoQ09ORklHX0JST0FEQ09NX1BIWSlcdCYjNDM7PSBicm9hZGNvbS5vXG4gb2JqLSQoQ09ORklHX0NJQ0FEQV9QSFkpXHQmIzQzOz0gY2ljYWRhLm9cbiBvYmotJChDT05GSUdfQ09SVElOQV9QSFkpXHQmIzQzOz0gY29ydGluYS5vXG4gb2JqLSQoQ09ORklHX0RBVklDT01fUEhZKVx0JiM0Mzs9IGRhdmljb20ub1xuJiM0MztvYmotJChDT05GSUdfREFQODIxMVJfUEhZKVx0JiM0Mzs9IGRhcDgyMTFyLm9cbiBvYmotJChDT05GSUdfRFA4MzY0MF9QSFkpXHQmIzQzOz0gZHA4MzY0MC5vXG4gb2JqLSQoQ09ORklHX0RQODM4MjJfUEhZKVx0JiM0Mzs9IGRwODM4MjIub1xuIG9iai0kKENPTkZJR19EUDgzODQ4X1BIWSlcdCYjNDM7PSBkcDgzODQ4Lm9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYyBiL2RyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjY1ZDZmZWY4NmYyNmI3XG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuY1xuQEAgLTAsMCAmIzQzOzEsMjA2IEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUExcbiYjNDM7LypcbiYjNDM7ICogRHJpdmVyIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZLlxuJiM0MzsgKlxuJiM0MzsgKiBTcGVjaWZpY2F0aW9uczpcbiYjNDM7ICogICAtIElFRUUgODAyLjMgMTBCQVNFLVRlLCAxMDBCQVNFLVRYLCAxMDAwQkFTRS1UXG4mIzQzOyAqICAgLSBJRUVFIDgwMi4zYXotMjAxMCBFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0XG4mIzQzOyAqICAgLSBJRUVFIDE1ODggU3luY0Ugc3VwcG9ydFxuJiM0MzsgKiAgIC0gUkdNSUlcbiYjNDM7ICpcbiYjNDM7ICogQXV0aG9yOiBBcnRlbSBTaGlta28gXHUwMDNjYS5zaGlta28uZGV2QGdtYWlsLmNvbVx1MDAzZVxuJiM0MzsgKi9cbiYjNDM7XG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdGZpZWxkLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZXJybm8uaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGh0b29sLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvaW9wb2xsLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbWlpLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZGV2aWNlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZVxuJiM0MztcbiYjNDM7I2RlZmluZSBEQVA4MjExUl9QSFlfSURcdFx0XHQweDAwMDgwMTFCXG4mIzQzOyNkZWZpbmUgREFQODIxMVJfUEhZX0lEX01BU0tcdFx0MHhGRkZGRkZGRlxuJiM0MztcbiYjNDM7I2RlZmluZSBEQVA4MjExUl9FWFRfQUREXHRcdDB4MUVcbiYjNDM7I2RlZmluZSBEQVA4MjExUl9FWFRfREFUQVx0XHQweDFGXG4mIzQzO1xuJiM0MzsjZGVmaW5lIERBUDgyMTFSX1BIWV9DT05cdFx0MHhBMDAxXG4mIzQzOyNkZWZpbmUgREFQODIxMVJfUEhZX1NXX1JTVFx0XHRCSVQoMTUpXG4mIzQzO1xuJiM0MzsjZGVmaW5lIERBUDgyMTFSX1JHTUlJX0NPTlx0XHQweEEwMDNcbiYjNDM7I2RlZmluZSBEQVA4MjExUl9SR01JSV9UWF9ERUxfTUFTS1x0R0VOTUFTSygzLCAwKVxuJiM0MzsjZGVmaW5lIERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLXHRHRU5NQVNLKDEzLCAxMClcbiYjNDM7XG4mIzQzOyNkZWZpbmUgREFQODIxMVJfUkdNSUlfQ09ORklHX01BU0tcdChEQVA4MjExUl9SR01JSV9SWF9ERUxfTUFTSyB8IERBUDgyMTFSX1JHTUlJX1RYX0RFTF9NQVNLKVxuJiM0MztcbiYjNDM7LyogRGVmYXVsdCBSR01JSSBkZWxheTogMTMgKiAxNTAgPT0gMS45NW5zICovXG4mIzQzOyNkZWZpbmUgREFQODIxMVJfREVGQVVMVF9ERUxfU0VMXHQweERcbiYjNDM7XG4mIzQzO3N0YXRpYyBjb25zdCBpbnQgZGFwODIxMXJfaW50ZXJuYWxfZGVsYXlbXSA9IHswLCAxNTAsIDMwMCwgNDUwLCA2MDAsIDc1MCwgOTAwLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgMTA1MCwgMTIwMCwgMTM1MCwgMTUwMCwgMTY1MCwgMTgwMCxcbiYjNDM7XHRcdFx0XHRcdCAgICAgIDE5NTAsIDIxMDAsIDIyNTB9O1xuJiM0MztcbiYjNDM7I2RlZmluZSBEQVA4MjExUl9ERUxBWV9TSVpFXHRBUlJBWV9TSVpFKGRhcDgyMTFyX2ludGVybmFsX2RlbGF5KVxuJiM0MztcbiYjNDM7LyoqXG4mIzQzOyAqIGRhcDgyMTFyX3JlYWRfZXh0KCkgLSBSZWFkIGV4dGVuZGVkIHJlZ2lzdGVyXG4mIzQzOyAqIEBwaHlkZXY6IFBIWSBkZXZpY2Ugc3RydWN0dXJlXG4mIzQzOyAqIEByZWc6IEV4dGVuZGVkIHJlZ2lzdGVyIGFkZHJlc3NcbiYjNDM7ICpcbiYjNDM7ICogUmVhZHMgYSBQSFkgZXh0ZW5kZWQgcmVnaXN0ZXIgdXNpbmcgdGhlIGluZGlyZWN0IGFjY2VzcyBtZXRob2QuXG4mIzQzOyAqIFRoZSBjYWxsZXIgbXVzdCBob2xkIHRoZSBNRElPIGJ1cyBsb2NrLlxuJiM0MzsgKlxuJiM0MzsgKiBSZXR1cm46IFJlZ2lzdGVyIHZhbHVlIG9uIHN1Y2Nlc3MsIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGVcbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBpbnQgZGFwODIxMXJfcmVhZF9leHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZylcbiYjNDM7e1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XG4mIzQzO1x0cmV0ID0gX19waHlfd3JpdGUocGh5ZGV2LCBEQVA4MjExUl9FWFRfQURELCByZWcpO1xuJiM0MztcdGlmIChyZXQgXHUwMDNjIDApXG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gX19waHlfcmVhZChwaHlkZXYsIERBUDgyMTFSX0VYVF9EQVRBKTtcbiYjNDM7b3V0OlxuJiM0MztcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogZGFwODIxMXJfbW9kaWZ5X2V4dCgpIC0gTW9kaWZ5IGV4dGVuZGVkIHJlZ2lzdGVyIGJpdHNcbiYjNDM7ICogQHBoeWRldjogUEhZIGRldmljZSBzdHJ1Y3R1cmVcbiYjNDM7ICogQHJlZzogRXh0ZW5kZWQgcmVnaXN0ZXIgYWRkcmVzc1xuJiM0MzsgKiBAbWFzazogQml0IG1hc2sgb2YgYml0cyB0byBjbGVhclxuJiM0MzsgKiBAc2V0OiBCaXQgbWFzayBvZiBiaXRzIHRvIHNldFxuJiM0MzsgKlxuJiM0MzsgKiBNb2RpZmllcyBhIFBIWSBleHRlbmRlZCByZWdpc3RlciB1c2luZyB0aGUgaW5kaXJlY3QgYWNjZXNzIG1ldGhvZC5cbiYjNDM7ICogTmV3IHZhbHVlID0gKG9sZCB2YWx1ZSBcdTAwMjYgfm1hc2spIHwgc2V0LlxuJiM0MzsgKiBUaGUgY2FsbGVyIG11c3QgaG9sZCB0aGUgTURJTyBidXMgbG9jay5cbiYjNDM7ICpcbiYjNDM7ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGVcbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBpbnQgZGFwODIxMXJfbW9kaWZ5X2V4dChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnLCB1MTYgbWFzaywgdTE2IHNldClcbiYjNDM7e1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XG4mIzQzO1x0cmV0ID0gX19waHlfd3JpdGUocGh5ZGV2LCBEQVA4MjExUl9FWFRfQURELCByZWcpO1xuJiM0MztcdGlmIChyZXQgXHUwMDNjIDApXG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gX19waHlfbW9kaWZ5KHBoeWRldiwgREFQODIxMVJfRVhUX0RBVEEsIG1hc2ssIHNldCk7XG4mIzQzO291dDpcbiYjNDM7XHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7LyoqXG4mIzQzOyAqIGRhcDgyMTFyX2NvbmZpZ19pbml0KCkgLSBJbml0aWFsaXplIFBIWVxuJiM0MzsgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHN0cnVjdHVyZVxuJiM0MzsgKlxuJiM0MzsgKiBDb25maWd1cmVzIHRoZSBQSFkgZHVyaW5nIGluaXRpYWxpemF0aW9uOlxuJiM0MzsgKiAtIFJHTUlJIGRlbGF5cyBiYXNlZCBvbiBpbnRlcmZhY2UgbW9kZVxuJiM0MzsgKiAtIFNvZnR3YXJlIHJlc2V0IHRvIGFwcGx5IHNldHRpbmdzIChsb3cgYWN0aXZlLCBzZWxmIGNsZWFyKVxuJiM0MzsgKlxuJiM0MzsgKiBSZXR1cm46IDAgb24gc3VjY2Vzcywgb3IgbmVnYXRpdmUgZXJyb3IgY29kZVxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIGludCBkYXA4MjExcl9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuJiM0Mzt7XG4mIzQzO1x0dTE2IHNldCA9IDA7XG4mIzQzO1x0aW50IHJldCwgdmFsO1xuJiM0MztcdHMzMiByeF9pbnRlcm5hbF9kZWxheTtcbiYjNDM7XHRzMzIgdHhfaW50ZXJuYWxfZGVsYXk7XG4mIzQzO1xuJiM0MztcdGlmICghcGh5X2ludGVyZmFjZV9pc19yZ21paShwaHlkZXYpKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdHJ4X2ludGVybmFsX2RlbGF5ID0gcGh5X2dldF9pbnRlcm5hbF9kZWxheShwaHlkZXYsIGRhcDgyMTFyX2ludGVybmFsX2RlbGF5LFxuJiM0MztcdFx0XHRcdFx0XHQgICBEQVA4MjExUl9ERUxBWV9TSVpFLCB0cnVlKTtcbiYjNDM7XHR0eF9pbnRlcm5hbF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheSxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgREFQODIxMVJfREVMQVlfU0laRSwgZmFsc2UpO1xuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKHBoeWRldi1cdTAwM2VpbnRlcmZhY2UpIHtcbiYjNDM7XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSTpcbiYjNDM7XHRcdGlmIChyeF9pbnRlcm5hbF9kZWxheSBcdTAwM2MgMClcbiYjNDM7XHRcdFx0cnhfaW50ZXJuYWxfZGVsYXkgPSAwO1xuJiM0MztcbiYjNDM7XHRcdGlmICh0eF9pbnRlcm5hbF9kZWxheSBcdTAwM2MgMClcbiYjNDM7XHRcdFx0dHhfaW50ZXJuYWxfZGVsYXkgPSAwO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfUlhJRDpcbiYjNDM7XHRcdGlmIChyeF9pbnRlcm5hbF9kZWxheSBcdTAwM2MgMClcbiYjNDM7XHRcdFx0cnhfaW50ZXJuYWxfZGVsYXkgPSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUw7XG4mIzQzO1xuJiM0MztcdFx0dHhfaW50ZXJuYWxfZGVsYXkgPSAwO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfSUQ6XG4mIzQzO1x0XHRpZiAocnhfaW50ZXJuYWxfZGVsYXkgXHUwMDNjIDApXG4mIzQzO1x0XHRcdHJ4X2ludGVybmFsX2RlbGF5ID0gREFQODIxMVJfREVGQVVMVF9ERUxfU0VMO1xuJiM0MztcdFx0aWYgKHR4X2ludGVybmFsX2RlbGF5IFx1MDAzYyAwKVxuJiM0MztcdFx0XHR0eF9pbnRlcm5hbF9kZWxheSA9IERBUDgyMTFSX0RFRkFVTFRfREVMX1NFTDtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1RYSUQ6XG4mIzQzO1x0XHRpZiAodHhfaW50ZXJuYWxfZGVsYXkgXHUwMDNjIDApXG4mIzQzO1x0XHRcdHR4X2ludGVybmFsX2RlbGF5ID0gREFQODIxMVJfREVGQVVMVF9ERUxfU0VMO1xuJiM0MztcbiYjNDM7XHRcdHJ4X2ludGVybmFsX2RlbGF5ID0gMDtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCYjMzQ7VW5zdXBwb3J0ZWQgaW50ZXJmYWNlOiAlZFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0ICAgcGh5ZGV2LVx1MDAzZWludGVyZmFjZSk7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHNldCB8PSBGSUVMRF9QUkVQKERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLLCByeF9pbnRlcm5hbF9kZWxheSk7XG4mIzQzO1x0c2V0IHw9IEZJRUxEX1BSRVAoREFQODIxMVJfUkdNSUlfVFhfREVMX01BU0ssIHR4X2ludGVybmFsX2RlbGF5KTtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gZGFwODIxMXJfbW9kaWZ5X2V4dChwaHlkZXYsIERBUDgyMTFSX1BIWV9DT04sIERBUDgyMTFSX1BIWV9TV19SU1QsIDApO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHQvKiBXYWl0IGZvciByZXNldCBzZWxmLWNsZWFyIChmcm9tIGxvdyBhY3RpdmUgdG8gaGlnaCkgKi9cbiYjNDM7XHRyZXQgPSByZWFkX3BvbGxfdGltZW91dChkYXA4MjExcl9yZWFkX2V4dCwgdmFsLFxuJiM0MztcdFx0XHRcdCh2YWwgXHUwMDI2IERBUDgyMTFSX1BIWV9TV19SU1QpLFxuJiM0MztcdFx0XHRcdDIwLCAyMDAsIGZhbHNlLCBwaHlkZXYsIERBUDgyMTFSX1BIWV9DT04pO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcdGlmICh2YWwgXHUwMDNjIDApXG4mIzQzO1x0XHRyZXR1cm4gdmFsO1xuJiM0MztcbiYjNDM7XHRyZXQgPSBkYXA4MjExcl9tb2RpZnlfZXh0KHBoeWRldiwgREFQODIxMVJfUkdNSUlfQ09OLCBEQVA4MjExUl9SR01JSV9DT05GSUdfTUFTSywgc2V0KTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkYXA4MjExcl9kcml2ZXJbXSA9IHtcbiYjNDM7XHR7XG4mIzQzO1x0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoREFQODIxMVJfUEhZX0lEKSxcbiYjNDM7XHRcdC5uYW1lXHRcdD0gXCYjMzQ7REFQODIxMVIgR2lnYWJpdCBFdGhlcm5ldFwmIzM0OyxcbiYjNDM7XHRcdC5zb2Z0X3Jlc2V0XHQ9IGdlbnBoeV9zb2Z0X3Jlc2V0LFxuJiM0MztcdFx0LmNvbmZpZ19pbml0XHQ9IGRhcDgyMTFyX2NvbmZpZ19pbml0LFxuJiM0MztcdFx0LnJlYWRfc3RhdHVzXHQ9IGdlbnBoeV9yZWFkX3N0YXR1cyxcbiYjNDM7XHRcdC5zZXRfbG9vcGJhY2tcdD0gZ2VucGh5X2xvb3BiYWNrLFxuJiM0MztcdFx0LmNvbmZpZ19hbmVnXHQ9IGdlbnBoeV9jb25maWdfYW5lZyxcbiYjNDM7XHRcdC5zdXNwZW5kXHQ9IGdlbnBoeV9zdXNwZW5kLFxuJiM0MztcdFx0LnJlc3VtZVx0XHQ9IGdlbnBoeV9yZXN1bWUsXG4mIzQzO1x0fSxcbiYjNDM7fTtcbiYjNDM7bW9kdWxlX3BoeV9kcml2ZXIoZGFwODIxMXJfZHJpdmVyKTtcbiYjNDM7XG4mIzQzO01PRFVMRV9ERVNDUklQVElPTihcJiMzNDtEQVA4MjExUiBHaWdhYml0IEV0aGVybmV0IFBIWSBkcml2ZXJcJiMzNDspO1xuJiM0MztNT0RVTEVfQVVUSE9SKFwmIzM0O0FydGVtIFNoaW1rbyBcdTAwM2NhLnNoaW1rby5kZXZAZ21haWwuY29tXHUwMDNlXCYjMzQ7KTtcbiYjNDM7TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgZGFwODIxMXJfdGJbXSA9IHtcbiYjNDM7XHR7IERBUDgyMTFSX1BIWV9JRCwgREFQODIxMVJfUEhZX0lEX01BU0sgfSxcbiYjNDM7XHR7IC8qIHNlbnRpbmVsICovIH1cbiYjNDM7fTtcbiYjNDM7TU9EVUxFX0RFVklDRV9UQUJMRShtZGlvLCBkYXA4MjExcl90Yik7XG4mIzQzO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjM2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjVtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgdmVuZG9yLXNwZWNpZmljIFBIWSBkcml2ZXIgZm9yIHRoZSBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFkuIFRoZSBkcml2ZXIgb25seSBjb250YWlucyB0cml2aWFsIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIGxvZ2ljIChyZWFkaW5nIGRldmljZSB0cmVlIHByb3BlcnRpZXMgYW5kIHdyaXRpbmcgdG8gTURJTyByZWdpc3RlcnMpIGFuZCByZWxpZXMgb24gZ2VuZXJpYyBQSFkgZnVuY3Rpb25zIGZvciBhbGwgb3RoZXIgb3BlcmF0aW9ucy4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgYW5kIGV2ZW4gaWYgcmVhY2hlZCB2aWEgYSBtb2NrIE1ESU8gYnVzLCB0aGUgY29kZSBsYWNrcyBjb21wbGV4IGxvZ2ljLCBtZW1vcnkgbWFuYWdlbWVudCwgb3IgdXNlcnNwYWNlIGludGVyZmFjZXMgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1NjE3YWQzNDhhOTcyYjYyNmU3ZmE3MWRkYjYyODRlZWE4YWM3NWE3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdWwgMjcgMTk6MzU6NTggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RhcHUsZGFwODIxMXIueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZGFwdSxkYXA4MjExci55YW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi5iYTliMzAxZWExZjUxMwotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZGFwdSxkYXA4MjExci55YW1sCkBAIC0wLDAgJiM0MzsxLDYzIEBACiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAtb25seSBPUiBCU0QtMi1DbGF1c2UpCiYjNDM7JVlBTUwgMS4yCiYjNDM7LS0tCiYjNDM7JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvZGFwdSxkYXA4MjExci55YW1sIwomIzQzOyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sIwomIzQzOwomIzQzO3RpdGxlOiBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFkKJiM0MzsKJiM0MzttYWludGFpbmVyczoKJiM0MzsgIC0gQXJ0ZW0gU2hpbWtvICZsdDthLnNoaW1rby5kZXZAZ21haWwuY29tJmd0OwomIzQzOwomIzQzO2Rlc2NyaXB0aW9uOiB8CiYjNDM7ICBUaGUgREFQODIxMVIoSSkgaXMgYSBHaWdhYml0IEV0aGVybmV0IFBIWSB3aXRoIFJHTUlJIGludGVyZmFjZSwKJiM0MzsgIHN1cHBvcnRpbmcgSUVFRSA4MDIuM2F6IEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQsIElFRUUgMTU4OCBTeW5jRSwKJiM0MzsgIGFuZCBhbiBpbnRlcm5hbCBwYWNrZXQgZ2VuZXJhdG9yIGZvciBkaWFnbm9zdGljcy4KJiM0MzsKJiM0MzsgIFNwZWNpZmljYXRpb25zOgomIzQzOyAgICAtIDEwQkFTRS1UZSwgMTAwQkFTRS1UWCwgMTAwMEJBU0UtVAomIzQzOyAgICAtIFJHTUlJIHdpdGggY29uZmlndXJhYmxlIFRYL1JYIGNsb2NrIGRlbGF5cyAoMTUwIHBzIHN0ZXBzLCAwLTIyNTAgcHMpCiYjNDM7ICAgIC0gSUVFRSA4MDIuM2F6LTIwMTAgRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldAomIzQzOyAgICAtIElFRUUgMTU4OCBTeW5jRSBzdXBwb3J0CiYjNDM7ICAgIC0gSW50ZXJuYWwgcGFja2V0IGdlbmVyYXRvciBhbmQgY2hlY2tlciBmb3IgbGluayBkaWFnbm9zdGljcwomIzQzOwomIzQzO2FsbE9mOgomIzQzOyAgLSAkcmVmOiBldGhlcm5ldC1waHkueWFtbCMKJiM0MzsKJiM0Mztwcm9wZXJ0aWVzOgomIzQzOyAgY29tcGF0aWJsZToKJiM0MzsgICAgY29uc3Q6IGV0aGVybmV0LXBoeS1pZDAwMDguMDExYgomIzQzOwomIzQzOyAgcmVnOgomIzQzOyAgICBtYXhJdGVtczogMQomIzQzOwomIzQzOyAgcngtaW50ZXJuYWwtZGVsYXktcHM6CiYjNDM7ICAgIGRlc2NyaXB0aW9uOgomIzQzOyAgICAgIFJHTUlJIFJYIGNsb2NrIGRlbGF5IGluIHBpY29zZWNvbmRzICgwIHRvIG1heGltdW0pLgomIzQzOyAgICBtdWx0aXBsZU9mOiAxNTAKJiM0MzsgICAgbWF4aW11bTogMjI1MAomIzQzOyAgICBkZWZhdWx0OiAxOTUwCiYjNDM7CiYjNDM7ICB0eC1pbnRlcm5hbC1kZWxheS1wczoKJiM0MzsgICAgZGVzY3JpcHRpb246CiYjNDM7ICAgICAgUkdNSUkgVFggY2xvY2sgZGVsYXkgaW4gcGljb3NlY29uZHMgKDAgdG8gbWF4aW11bSkuCiYjNDM7ICAgIG11bHRpcGxlT2Y6IDE1MAomIzQzOyAgICBtYXhpbXVtOiAyMjUwCiYjNDM7ICAgIGRlZmF1bHQ6IDE5NTAKJiM0MzsKJiM0Mzt1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlCiYjNDM7CiYjNDM7ZXhhbXBsZXM6CiYjNDM7ICAtIHwKJiM0MzsgICAgbWRpbyB7CiYjNDM7ICAgICAgICAjYWRkcmVzcy1jZWxscyA9ICZsdDsxJmd0OzsKJiM0MzsgICAgICAgICNzaXplLWNlbGxzID0gJmx0OzAmZ3Q7OwomIzQzOwomIzQzOyAgICAgICAgZXRoZXJuZXQtcGh5QDEgewomIzQzOyAgICAgICAgICAgIGNvbXBhdGlibGUgPSAmIzM0O2V0aGVybmV0LXBoeS1pZDAwMDguMDExYiYjMzQ7OwomIzQzOyAgICAgICAgICAgIHJlZyA9ICZsdDsxJmd0OzsKJiM0MzsgICAgICAgICAgICByeC1pbnRlcm5hbC1kZWxheS1wcyA9ICZsdDsyMTAwJmd0OzsKJiM0MzsgICAgICAgICAgICB0eC1pbnRlcm5hbC1kZWxheS1wcyA9ICZsdDsyMTAwJmd0OzsKJiM0MzsgICAgICAgIH07CiYjNDM7ICAgIH07CiYjNDM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnCmluZGV4IDA5OWYyNWRjZWFiYmM3Li40NTc2ZjcwN2FjOTQ0NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L0tjb25maWcKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L0tjb25maWcKQEAgLTIzNyw2ICYjNDM7MjM3LDE2IEBAIGNvbmZpZyBEQVZJQ09NX1BIWQogCWhlbHAKIAkgIEN1cnJlbnRseSBzdXBwb3J0cyBkbTkxNjFlIGFuZCBkbTkxMzEKIAomIzQzO2NvbmZpZyBEQVA4MjExUl9QSFkKJiM0MzsJdHJpc3RhdGUgJiMzNDtEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFkmIzM0OwomIzQzOwlkZXBlbmRzIG9uIE9GCiYjNDM7CWhlbHAKJiM0MzsJICBTdXBwb3J0IGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZLgomIzQzOwkgIFRoaXMgUEhZIGlzIGRlc2lnbmVkIGZvciBlbnRlcnByaXNlIGFuZCBpbmR1c3RyaWFsIG5ldHdvcmtpbmcKJiM0MzsJICBhcHBsaWNhdGlvbnMsIHN1cHBvcnRpbmcgMTAvMTAwLzEwMDAgTWJwcyBvcGVyYXRpb24uCiYjNDM7CSAgUkdNSUkgd2l0aDogY29uZmlndXJhYmxlIFRYL1JYIGNsb2NrIGRlbGF5cywgb3B0aW9uYWwgZmxhZyB0byBlbmFibGUKJiM0MzsJICAxODAtZGVncmVlIFRYIGNsb2NrIHBoYXNlIHNoaWZ0IGFuZCBpbnRlcm5hbCBwYWNrZXQgZ2VuZXJhdG9yLgomIzQzOwogY29uZmlnIElDUExVU19QSFkKIAl0cmlzdGF0ZSAmIzM0O0lDUGx1cyBQSFlzJiMzNDsKIAloZWxwCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUKaW5kZXggZGU2NjBhZTk0OTQ1M2QuLmFkMzU3MzNlYjRiYjYxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlCkBAIC01Myw2ICYjNDM7NTMsNyBAQCBvYmotJChDT05GSUdfQlJPQURDT01fUEhZKQkmIzQzOz0gYnJvYWRjb20ubwogb2JqLSQoQ09ORklHX0NJQ0FEQV9QSFkpCSYjNDM7PSBjaWNhZGEubwogb2JqLSQoQ09ORklHX0NPUlRJTkFfUEhZKQkmIzQzOz0gY29ydGluYS5vCiBvYmotJChDT05GSUdfREFWSUNPTV9QSFkpCSYjNDM7PSBkYXZpY29tLm8KJiM0MztvYmotJChDT05GSUdfREFQODIxMVJfUEhZKQkmIzQzOz0gZGFwODIxMXIubwogb2JqLSQoQ09ORklHX0RQODM2NDBfUEhZKQkmIzQzOz0gZHA4MzY0MC5vCiBvYmotJChDT05GSUdfRFA4MzgyMl9QSFkpCSYjNDM7PSBkcDgzODIyLm8KIG9iai0kKENPTkZJR19EUDgzODQ4X1BIWSkJJiM0Mzs9IGRwODM4NDgubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMgYi9kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMC4uNjVkNmZlZjg2ZjI2YjcKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYwpAQCAtMCwwICYjNDM7MSwyMDYgQEAKJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMCiYjNDM7LyoKJiM0MzsgKiBEcml2ZXIgZm9yIHRoZSBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFkuCiYjNDM7ICoKJiM0MzsgKiBTcGVjaWZpY2F0aW9uczoKJiM0MzsgKiAgIC0gSUVFRSA4MDIuMyAxMEJBU0UtVGUsIDEwMEJBU0UtVFgsIDEwMDBCQVNFLVQKJiM0MzsgKiAgIC0gSUVFRSA4MDIuM2F6LTIwMTAgRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldAomIzQzOyAqICAgLSBJRUVFIDE1ODggU3luY0Ugc3VwcG9ydAomIzQzOyAqICAgLSBSR01JSQomIzQzOyAqCiYjNDM7ICogQXV0aG9yOiBBcnRlbSBTaGlta28gJmx0O2Euc2hpbWtvLmRldkBnbWFpbC5jb20mZ3Q7CiYjNDM7ICovCiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2JpdGZpZWxkLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2Vycm5vLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2V0aHRvb2wuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgva2VybmVsLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2lvcG9sbC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9taWkuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvbW9kdWxlLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L25ldGRldmljZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9vZi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9waHkuaCZndDsKJiM0MzsKJiM0MzsjZGVmaW5lIERBUDgyMTFSX1BIWV9JRAkJCTB4MDAwODAxMUIKJiM0MzsjZGVmaW5lIERBUDgyMTFSX1BIWV9JRF9NQVNLCQkweEZGRkZGRkZGCiYjNDM7CiYjNDM7I2RlZmluZSBEQVA4MjExUl9FWFRfQURECQkweDFFCiYjNDM7I2RlZmluZSBEQVA4MjExUl9FWFRfREFUQQkJMHgxRgomIzQzOwomIzQzOyNkZWZpbmUgREFQODIxMVJfUEhZX0NPTgkJMHhBMDAxCiYjNDM7I2RlZmluZSBEQVA4MjExUl9QSFlfU1dfUlNUCQlCSVQoMTUpCiYjNDM7CiYjNDM7I2RlZmluZSBEQVA4MjExUl9SR01JSV9DT04JCTB4QTAwMwomIzQzOyNkZWZpbmUgREFQODIxMVJfUkdNSUlfVFhfREVMX01BU0sJR0VOTUFTSygzLCAwKQomIzQzOyNkZWZpbmUgREFQODIxMVJfUkdNSUlfUlhfREVMX01BU0sJR0VOTUFTSygxMywgMTApCiYjNDM7CiYjNDM7I2RlZmluZSBEQVA4MjExUl9SR01JSV9DT05GSUdfTUFTSwkoREFQODIxMVJfUkdNSUlfUlhfREVMX01BU0sgfCBEQVA4MjExUl9SR01JSV9UWF9ERUxfTUFTSykKJiM0MzsKJiM0MzsvKiBEZWZhdWx0IFJHTUlJIGRlbGF5OiAxMyAqIDE1MCA9PSAxLjk1bnMgKi8KJiM0MzsjZGVmaW5lIERBUDgyMTFSX0RFRkFVTFRfREVMX1NFTAkweEQKJiM0MzsKJiM0MztzdGF0aWMgY29uc3QgaW50IGRhcDgyMTFyX2ludGVybmFsX2RlbGF5W10gPSB7MCwgMTUwLCAzMDAsIDQ1MCwgNjAwLCA3NTAsIDkwMCwKJiM0MzsJCQkJCSAgICAgIDEwNTAsIDEyMDAsIDEzNTAsIDE1MDAsIDE2NTAsIDE4MDAsCiYjNDM7CQkJCQkgICAgICAxOTUwLCAyMTAwLCAyMjUwfTsKJiM0MzsKJiM0MzsjZGVmaW5lIERBUDgyMTFSX0RFTEFZX1NJWkUJQVJSQVlfU0laRShkYXA4MjExcl9pbnRlcm5hbF9kZWxheSkKJiM0MzsKJiM0MzsvKioKJiM0MzsgKiBkYXA4MjExcl9yZWFkX2V4dCgpIC0gUmVhZCBleHRlbmRlZCByZWdpc3RlcgomIzQzOyAqIEBwaHlkZXY6IFBIWSBkZXZpY2Ugc3RydWN0dXJlCiYjNDM7ICogQHJlZzogRXh0ZW5kZWQgcmVnaXN0ZXIgYWRkcmVzcwomIzQzOyAqCiYjNDM7ICogUmVhZHMgYSBQSFkgZXh0ZW5kZWQgcmVnaXN0ZXIgdXNpbmcgdGhlIGluZGlyZWN0IGFjY2VzcyBtZXRob2QuCiYjNDM7ICogVGhlIGNhbGxlciBtdXN0IGhvbGQgdGhlIE1ESU8gYnVzIGxvY2suCiYjNDM7ICoKJiM0MzsgKiBSZXR1cm46IFJlZ2lzdGVyIHZhbHVlIG9uIHN1Y2Nlc3MsIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGUKJiM0MzsgKi8KJiM0MztzdGF0aWMgaW50IGRhcDgyMTFyX3JlYWRfZXh0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiByZWcpCiYjNDM7ewomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpOwomIzQzOwlyZXQgPSBfX3BoeV93cml0ZShwaHlkZXYsIERBUDgyMTFSX0VYVF9BREQsIHJlZyk7CiYjNDM7CWlmIChyZXQgJmx0OyAwKQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CiYjNDM7CXJldCA9IF9fcGh5X3JlYWQocGh5ZGV2LCBEQVA4MjExUl9FWFRfREFUQSk7CiYjNDM7b3V0OgomIzQzOwlwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwomIzQzOy8qKgomIzQzOyAqIGRhcDgyMTFyX21vZGlmeV9leHQoKSAtIE1vZGlmeSBleHRlbmRlZCByZWdpc3RlciBiaXRzCiYjNDM7ICogQHBoeWRldjogUEhZIGRldmljZSBzdHJ1Y3R1cmUKJiM0MzsgKiBAcmVnOiBFeHRlbmRlZCByZWdpc3RlciBhZGRyZXNzCiYjNDM7ICogQG1hc2s6IEJpdCBtYXNrIG9mIGJpdHMgdG8gY2xlYXIKJiM0MzsgKiBAc2V0OiBCaXQgbWFzayBvZiBiaXRzIHRvIHNldAomIzQzOyAqCiYjNDM7ICogTW9kaWZpZXMgYSBQSFkgZXh0ZW5kZWQgcmVnaXN0ZXIgdXNpbmcgdGhlIGluZGlyZWN0IGFjY2VzcyBtZXRob2QuCiYjNDM7ICogTmV3IHZhbHVlID0gKG9sZCB2YWx1ZSAmYW1wOyB+bWFzaykgfCBzZXQuCiYjNDM7ICogVGhlIGNhbGxlciBtdXN0IGhvbGQgdGhlIE1ESU8gYnVzIGxvY2suCiYjNDM7ICoKJiM0MzsgKiBSZXR1cm46IDAgb24gc3VjY2Vzcywgb3IgbmVnYXRpdmUgZXJyb3IgY29kZQomIzQzOyAqLwomIzQzO3N0YXRpYyBpbnQgZGFwODIxMXJfbW9kaWZ5X2V4dChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnLCB1MTYgbWFzaywgdTE2IHNldCkKJiM0Mzt7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CXBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7CiYjNDM7CXJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgREFQODIxMVJfRVhUX0FERCwgcmVnKTsKJiM0MzsJaWYgKHJldCAmbHQ7IDApCiYjNDM7CQlnb3RvIG91dDsKJiM0MzsKJiM0MzsJcmV0ID0gX19waHlfbW9kaWZ5KHBoeWRldiwgREFQODIxMVJfRVhUX0RBVEEsIG1hc2ssIHNldCk7CiYjNDM7b3V0OgomIzQzOwlwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwomIzQzOy8qKgomIzQzOyAqIGRhcDgyMTFyX2NvbmZpZ19pbml0KCkgLSBJbml0aWFsaXplIFBIWQomIzQzOyAqIEBwaHlkZXY6IFBIWSBkZXZpY2Ugc3RydWN0dXJlCiYjNDM7ICoKJiM0MzsgKiBDb25maWd1cmVzIHRoZSBQSFkgZHVyaW5nIGluaXRpYWxpemF0aW9uOgomIzQzOyAqIC0gUkdNSUkgZGVsYXlzIGJhc2VkIG9uIGludGVyZmFjZSBtb2RlCiYjNDM7ICogLSBTb2Z0d2FyZSByZXNldCB0byBhcHBseSBzZXR0aW5ncyAobG93IGFjdGl2ZSwgc2VsZiBjbGVhcikKJiM0MzsgKgomIzQzOyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBvciBuZWdhdGl2ZSBlcnJvciBjb2RlCiYjNDM7ICovCiYjNDM7c3RhdGljIGludCBkYXA4MjExcl9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQomIzQzO3sKJiM0MzsJdTE2IHNldCA9IDA7CiYjNDM7CWludCByZXQsIHZhbDsKJiM0MzsJczMyIHJ4X2ludGVybmFsX2RlbGF5OwomIzQzOwlzMzIgdHhfaW50ZXJuYWxfZGVsYXk7CiYjNDM7CiYjNDM7CWlmICghcGh5X2ludGVyZmFjZV9pc19yZ21paShwaHlkZXYpKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CXJ4X2ludGVybmFsX2RlbGF5ID0gcGh5X2dldF9pbnRlcm5hbF9kZWxheShwaHlkZXYsIGRhcDgyMTFyX2ludGVybmFsX2RlbGF5LAomIzQzOwkJCQkJCSAgIERBUDgyMTFSX0RFTEFZX1NJWkUsIHRydWUpOwomIzQzOwl0eF9pbnRlcm5hbF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheSwKJiM0MzsJCQkJCQkgICBEQVA4MjExUl9ERUxBWV9TSVpFLCBmYWxzZSk7CiYjNDM7CiYjNDM7CXN3aXRjaCAocGh5ZGV2LSZndDtpbnRlcmZhY2UpIHsKJiM0MzsJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6CiYjNDM7CQlpZiAocnhfaW50ZXJuYWxfZGVsYXkgJmx0OyAwKQomIzQzOwkJCXJ4X2ludGVybmFsX2RlbGF5ID0gMDsKJiM0MzsKJiM0MzsJCWlmICh0eF9pbnRlcm5hbF9kZWxheSAmbHQ7IDApCiYjNDM7CQkJdHhfaW50ZXJuYWxfZGVsYXkgPSAwOwomIzQzOwkJYnJlYWs7CiYjNDM7CWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1JYSUQ6CiYjNDM7CQlpZiAocnhfaW50ZXJuYWxfZGVsYXkgJmx0OyAwKQomIzQzOwkJCXJ4X2ludGVybmFsX2RlbGF5ID0gREFQODIxMVJfREVGQVVMVF9ERUxfU0VMOwomIzQzOwomIzQzOwkJdHhfaW50ZXJuYWxfZGVsYXkgPSAwOwomIzQzOwkJYnJlYWs7CiYjNDM7CWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX0lEOgomIzQzOwkJaWYgKHJ4X2ludGVybmFsX2RlbGF5ICZsdDsgMCkKJiM0MzsJCQlyeF9pbnRlcm5hbF9kZWxheSA9IERBUDgyMTFSX0RFRkFVTFRfREVMX1NFTDsKJiM0MzsJCWlmICh0eF9pbnRlcm5hbF9kZWxheSAmbHQ7IDApCiYjNDM7CQkJdHhfaW50ZXJuYWxfZGVsYXkgPSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUw7CiYjNDM7CQlicmVhazsKJiM0MzsJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfVFhJRDoKJiM0MzsJCWlmICh0eF9pbnRlcm5hbF9kZWxheSAmbHQ7IDApCiYjNDM7CQkJdHhfaW50ZXJuYWxfZGVsYXkgPSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUw7CiYjNDM7CiYjNDM7CQlyeF9pbnRlcm5hbF9kZWxheSA9IDA7CiYjNDM7CQlicmVhazsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCXBoeWRldl9lcnIocGh5ZGV2LCAmIzM0O1Vuc3VwcG9ydGVkIGludGVyZmFjZTogJWRcbiYjMzQ7LAomIzQzOwkJCSAgIHBoeWRldi0mZ3Q7aW50ZXJmYWNlKTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiYjNDM7CiYjNDM7CXNldCB8PSBGSUVMRF9QUkVQKERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLLCByeF9pbnRlcm5hbF9kZWxheSk7CiYjNDM7CXNldCB8PSBGSUVMRF9QUkVQKERBUDgyMTFSX1JHTUlJX1RYX0RFTF9NQVNLLCB0eF9pbnRlcm5hbF9kZWxheSk7CiYjNDM7CiYjNDM7CXJldCA9IGRhcDgyMTFyX21vZGlmeV9leHQocGh5ZGV2LCBEQVA4MjExUl9QSFlfQ09OLCBEQVA4MjExUl9QSFlfU1dfUlNULCAwKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CS8qIFdhaXQgZm9yIHJlc2V0IHNlbGYtY2xlYXIgKGZyb20gbG93IGFjdGl2ZSB0byBoaWdoKSAqLwomIzQzOwlyZXQgPSByZWFkX3BvbGxfdGltZW91dChkYXA4MjExcl9yZWFkX2V4dCwgdmFsLAomIzQzOwkJCQkodmFsICZhbXA7IERBUDgyMTFSX1BIWV9TV19SU1QpLAomIzQzOwkJCQkyMCwgMjAwLCBmYWxzZSwgcGh5ZGV2LCBEQVA4MjExUl9QSFlfQ09OKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CWlmICh2YWwgJmx0OyAwKQomIzQzOwkJcmV0dXJuIHZhbDsKJiM0MzsKJiM0MzsJcmV0ID0gZGFwODIxMXJfbW9kaWZ5X2V4dChwaHlkZXYsIERBUDgyMTFSX1JHTUlJX0NPTiwgREFQODIxMVJfUkdNSUlfQ09ORklHX01BU0ssIHNldCk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGRhcDgyMTFyX2RyaXZlcltdID0gewomIzQzOwl7CiYjNDM7CQlQSFlfSURfTUFUQ0hfRVhBQ1QoREFQODIxMVJfUEhZX0lEKSwKJiM0MzsJCS5uYW1lCQk9ICYjMzQ7REFQODIxMVIgR2lnYWJpdCBFdGhlcm5ldCYjMzQ7LAomIzQzOwkJLnNvZnRfcmVzZXQJPSBnZW5waHlfc29mdF9yZXNldCwKJiM0MzsJCS5jb25maWdfaW5pdAk9IGRhcDgyMTFyX2NvbmZpZ19pbml0LAomIzQzOwkJLnJlYWRfc3RhdHVzCT0gZ2VucGh5X3JlYWRfc3RhdHVzLAomIzQzOwkJLnNldF9sb29wYmFjawk9IGdlbnBoeV9sb29wYmFjaywKJiM0MzsJCS5jb25maWdfYW5lZwk9IGdlbnBoeV9jb25maWdfYW5lZywKJiM0MzsJCS5zdXNwZW5kCT0gZ2VucGh5X3N1c3BlbmQsCiYjNDM7CQkucmVzdW1lCQk9IGdlbnBoeV9yZXN1bWUsCiYjNDM7CX0sCiYjNDM7fTsKJiM0Mzttb2R1bGVfcGh5X2RyaXZlcihkYXA4MjExcl9kcml2ZXIpOwomIzQzOwomIzQzO01PRFVMRV9ERVNDUklQVElPTigmIzM0O0RBUDgyMTFSIEdpZ2FiaXQgRXRoZXJuZXQgUEhZIGRyaXZlciYjMzQ7KTsKJiM0MztNT0RVTEVfQVVUSE9SKCYjMzQ7QXJ0ZW0gU2hpbWtvICZsdDthLnNoaW1rby5kZXZAZ21haWwuY29tJmd0OyYjMzQ7KTsKJiM0MztNT0RVTEVfTElDRU5TRSgmIzM0O0dQTCYjMzQ7KTsKJiM0MzsKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIGRhcDgyMTFyX3RiW10gPSB7CiYjNDM7CXsgREFQODIxMVJfUEhZX0lELCBEQVA4MjExUl9QSFlfSURfTUFTSyB9LAomIzQzOwl7IC8qIHNlbnRpbmVsICovIH0KJiM0Mzt9OwomIzQzO01PRFVMRV9ERVZJQ0VfVEFCTEUobWRpbywgZGFwODIxMXJfdGIpOwomIzQzOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODU3CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogNDkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgREFQODIxMVIgUEhZIERyaXZlciBmb3IgVGVzdGFiaWxpdHkqKgoKT2theSwgc28gd2UmIzM5O3ZlIGdvdCBhIG5ldyBwYXRjaCBhZGRpbmcgYSBkcml2ZXIgZm9yIHRoZSBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFkuIEl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIGluY2x1ZGVzIHRoZSBuZWNlc3NhcnkgZG9jdW1lbnRhdGlvbiBiaW5kaW5nLCBLY29uZmlnIGFuZCBNYWtlZmlsZSBlbnRyaWVzLCBhbmQsIGNydWNpYWxseSwgdGhlIGRyaXZlciBjb2RlIGl0c2VsZiAoYGRhcDgyMTFyLmNgKS4gVGhlIGRyaXZlciBpbXBsZW1lbnRzIHRoZSB1c3VhbCBzdXNwZWN0czogYGRhcDgyMTFyX3JlYWRfZXh0YCwgYGRhcDgyMTFyX21vZGlmeV9leHRgLCBhbmQgYGRhcDgyMTFyX2NvbmZpZ19pbml0YC4gU3RhbmRhcmQgUEhZIGRyaXZlciBzdHVmZi4KCk15IGluaXRpYWwgY29uY2VybiwgbmF0dXJhbGx5LCBpcyBob3cgd2UgY2FuIGFjdHVhbGx5ICpyZWFjaCogdGhpcyB0aGluZyBpbiBhIGNvbnRyb2xsZWQgdGVzdGluZyBlbnZpcm9ubWVudCwgZXNwZWNpYWxseSBpbiBzb21ldGhpbmcgbGlrZSBRRU1VLiBQSFkgZHJpdmVycyBhcmUgdHlwaWNhbGx5IGFjY2Vzc2VkIHRocm91Z2ggYW4gTURJTyBidXMuIFNvLCB0aGUgcXVlc3Rpb24gaXMsIGhvdyBkbyB3ZSBnZXQgYXQgdGhlIERBUDgyMTFSIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dD8gQ2FuIHdlIGluc3RhbnRpYXRlIGEgdmlydHVhbCBNRElPIGJ1cz8gYG1kaW8tbW9ja3VwYCBzZWVtcyBsaWtlIHRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50LCBvciBtYXliZSBhIGBmaXhlZC1waHlgIHNldHVwIGlmIHdlIGNhbiByZWdpc3RlciB0aGVtIHNvbWVob3cuIEkgd2FzIGFsc28gd29uZGVyaW5nIGlmIG5ldGxpbmsvaW9jdGwgb24gYSBkdW1teSBkZXZpY2UgY291bGQgYmUgYSBwb3NzaWJpbGl0eSwgYnV0IE1ESU8gaXMgdGhlIHN0YW5kYXJkIGZvciB0aGVzZSB0aGluZ3MuCgpUaGVuLCBJIHN0YXJ0ZWQgdGhpbmtpbmcgYWJvdXQgc3l6a2FsbGVyLiBEb2VzIHN5emthbGxlciBvZmZlciBhIHdheSBpbj8gQ291bGQgd2UgaW5qZWN0IE1ESU8gZGV2aWNlcyBkaXJlY3RseSB1c2luZyBgaW9jdGwoU0lPQ1NNSUlSRUcpYCBvciBzb21ldGhpbmcgc2ltaWxhcj8gQWN0dWFsbHksIG5vLCBQSFkgZGV2aWNlcyBhcmUgKnByb2JlZCogdmlhIHRoZSBNRElPIGJ1cywgYW5kIHN5emthbGxlciYjMzk7cyBNRElPL25ldGRldiBzdXBwb3J0IHNlZW1zIGxpbWl0ZWQuIFdhaXQsIHdoYXQgYWJvdXQgbmV0bGluaz8gSSBrbm93IHN5emthbGxlciBoYXMgYHN5el9nZW5ldGxpbmtfZ2V0X2ZhbWlseWAsIHNvIGl0ICpjb3VsZCogaW50ZXJhY3Qgd2l0aCBQSFlzIHRoYXQgd2F5LiBPciwgY291bGQgd2UgZ28gdGhyb3VnaCB0dW4vdGFwPwoKQnV0IGhhbmcgb24uIFRoaXMgKmlzKiBhIGhhcmR3YXJlLXNwZWNpZmljIFBIWS4gSXQmIzM5O3Mgbm90IGxpa2VseSB0byBiZSBlbXVsYXRlZCBpbiBRRU1VLiBTbywgdGhlIGtleSBpcyBkZWZpbml0ZWx5IGdvaW5nIHRvIGJlIHVzaW5nIHNvZnR3YXJlIE1ESU8gYnVzIHNpbXVsYXRpb24uIEkgcmVjYWxsIGBtZGlvLW1vY2t1cGAsIGBmaXhlZC1waHlgLCB0aG9zZSB0eXBlcyBvZiBzb2x1dGlvbnMuLi4gaWYgd2UgY2FuIGp1c3QgZ2V0IHRoZW0gcmVnaXN0ZXJlZC4gVGhlIGNoYWxsZW5nZSB3aWxsIGJlIGlmIHN5emthbGxlciBpcyBzZXQgdXAgdG8gc3BlY2lmaWNhbGx5IGhhbmRsZSByZWdpc3RlcmluZyBhIGRldmljZSBsaWtlIHRoYXQuCgpXYWl0IGEgc2Vjb25kLi4uIGRvZXNuJiMzOTt0IHN5emthbGxlciBoYXZlIGBzeXpfbWRpb18uLi5gIGNhbGxzPyBNYXliZSBpdCBkb2VzISBJIHNob3VsZCBjaGVjayB0aGUgc3l6a2FsbGVyIGRvY3VtZW50YXRpb24gYW5kIGxvb2sgc3BlY2lmaWNhbGx5IGZvciB0aG9zZS4gVGhhdCBjb3VsZCBiZSB0aGUga2V5IHRvIHRlc3RpbmcgdGhpcyBkcml2ZXIuIExldCYjMzk7cyBsb29rIGludG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzeXpfbWRpbyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjkxOQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlIHdoYXQgSSBjYW4gY29tZSB1cCB3aXRoIGJhc2VkIG9uIHRoYXQgcHJvbXB0LiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgcmVuZGVyZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gZGVhbGluZyB3aXRoIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBTeXprYWxsZXImIzM5O3MgQ292ZXJhZ2Ugb2YgTURJTy9QSFkqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgdG8gd29yay4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGdvIHN0cmFpZ2h0IHRvIHN5emthbGxlci4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgd2UmIzM5O3ZlIGdvdCBhbnkgcHJlLWV4aXN0aW5nIGRlc2NyaXB0aW9ucyBvciB0ZXN0cyByZWxhdGVkIHRvIE1ESU8gb3IgUEhZIGludGVyYWN0aW9ucyB3aXRoaW4gdGhhdCBmdXp6aW5nIGZyYW1ld29yay4gSXQmIzM5O3MgYSBrZXkgc3RhcnRpbmcgcG9pbnQ7IEkgZG9uJiMzOTt0IHdhbnQgdG8gcmVpbnZlbnQgdGhlIHdoZWVsIGlmIHRoZXJlJiMzOTtzIGFscmVhZHkgc29tZSBmb3VuZGF0aW9uYWwgd29yayB0aGVyZS4gQSBxdWljayBzZWFyY2ggd2l0aGluIHN5emthbGxlciYjMzk7cyBjb2RlYmFzZSB3b3VsZCBiZSBteSBpbW1lZGlhdGUgdGFjdGljIC0gbGlrZWx5IGZvY3VzaW5nIG9uIGtleXdvcmRzIGxpa2UgJiMzNDtNRElPLCYjMzQ7ICYjMzQ7UEhZLCYjMzQ7IG9yIHBlcmhhcHMgbW9yZSBnZW5lcmljIHRlcm1zIHJlbGF0ZWQgdG8gbmV0d29yayBpbnRlcmZhY2UgY29udHJvbGxlcnMgKE5JQ3MpIG9yIHBoeXNpY2FsIGxheWVyIHRyYW5zY2VpdmVycywgZGVwZW5kaW5nIG9uIGhvdyBpdCBtaWdodCBiZSBpbXBsZW1lbnRlZCB3aXRoaW4gdGhlIGtlcm5lbC4gVGhlIGdvYWwgaXMgZWZmaWNpZW5jeSwgc28ga25vd2luZyBpZiBzeXprYWxsZXIgYWxyZWFkeSBoYXMgY292ZXJhZ2UgaW4gdGhpcyBhcmVhIHdvdWxkIHNhdmUgdGltZSBhbmQgY291bGQgcHJvdmlkZSBhIHVzZWZ1bCBiYXNlIGZvciBmdXJ0aGVyIGV4cGxvcmF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgdGhlc2UgdG9vbHMgY2FuIHNvbWV0aW1lcyBoYXZlIGRpZmZlcmVudCBuYW1pbmcgY29udmVudGlvbnMgb3IgaW50ZXJuYWwgaW1wbGVtZW50YXRpb25zLCBzbyBJJiMzOTtsbCBzdGF5IGZsZXhpYmxlIGFuZCBub3QgZ2V0IHRvbyBodW5nIHVwIG9uIHNwZWNpZmljIHRlcm1pbm9sb2d5IGlmIG5vdGhpbmcgcG9wcyByaWdodCBhd2F5LiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWRpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2RzYS9kc2EuYz02MjE9c3RhdGljIGludCBkc2Ffc3dpdGNoX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5uZXQvZHNhL2RzYS5jLTY1My1cdGlmICghZHMtXHUwMDNldXNlcl9taWlfYnVzIFx1MDAyNlx1MDAyNiBkcy1cdTAwM2VvcHMtXHUwMDNlcGh5X3JlYWQpIHtcbm5ldC9kc2EvZHNhLmM6NjU0Olx0XHRkcy1cdTAwM2V1c2VyX21paV9idXMgPSBtZGlvYnVzX2FsbG9jKCk7XG5uZXQvZHNhL2RzYS5jLTY1NS1cdFx0aWYgKCFkcy1cdTAwM2V1c2VyX21paV9idXMpIHtcbi0tXG5uZXQvZHNhL2RzYS5jLTY2MS1cbm5ldC9kc2EvZHNhLmM6NjYyOlx0XHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKGRzLVx1MDAzZXVzZXJfbWlpX2J1cyk7XG5uZXQvZHNhL2RzYS5jLTY2My1cdFx0aWYgKGVyciBcdTAwM2MgMClcbi0tXG5uZXQvZHNhL2RzYS5jLTY3My1cdGlmIChkcy1cdTAwM2V1c2VyX21paV9idXMgXHUwMDI2XHUwMDI2IGRzLVx1MDAzZW9wcy1cdTAwM2VwaHlfcmVhZClcbm5ldC9kc2EvZHNhLmM6Njc0Olx0XHRtZGlvYnVzX2ZyZWUoZHMtXHUwMDNldXNlcl9taWlfYnVzKTtcbm5ldC9kc2EvZHNhLmMtNjc1LXRlYXJkb3duOlxuLS1cbm5ldC9kc2EvZHNhLmM9Njg1PXN0YXRpYyB2b2lkIGRzYV9zd2l0Y2hfdGVhcmRvd24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbm5ldC9kc2EvZHNhLmMtNjkyLVx0aWYgKGRzLVx1MDAzZXVzZXJfbWlpX2J1cyBcdTAwMjZcdTAwMjYgZHMtXHUwMDNlb3BzLVx1MDAzZXBoeV9yZWFkKSB7XG5uZXQvZHNhL2RzYS5jOjY5MzpcdFx0bWRpb2J1c191bnJlZ2lzdGVyKGRzLVx1MDAzZXVzZXJfbWlpX2J1cyk7XG5uZXQvZHNhL2RzYS5jOjY5NDpcdFx0bWRpb2J1c19mcmVlKGRzLVx1MDAzZXVzZXJfbWlpX2J1cyk7XG5uZXQvZHNhL2RzYS5jLTY5NS1cdFx0ZHMtXHUwMDNldXNlcl9taWlfYnVzID0gTlVMTDtcbi0tXG5uZXQvZHNhL3BvcnQuYy0xMS0jaW5jbHVkZSBcdTAwM2NsaW51eC9ub3RpZmllci5oXHUwMDNlXG5uZXQvZHNhL3BvcnQuYzoxMjojaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9tZGlvLmhcdTAwM2Vcbm5ldC9kc2EvcG9ydC5jLTEzLSNpbmNsdWRlIFx1MDAzY2xpbnV4L29mX25ldC5oXHUwMDNlXG4tLVxubmV0L2RzYS9wb3J0LmM9MTcyNj1zdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGRzYV9zd2l0Y2hlc19hcHBseV93b3JrYXJvdW5kc1tdID0ge1xuLS1cbm5ldC9kc2EvcG9ydC5jLTE3OTYtI2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9EU0FfU01TQ19MQU45MzAzX01ESU8pXG5uZXQvZHNhL3BvcnQuYzoxNzk3Olx0XCYjMzQ7c21zYyxsYW45MzAzLW1kaW9cJiMzNDssXG5uZXQvZHNhL3BvcnQuYy0xNzk4LSNlbmRpZlxuLS1cbm5ldC9kc2EvdXNlci5jLTEzLSNpbmNsdWRlIFx1MDAzY2xpbnV4L29mX25ldC5oXHUwMDNlXG5uZXQvZHNhL3VzZXIuYzoxNDojaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9tZGlvLmhcdTAwM2Vcbm5ldC9kc2EvdXNlci5jOjE1OiNpbmNsdWRlIFx1MDAzY2xpbnV4L21kaW8uaFx1MDAzZVxubmV0L2RzYS91c2VyLmMtMTYtI2luY2x1ZGUgXHUwMDNjbmV0L3J0bmV0bGluay5oXHUwMDNlXG4tLVxubmV0L2RzYS91c2VyLmM9MjYzNz1zdGF0aWMgaW50IGRzYV91c2VyX3BoeV9jb25uZWN0KHN0cnVjdCBuZXRfZGV2aWNlICp1c2VyX2RldiwgaW50IGFkZHIsXG4tLVxubmV0L2RzYS91c2VyLmMtMjY0Mi1cbm5ldC9kc2EvdXNlci5jOjI2NDM6XHR1c2VyX2Rldi1cdTAwM2VwaHlkZXYgPSBtZGlvYnVzX2dldF9waHkoZHMtXHUwMDNldXNlcl9taWlfYnVzLCBhZGRyKTtcbm5ldC9kc2EvdXNlci5jLTI2NDQtXHRpZiAoIXVzZXJfZGV2LVx1MDAzZXBoeWRldikge1xuLS1cbm5ldC9ldGh0b29sL2NvbW1vbi5jPTU4Nz1jb252ZXJ0X2xlZ2FjeV9zZXR0aW5nc190b19saW5rX2tzZXR0aW5ncyhcbi0tXG5uZXQvZXRodG9vbC9jb21tb24uYy02MjEtXHRcdD0gbGVnYWN5X3NldHRpbmdzLVx1MDAzZWF1dG9uZWc7XG5uZXQvZXRodG9vbC9jb21tb24uYzo2MjI6XHRsaW5rX2tzZXR0aW5ncy1cdTAwM2ViYXNlLm1kaW9fc3VwcG9ydFxubmV0L2V0aHRvb2wvY29tbW9uLmM6NjIzOlx0XHQ9IGxlZ2FjeV9zZXR0aW5ncy1cdTAwM2VtZGlvX3N1cHBvcnQ7XG5uZXQvZXRodG9vbC9jb21tb24uYy02MjQtXHRsaW5rX2tzZXR0aW5ncy1cdTAwM2ViYXNlLmV0aF90cF9tZGl4XG4tLVxubmV0L2V0aHRvb2wvaW9jdGwuYz0zODI9Y29udmVydF9saW5rX2tzZXR0aW5nc190b19sZWdhY3lfc2V0dGluZ3MoXG4tLVxubmV0L2V0aHRvb2wvaW9jdGwuYy00MTItXHRcdD0gbGlua19rc2V0dGluZ3MtXHUwMDNlYmFzZS5hdXRvbmVnO1xubmV0L2V0aHRvb2wvaW9jdGwuYzo0MTM6XHRsZWdhY3lfc2V0dGluZ3MtXHUwMDNlbWRpb19zdXBwb3J0XG5uZXQvZXRodG9vbC9pb2N0bC5jOjQxNDpcdFx0PSBsaW5rX2tzZXR0aW5ncy1cdTAwM2ViYXNlLm1kaW9fc3VwcG9ydDtcbm5ldC9ldGh0b29sL2lvY3RsLmMtNDE1LVx0bGVnYWN5X3NldHRpbmdzLVx1MDAzZWV0aF90cF9tZGl4XG4tLVxubmV0L2V0aHRvb2wvcGh5LmM9NzA9c3RhdGljIGludCBwaHlfcHJlcGFyZV9kYXRhKGNvbnN0IHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2luZm8sXG4tLVxubmV0L2V0aHRvb2wvcGh5LmMtOTEtXG5uZXQvZXRodG9vbC9waHkuYzo5MjpcdHJlcF9kYXRhLVx1MDAzZW5hbWUgPSBrc3RyZHVwKGRldl9uYW1lKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldiksIEdGUF9LRVJORUwpO1xubmV0L2V0aHRvb2wvcGh5LmMtOTMtXHRpZiAoIXJlcF9kYXRhLVx1MDAzZW5hbWUpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQ5MgoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDEzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBTeXprYWxsZXIgJmFtcDsgUEhZIERyaXZlciBCcmFpbnN0b3JtKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHdlIGNhbiBsZXZlcmFnZSBzeXprYWxsZXIgdG8gdGVzdCBQSFkgZHJpdmVycywgc3BlY2lmaWNhbGx5IHRoYXQgYGRhcDgyMTFyYCBvbmUuIFRoZSBxdWVzdGlvbiBpcywgY2FuIHdlIGFjdHVhbGx5ICpnZXQqIHRoYXQgZHJpdmVyIGluc3RhbnRpYXRlZCBpbiBRRU1VPyBTeXprYWxsZXImIzM5O3Mgc3RyZW5ndGggbGllcyBpbiB0ZXN0aW5nIGRyaXZlcnMsIGJ1dCBpdCYjMzk7cyB0aGUgaW5zdGFudGlhdGlvbiB0aGF0JiMzOTtzIHRoZSBodXJkbGUgaGVyZS4KClR5cGljYWxseSwgUEhZIGRyaXZlcnMgZ2V0IG1hdGNoZWQgYmFzZWQgb24gdGhlaXIgUEhZIElEIHJlYWQgZnJvbSB0aGUgTURJTyBidXMuIFdpdGhvdXQgdGhlIHBoeXNpY2FsIGhhcmR3YXJlIHJlcG9ydGluZyB0aGUgY29ycmVjdCBJRCAoYDB4MDAwODAxMUJgKSwgdGhlIGRyaXZlciBqdXN0IHdvbiYjMzk7dCBwcm9iZSwgcmlnaHQ/IFVubGVzcy4uLiB3ZSBjYW4gdHJpY2sgaXQuIERldmljZSB0cmVlIGVudHJpZXMgY2FuIGZvcmNlIGluc3RhbnRpYXRpb24sIHRoYXQmIzM5O3Mgb25lIGF2ZW51ZS4gT3IsIGFuZCB0aGlzIGlzIHdoZXJlIHN5emthbGxlciBtaWdodCBjb21lIGluLCBjb3VsZCBpdCBwb3NzaWJseSBzaW11bGF0ZSBhIHNvZnR3YXJlIE1ESU8gYnVzIHRoYXQgZmFrZXMgdGhlIFBIWSBJRD8KClRoZSBrZXkgaGVyZSBpcyB3aGV0aGVyIHN5emthbGxlciBoYXMgdGhlIGFiaWxpdHkgdG8gaW5qZWN0IG9yIHNwZWNpZnkgTURJTyBkZXZpY2VzLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIHN5emthbGxlciBkb2N1bWVudGF0aW9uIGFuZCBjb2RlIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgbWVjaGFuaXNtIGZvciBjcmVhdGluZyB0aGlzIGtpbmQgb2YgdmlydHVhbCBoYXJkd2FyZSBlbnZpcm9ubWVudC4gSWYgd2UgY2FuIGluamVjdCB0aGF0IE1ESU8gZGV2aWNlIHdpdGggdGhlIGNvcnJlY3QgUEhZIElELCB3ZSYjMzk7cmUgZ29sZGVuLiBUaGF0JiMzOTtzIHRoZSBmaXJzdCB0aGluZyB0byBjaGVjay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW8tbW9ja3VwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4OTIzCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6CgoqKkRlYnVnZ2luZyB0aGUgUEhZIERyaXZlcioqCgpIbW0sIHNvbWV0aGluZyYjMzk7cyBub3QgcmlnaHQuIEkgd2FzIGV4cGVjdGluZyB0byBzZWUgYG1kaW8tbW9ja3VwYCBpbiB0aGUgc3lzdGVtLCBidXQgaXQmIzM5O3Mgbm90IHByZXNlbnQuIFRoYXQmIzM5O3Mgb2RkLiBMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhlIHVzdWFsIHN1c3BlY3RzLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUmIzM5O3MgYSBtb2NrdXAgb3IgZHVtbXkgUEhZIGRyaXZlciBoaWRpbmcgaW4gYGRyaXZlcnMvbmV0L3BoeS9gLiBJdCYjMzk7cyBwb3NzaWJsZSBpdCYjMzk7cyBnb3QgYSBzbGlnaHRseSBkaWZmZXJlbnQgbmFtaW5nIGNvbnZlbnRpb24uIFRpbWUgdG8gZ28gc3BlbHVua2luZyBpbiB0aGUgY29kZSBiYXNlIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7YWRpbi5jJiMzNDssCiAgICAmIzM0O2FkaW4xMTAwLmMmIzM0OywKICAgICYjMzQ7YWlyX2FuODgwMS5jJiMzNDssCiAgICAmIzM0O2Fpcl9lbjg4MTFoLmMmIzM0OywKICAgICYjMzQ7YWlyX3BoeV9saWIuYyYjMzQ7LAogICAgJiMzNDthaXJfcGh5X2xpYi5oJiMzNDssCiAgICAmIzM0O2FtZC5jJiMzNDssCiAgICAmIzM0O2FzMjF4eHguYyYjMzQ7LAogICAgJiMzNDtheDg4Nzk2Yi5jJiMzNDssCiAgICAmIzM0O2F4ODg3OTZiX3J1c3QucnMmIzM0OywKICAgICYjMzQ7YmNtLWN5Z251cy5jJiMzNDssCiAgICAmIzM0O2JjbS1waHktbGliLmMmIzM0OywKICAgICYjMzQ7YmNtLXBoeS1saWIuaCYjMzQ7LAogICAgJiMzNDtiY20tcGh5LXB0cC5jJiMzNDssCiAgICAmIzM0O2JjbTU0MTQwLmMmIzM0OywKICAgICYjMzQ7YmNtNjN4eC5jJiMzNDssCiAgICAmIzM0O2JjbTd4eHguYyYjMzQ7LAogICAgJiMzNDtiY204NDg4MS5jJiMzNDssCiAgICAmIzM0O2JjbTg3eHguYyYjMzQ7LAogICAgJiMzNDticm9hZGNvbS5jJiMzNDssCiAgICAmIzM0O2NpY2FkYS5jJiMzNDssCiAgICAmIzM0O2NvcnRpbmEuYyYjMzQ7LAogICAgJiMzNDtkYXA4MjExci5jJiMzNDssCiAgICAmIzM0O2Rhdmljb20uYyYjMzQ7LAogICAgJiMzNDtkcDgzNjQwLmMmIzM0OywKICAgICYjMzQ7ZHA4MzY0MF9yZWcuaCYjMzQ7LAogICAgJiMzNDtkcDgzODIyLmMmIzM0OywKICAgICYjMzQ7ZHA4Mzg0OC5jJiMzNDssCiAgICAmIzM0O2RwODM4NjcuYyYjMzQ7LAogICAgJiMzNDtkcDgzODY5LmMmIzM0OywKICAgICYjMzQ7ZHA4M3RjODExLmMmIzM0OywKICAgICYjMzQ7ZHA4M3RkNTEwLmMmIzM0OywKICAgICYjMzQ7ZHA4M3RnNzIwLmMmIzM0OywKICAgICYjMzQ7ZXQxMDExYy5jJiMzNDssCiAgICAmIzM0O2ZpeGVkX3BoeS5jJiMzNDssCiAgICAmIzM0O2ljcGx1cy5jJiMzNDssCiAgICAmIzM0O2ludGVsLXh3YXkuYyYjMzQ7LAogICAgJiMzNDtsaW5rbW9kZS5jJiMzNDssCiAgICAmIzM0O2x4dC5jJiMzNDssCiAgICAmIzM0O21hcnZlbGwtODhxMnh4eC5jJiMzNDssCiAgICAmIzM0O21hcnZlbGwtODh4MjIyMi5jJiMzNDssCiAgICAmIzM0O21hcnZlbGwuYyYjMzQ7LAogICAgJiMzNDttYXJ2ZWxsMTBnLmMmIzM0OywKICAgICYjMzQ7bWRpby1vcGVuLWFsbGlhbmNlLmgmIzM0OywKICAgICYjMzQ7bWRpb19idXMuYyYjMzQ7LAogICAgJiMzNDttZGlvX2J1c19wcm92aWRlci5jJiMzNDssCiAgICAmIzM0O21kaW9fZGV2aWNlLmMmIzM0OywKICAgICYjMzQ7bWRpb19kZXZyZXMuYyYjMzQ7LAogICAgJiMzNDttZXNvbi1neGwuYyYjMzQ7LAogICAgJiMzNDttaWNyZWwuYyYjMzQ7LAogICAgJiMzNDttaWNyb2NoaXAuYyYjMzQ7LAogICAgJiMzNDttaWNyb2NoaXBfcmRzX3B0cC5jJiMzNDssCiAgICAmIzM0O21pY3JvY2hpcF9yZHNfcHRwLmgmIzM0OywKICAgICYjMzQ7bWljcm9jaGlwX3QxLmMmIzM0OywKICAgICYjMzQ7bWljcm9jaGlwX3Qxcy5jJiMzNDssCiAgICAmIzM0O21paV90aW1lc3RhbXBlci5jJiMzNDssCiAgICAmIzM0O21vdG9yY29tbS5jJiMzNDssCiAgICAmIzM0O214bC04NjExMC5jJiMzNDssCiAgICAmIzM0O214bC1ncHkuYyYjMzQ7LAogICAgJiMzNDtuYXRpb25hbC5jJiMzNDssCiAgICAmIzM0O25jbjI2MDAwLmMmIzM0OywKICAgICYjMzQ7bnhwLWM0NS10amExMXh4LW1hY3NlYy5jJiMzNDssCiAgICAmIzM0O254cC1jNDUtdGphMTF4eC5jJiMzNDssCiAgICAmIzM0O254cC1jNDUtdGphMTF4eC5oJiMzNDssCiAgICAmIzM0O254cC1jYnR4LmMmIzM0OywKICAgICYjMzQ7bnhwLXRqYTExeHguYyYjMzQ7LAogICAgJiMzNDtvcGVuX2FsbGlhbmNlX2hlbHBlcnMuYyYjMzQ7LAogICAgJiMzNDtvcGVuX2FsbGlhbmNlX2hlbHBlcnMuaCYjMzQ7LAogICAgJiMzNDtwaHktYzQ1LmMmIzM0OywKICAgICYjMzQ7cGh5LWNhcHMuaCYjMzQ7LAogICAgJiMzNDtwaHktY29yZS5jJiMzNDssCiAgICAmIzM0O3BoeS5jJiMzNDssCiAgICAmIzM0O3BoeV9jYXBzLmMmIzM0OywKICAgICYjMzQ7cGh5X2RldmljZS5jJiMzNDssCiAgICAmIzM0O3BoeV9sZWRfdHJpZ2dlcnMuYyYjMzQ7LAogICAgJiMzNDtwaHlfbGlua190b3BvbG9neS5jJiMzNDssCiAgICAmIzM0O3BoeV9wYWNrYWdlLmMmIzM0OywKICAgICYjMzQ7cGh5X3BvcnQuYyYjMzQ7LAogICAgJiMzNDtwaHlsaWItaW50ZXJuYWwuaCYjMzQ7LAogICAgJiMzNDtwaHlsaWIuaCYjMzQ7LAogICAgJiMzNDtwaHlsaW5rLmMmIzM0OywKICAgICYjMzQ7cXNlbWkuYyYjMzQ7LAogICAgJiMzNDtxdDIwMjUucnMmIzM0OywKICAgICYjMzQ7cm9ja2NoaXAuYyYjMzQ7LAogICAgJiMzNDtzZnAtYnVzLmMmIzM0OywKICAgICYjMzQ7c2ZwLmMmIzM0OywKICAgICYjMzQ7c2ZwLmgmIzM0OywKICAgICYjMzQ7c21zYy5jJiMzNDssCiAgICAmIzM0O3N0ZTEwWHAuYyYjMzQ7LAogICAgJiMzNDtzdHVicy5jJiMzNDssCiAgICAmIzM0O3N3cGh5LmMmIzM0OywKICAgICYjMzQ7c3dwaHkuaCYjMzQ7LAogICAgJiMzNDt0ZXJhbmV0aWNzLmMmIzM0OywKICAgICYjMzQ7dVBENjA2MjAuYyYjMzQ7LAogICAgJiMzNDt2aXRlc3NlLmMmIzM0OywKICAgICYjMzQ7eGlsaW54X2dtaWkycmdtaWkuYyYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogWwogICAgJiMzNDthcXVhbnRpYSYjMzQ7LAogICAgJiMzNDttZWRpYXRlayYjMzQ7LAogICAgJiMzNDttc2NjJiMzNDssCiAgICAmIzM0O3Fjb20mIzM0OywKICAgICYjMzQ7cmVhbHRlayYjMzQ7CiAgXQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDg3CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMzM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEN1cnJlbnQgQW5hbHlzaXMgb2YgdGhlIFBIWSBEZXZpY2UgSW5qZWN0aW9uIENoYWxsZW5nZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgZmlsZXM6IGBmaXhlZF9waHkuY2AsIGBtZGlvX2J1cy5jYCwgYG1kaW9fZGV2aWNlLmNgLCBhbmQgYHBoeV9kZXZpY2UuY2AuIFRoZSBjb3JlIGlzc3VlIGlzIHRyeWluZyB0byBnZXQgc3l6a2FsbGVyIHRvIGludGVyYWN0IHdpdGggYSBzcGVjaWZpYyBQSFkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYGRhcDgyMTFyX2NvbmZpZ19pbml0YC4gVGhlIGltbWVkaWF0ZSBwcm9ibGVtIGlzIHRoYXQgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IHNlZW0gdG8gaGF2ZSBhIHN0cmFpZ2h0Zm9yd2FyZCB3YXkgdG8gaW5qZWN0IGEgUEhZIGRldmljZSB3aXRoIGFuIGFyYml0cmFyeSBJRC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRvIGZvcmNlIHRoYXQgZHJpdmVyIHRvIGJpbmQuCgpUaGUgb2J2aW91cyByb3V0ZXMgYXJlIGVpdGhlciB0aHJvdWdoIGEgc29mdHdhcmUgTURJTyBidXMgdGhhdCB1c2Vyc3BhY2UgY2FuIGNvbnRyb2wgdG8gcmVnaXN0ZXIgUEhZcywgb3Igc29tZSBjbGV2ZXIgdXNlIG9mIG5ldGxpbmsuIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgc3l6a2FsbGVyICpjYW4qIGV2ZW4gcmVhY2ggYGRhcDgyMTFyX2NvbmZpZ19pbml0YCBkaXJlY3RseS4gVGhlIGRyaXZlciBiaW5kcyBpdHNlbGYgdmlhIGBtb2R1bGVfcGh5X2RyaXZlcihkYXA4MjExcl9kcml2ZXIpYC4gSXQgc2VlbXMgaXQgbG9va3MgZm9yIGEgUEhZIHdpdGggdGhlIElEIGAweDAwMDgwMTFCYC4gU28sIHRoZSBtaWxsaW9uLWRvbGxhciBxdWVzdGlvbjogY2FuIEkgY3JlYXRlIGEgUEhZIGRldmljZSAqd2l0aCogdGhhdCBJRCB1c2luZyBzeXprYWxsZXI/CgpgZml4ZWRfcGh5X3JlZ2lzdGVyYCBpcyBhIHBvc3NpYmlsaXR5IGZvciByZWdpc3RlcmluZyBhIGZpeGVkIFBIWSwgYnV0IGl0JiMzOTtzIHR5cGljYWxseSB1c2VkIGludGVybmFsbHkgYnkgb3RoZXIgZHJpdmVycy4gSSBuZWVkIHRvIGZpbmQgYSB1c2Vyc3BhY2UgaW50ZXJmYWNlIHRoYXQgY2FuIGNyZWF0ZSBNRElPIGRldmljZXMgb3IgUEhZcyBkaXJlY3RseS4gTGV0JiMzOTtzIHNlZS4uLiBjYW4gYFNJT0NTTUlJUkVHYCBkbyB0aGUgdHJpY2s/IE5vLCB0aGF0IGp1c3Qgd3JpdGVzIHRvIGEgcmVnaXN0ZXIsIGFuZCB0aGUgUEhZIElEIGlzIGNoZWNrZWQgZHVyaW5nIE1ESU8gYnVzIHNjYW5uaW5nLCBzbyBpdCB3b24mIzM5O3QgaGVscC4KCkkga25vdyBzeXprYWxsZXIgY2FuIHVzZSB2aXJ0dWFsIG5ldHdvcmsgZGV2aWNlcyBsaWtlIGB0dW5gIG9yIGB0YXBgLCBidXQgdGhvc2UgZG9uJiMzOTt0IGhhdmUgYW4gTURJTyBidXMuIFdoYXQgYWJvdXQgb3RoZXIgdmlydHVhbCBkZXZpY2VzPyBgbWFjc2VjYCwgYHZldGhgLCBgZHVtbXlgLCBgbWFjdmxhbmAuLi4gbm9wZSwgbm9uZSBvZiB0aG9zZSBoYXZlIGFuIE1ESU8gYnVzIGVpdGhlci4gSXMgdGhlcmUgYW55IGNoYW5jZSB0aGF0IGBuZXRkZXZzaW1gIG1pZ2h0IG9mZmVyIHNvbWV0aGluZz8gSXQmIzM5O3MgdGhlIG9ubHkgb3RoZXIgbmV0d29yayBkZXZpY2UgdGhhdCYjMzk7cyBldmVuIHJlbW90ZWx5IGluIHRoZSBiYWxscGFyayBoZXJlLiBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gaW52ZXN0aWdhdGUgdGhhdCBmdXJ0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA5MjIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRlbHZpbmcgaW50byBgZHNhX2xvb3BgIGFuZCBNRElPIEltcGxpY2F0aW9ucyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLi4uSSYjMzk7bSBtdWxsaW5nIG92ZXIgcG90ZW50aWFsIGNvbXBvbmVudHMgYW5kIGNvbmZpZ3VyYXRpb25zLiBUaGF0IGBkc2FfbG9vcGAgY29uc3RydWN0Li4uIGhtbSwgYSBtb2NrIERTQSBzd2l0Y2gsIHlvdSBzYXk/IFRoZSAmIzM0O21vY2smIzM0OyBhc3BlY3QgaXMgaW50ZXJlc3RpbmcuIEl0IGltbWVkaWF0ZWx5IHRyaWdnZXJzIHRob3VnaHRzIGFib3V0IHRoZSBpbnRlbmRlZCBwdXJwb3NlIOKAkyBwZXJoYXBzIHRlc3RpbmcsIHNpbXVsYXRpb24sIG9yIHByb3ZpZGluZyBhIGNvbnRyb2xsZWQgZW52aXJvbm1lbnQgZm9yIERTQSBpbnRlcmFjdGlvbnMuCgpOb3csIHRoZSBjb25uZWN0aW9uIHRoYXQgcmVhbGx5IHNwYXJrcyBteSBjdXJpb3NpdHkgaXMgdGhlIHBvdGVudGlhbCBmb3IgYW4gTURJTyBidXMgd2l0aGluIHRoYXQgYGRzYV9sb29wYCBzZXR1cC4gSWYgaXQgKmRvZXMqIGVtcGxveSBhbiBNRElPIGJ1cywgdGhhdCBvcGVucyB1cCBhIHdob2xlIHNldCBvZiBwb3NzaWJpbGl0aWVzLCBhbmQgcXVlc3Rpb25zLiBJcyBpdCBlbXVsYXRlZD8gSXMgdGhlcmUgYSBzb2Z0d2FyZS1kZWZpbmVkIE1ESU8gYWNjZXNzIGxheWVyLCBvciBpcyBpdCBhIGRpcmVjdCBoYXJkd2FyZSBpbnRlcmZhY2U/IFVuZGVyc3RhbmRpbmcgaG93IHRoZSBNRElPIG9wZXJhdGlvbnMgYXJlIGhhbmRsZWQgd2l0aGluIHRoaXMgbW9jayBlbnZpcm9ubWVudCBpcyBjcnVjaWFsLiBJdCBjaGFuZ2VzIGhvdyBJIHdvdWxkIGFwcHJvYWNoIGRlYnVnZ2luZywgZHJpdmVyIGRldmVsb3BtZW50LCBvciBhbnkgYW5hbHlzaXMgaW52b2x2aW5nIHRoaXMgY29tcG9uZW50LiBJJiMzOTttIHdvbmRlcmluZyBpZiB0aGlzIG9mZmVycyBhbiBhdmVudWUgZm9yIHZhbGlkYXRpbmcgb3IgZGV2ZWxvcGluZyBEU0Etc3BlY2lmaWMgTURJTyBpbnRlcmFjdGlvbnMgaW4gaXNvbGF0aW9uLCB3aXRob3V0IGRlcGVuZGluZyBvbiB0aGUgY2hhcmFjdGVyaXN0aWNzIG9mIGEgcmVhbCBoYXJkd2FyZSBzd2l0Y2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz03ND1zdGF0aWMgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldnNbUEhZX01BWF9BRERSXTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjc1OnN0YXRpYyBzdHJ1Y3QgbWRpb19kZXZpY2UgKnN3aXRjaF9tZGlvZGV2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzYtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9MTg0PXN0YXRpYyBpbnQgZHNhX2xvb3BfcGh5X3JlYWQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHJlZ251bSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODktXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxOTA6XHRyZXQgPSBtZGlvYnVzX3JlYWRfbmVzdGVkKGJ1cywgcHMtXHUwMDNlcG9ydF9iYXNlICYjNDM7IHBvcnQsIHJlZ251bSk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xOTEtXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTE5OT1zdGF0aWMgaW50IGRzYV9sb29wX3BoeV93cml0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwNS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIwNjpcdHJldCA9IG1kaW9idXNfd3JpdGVfbmVzdGVkKGJ1cywgcHMtXHUwMDNlcG9ydF9iYXNlICYjNDM7IHBvcnQsIHJlZ251bSwgdmFsdWUpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjA3LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz0yNTA9c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fYWRkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjYzLVx0LyogSnVzdCBkbyBhIHNsZWVwaW5nIG9wZXJhdGlvbiB0byBtYWtlIGxvY2tkZXAgY2hlY2tzIGVmZmVjdGl2ZSAqL1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjY0Olx0bWRpb2J1c19yZWFkKGJ1cywgcHMtXHUwMDNlcG9ydF9iYXNlICYjNDM7IHBvcnQsIE1JSV9CTVNSKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI2NS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz0yODM9c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjkyLVx0LyogSnVzdCBkbyBhIHNsZWVwaW5nIG9wZXJhdGlvbiB0byBtYWtlIGxvY2tkZXAgY2hlY2tzIGVmZmVjdGl2ZSAqL1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjkzOlx0bWRpb2J1c19yZWFkKGJ1cywgcHMtXHUwMDNlcG9ydF9iYXNlICYjNDM7IHBvcnQsIE1JSV9CTVNSKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5NC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz0zMzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBkc2FfbG9vcF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU1OnN0YXRpYyBpbnQgZHNhX2xvb3BfZHJ2X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1Ni17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTc6XHRzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgKnBkYXRhID0gbWRpb2Rldi1cdTAwM2VkZXYucGxhdGZvcm1fZGF0YTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1OC1cdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcztcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNjQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNjU6XHRkcyA9IGRldm1fa3phbGxvYyhcdTAwMjZtZGlvZGV2LVx1MDAzZWRldiwgc2l6ZW9mKCpkcyksIEdGUF9LRVJORUwpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzY2LVx0aWYgKCFkcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNjgtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNjk6XHRkcy1cdTAwM2VkZXYgPSBcdTAwMjZtZGlvZGV2LVx1MDAzZWRldjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM3MC1cdGRzLVx1MDAzZW51bV9wb3J0cyA9IERTQV9MT09QX05VTV9QT1JUUztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM3MS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM3MjpcdHBzID0gZGV2bV9remFsbG9jKFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2LCBzaXplb2YoKnBzKSwgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNzMtXHRpZiAoIXBzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4MS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM4MjpcdGRzLVx1MDAzZWRldiA9IFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzgzLVx0ZHMtXHUwMDNlb3BzID0gXHUwMDI2ZHNhX2xvb3BfZHJpdmVyO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzg0LVx0ZHMtXHUwMDNlcHJpdiA9IHBzO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Mzg1Olx0cHMtXHUwMDNlYnVzID0gbWRpb2Rldi1cdTAwM2VidXM7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zODYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozODc6XHRkZXZfc2V0X2RydmRhdGEoXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXYsIGRzKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4OC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTAtXHRpZiAoIXJldClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM5MTpcdFx0ZGV2X2luZm8oXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXYsIFwmIzM0OyVzOiAweCUweFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5Mi1cdFx0XHQgcGRhdGEtXHUwMDNlbmFtZSwgcGRhdGEtXHUwMDNlZW5hYmxlZF9wb3J0cyk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Mzk3OnN0YXRpYyB2b2lkIGRzYV9sb29wX2Rydl9yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk4LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM5OTpcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZtZGlvZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MDAtXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDEwLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDExOnN0YXRpYyB2b2lkIGRzYV9sb29wX2Rydl9zaHV0ZG93bihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MTIte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDEzOlx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxNC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MTktXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MjA6XHRkZXZfc2V0X2RydmRhdGEoXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXYsIE5VTEwpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDIxLX1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyMi1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyMzpzdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIGRzYV9sb29wX2RydiA9IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyNDpcdC5tZGlvZHJ2LmRyaXZlclx0PSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjUtXHRcdC5uYW1lXHQ9IFwmIzM0O2RzYS1sb29wXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTQzMj1zdGF0aWMgaW50IGRzYV9sb29wX2J1c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM0LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzNTpcdHJldHVybiBkcnYgPT0gXHUwMDI2ZHNhX2xvb3BfZHJ2Lm1kaW9kcnYuZHJpdmVyO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM2LX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz00Mzg9c3RhdGljIHZvaWQgZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ1LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ2OnN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2Rldih2b2lkKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ3LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NjItXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NjM6XHRidXMgPSBtZGlvX2ZpbmRfYnVzKFwmIzM0O2ZpeGVkLTBcJiMzNDspO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDY0LVx0aWYgKFdBUk5fT04oIWJ1cykpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDY2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDY3Olx0c3dpdGNoX21kaW9kZXYgPSBtZGlvX2RldmljZV9jcmVhdGUoYnVzLCAzMSk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Njg6XHRpZiAoSVNfRVJSKHN3aXRjaF9tZGlvZGV2KSlcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ2OS1cdFx0Z290byBvdXQ7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzE6XHRzd2l0Y2hfbWRpb2Rldi1cdTAwM2VidXNfbWF0Y2ggPSBkc2FfbG9vcF9idXNfbWF0Y2g7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzI6XHRzd2l0Y2hfbWRpb2Rldi1cdTAwM2VkZXYucGxhdGZvcm1fZGF0YSA9IFx1MDAyNmRzYV9sb29wX3BkYXRhO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDczLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDc0Olx0cmV0ID0gbWRpb19kZXZpY2VfcmVnaXN0ZXIoc3dpdGNoX21kaW9kZXYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDc1LVx0aWYgKHJldClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ3NjpcdFx0bWRpb19kZXZpY2VfZnJlZShzd2l0Y2hfbWRpb2Rldik7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00Nzctb3V0OlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTQ4Mj1zdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDg2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDg3Olx0cmV0ID0gZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5My1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5NDpcdHJldCA9IG1kaW9fZHJpdmVyX3JlZ2lzdGVyKFx1MDAyNmRzYV9sb29wX2Rydik7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTUtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTYtXHRcdGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3RlcigpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk3Olx0XHRtZGlvX2RldmljZV9yZW1vdmUoc3dpdGNoX21kaW9kZXYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk4Olx0XHRtZGlvX2RldmljZV9mcmVlKHN3aXRjaF9tZGlvZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5OS1cdH1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz01MDU9c3RhdGljIHZvaWQgX19leGl0IGRzYV9sb29wX2V4aXQodm9pZClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwNi17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDc6XHRtZGlvX2RyaXZlcl91bnJlZ2lzdGVyKFx1MDAyNmRzYV9sb29wX2Rydik7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDgtXHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwOTpcdG1kaW9fZGV2aWNlX3JlbW92ZShzd2l0Y2hfbWRpb2Rldik7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MTA6XHRtZGlvX2RldmljZV9mcmVlKHN3aXRjaF9tZGlvZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxMS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MzAzCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBGaXhlZCBQSFkgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2YCBmdW5jdGlvbiBhbmQgaW1tZWRpYXRlbHkgbXkgcmFkYXIgcGluZ3Mgb24gdGhlIHVzZSBvZiBgbWRpb19maW5kX2J1cygmIzM0O2ZpeGVkLTAmIzM0OylgLiBJbnRlcmVzdGluZy4uLiBJIG5lZWQgdG8gY29uc2lkZXIgYSBzY2VuYXJpbyB3aGVyZSBJIHdhbnQgbW9yZSBmbGV4aWJpbGl0eS4gVGhlIHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMsIGNhbiBJIGNyZWF0ZSBhIGZpeGVkIFBIWSB3aXRoIGEgc3BlY2lmaWMsIGFyYml0cmFyeSBQSFkgSUQsIGluc3RlYWQgb2YgYmVpbmcgbGltaXRlZCB0byB3aGF0ZXZlciAmIzM0O2ZpeGVkLTAmIzM0OyByZXNvbHZlcyB0bz8KClRvIGZpZ3VyZSB0aGlzIG91dCwgSSBzaG91bGQgdGFrZSBhIGxvb2sgYXQgdGhlIGZ1bmN0aW9uIGBmaXhlZF9waHlfcmVnaXN0ZXJgLiBUaGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBzdGFydCBkaWdnaW5nIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgbWVjaGFuaXNtIGZvciBtb3JlIGZpbmUtZ3JhaW5lZCBjb250cm9sIG92ZXIgZml4ZWQgUEhZIGRldmljZSBjcmVhdGlvbiBhbmQgY29uZmlndXJhdGlvbi4gSXQmIzM5O3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgbG9va2luZyBmb3IgdGhlIGhvb2tzIEkmIzM5O2QgbmVlZCB0byBhY2hpZXZlIHRoYXQgZmxleGliaWxpdHkuIEkgd2FudCB0byBzZWUgaG93IHRoZSByZWdpc3RyYXRpb24gcHJvY2VzcyBoYW5kbGVzIFBIWSBJRHMgYW5kIGJ1cyBhc3NpZ25tZW50LiBUaGlzIGZlZWxzIGxpa2UgYSBwb3RlbnRpYWwgYXJlYSBmb3IgY3VzdG9taXphdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zml4ZWRfcGh5X3JlZ2lzdGVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTQ4Mj1zdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDkxLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTlVNX0ZJWEVEX1BIWVM7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDkyOlx0XHRwaHlkZXZzW2ldID0gZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM9MjIzND1zdGF0aWMgaW50IGI0NF9yZWdpc3Rlcl9waHlfb25lKHN0cnVjdCBiNDQgKmJwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYzoyMjczOlx0XHRwaHlkZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNzQtXHRcdGlmICghSVNfRVJSKHBoeWRldikpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYz0xNDM5PWludCBiZ21hY19waHlfY29ubmVjdF9kaXJlY3Qoc3RydWN0IGJnbWFjICpiZ21hYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jLTE0NDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jOjE0NDk6XHRwaHlfZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFx1MDAyNmZwaHlfc3RhdHVzLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmMtMTQ1MC1cdGlmIChJU19FUlIocGh5X2RldikpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jPTE4NDg9c3RhdGljIGludCBmdGdtYWMxMDBfcHJvYmVfbmNzaShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTg2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM6MTg2NzpcdHBoeWRldiA9IGZpeGVkX3BoeV9yZWdpc3RlcihcdTAwMjZuY3NpX3BoeV9zdGF0dXMsIG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTg2OC1cdGlmIChJU19FUlIocGh5ZGV2KSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTI5ODE9c3RhdGljIGludCBmZWNfZW5ldF9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzAwMi1cdFx0XHRuZXRkZXZfaW5mbyhuZGV2LCBcJiMzNDtubyBQSFksIGFzc3VtaW5nIGRpcmVjdCBjb25uZWN0aW9uIHRvIHN3aXRjaFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzozMDAzOlx0XHRcdHBoeV9kZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTMwMDQtXHRcdFx0aWYgKElTX0VSUihwaHlfZGV2KSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmM9MjM4PXN0YXRpYyBpbnQgaGJnX2ZpeGVkX3BoeV9pbml0KHN0cnVjdCBoYmdfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jLTI1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmM6MjUxOlx0cGh5ZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFx1MDAyNmhiZ19maXhlZF9waHlfc3RhdHVzLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmMtMjUyLVx0aWYgKElTX0VSUihwaHlkZXYpKSB7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9NDEyPWludCBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQ1OS1yZWdpc3Rlcl9waHk6XG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzo0NjA6XHRyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKGZpeGVkX3BoeV9yZWdpc3RlcihcdTAwMjZzdGF0dXMsIG5wKSk7XG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy00NjEtfVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYz0xMTg9c3RhdGljIGludCBmaXhlZF9waHlfZ2V0X2ZyZWVfYWRkcih2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xMzAtXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM6MTMxOnN0cnVjdCBwaHlfZGV2aWNlICpmaXhlZF9waHlfcmVnaXN0ZXIoY29uc3Qgc3RydWN0IGZpeGVkX3BoeV9zdGF0dXMgKnN0YXR1cyxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xMzItXHRcdFx0XHQgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xNzItfVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjE3MzpFWFBPUlRfU1lNQk9MX0dQTChmaXhlZF9waHlfcmVnaXN0ZXIpO1xuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE3NC1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoxNzU6c3RydWN0IHBoeV9kZXZpY2UgKmZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCh2b2lkKVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE3Ni17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE4MS1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoxODI6XHRyZXR1cm4gZml4ZWRfcGh5X3JlZ2lzdGVyKFx1MDAyNnN0YXR1cywgTlVMTCk7XG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTgzLX1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoxODQ6RVhQT1JUX1NZTUJPTF9HUEwoZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKTtcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xODUtXG4tLVxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaD0xOT1leHRlcm4gaW50IGZpeGVkX3BoeV9jaGFuZ2VfY2FycmllcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sIG5ld19jYXJyaWVyKTtcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmg6MjA6c3RydWN0IHBoeV9kZXZpY2UgKmZpeGVkX3BoeV9yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgZml4ZWRfcGh5X3N0YXR1cyAqc3RhdHVzLFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaC0yMS1cdFx0XHRcdCAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApO1xuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaDoyMjpzdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKHZvaWQpO1xuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaC0yMy1cbi0tXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oPTI5PXN0YXRpYyBpbmxpbmUgc3RydWN0IHBoeV9kZXZpY2UgKlxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaDozMDpmaXhlZF9waHlfcmVnaXN0ZXIoY29uc3Qgc3RydWN0IGZpeGVkX3BoeV9zdGF0dXMgKnN0YXR1cyxcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmgtMzEtXHRcdCAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXG4tLVxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaC0zNS1cbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmg6MzY6c3RhdGljIGlubGluZSBzdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKHZvaWQpXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oLTM3LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYyMzgKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAyMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSHlwb3RoZXNpcyBvbiBTeXprYWxsZXIgYW5kIEZpeGVkIFBIWSBEZXZpY2VzKioKCk9rYXksIGxldCYjMzk7cyB0aGluayB0aGlzIHRocm91Z2guIFRoZSBgZml4ZWRfcGh5X3JlZ2lzdGVyYCBmdW5jdGlvbiwgcmlnaHQ/IFRoYXQmIzM5O3MgY3JlYXRpbmcgYSBQSFkgZGV2aWNlLCB1c3VhbGx5IHdpdGggYSBmaXhlZCBQSFkgSUQsIGxpa2UgYDB4MDAwMDAwMDBgIG9yIHNpbWlsYXIuIE5vdGhpbmcgdG9vIGV4Y2l0aW5nIG9uIGl0cyBvd24uIEJ1dCwgaG9sZCBvbiBhIHNlY29uZC4uLlN5emthbGxlciwgdGhlIGZ1enplciwgY2FuIGluamVjdCBkZXZpY2UgdHJlZSBvdmVybGF5cyEgVGhpcyBpcyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nLgoKSWYgU3l6a2FsbGVyIGNyYWZ0cyBhIGRldmljZSB0cmVlIG92ZXJsYXkgd2l0aCBhIG5vZGUgdGhhdCAqbWF0Y2hlcyogdGhpcyBmaXhlZCBQSFksIGNvdWxkIHdlIGdldCBpdCBwcm9iZWQ/IFllcywgdGhhdCBjb3VsZCB3b3JrISBTeXprYWxsZXIgKmRvZXMqIGhhdmUgc3VwcG9ydCBmb3IgZGV2aWNlIHRyZWUgb3ZlcmxheXMuIEkga25vdyB0aGF0IG11Y2guIFRoZSBrZXkgcXVlc3Rpb24gaXMsICpob3cqIGRvZXMgaXQgZG8gaXQ/IE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBpdCB1c2VzIGBzeXpfbW91bnRfaW1hZ2VgIG9yIHNpbWlsYXIsIGJ1dCB3YWl0LCBpdCBjYW4gYWxzbyBpbmplY3QgdGhlbSB2aWEgYHN5c2ZzYCBpZiBgQ09ORklHX09GX09WRVJMQVlgIGlzIGVuYWJsZWQsIG9yIG1heWJlIG90aGVyIG1lYW5zLiBEb2VzIFN5emthbGxlciAqYWN0dWFsbHkqIGV4cGxvaXQgdGhpcyBtZWNoYW5pc20/IEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQgcGFydC4KCkkga25vdyBTeXprYWxsZXIgaGFzIHBzZXVkby1zeXNjYWxscyBsaWtlIGBzeXpfaW5pdF9uZXRfc29ja2V0YC4gRG9lcyBpdCBoYXZlIGEgY29ycmVzcG9uZGluZyBgc3l6X2R0X292ZXJsYXlgIGZ1bmN0aW9uPyBJZiBpdCBkb2VzLCB0aGF0JiMzOTtzIHBvdGVudGlhbGx5IHRoZSBicmVha3Rocm91Z2ggSSYjMzk7bSBsb29raW5nIGZvci4gVGhpcyBuZWVkcyB0byBiZSBpbnZlc3RpZ2F0ZWQgZnVydGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzeXpfLipvdmVybGF5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY3OTAKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA1NDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ3VycmVudCBJbnZlc3RpZ2F0aW9uIGludG8gUEhZIERyaXZlciBUcmlnZ2VyaW5nKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0byB0cmlnZ2VyIHRoZSBgZGFwODIxMXIuY2AgUEhZIGRyaXZlciB3aXRoaW4gdGhlIGNvbnRleHQgb2Ygc3l6a2FsbGVyLiBGaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byByZW1lbWJlciB0aGF0IHRoZSBwc2V1ZG8tc3lzY2FsbHMgc3l6a2FsbGVyIHVzZXMgYXJlbiYjMzk7dCAqaW4qIHRoZSBrZXJuZWwgc291cmNlIHRyZWUsIHNvIGdyZXBwaW5nIHRoZXJlIGlzIGEgZGVhZCBlbmQuIFJpZ2h0LCBpdCYjMzk7cyBhYm91dCBmaW5kaW5nIHRoZSBwYXRod2F5LgoKSWYgdGhlIFBIWSBkcml2ZXIgaXMgYSBtb2R1bGUsIHdoaWNoIEkgYmVsaWV2ZSBpdCBtaWdodCBiZSwgdGhlbiBpdCBuZWVkcyB0byBiZSBsb2FkZWQsIEkgaGF2ZSBjb25maXJtZWQgdGhhdC4gQnV0LCBob3cgZG8gSSBhY3R1YWxseSAqcmVhY2gqIHRoZSBjb2RlIHdpdGhpbiBgZGFwODIxMXIuY2AsIHNwZWNpZmljYWxseSBgZGFwODIxMXJfY29uZmlnX2luaXRgPyBJdCBsb29rcyBsaWtlIGEgUEhZIGRldmljZSBuZWVkcyB0byBiZSBjcmVhdGVkIGFuZCBib3VuZCB0byB0aGUgZHJpdmVyLgoKQ2FuIEkgY3JlYXRlIGEgUEhZIGRldmljZSBmcm9tIHVzZXJzcGFjZT8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGxvb2sgZm9yIHBsYXRmb3JtIGRldmljZXMsIGxpa2UgYG1kaW8tYmNtLXVuaW1hYy5jYCBvciBgbWRpby1ncGlvYC4gQnV0IHN5emthbGxlciBjYW4mIzM5O3QgKmFyYml0cmFyaWx5KiBjcmVhdGUgcGxhdGZvcm0gZGV2aWNlcywgbm90IHdpdGhvdXQgc29tZSBleHBvc2VkIEFQSS4gSSYjMzk7dmUgbG9va2VkIGZvciBhIGBzeXpfcGxhdGZvcm1fZGV2aWNlX2FkZGAgY2FsbCBhbmQgZm91bmQgbm90aGluZy4gSSBoYXZlIHRvIGxldmVyYWdlIHdoYXQmIzM5O3MgKnRoZXJlKi4KCkkga25vdyBzeXprYWxsZXIgaGFzIGB2aGNpYCBmb3IgVVNCLCBgbWFjODAyMTFfaHdzaW1gIGZvciB3aWZpLCBgdWlucHV0YCBmb3IgaW5wdXQsIGBzbmQtYWxvb3BgIGZvciBzb3VuZCwgYW5kIGBuZXRkZXZzaW1gIGZvciBuZXRkZXZzLiBOb25lIG9mIHRoZXNlIHNlZW0gdG8gaGF2ZSBNRElPIHN1cHBvcnQsIGFuZCBzbyBjYW4mIzM5O3QgYmUgdXNlZCB0byBtb2NrIGEgUEhZIGRldmljZS4KCkhvdyBhYm91dCBgZHNhX2xvb3BgPyBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBiZWNhdXNlIGl0ICpkb2VzKiBjcmVhdGUgZml4ZWQgUEhZcy4gSG93ZXZlciwgdGhlIFBIWSBJRCBpcyBmaXhlZCB0byBgMGAgYW5kIHRoZXJlZm9yZSBpcyBub3QgdXNlZnVsIGZvciBteSB0ZXN0aW5nLiBJcyB0aGVyZSBhIHdheSB0byB3cml0ZSBkaXJlY3RseSB0byBNRElPIGJ1cyByZWdpc3RlcnMgZnJvbSB1c2Vyc3BhY2UsIGV2ZW4gaWYgaXQgZG9lc24mIzM5O3QgY3JlYXRlIGEgUEhZIGRldmljZSBkaXJlY3RseT8gQWgsIHllcywgYGlvY3RsKFNJT0NTTUlJUkVHKWAuIEJ1dCB0aGF0IGRvZXNuJiMzOTt0ICpjcmVhdGUqIGEgUEhZIGRldmljZSwgaXQganVzdCBsZXRzIG1lIGludGVyYWN0IHdpdGggb25lIHRoYXQgYWxyZWFkeSBleGlzdHMuCgpUbyBjcmVhdGUgdGhlIGRldmljZSBpdHNlbGYsIHRoZSBNRElPIGJ1cyBuZWVkcyB0byBzY2FuIGZvciBhIFBIWSBJRC4gU28sIGlmIHRoZXJlIGlzIGEgc29mdHdhcmUgTURJTyBidXMsIGRvZXMgaXQgc2Nhbj8gQW5kIHRoZW4gdGhlcmUmIzM5O3MgdGhlIGBmaXhlZF9tZGlvX3JlYWRgIGZ1bmN0aW9uLiBUaGF0IHJldHVybnMgYSAqZml4ZWQqIFBIWSBJRCwgc28gdGhhdCBkb2VzbiYjMzk7dCBoZWxwIG1lIGluIG15IHB1cnN1aXQuCgpNeSB0aG91Z2h0cyBhcmUgdHVybmluZyB0b3dhcmQgc29tZSBraW5kIG9mIG1vY2t1cDogSXMgdGhlcmUgYW55IHdheSB0byBtb2NrIGFuIE1ESU8gYnVzIHdoZXJlIHVzZXJzcGFjZSBjb250cm9scyB0aGUgcmVhZC93cml0ZSBiZWhhdmlvcj8gTm93LCBsZXQmIzM5O3Mgc2VlLCBpcyB0aGVyZSBhbiBgbWRpby1tb2NrdXBgIGRyaXZlcj8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvLiptb2NrdXAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzk0OQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ29uc2lkZXJpbmcgQWx0ZXJuYXRpdmVzIHRvIGBtZGlvLW1vY2t1cGAqKgoKT2theSwgc28gdGhlcmUmIzM5O3Mgbm8gYG1kaW8tbW9ja3VwYC4uLiBUaGF0JiMzOTtzIGEgYml0IG9mIGEgc2V0YmFjay4gSSBuZWVkIGEgcXVpY2sgYW5kIGRpcnR5IHdheSB0byBzaW11bGF0ZSBhbiBNRElPIGludGVyZmFjZSBmb3IgdGVzdGluZywgYW5kIHRoYXQgd291bGQgaGF2ZSBiZWVuIGlkZWFsLiBXaGF0IG90aGVyIG9wdGlvbnMgYXJlIHRoZXJlIHRoYXQgYXJlIGFscmVhZHkgaW4gdGhlIGV0aGVyPyBXaGF0IGFib3V0IHNvbWV0aGluZyBhIGJpdCBtb3JlIGdlbmVyaWMsIHlldCBzdGlsbCBmdW5jdGlvbmFsPyBMZXQmIzM5O3Mgc2VlLi4uIGNvdWxkIGEgcGxhaW4gYG1kaW8tZHVtbXlgIGFjdHVhbGx5IGZpdCB0aGUgYmlsbD8gSXQgd291bGQgbmVlZCB0byBiZSBzaW1wbGUgYnV0IHJvYnVzdC4gSSB3b25kZXIgaWYgdGhlcmUgaXMgYW4gZXhpc3RpbmcgcGFja2FnZT8gSXQgd291bGQgbmVlZCB0byBiZSBzdWl0YWJsZSBmb3IgaW50ZWdyYXRpb24gaW50byBteSB0b29sY2hhaW4uIFRoaXMgcmVxdWlyZXMgYSBiaXQgbW9yZSBpbnZlc3RpZ2F0aW9uLiBUaGUgbmFtZSBpcyBhIHBsYWNlaG9sZGVyIGZvciBub3csIG9mIGNvdXJzZSwgYnV0IGl0IGdpdmVzIG1lIGEgd29ya2luZyBmcmFtZXdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWRpby4qZHVtbXkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODE3OAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIFBIWSBEcml2ZXIgVGVzdGluZyBpbiBRRU1VKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIHRlc3QgdGhlc2UgUEhZIGRyaXZlcnMuIFdoYXQgYWJvdXQgYG1kaW8tZ3Bpb2A/IFRoYXQmIzM5O3MgYSBwb3NzaWJpbGl0eSwgc2luY2UgaXQgdXNlcyBHUElPcy4gSSB3b25kZXIgaWYgdGhlcmUmIzM5O3MgYW55IHdheSB0byB0ZXN0IFBIWSBkcml2ZXJzIGVmZmVjdGl2ZWx5IHdpdGhpbiBRRU1VLiBJdCBzZWVtcyBsaWtlIGl0IHdvdWxkIGJlIGEgaHVnZSBhZHZhbnRhZ2UuCgpXYWl0LCBRRU1VICpkb2VzKiBlbXVsYXRlIGEgYnVuY2ggb2YgbmV0d29yayBjYXJkcywgcmlnaHQ/IExpa2UsIEkga25vdyBhYm91dCBgZTEwMDBgLCBgcnRsODEzOWAsIGBwY25ldGAsIGBuZTJrX3BjaWAsIGFuZCBgdmlydGlvLW5ldGAuIEJ1dCBkbyBhbnkgb2YgdGhvc2UgYWN0dWFsbHkgKmV4cG9zZSogYW4gTURJTyBidXMgdG8gdGhlIGtlcm5lbD8gVGhhdCYjMzk7cyB0aGUga2V5LgoKVGhlIGBlMTAwMGAgaGFzIGFuIGludGVybmFsIFBIWSwgYnV0IHRoZSBgZTEwMDBgIGRyaXZlciBtYW5hZ2VzIGl0IGRpcmVjdGx5LCBub3QgdGhyb3VnaCB0aGUgc3RhbmRhcmQgUEhZIGxheWVyLCBzbyB0aGF0JiMzOTtzIG5vdCBoZWxwZnVsLiBUaGUgYGZlY2AgKEZyZWVzY2FsZSBGYXN0IEV0aGVybmV0IENvbnRyb2xsZXIpIGlzIGVtdWxhdGVkIGluIFFFTVUgZm9yIHNvbWUgQVJNIGJvYXJkcywgYW5kICp0aGF0KiB1c2VzIHRoZSBnZW5lcmljIFBIWSBsYXllci4gQnV0IEkgbmVlZCBzb21ldGhpbmcgdGhhdCBydW5zIGluIHg4Nl82NCwgd2hpY2ggaXMgd2hhdCBJJiMzOTttIGZvY3VzZWQgb24gZm9yIHN5emthbGxlci4KClNvLCBvbiB4ODZfNjQsIGRvZXMgUUVNVSBlbXVsYXRlICphbnkqIE5JQyB0aGF0IHVzZXMgdGhlIGdlbmVyaWMgUEhZIGxheWVyPyBUaW1lIHRvIGludmVzdGlnYXRlLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9gIGFuZCBsb29rIGZvciBkcml2ZXJzIHRoYXQgY2FsbCBgcGh5X2Nvbm5lY3RgIG9yIGBtZGlvYnVzX3JlZ2lzdGVyYCwgYW5kIG1ha2Ugc3VyZSB0aGV5JiMzOTtyZSBlbXVsYXRlZCBieSBRRU1VLgoKQWgsIGxvb2tzIGxpa2UgYHRnM2AgKEJyb2FkY29tIFRpZ29uMykgaXMgZW11bGF0ZWQgYnkgUUVNVS4gRG9lcyBpdCB1c2UgdGhlIGdlbmVyaWMgUEhZIGxheWVyPyBUaGF0JiMzOTtzIHRoZSBuZXh0IHN0ZXAgaW4gbXkgc2VhcmNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfY29ubmVjdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTIwODQ9c3RhdGljIGludCB0ZzNfcGh5X2luaXQoc3RydWN0IHRnMyAqdHApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMjA5Ni1cdC8qIEF0dGFjaCB0aGUgTUFDIHRvIHRoZSBQSFkuICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzoyMDk3Olx0cGh5ZGV2ID0gcGh5X2Nvbm5lY3QodHAtXHUwMDNlZGV2LCBwaHlkZXZfbmFtZShwaHlkZXYpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMjA5OC1cdFx0XHQgICAgIHRnM19hZGp1c3RfbGluaywgcGh5ZGV2LVx1MDAzZWludGVyZmFjZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MDE2CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSB0ZzMgRHJpdmVyIGFuZCBNRElPIEludGVyYWN0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGB0ZzNgIGRyaXZlciwgYW5kIGl0JiMzOTtzIHF1aWNrbHkgYmVjb21pbmcgY2xlYXIgdGhhdCBpdCBsZXZlcmFnZXMgYHBoeV9jb25uZWN0YC4gTWFrZXMgc2Vuc2U7IHRoYXQmIzM5O3MgdGhlIHN0YW5kYXJkIGFwcHJvYWNoIGZvciBQSFkgaW50ZXJhY3Rpb24sIGVzcGVjaWFsbHkgd2l0aCBhIG5ldHdvcmsgZHJpdmVyLiBHb29kIHRvIHNlZSB0aGF0IGltcGxlbWVudGVkIGNvcnJlY3RseS4KCkJ1dCBob2xkIG9uIGEgc2Vjb25kLi4uIGlzIHRoZSBkcml2ZXIgKmFsc28qIHJlZ2lzdGVyaW5nIGFuIE1ESU8gYnVzPyBOb3csIHRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhcmNoaXRlY3R1cmUgaGVyZS4gSXMgYHBoeV9jb25uZWN0YCBoYW5kbGluZyB0aGUgcHJpbWFyeSBNRElPIGNvbW11bmljYXRpb24sIGFuZCB0aGUgc2VwYXJhdGUgTURJTyBidXMgcmVnaXN0cmF0aW9uIGlzIGZvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gUGVyaGFwcyBmb3IgbW9uaXRvcmluZyBvciBzb21lIHNwZWNpYWxpemVkLCB2ZW5kb3Itc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSB0aGF0JiMzOTtzIGxheWVyZWQgb24gdG9wIG9mIHRoZSBzdGFuZGFyZCBQSFkgaW50ZXJmYWNlPyBDb3VsZCBpdCBiZSB1c2luZyBhIGRpZmZlcmVudCBNRElPIGJ1cyBmb3IgYWNjZXNzaW5nIGFkZGl0aW9uYWwgcmVnaXN0ZXJzIG9yIGRldmljZXMgYmV5b25kIHRoZSBzdGFuZGFyZCBQSFk/IE9yIG1heWJlIHRoZXJlJiMzOTtzIHNvbWUgbGVnYWN5IHN1cHBvcnQgbHVya2luZyBpbiB0aGUgY29kZT8gVGhpcyB3YXJyYW50cyBmdXJ0aGVyIGludmVzdGlnYXRpb24gaW50byBob3cgdGhlc2UgdHdvIG1lY2hhbmlzbXMgaW50ZXJhY3QuIFRpbWUgdG8gZGl2ZSBkZWVwZXIgaW50byB0aGUgY29kZSBhbmQgc2VlIHdoYXQmIzM5O3MgYWN0dWFsbHkgZ29pbmcgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW9idXNfcmVnaXN0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYz0xNTA1PXN0YXRpYyBpbnQgdGczX21kaW9faW5pdChzdHJ1Y3QgdGczICp0cClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNTU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6MTU1ODpcdGkgPSBtZGlvYnVzX3JlZ2lzdGVyKHRwLVx1MDAzZW1kaW9fYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE1NTktXHRpZiAoaSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTQ0NwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDMwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDdXJyZW50IEludmVzdGlnYXRpb24gaW50byBgdGczYCBhbmQgUEhZIElEIE1hbmlwdWxhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCB0aGUgYHRnM2AgZHJpdmVyICpkb2VzKiBwcm9wZXJseSByZWdpc3RlciBhbiBNRElPIGJ1cy4gVGhhdCYjMzk7cyBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50LiBOb3csIHdoZW4gaXQgcmVnaXN0ZXJzIHRoZSBidXMsIGl0IG5hdHVyYWxseSBnb2VzIG9uIHRvIHNjYW4gZm9yIFBIWXMuIFRoZSB0cmlja3kgcGFydCBpcyB0aGF0IHRoZSBQSFkgSUQgaXQmIzM5O3MgcmVhZGluZyBpcyBlc3NlbnRpYWxseSB3aGF0ZXZlciBRRU1VIGlzIGVtdWxhdGluZyBmb3IgdGhlIGB0ZzNgIGRldmljZSwgYW5kIHRoYXQmIzM5O3MgZ2VuZXJhbGx5IGEgQnJvYWRjb20gUEhZLiBUaGUgY29yZSBxdWVzdGlvbiBpczogY2FuIEkgbWFuaXB1bGF0ZSB0aGF0IGV4cG9zZWQgUEhZIElELCBlc3BlY2lhbGx5IHZpYSBzeXprYWxsZXI/CgpEaXJlY3RseSBhbHRlcmluZyB3aGF0IFFFTVUgcHJlc2VudHMgc2VlbXMgdW5saWtlbHkuIFNvLCB0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gdHJ5IGFuZCB3cml0ZSB0byB0aGUgUEhZIElEIHJlZ2lzdGVycyBkaXJlY3RseSB1c2luZyBgU0lPQ1NNSUlSRUdgLiBJIHJlY2FsbCB0aG9zZSBQSFkgSUQgcmVnaXN0ZXJzIGFyZSB1c3VhbGx5IGF0IG9mZnNldHMgMiBhbmQgMy4gTXkgaHVuY2ggaXMsIGlmIHN5emthbGxlciBjb3VsZCBleGVjdXRlIGBTSU9DU01JSVJFR2AgdG8gY2hhbmdlIHRob3NlIHJlZ2lzdGVycywgdGhlbiBpdCBjb3VsZCwgaW4gZWZmZWN0LCBjaGFuZ2UgdGhlIGVtdWxhdGVkIFBIWSBJRC4KCkJ1dCwgYSBzaWduaWZpY2FudCBwcm9ibGVtIGFyaXNlczogdGhlIE1ESU8gYnVzIHNjYW5uaW5nIGFuZCBQSFkgcHJvYmUgaGFwcGVucyAqZHVyaW5nKiB0aGUgZHJpdmVyJiMzOTtzIHByb2JlIHNlcXVlbmNlLiBUaGF0JiMzOTtzICpiZWZvcmUqIHN5emthbGxlciBnZXRzIGl0cyBjaGFuY2UgdG8gcGxheSB3aXRoIGBpb2N0bGAuIERhbW4uCgpXYWl0LCBpcyB0aGVyZSBhIHdheSB0byBmb3JjZSBhIHJlc2NhbiBvZiB0aGUgTURJTyBidXMgZnJvbSB1c2Vyc3BhY2U/IFVzZXJzcGFjZSAqY2FuKiB3cml0ZSB0byB0aGUgYC9zeXMvYnVzL21kaW9fYnVzL2RldmljZXMvLi4uL3VldmVudGAgZmlsZSwgb3IgYmluZC91bmJpbmQgZHJpdmVycywgYnV0IHRoYXQgd29uJiMzOTt0IGhlbHAgaWYgdGhlIFBIWSBkZXZpY2UgaXMgYWxyZWFkeSBjcmVhdGVkIHdpdGggdGhlIG9sZCBJRC4KCkNhbiBJIHNvbWVob3cgZGVsZXRlIHRoZSBleGlzdGluZyBQSFkgZGV2aWNlIGFuZCAqZm9yY2UqIGEgcmVzY2FuPyBUaGVyZSYjMzk7cyBubyBgL3N5cy9idXMvbWRpb19idXMvcmVzY2FuYCBhbmFsb2cgbGlrZSB3ZSBoYXZlIHdpdGggUENJLiBUaGF0JiMzOTtzIGEgZGVhZCBlbmQuCgpPa2F5LCBsZXQmIzM5O3MgdGhpbmsgYmlnZ2VyLiBXaGF0IGlmLCBpbnN0ZWFkIG9mIHRyeWluZyB0byByZXNjYW4gdGhlIGV4aXN0aW5nIGJ1cywgdXNlcnNwYWNlIGNvdWxkIHNvbWVob3cgKmNyZWF0ZSogYSBuZXcgUEhZIGRldmljZSB0aHJvdWdoIHN5c2ZzPyBJcyB0aGVyZSBldmVuIGEgd2F5IHRvIGluc3RhbnRpYXRlIGEgUEhZIGRldmljZSBmcm9tIHVzZXJzcGFjZT8gVGhhdCYjMzk7cyB3aGF0IEkgcmVhbGx5IG5lZWQgdG8gZmlndXJlIG91dC4gSSBzdXBwb3NlIEkgc2hvdWxkIG5vdyBsb29rIGF0IGBkcml2ZXJzL25ldC9waHkvbWRpb19idXMuY2AuIFRoYXQgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBuZXh0IHN0ZXAgdG8gdW5jb3ZlciB0aGF0IHBvc3NpYmlsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0b3JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDI3MgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipJbnZlc3RpZ2F0aW5nIE1ESU8gQnVzIFN5c2ZzIEF0dHJpYnV0ZXMqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3Qgd2F5IHRvIGludGVyYWN0IHdpdGggYW4gTURJTyBidXMuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZGlnIGludG8gdGhlIHN5c2ZzIGZpbGVzeXN0ZW0uIEl0JiMzOTtzIHVzdWFsbHkgdGhlIGdvLXRvIGZvciBwcm9iaW5nIGFuZCBjb250cm9sbGluZyBoYXJkd2FyZSBpbiBhIHN0cnVjdHVyZWQsIHN0YW5kYXJkaXplZCB3YXkgaW4gTGludXguIFNvLCBsZXQmIzM5O3Mgc3RhcnQgdGhlcmUuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzeXNmcyBhdHRyaWJ1dGVzIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZSBgbWRpb19idXNgIGRyaXZlciBvciBmdW5jdGlvbmFsaXR5LiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJhc2UgdG8gdGhlbiB1bmRlcnN0YW5kIGlmIEkgY2FuIHJlYWQsIHdyaXRlLCBhbmQgY29udHJvbCB0aGUgTURJTyBidXMgdGhyb3VnaCB0aGlzIGludGVyZmFjZS4gV2hhdCBzcGVjaWZpYyBhdHRyaWJ1dGVzIGFyZSBhdmFpbGFibGUgd2lsbCBsZWFkIG1lIHRvIHRoZSBzcGVjaWZpY3Mgb2YgaG93IHRvIGdvIGZvcndhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7REVWSUNFX0FUVFImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvbWRpb19idXMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNDk0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkluaXRpYWwgSW5xdWlyeSBvbiBQSFkgRHJpdmVyIEltcGxlbWVudGF0aW9uKioKCk15IGluaXRpYWwgdGhvdWdodCwgd2hlbiBlbmNvdW50ZXJpbmcgYSBuZXR3b3JraW5nIGRldmljZSBpbnRlcmFjdGlvbiBhdCBhIGxvdyBsZXZlbCwgaW52YXJpYWJseSBsZWFkcyBtZSB0byB0aGUgcGh5c2ljYWwgbGF5ZXIuIFRoZSBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzLCAmIzM0O1doYXQmIzM5O3MgZ29pbmcgb24gd2l0aGluIGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYD8mIzM0OyBUaGF0JiMzOTtzIG9mdGVuIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIHNvIHRvIHNwZWFrLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGxvdy1sZXZlbCBtYW5hZ2VtZW50IG9mIHRoZSBQaHlzaWNhbCBMYXllciBUcmFuc2NlaXZlciAoUEhZKS4gSSYjMzk7bSBsaWtlbHkgaW50ZXJlc3RlZCBpbiBpdHMgY2FwYWJpbGl0aWVzIGFuZCBjb25maWd1cmF0aW9uLiBJcyB0aGlzIHdoZXJlIEkgc2hvdWxkIGdvPwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtERVZJQ0VfQVRUUiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz01NjE9cGh5X2lkX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNTY2LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6NTY3OnN0YXRpYyBERVZJQ0VfQVRUUl9STyhwaHlfaWQpO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy01NjgtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz01NzA9cGh5X2ludGVyZmFjZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1Zilcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTU4MS19XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjU4MjpzdGF0aWMgREVWSUNFX0FUVFJfUk8ocGh5X2ludGVyZmFjZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTU4My1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTU4NT1waHlfaGFzX2ZpeHVwc19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy01OTEtfVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzo1OTI6c3RhdGljIERFVklDRV9BVFRSX1JPKHBoeV9oYXNfZml4dXBzKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNTkzLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz01OTQ9c3RhdGljIHNzaXplX3QgcGh5X2Rldl9mbGFnc19zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTYwMS19XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjYwMjpzdGF0aWMgREVWSUNFX0FUVFJfUk8ocGh5X2Rldl9mbGFncyk7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTYwMy1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTYxNz1zdGF0aWMgc3NpemVfdCBtbWQjI24jI19kZXZpY2VfaWRfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIFxcXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy02MjMtfSBcXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzo2MjQ6c3RhdGljIERFVklDRV9BVFRSX1JPKG1tZCMjbiMjX2RldmljZV9pZClcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNjI1LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTQ3MD1waHlfc3RhbmRhbG9uZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xNDc2LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTQ3NzpzdGF0aWMgREVWSUNFX0FUVFJfUk8ocGh5X3N0YW5kYWxvbmUpO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xNDc4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTMzMQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDQzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBMaW5lIG9mIFJlYXNvbmluZyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgc3l6a2FsbGVyIHRlc3RzIFBIWSBkcml2ZXJzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGVyZSBhcmVuJiMzOTt0IGFueSBlYXNpbHkgd3JpdGVhYmxlIGF0dHJpYnV0ZXMgdG8ganVzdCAqY3JlYXRlKiBQSFlzIGRpcmVjdGx5LiBCdXQgd2FpdCwgZG9lc24mIzM5O3Qgc3l6a2FsbGVyIGhhdmUgc29tZSBraW5kIG9mIHBzZXVkby1kZXZpY2UgZm9yIE1ESU8/IEkgc2hvdWxkIGNoZWNrIGlmIHRoZXJlJiMzOTtzIGEgYHN5el9tZGlvYCBvciBzb21ldGhpbmcgc2ltaWxhciBkaXJlY3RseSB3aXRoaW4gdGhlIHN5emthbGxlciBjb2RlIGl0c2VsZi4gVW5mb3J0dW5hdGVseSwgSSBjYW4mIzM5O3QgZGlyZWN0bHkgKmNoZWNrKiB0aGUgc3l6a2FsbGVyIGNvZGUgaW4gdGhpcyBjb250ZXh0LCBzbywgbGV0JiMzOTtzIGxvb2sgZm9yIHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucyBlbmFibGVkIGZvciBzeXprYWxsZXIgd2hlbiB0ZXN0aW5nIFBIWXMuCgpPa2F5LCBJIHJlY2FsbCBgZHNhX2xvb3BgICpkb2VzKiBjcmVhdGUgZml4ZWQgUEhZcy4gVGhhdCYjMzk7cyBhIHBvc3NpYmlsaXR5LCBidXQgaXMgdGhhdCB0aGUgb25seSB3YXk/IEFyZSB0aGVyZSBhbnkgb3RoZXIgcG90ZW50aWFsIHJvdXRlcz8gTWF5YmUgdGhyb3VnaCBgbmV0bGlua2A/IENhbiBhIFBIWSBiZSBjcmVhdGVkIHRoYXQgd2F5PyBObywgUEhZcyB0eXBpY2FsbHkgY29tZSBvbmxpbmUgdGhyb3VnaCBNRElPIGJ1cyBzY2FubmluZyBvciBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9ucywgdXN1YWxseS4KCkhhbmcgb24uLi4gc3l6a2FsbGVyICpkb2VzKiBoYXZlIGEgd2F5IHRvIHRlc3QgUEhZIGRyaXZlcnMsIEkga25vdyB0aGF0LiBIb3csIHRob3VnaD8gTWF5YmUgYGRzYV9sb29wYCBpcyBpbnZvbHZlZCwgYnV0IGNhbiBJIHNvbWVob3cgbWFuaXB1bGF0ZSB0aGUgUEhZIElEPyBObywgdGhhdCYjMzk7cyBub3QgaXQuIGBkc2FfbG9vcGAgdXNlcyBgZml4ZWRfcGh5YCwgd2hpY2ggZG9lc24mIzM5O3QgaW50ZXJmYWNlIHdpdGggaGFyZHdhcmU7IGl0IGp1c3QgcmV0dXJucyBhIGZpeGVkIHN0YXR1cy4KCk9rYXksIGxldCYjMzk7cyBleHBsb3JlIG90aGVyIG5ldHdvcmtpbmcgZGV2aWNlIG9wdGlvbnMgd2l0aGluIHN5emthbGxlciYjMzk7cyBwdXJ2aWV3LiBEb2VzIHN5emthbGxlciBtYWtlIHVzZSBvZiBgdHVuYCBvciBgdGFwYD8gTm9wZSwgdGhleSBkb24mIzM5O3QgaGF2ZSBNRElPLiBXaGF0IGFib3V0IGBtYWNtYWNgIG9yIGB2ZXRoYD8gU3RpbGwgbm8uCgpIbW0uLi4gd2hhdCBhYm91dCBgbWRpby1iY20tdW5pbWFjYD8gVGhhdCYjMzk7cyBhIHBsYXRmb3JtIGRyaXZlciwgdGhvdWdoLiBTeXprYWxsZXIgcHJvYmFibHkgY2FuJiMzOTt0IGluc3RhbnRpYXRlIGl0IGRpcmVjdGx5LCB1bmxlc3MgaXQmIzM5O3MgcHJlc2VudCBpbiB0aGUgZGV2aWNlIHRyZWUuCgpBaGEhIERldmljZSB0cmVlISBXYWl0Li4uIGRvZXNuJiMzOTt0IHN5emthbGxlciAqaW5qZWN0KiBkZXZpY2UgdHJlZSBvdmVybGF5cz8gQmluZ28hIEl0JiMzOTtzIGxpa2VseSB1c2luZyB0aGF0LiBJIHJlbWVtYmVyIGBzeXpfbW91bnRfaW1hZ2VgIGNhbiBtb3VudCBhIGZpbGVzeXN0ZW0sIGJ1dCBpdCBhbHNvIGhhcyBgc3l6X2luaXRfbmV0X3NvY2tldGAgYW5kIHNpbWlsYXIgZmFjaWxpdGllcy4KCkRvZXMgc3l6a2FsbGVyIHRydWx5IHV0aWxpemUgRFQgb3ZlcmxheXM/IFllcyEgSSBrbm93IGl0IGRvZXMhIFRoZXJlIGFyZSBmdW5jdGlvbnMgbGlrZSBgc3l6X2RldmxpbmtgIGFuZCBgc3l6X3VzYl9jb25uZWN0YC4KCkFjdHVhbGx5LCBkaWRuJiMzOTt0IEkgcmVhZCBzb21ldGhpbmcgYWJvdXQgcmVjZW50IHN5emthbGxlciBhZGRpdGlvbnMgY29uY2VybmluZyB0ZXN0aW5nIFBIWSBkcml2ZXJzIHVzaW5nIGEgbW9jayBNRElPIGJ1cyBvciBzb21ldGhpbmcgc2ltaWxhcj8KCkFscmlnaHQsIGxldCYjMzk7cyBkaWcgaW50byB0aGUga2VybmVsIHNvdXJjZS4gSSYjMzk7bGwgc2VhcmNoIGZvciBgbWRpb2Agd2l0aGluIGBuZXQvYCBhbmQgYGRyaXZlcnMvbmV0L2AgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGEgbW9jayBkcml2ZXIgdGhhdCYjMzk7cyBiZWVuIHJlY2VudGx5IGFkZGVkLiBUaGlzIGZlZWxzIGxpa2UgdGhlIHJpZ2h0IGRpcmVjdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvLiptb2NrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIzNzQKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRob3NlIHRob3VnaHRzIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlLCB1c2luZyBhIGZpcnN0LXBlcnNvbiBwZXJzcGVjdGl2ZToKCioqTURJTyBhbmQgYG5ldGRldnNpbWAgLSBMZXQmIzM5O3MgRGlnIEluKioKCkFscmlnaHQsIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgbmV0d29yayBkZXZpY2Ugc2ltdWxhdGlvbiBhZ2Fpbi4gSXQmIzM5O3MgYSBrZXkgcGFydCBvZiBteSB3b3JrZmxvdyBmb3IgdGVzdGluZyBhbmQgcHJvdG90eXBpbmcsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggaGFyZHdhcmUtbGV2ZWwgaW50ZXJhY3Rpb25zLiBNeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGBuZXRkZXZzaW1gLiBUaGF0JiMzOTtzIGEgc29saWQgdG9vbCwgYnV0IHRoZSByZWFsIHF1ZXN0aW9uIGlzOiBkb2VzIGl0IHN1cHBvcnQgdGhlIE1lZGlhIEluZGVwZW5kZW50IEludGVyZmFjZSAoTURJTyk/IEkga25vdyBpdCBoYW5kbGVzIHRoZSBnZW5lcmFsIEV0aGVybmV0IGRldmljZSBlbXVsYXRpb24gd2VsbCwgYnV0IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiBJIGNhbiB1c2UgaXQgdG8gc2ltdWxhdGUgdGhlIFBIWSBtYW5hZ2VtZW50IGZlYXR1cmVzIEkmIzM5O20gd29ya2luZyB3aXRoLiBUaGUgcHJlc2VuY2Ugb3IgYWJzZW5jZSBvZiBNRElPIHN1cHBvcnQgZnVuZGFtZW50YWxseSBzaGFwZXMgaXRzIHVzZWZ1bG5lc3MgZm9yIHRoaXMgY3VycmVudCBwcm9qZWN0LiBUaW1lIHRvIGNoZWNrIHRoZSBkb2N1bWVudGF0aW9uLCBvciBiZXR0ZXIgeWV0LCBtYXliZSBJIHNob3VsZCBqdXN0IHNwaW4gaXQgdXAgYW5kIHRha2UgYSBsb29rIG15c2VsZi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNjIwCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQXNzZXNzaW5nIFN5emthbGxlciYjMzk7cyBDb3ZlcmFnZSBQb3RlbnRpYWwqKgoKT2theSwgaW5pdGlhbGx5LCBteSBpbnN0aW5jdCB3YXMgYSBmaXJtICYjMzQ7bm8sJiMzNDsgdGhhdCBzeXprYWxsZXIgY291bGRuJiMzOTt0IHBvc3NpYmx5IGJlIHJlbGV2YW50IGhlcmUuIEJ1dCBob2xkIG9uLCBJIG5lZWQgdG8gYmUgbW9yZSByaWdvcm91cy4gVGhlIGNvcmUgcXVlc3Rpb24gaXM6IGhvdyAqY291bGQqIHN5emthbGxlciBhY3R1YWxseSB0b3VjaCB0aGlzIGRyaXZlcj8gSWYgZGlyZWN0IGFjY2VzcyBpcyBpbXBvc3NpYmxlLCB0aGVuIGltbWVkaWF0ZWx5IHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYCB3b3VsZCBiZSB0aGUgbG9naWNhbCBuZXh0IHN0ZXAuIEhvd2V2ZXIsIGl0JiMzOTtzIHRvbyBlYXJseSB0byBqdW1wIHRvIGNvbmNsdXNpb25zLiBJcyB0aGVyZSBhbnkgaW5kaXJlY3QgcGF0aHdheT8gQ291bGQgYSBnZW5lcmljIFBIWSB0ZXN0aW5nIGZyYW1ld29yayBwb3RlbnRpYWxseSBleHBvc2UgdGhpcyBkcml2ZXIgdG8gZnV6emluZz8gSSBuZWVkIHRvIGV4cGxvcmUgdGhhdCBwb3NzaWJpbGl0eS4gTXkgbmV4dCBtb3ZlIGlzIGNsZWFyOiBJIG5lZWQgdG8gZXhwbGljaXRseSBjaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiBhbnkgc3l6a2FsbGVyIHRlc3QgbW9kdWxlcyByZWxhdGVkIHRvICYjMzQ7cGh5LiYjMzQ7IFRoYXQgc2VhcmNoIHdpbGwgYmUgdGhlIGRldGVybWluYW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHkuKnRlc3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jPTY1ND1zdGF0aWMgaW50IF9fYmNtX3BoeV9lbmFibGVfbGVnYWN5X2FjY2VzcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTY1OS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjY2MDpzdGF0aWMgaW50IF9iY21fcGh5X2NhYmxlX3Rlc3Rfc3RhcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCBpc19yZGIpXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy02NjEte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTY5NS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjY5NjpzdGF0aWMgaW50IGJjbV9waHlfY2FibGVfdGVzdF9yZXBvcnRfdHJhbnMoaW50IHJlc3VsdClcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTY5Ny17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM9NzI1PXN0YXRpYyBpbnQgYmNtX3BoeV9yZXBvcnRfbGVuZ3RoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBwYWlyKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTc0MS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjc0MjpzdGF0aWMgaW50IF9iY21fcGh5X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtNzQzLVx0XHRcdFx0XHQgIGJvb2wgKmZpbmlzaGVkLCBib29sIGlzX3JkYilcbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy03NzUtXHRldGhubF9jYWJsZV90ZXN0X3Jlc3VsdChwaHlkZXYsIEVUSFRPT0xfQV9DQUJMRV9QQUlSX0EsXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo3NzY6XHRcdFx0XHRiY21fcGh5X2NhYmxlX3Rlc3RfcmVwb3J0X3RyYW5zKHBhaXJfYSkpO1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtNzc3LVx0ZXRobmxfY2FibGVfdGVzdF9yZXN1bHQocGh5ZGV2LCBFVEhUT09MX0FfQ0FCTEVfUEFJUl9CLFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6Nzc4Olx0XHRcdFx0YmNtX3BoeV9jYWJsZV90ZXN0X3JlcG9ydF90cmFucyhwYWlyX2IpKTtcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTc3OS1cdGV0aG5sX2NhYmxlX3Rlc3RfcmVzdWx0KHBoeWRldiwgRVRIVE9PTF9BX0NBQkxFX1BBSVJfQyxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjc4MDpcdFx0XHRcdGJjbV9waHlfY2FibGVfdGVzdF9yZXBvcnRfdHJhbnMocGFpcl9jKSk7XG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy03ODEtXHRldGhubF9jYWJsZV90ZXN0X3Jlc3VsdChwaHlkZXYsIEVUSFRPT0xfQV9DQUJMRV9QQUlSX0QsXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo3ODI6XHRcdFx0XHRiY21fcGh5X2NhYmxlX3Rlc3RfcmVwb3J0X3RyYW5zKHBhaXJfZCkpO1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtNzgzLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jPTgzMD1zdGF0aWMgdTMyIGJjbV9saW5rbW9kZV9hZHZfdG9fbHJlX2Fkdl90KHVuc2lnbmVkIGxvbmcgKmFkdmVydGlzaW5nKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTg0Ny1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjg0ODppbnQgYmNtX3BoeV9jYWJsZV90ZXN0X3N0YXJ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy04NDkte1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6ODUwOlx0cmV0dXJuIF9iY21fcGh5X2NhYmxlX3Rlc3Rfc3RhcnQocGh5ZGV2LCBmYWxzZSk7XG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy04NTEtfVxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6ODUyOkVYUE9SVF9TWU1CT0xfR1BMKGJjbV9waHlfY2FibGVfdGVzdF9zdGFydCk7XG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy04NTMtXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo4NTQ6aW50IGJjbV9waHlfY2FibGVfdGVzdF9nZXRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgKmZpbmlzaGVkKVxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtODU1LXtcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjg1NjpcdHJldHVybiBfYmNtX3BoeV9jYWJsZV90ZXN0X2dldF9zdGF0dXMocGh5ZGV2LCBmaW5pc2hlZCwgZmFsc2UpO1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtODU3LX1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjg1ODpFWFBPUlRfU1lNQk9MX0dQTChiY21fcGh5X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyk7XG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy04NTktXG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtODYzLSAqL1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6ODY0OmludCBiY21fcGh5X2NhYmxlX3Rlc3Rfc3RhcnRfcmRiKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy04NjUte1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6ODY2Olx0cmV0dXJuIF9iY21fcGh5X2NhYmxlX3Rlc3Rfc3RhcnQocGh5ZGV2LCB0cnVlKTtcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTg2Ny19XG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo4Njg6RVhQT1JUX1NZTUJPTF9HUEwoYmNtX3BoeV9jYWJsZV90ZXN0X3N0YXJ0X3JkYik7XG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy04NjktXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo4NzA6aW50IGJjbV9waHlfY2FibGVfdGVzdF9nZXRfc3RhdHVzX3JkYihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtODcxLVx0XHRcdFx0ICAgICAgYm9vbCAqZmluaXNoZWQpXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy04NzIte1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6ODczOlx0cmV0dXJuIF9iY21fcGh5X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyhwaHlkZXYsIGZpbmlzaGVkLCB0cnVlKTtcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTg3NC19XG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo4NzU6RVhQT1JUX1NZTUJPTF9HUEwoYmNtX3BoeV9jYWJsZV90ZXN0X2dldF9zdGF0dXNfcmRiKTtcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTg3Ni1cbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuaD05MT1pbnQgYmNtX3BoeV9lbmFibGVfanVtYm8oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuaC05Mi1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5oOjkzOmludCBiY21fcGh5X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1c19yZGIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5oLTk0LVx0XHRcdFx0ICAgICAgYm9vbCAqZmluaXNoZWQpO1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmg6OTU6aW50IGJjbV9waHlfY2FibGVfdGVzdF9zdGFydF9yZGIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuaDo5NjppbnQgYmNtX3BoeV9jYWJsZV90ZXN0X3N0YXJ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmg6OTc6aW50IGJjbV9waHlfY2FibGVfdGVzdF9nZXRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgKmZpbmlzaGVkKTtcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5oLTk4LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY201NDE0MC5jPTg2NT1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgYmNtNTQxNDBfZHJpdmVyc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY201NDE0MC5jLTg4MC1cdFx0LnNldF90dW5hYmxlXHQ9IGJjbTU0MTQwX3NldF90dW5hYmxlLFxuZHJpdmVycy9uZXQvcGh5L2JjbTU0MTQwLmM6ODgxOlx0XHQuY2FibGVfdGVzdF9zdGFydCA9IGJjbV9waHlfY2FibGVfdGVzdF9zdGFydF9yZGIsXG5kcml2ZXJzL25ldC9waHkvYmNtNTQxNDAuYzo4ODI6XHRcdC5jYWJsZV90ZXN0X2dldF9zdGF0dXMgPSBiY21fcGh5X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1c19yZGIsXG5kcml2ZXJzL25ldC9waHkvYmNtNTQxNDAuYy04ODMtXHR9LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jPTg3Nz1zdGF0aWMgaW50IGJyY21fZmV0X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtOTY5LVx0LyogRGlzYWJsZSBzaGFkb3cgcmVnaXN0ZXIgYWNjZXNzICovXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYzo5NzA6XHRlcnIyID0gX19waHlfd3JpdGUocGh5ZGV2LCBNSUlfQlJDTV9GRVRfQlJDTVRFU1QsIGJyY210ZXN0KTtcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTk3MS1cdGlmICghZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jPTEwMzY9c3RhdGljIGludCBicmNtX2ZldF9zdXNwZW5kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTA3MS1cdC8qIERpc2FibGUgc2hhZG93IHJlZ2lzdGVyIGFjY2VzcyAqL1xuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6MTA3MjpcdGVycjIgPSBfX3BoeV93cml0ZShwaHlkZXYsIE1JSV9CUkNNX0ZFVF9CUkNNVEVTVCwgYnJjbXRlc3QpO1xuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTA3My1cdGlmICghZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmM9MjIxOT1zdGF0aWMgaW50IG1hcnZlbGxfdmN0NV93YWl0X2NvbXBsZXRlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYy0yMjMyLVxuZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYzoyMjMzOlx0cGh5ZGV2X2VycihwaHlkZXYsIFwmIzM0O1RpbWVvdXQgd2hpbGUgd2FpdGluZyBmb3IgY2FibGUgdGVzdCB0byBmaW5pc2hcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYy0yMjM0LVx0cmV0dXJuIC1FVElNRURPVVQ7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jPTgxMz1zdGF0aWMgaW50IGxhbjg3eHhfY2FibGVfdGVzdF9zdGFydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy04ODctXHRcdH0gZWxzZSB7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6ODg4Olx0XHRcdHJjID0gYWNjZXNzX2VyZWcocGh5ZGV2LCBjYWJsZV90ZXN0W2ldLm1vZGUsXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtODg5LVx0XHRcdFx0XHQgY2FibGVfdGVzdFtpXS5iYW5rLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM9NTM3PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtaWNyb2NoaXBfdDFzX2RyaXZlcltdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtNTc1LVx0XHQuZ2V0X3BsY2Ffc3RhdHVzICAgID0gZ2VucGh5X2M0NV9wbGNhX2dldF9zdGF0dXMsXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjU3NjpcdFx0LmNhYmxlX3Rlc3Rfc3RhcnQgICA9IGdlbnBoeV9jNDVfb2F0YzE0X2NhYmxlX3Rlc3Rfc3RhcnQsXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjU3NzpcdFx0LmNhYmxlX3Rlc3RfZ2V0X3N0YXR1cyA9IGdlbnBoeV9jNDVfb2F0YzE0X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtNTc4LVx0XHQuZ2V0X3NxaSAgICAgICAgICAgID0gZ2VucGh5X2M0NV9vYXRjMTRfZ2V0X3NxaSxcbi0tXG5kcml2ZXJzL25ldC9waHkvbnhwLWM0NS10amExMXh4LmM9MTMyNj1zdGF0aWMgaW50IG54cF9jNDVfY2FibGVfdGVzdF9zdGFydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYy0xMzMxLVx0XHRcdCBWRU5EMV9QT1JUX0ZVTkNfRU5BQkxFUywgUEhZX1RFU1RfRU5BQkxFKTtcbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYzoxMzMyOlx0cmV0dXJuIHBoeV9zZXRfYml0c19tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgcmVnbWFwLVx1MDAzZWNhYmxlX3Rlc3QsXG5kcml2ZXJzL25ldC9waHkvbnhwLWM0NS10amExMXh4LmMtMTMzMy1cdFx0XHRcdENBQkxFX1RFU1RfRU5BQkxFIHwgQ0FCTEVfVEVTVF9TVEFSVCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jPTEzMzY9c3RhdGljIGludCBueHBfYzQ1X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYy0xMzQyLVxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jOjEzNDM6XHRyZXQgPSBueHBfYzQ1X3JlYWRfcmVnX2ZpZWxkKHBoeWRldiwgXHUwMDI2cmVnbWFwLVx1MDAzZWNhYmxlX3Rlc3RfdmFsaWQpO1xuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jLTEzNDQtXHRpZiAoIXJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYy0xMzcwLVxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jOjEzNzE6XHRwaHlfY2xlYXJfYml0c19tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgcmVnbWFwLVx1MDAzZWNhYmxlX3Rlc3QsXG5kcml2ZXJzL25ldC9waHkvbnhwLWM0NS10amExMXh4LmMtMTM3Mi1cdFx0XHQgICBDQUJMRV9URVNUX0VOQUJMRSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmM9MjExPXN0YXRpYyBpbnQgdGphMTF4eF9jb25maWdfYW5lZ19jYWJsZV90ZXN0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmMtMjE4LVxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmM6MjE5Olx0aWYgKCFwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZWNhYmxlX3Rlc3Rfc3RhcnQgfHxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jOjIyMDpcdCAgICAhcGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VjYWJsZV90ZXN0X2dldF9zdGF0dXMpXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYy0yMjEtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jLTIyNi1cbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jOjIyNzpcdHJldCA9IHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlY2FibGVfdGVzdF9zdGFydChwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmMtMjI4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYy0yMzMtXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYzoyMzQ6XHRyZXQgPSBwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZWNhYmxlX3Rlc3RfZ2V0X3N0YXR1cyhwaHlkZXYsIFx1MDAyNmZpbmlzaGVkKTtcbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jLTIzNS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYz0xNjAyPXN0YXRpYyBpbnQgb2F0YzE0X2NhYmxlX3Rlc3RfZ2V0X3Jlc3VsdF9jb2RlKGVudW0gb2F0YzE0X2hkZF9zdGF0dXMgc3RhdHVzKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTYxNy0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmM6MTYxODogKiBnZW5waHlfYzQ1X29hdGMxNF9jYWJsZV90ZXN0X2dldF9zdGF0dXMgLSBHZXQgc3RhdHVzIG9mIE9BVEMxNCAxMEJhc2UtVDFTXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTE2MTktICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEhZIGNhYmxlIHRlc3QuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy0xNjMzLSAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYzoxNjM0OmludCBnZW5waHlfYzQ1X29hdGMxNF9jYWJsZV90ZXN0X2dldF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTYzNS1cdFx0XHRcdFx0ICAgIGJvb2wgKmZpbmlzaGVkKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTY2MC19XG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jOjE2NjE6RVhQT1JUX1NZTUJPTChnZW5waHlfYzQ1X29hdGMxNF9jYWJsZV90ZXN0X2dldF9zdGF0dXMpO1xuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy0xNjYyLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy0xNjYzLS8qKlxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYzoxNjY0OiAqIGdlbnBoeV9jNDVfb2F0YzE0X2NhYmxlX3Rlc3Rfc3RhcnQgLSBTdGFydCBhIGNhYmxlIHRlc3Qgb24gYW4gT0FUQzE0XG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTE2NjUtICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwQmFzZS1UMVMgUEhZLlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTY4MS0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmM6MTY4MjppbnQgZ2VucGh5X2M0NV9vYXRjMTRfY2FibGVfdGVzdF9zdGFydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy0xNjgzLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTE3MDQtfVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYzoxNzA1OkVYUE9SVF9TWU1CT0woZ2VucGh5X2M0NV9vYXRjMTRfY2FibGVfdGVzdF9zdGFydCk7XG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTE3MDYtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM9MzIyPXZvaWQgcGh5X3Jlc29sdmVfYW5lZ19wYXVzZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTMyNC1cdGlmIChwaHlkZXYtXHUwMDNlZHVwbGV4ID09IERVUExFWF9GVUxMKSB7XG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYzozMjU6XHRcdHBoeWRldi1cdTAwM2VwYXVzZSA9IGxpbmttb2RlX3Rlc3RfYml0KEVUSFRPT0xfTElOS19NT0RFX1BhdXNlX0JJVCxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTMyNi1cdFx0XHRcdFx0XHQgIHBoeWRldi1cdTAwM2VscF9hZHZlcnRpc2luZyk7XG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYzozMjc6XHRcdHBoeWRldi1cdTAwM2Vhc3ltX3BhdXNlID0gbGlua21vZGVfdGVzdF9iaXQoXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy0zMjgtXHRcdFx0RVRIVE9PTF9MSU5LX01PREVfQXN5bV9QYXVzZV9CSVQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jPTQ0Nj1FWFBPUlRfU1lNQk9MKHBoeV9kb19pb2N0bCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTQ0OC0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHkuYzo0NDk6ICogcGh5X2RvX2lvY3RsX3J1bm5pbmcgLSBnZW5lcmljIG5kb19ldGhfaW9jdGwgaW1wbGVtZW50YXRpb24gYnV0IHRlc3QgZmlyc3RcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy00NTAtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LmM9NTMwPUVYUE9SVF9TWU1CT0wocGh5X3RyaWdnZXJfbWFjaGluZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5LmMtNTMxLVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjUzMjpzdGF0aWMgdm9pZCBwaHlfYWJvcnRfY2FibGVfdGVzdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTUzMy17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTUzOS1cdGlmIChlcnIpXG5kcml2ZXJzL25ldC9waHkvcGh5LmM6NTQwOlx0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCYjMzQ7RXJyb3Igd2hpbGUgYWJvcnRpbmcgY2FibGUgdGVzdFwmIzM0Oyk7XG5kcml2ZXJzL25ldC9waHkvcGh5LmMtNTQxLX1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LmM9ODIxPWludCBwaHlfZXRodG9vbF9nZXRfcGxjYV9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtODQ0LS8qKlxuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjg0NTogKiBwaHlfc3RhcnRfY2FibGVfdGVzdCAtIFN0YXJ0IGEgY2FibGUgdGVzdFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTg0Ni0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHkuYy04NDktICovXG5kcml2ZXJzL25ldC9waHkvcGh5LmM6ODUwOmludCBwaHlfc3RhcnRfY2FibGVfdGVzdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTg1MS1cdFx0XHQgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHkuYy04NTYtXHRpZiAoIShwaHlkZXYtXHUwMDNlZHJ2IFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjg1NzpcdCAgICAgIHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlY2FibGVfdGVzdF9zdGFydCBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3BoeS9waHkuYzo4NTg6XHQgICAgICBwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZWNhYmxlX3Rlc3RfZ2V0X3N0YXR1cykpIHtcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy04NTktXHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjayxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtODg3LVx0bmV0aWZfdGVzdGluZ19vbihkZXYpO1xuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjg4ODpcdGVyciA9IHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlY2FibGVfdGVzdF9zdGFydChwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTg4OS1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtOTEwLX1cbmRyaXZlcnMvbmV0L3BoeS9waHkuYzo5MTE6RVhQT1JUX1NZTUJPTChwaHlfc3RhcnRfY2FibGVfdGVzdCk7XG5kcml2ZXJzL25ldC9waHkvcGh5LmMtOTEyLVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTkxMy0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHkuYzo5MTQ6ICogcGh5X3N0YXJ0X2NhYmxlX3Rlc3RfdGRyIC0gU3RhcnQgYSByYXcgVERSIGNhYmxlIHRlc3RcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy05MTUtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtOTE5LSAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjkyMDppbnQgcGh5X3N0YXJ0X2NhYmxlX3Rlc3RfdGRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtOTIxLVx0XHRcdCAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHkuYy05MjctXHRpZiAoIShwaHlkZXYtXHUwMDNlZHJ2IFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjkyODpcdCAgICAgIHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlY2FibGVfdGVzdF90ZHJfc3RhcnQgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9waHkvcGh5LmM6OTI5Olx0ICAgICAgcGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VjYWJsZV90ZXN0X2dldF9zdGF0dXMpKSB7XG5kcml2ZXJzL25ldC9waHkvcGh5LmMtOTMwLVx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTk1OC1cdG5ldGlmX3Rlc3Rpbmdfb24oZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9waHkuYzo5NTk6XHRlcnIgPSBwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZWNhYmxlX3Rlc3RfdGRyX3N0YXJ0KHBoeWRldiwgY29uZmlnKTtcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy05NjAtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTk4MS19XG5kcml2ZXJzL25ldC9waHkvcGh5LmM6OTgyOkVYUE9SVF9TWU1CT0wocGh5X3N0YXJ0X2NhYmxlX3Rlc3RfdGRyKTtcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy05ODMtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jPTE1Mzg9c3RhdGljIGVudW0gcGh5X3N0YXRlX3dvcmsgX3BoeV9zdGF0ZV9tYWNoaW5lKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTE1NjItXHRjYXNlIFBIWV9DQUJMRVRFU1Q6XG5kcml2ZXJzL25ldC9waHkvcGh5LmM6MTU2MzpcdFx0ZXJyID0gcGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VjYWJsZV90ZXN0X2dldF9zdGF0dXMocGh5ZGV2LCBcdTAwMjZmaW5pc2hlZCk7XG5kcml2ZXJzL25ldC9waHkvcGh5LmMtMTU2NC1cdFx0aWYgKGVycikge1xuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjE1NjU6XHRcdFx0cGh5X2Fib3J0X2NhYmxlX3Rlc3QocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0xNTY2LVx0XHRcdG5ldGlmX3Rlc3Rpbmdfb2ZmKGRldik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jPTE2NjI9dm9pZCBwaHlfc3RvcChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0xNjc4LVx0aWYgKHBoeWRldi1cdTAwM2VzdGF0ZSA9PSBQSFlfQ0FCTEVURVNUKSB7XG5kcml2ZXJzL25ldC9waHkvcGh5LmM6MTY3OTpcdFx0cGh5X2Fib3J0X2NhYmxlX3Rlc3QocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0xNjgwLVx0XHRuZXRpZl90ZXN0aW5nX29mZihkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jPTEyMj1zaXplX3QgcGh5X2NhcHNfc3BlZWRzKHVuc2lnbmVkIGludCAqc3BlZWRzLCBzaXplX3Qgc2l6ZSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0xNDAtLyoqXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYzoxNDE6ICogcGh5X2NhcHNfbG9va3VwX2J5X2xpbmttb2RlKCkgLSBMb29rdXAgdGhlIGZhc3Rlc3QgbWF0Y2hpbmcgbGlua19jYXBhYmlsaXRpZXNcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jLTE0Mi0gKiBAbGlua21vZGVzOiBMaW5rbW9kZXMgdG8gbWF0Y2ggYWdhaW5zdFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MjYyPXN0YXRpYyB2b2lkIHBoeV9saW5rX2NoYW5nZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sIHVwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMjc1LS8qKlxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoyNzY6ICogcGh5X3VzZXNfc3RhdGVfbWFjaGluZSAtIHRlc3Qgd2hldGhlciBjb25zdW1lciBkcml2ZXIgdXNlcyBQQUwgc3RhdGUgbWFjaGluZVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0yNzctICogQHBoeWRldjogdGhlIHRhcmdldCBQSFkgZGV2aWNlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MzkyNT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfcGh5X29wcyBwaHlfZXRodG9vbF9waHlfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzkzMS1cdC5nZXRfcGxjYV9zdGF0dXNcdD0gcGh5X2V0aHRvb2xfZ2V0X3BsY2Ffc3RhdHVzLFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzozOTMyOlx0LnN0YXJ0X2NhYmxlX3Rlc3RcdD0gcGh5X3N0YXJ0X2NhYmxlX3Rlc3QsXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjM5MzM6XHQuc3RhcnRfY2FibGVfdGVzdF90ZHJcdD0gcGh5X3N0YXJ0X2NhYmxlX3Rlc3RfdGRyLFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zOTM0LX07XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTkxPWludCBwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0oc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzIwMi1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzIwMzpcdGlmICghcGh5bGlua190ZXN0KHBsLVx1MDAzZXN1cHBvcnRlZCwgUGF1c2UpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMjA0Olx0ICAgICFwaHlsaW5rX3Rlc3QocGwtXHUwMDNlc3VwcG9ydGVkLCBBc3ltX1BhdXNlKSlcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzIwNS1cdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMjA2LVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMjA3Olx0aWYgKCFwaHlsaW5rX3Rlc3QocGwtXHUwMDNlc3VwcG9ydGVkLCBBc3ltX1BhdXNlKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzIwOC1cdCAgICBwYXVzZS1cdTAwM2VyeF9wYXVzZSAhPSBwYXVzZS1cdTAwM2V0eF9wYXVzZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jPTM0MD1waHlfaW50ZXJmYWNlX3Qgc2ZwX3NlbGVjdF9pbnRlcmZhY2Uoc3RydWN0IHNmcF9idXMgKmJ1cyxcbi0tXG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jLTM0Mi17XG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jOjM0MzpcdGlmIChwaHlsaW5rX3Rlc3QobGlua19tb2RlcywgMjUwMDBiYXNlQ1JfRnVsbCkgfHxcbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmM6MzQ0Olx0ICAgIHBoeWxpbmtfdGVzdChsaW5rX21vZGVzLCAyNTAwMGJhc2VLUl9GdWxsKSB8fFxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYzozNDU6XHQgICAgcGh5bGlua190ZXN0KGxpbmtfbW9kZXMsIDI1MDAwYmFzZVNSX0Z1bGwpKVxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYy0zNDYtXHRcdHJldHVybiBQSFlfSU5URVJGQUNFX01PREVfMjVHQkFTRVI7XG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jLTM0Ny1cbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmM6MzQ4Olx0aWYgKHBoeWxpbmtfdGVzdChsaW5rX21vZGVzLCAxMDAwMGJhc2VDUl9GdWxsKSB8fFxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYzozNDk6XHQgICAgcGh5bGlua190ZXN0KGxpbmtfbW9kZXMsIDEwMDAwYmFzZVNSX0Z1bGwpIHx8XG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jOjM1MDpcdCAgICBwaHlsaW5rX3Rlc3QobGlua19tb2RlcywgMTAwMDBiYXNlTFJfRnVsbCkgfHxcbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmM6MzUxOlx0ICAgIHBoeWxpbmtfdGVzdChsaW5rX21vZGVzLCAxMDAwMGJhc2VMUk1fRnVsbCkgfHxcbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmM6MzUyOlx0ICAgIHBoeWxpbmtfdGVzdChsaW5rX21vZGVzLCAxMDAwMGJhc2VFUl9GdWxsKSB8fFxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYzozNTM6XHQgICAgcGh5bGlua190ZXN0KGxpbmtfbW9kZXMsIDEwMDAwYmFzZVRfRnVsbCkpXG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jLTM1NC1cdFx0cmV0dXJuIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUjtcbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmMtMzU1LVxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYzozNTY6XHRpZiAocGh5bGlua190ZXN0KGxpbmtfbW9kZXMsIDUwMDBiYXNlVF9GdWxsKSlcbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmMtMzU3LVx0XHRyZXR1cm4gUEhZX0lOVEVSRkFDRV9NT0RFXzVHQkFTRVI7XG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jLTM1OC1cbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmM6MzU5Olx0aWYgKHBoeWxpbmtfdGVzdChsaW5rX21vZGVzLCAyNTAwYmFzZVhfRnVsbCkgfHxcbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmM6MzYwOlx0ICAgIHBoeWxpbmtfdGVzdChsaW5rX21vZGVzLCAyNTAwYmFzZVRfRnVsbCkpXG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jLTM2MS1cdFx0cmV0dXJuIFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVg7XG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jLTM2Mi1cbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmM6MzYzOlx0aWYgKHBoeWxpbmtfdGVzdChsaW5rX21vZGVzLCAxMDAwYmFzZVRfSGFsZikgfHxcbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmM6MzY0Olx0ICAgIHBoeWxpbmtfdGVzdChsaW5rX21vZGVzLCAxMDAwYmFzZVRfRnVsbCkpXG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jLTM2NS1cdFx0cmV0dXJuIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTtcbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmMtMzY2LVxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYzozNjc6XHRpZiAocGh5bGlua190ZXN0KGxpbmtfbW9kZXMsIDEwMDBiYXNlWF9GdWxsKSlcbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmMtMzY4LVx0XHRyZXR1cm4gUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWDtcbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmMtMzY5LVxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYzozNzA6XHRpZiAocGh5bGlua190ZXN0KGxpbmtfbW9kZXMsIDEwMGJhc2VGWF9GdWxsKSlcbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmMtMzcxLVx0XHRyZXR1cm4gUEhZX0lOVEVSRkFDRV9NT0RFXzEwMEJBU0VYO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDQzMwoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDE5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIFBIWSBEcml2ZXIgSW5zdGFudGlhdGlvbiBhbmQgVGVzdGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb25zLCBgcGh5X3N0YXJ0X2NhYmxlX3Rlc3RgLCBgcGh5X3N0YXJ0X2NhYmxlX3Rlc3RfdGRyYCwgYW5kIHRoZSBsaWtlLCBidXQgSSYjMzk7bSBub3Qgc2VlaW5nIGEgZ2VuZXJpYyB3YXkgdG8gbW9jayBhIFBIWSBkcml2ZXIgb3IgYSBjbGVhbiBtZWNoYW5pc20gdG8gaW5zdGFudGlhdGUgYSBQSFkgZHJpdmVyIGRpcmVjdGx5IGZyb20gdXNlcnNwYWNlLiBUaGF0JiMzOTtzIGEgYml0IG9mIGEgcmVkIGZsYWcuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGVzZSBhcmUgZ2V0dGluZyBzZXQgdXAsIGVzcGVjaWFsbHkgaW4gYSB0ZXN0aW5nIGNvbnRleHQuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayBpZiBTeXprYWxsZXIgb2ZmZXJzIGFueSBkZWRpY2F0ZWQgbWV0aG9kcyBmb3IgdGVzdGluZyBQSFkgZHJpdmVycywgYmVjYXVzZSBpZiBpdCBkb2VzLCBpdCAqaGFzKiB0byBiZSBpbnN0YW50aWF0aW5nIHRoZW0gc29tZWhvdy4gU28sIHRoZSBxdWVzdGlvbiBiZWNvbWVzLCBob3cgYXJlIFBIWSBkcml2ZXJzIHR5cGljYWxseSBicm91Z2h0IHRvIGxpZmU/IEkga25vdyB0aGUgY29tbW9uIHBhdHRlcm46IGBtZGlvYnVzX3JlZ2lzdGVyYCBzY2FucyB0aGUgTURJTyBidXMsIHJlYWRzIHRoZSBQSFkgSUQsIGFuZCB0aGVuIGluc3RhbnRpYXRlcyB0aGUgYHBoeV9kZXZpY2VgIHN0cnVjdHVyZS4gU2ltcGxlIGVub3VnaCBpbiBhIHJlYWwtd29ybGQgc2NlbmFyaW8uCgpUaGUgcHJvYmxlbSBoZXJlLCBvZiBjb3Vyc2UsIGlzIHRoYXQgd2l0aG91dCBhY3R1YWwgaGFyZHdhcmUsIGBtZGlvYnVzX3JlZ2lzdGVyYCB3b24mIzM5O3QgZmluZCBhbnl0aGluZy4gVGhhdCBwb2ludHMgbWUgdG8gdGhlIGlkZWEgdGhhdCB0aGVyZSBoYXMgdG8gYmUgc29tZSBzb3J0IG9mIHNvZnR3YXJlLWVtdWxhdGVkIE1ESU8gYnVzIHRoYXQgdXNlcnNwYWNlIGNhbiBpbnRlcmFjdCB3aXRoLiBTbywgSSBuZWVkIHRvIGZpbmQgdGhlIGltcGxlbWVudGF0aW9uIG9mIHN1Y2ggYSBidXMuIExldCYjMzk7cyBzdGFydCB3aXRoIGEgcXVpY2sgc2VhcmNoLCBwZXJoYXBzIHNvbWV0aGluZyBsaWtlIGBkcml2ZXJzL25ldC9waHkvbWRpby1tb2NrdXAuY2Agb3Igc29tZXRoaW5nIGFuYWxvZ291cy4gTm9wZSwgbm90aGluZyB0aGVyZS4gT2theSwgbGV0JiMzOTtzIHdpZGVuIHRoZSBzZWFyY2ggc2xpZ2h0bHkgYW5kIHNlZSB3aGF0JiMzOTtzIGluIGBkcml2ZXJzL25ldC9tZGlvL2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21kaW8vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7YWNwaV9tZGlvLmMmIzM0OywKICAgICYjMzQ7Zndub2RlX21kaW8uYyYjMzQ7LAogICAgJiMzNDttZGlvLWFpcm9oYS5jJiMzNDssCiAgICAmIzM0O21kaW8tYXNwZWVkLmMmIzM0OywKICAgICYjMzQ7bWRpby1iY20taXByb2MuYyYjMzQ7LAogICAgJiMzNDttZGlvLWJjbS11bmltYWMuYyYjMzQ7LAogICAgJiMzNDttZGlvLWJpdGJhbmcuYyYjMzQ7LAogICAgJiMzNDttZGlvLWNhdml1bS5jJiMzNDssCiAgICAmIzM0O21kaW8tY2F2aXVtLmgmIzM0OywKICAgICYjMzQ7bWRpby1ncGlvLmMmIzM0OywKICAgICYjMzQ7bWRpby1oaXNpLWZlbWFjLmMmIzM0OywKICAgICYjMzQ7bWRpby1pMmMuYyYjMzQ7LAogICAgJiMzNDttZGlvLWlwcTQwMTkuYyYjMzQ7LAogICAgJiMzNDttZGlvLWlwcTgwNjQuYyYjMzQ7LAogICAgJiMzNDttZGlvLW1veGFydC5jJiMzNDssCiAgICAmIzM0O21kaW8tbXNjYy1taWltLmMmIzM0OywKICAgICYjMzQ7bWRpby1tdXgtYmNtLWlwcm9jLmMmIzM0OywKICAgICYjMzQ7bWRpby1tdXgtYmNtNjM2OC5jJiMzNDssCiAgICAmIzM0O21kaW8tbXV4LWdwaW8uYyYjMzQ7LAogICAgJiMzNDttZGlvLW11eC1tZXNvbi1nMTJhLmMmIzM0OywKICAgICYjMzQ7bWRpby1tdXgtbWVzb24tZ3hsLmMmIzM0OywKICAgICYjMzQ7bWRpby1tdXgtbW1pb3JlZy5jJiMzNDssCiAgICAmIzM0O21kaW8tbXV4LW11bHRpcGxleGVyLmMmIzM0OywKICAgICYjMzQ7bWRpby1tdXguYyYjMzQ7LAogICAgJiMzNDttZGlvLW12dXNiLmMmIzM0OywKICAgICYjMzQ7bWRpby1vY3Rlb24uYyYjMzQ7LAogICAgJiMzNDttZGlvLXBpYzY0aHBzYy5jJiMzNDssCiAgICAmIzM0O21kaW8tcmVhbHRlay1ydGw5MzAwLmMmIzM0OywKICAgICYjMzQ7bWRpby1yZWdtYXAuYyYjMzQ7LAogICAgJiMzNDttZGlvLXN1bjRpLmMmIzM0OywKICAgICYjMzQ7bWRpby10aHVuZGVyLmMmIzM0OywKICAgICYjMzQ7bWRpby14Z2VuZS5jJiMzNDssCiAgICAmIzM0O29mX21kaW8uYyYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMzgzCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk1ESU8gRHJpdmVyIEV4cGxvcmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gTURJTyBkcml2ZXJzLCBhbmQgaXQgc2VlbXMgdGhlcmUmIzM5O3MgYSByYW5nZSBvZiBpbXBsZW1lbnRhdGlvbnMgaGVyZTogYG1kaW8tZ3Bpby5jYCwgYG1kaW8tYml0YmFuZy5jYCwgYG1kaW8taTJjLmNgLCBgbWRpby1yZWdtYXAuY2AsIGFuZCBgbWRpby1tdXgtZ3Bpby5jYC4gTm9uZSBvZiB0aGVzZSBpbW1lZGlhdGVseSBqdW1wIG91dCBhcyBiZWluZyBtb2NrIGRyaXZlcnMsIHdoaWNoIGlzIHdoYXQgSSYjMzk7bSBsb29raW5nIGZvciBpbiB0aGUgY29udGV4dCBvZiBmdXp6aW5nLiBIbW0uLi4gd2FpdCBhIG1pbnV0ZS4uLiAqbWRpby1tdnVzYi5jKi4uLiBhIFVTQiBNRElPIGJ1cz8hIFRoYXQmIzM5O3MgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcuCgpJZiBzeXprYWxsZXIgY2FuIGVtdWxhdGUgVVNCIGRldmljZXMsIHdoaWNoIEkgKmtub3cqIGl0IGNhbiB2aWEgYHZoY2lgLCB0aGVuIHRoZW9yZXRpY2FsbHksIGl0IHNob3VsZCBiZSBhYmxlIHRvIGVtdWxhdGUgYSBNYXJ2ZWxsIFVTQiBNRElPIGRldmljZSEgVGhhdCBvcGVucyB1cCBzb21lIGV4Y2l0aW5nIHBvc3NpYmlsaXRpZXMgZm9yIGZ1enppbmcgdGhpcyBzcGVjaWZpYyBpbnRlcmZhY2UuIExldCYjMzk7cyBkaWcgaW50byBgbWRpby1tdnVzYi5jYCBhbmQgc2VlIHdoYXQgd2UmIzM5O3JlIHdvcmtpbmcgd2l0aCBoZXJlLiBUaGlzIGNvdWxkIGJlIGEgc29saWQgdGFyZ2V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW8tbXZ1c2ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tZGlvL21kaW8tbXZ1c2IuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxNzcwCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBgbWRpby1tdnVzYi5jYCoqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljcyBvZiBob3cgdGhlIE1hcnZlbGwgVVNCIE1ESU8gZHJpdmVyLCBgbWRpby1tdnVzYi5jYCwgaXMgaW1wbGVtZW50ZWQuIEkgbmVlZCB0byBxdWlja2x5IHJlY2FsbCB0aGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSBNRElPIGludGVyZmFjZSwgYW5kIGhvdyBhIFVTQiB0cmFuc3BvcnQgbWlnaHQgaW50ZXJhY3Qgd2l0aCBpdC4gV2hhdCBhcmUgdGhlIGtleSBkYXRhIHN0cnVjdHVyZXM/IEhvdyBpcyB0aGUgTURJTyB0cmFuc2FjdGlvbiBwcm90b2NvbCBtYXBwZWQgb250byBVU0IgdHJhbnNmZXJzPyBBcmUgdGhleSB1c2luZyBidWxrLCBpbnRlcnJ1cHQsIG9yIGNvbnRyb2wgZW5kcG9pbnRzPyBNb3JlIGltcG9ydGFudGx5LCB3aGVyZSBkb2VzIHRoZSBjb2RlIHJlc2lkZT8gVGhpcyBjaGVjayBpcyBsaWtlbHkgcmVsYXRlZCB0byBpc3N1ZXMgZnJvbSByZWNlbnQgbG9ncyBhbmQgSSBuZWVkIHRvIGFzc2VzcyBob3cgdGhlIGRyaXZlciBoYW5kbGVzIGRpZmZlcmVudCBQSFkgc3RhdGVzLCBlcnJvciBjb25kaXRpb25zLCBhbmQgaW50ZXJydXB0IHNlcnZpY2luZy4gTGV0JiMzOTtzIHNlZSBob3cgbXVjaCBvZiB0aGlzIGlzIGRvbmUgaW4gaGFyZHdhcmUgYW5kIGZpcm13YXJlLiBXaGF0IGFyZSB0aGUgdHlwaWNhbCByYWNlIGNvbmRpdGlvbnMgdG8gbG9vayBvdXQgZm9yLCB3aXRoIHVzYiBhbmQgTURJTz8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tZGlvL21kaW8tbXZ1c2IuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdFxuICAgMzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4gICA0Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAgIDU6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9tZGlvLmhcdTAwM2VcbiAgIDY6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZVxuICAgNzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3VzYi5oXHUwMDNlXG4gICA4Olx0XG4gICA5Olx0I2RlZmluZSBVU0JfTUFSVkVMTF9WSURcdDB4MTI4NlxuICAxMDpcdFxuICAxMTpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBtdnVzYl9tZGlvX3RhYmxlW10gPSB7XG4gIDEyOlx0XHR7IFVTQl9ERVZJQ0UoVVNCX01BUlZFTExfVklELCAweDFmYTQpIH0sXG4gIDEzOlx0XG4gIDE0Olx0XHR7fVxuICAxNTpcdH07XG4gIDE2Olx0TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIG12dXNiX21kaW9fdGFibGUpO1xuICAxNzpcdFxuICAxODpcdGVudW0ge1xuICAxOTpcdFx0TVZVU0JfQ01EX1BSRUFNQkxFMCxcbiAgMjA6XHRcdE1WVVNCX0NNRF9QUkVBTUJMRTEsXG4gIDIxOlx0XHRNVlVTQl9DTURfQUREUixcbiAgMjI6XHRcdE1WVVNCX0NNRF9WQUwsXG4gIDIzOlx0fTtcbiAgMjQ6XHRcbiAgMjU6XHRzdHJ1Y3QgbXZ1c2JfbWRpbyB7XG4gIDI2Olx0XHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldjtcbiAgMjc6XHRcdHN0cnVjdCBtaWlfYnVzICptZGlvO1xuICAyODpcdFxuICAyOTpcdFx0X19sZTE2IGJ1Zls0XTtcbiAgMzA6XHR9O1xuICAzMTpcdFxuICAzMjpcdHN0YXRpYyBpbnQgbXZ1c2JfbWRpb19yZWFkKHN0cnVjdCBtaWlfYnVzICptZGlvLCBpbnQgZGV2LCBpbnQgcmVnKVxuICAzMzpcdHtcbiAgMzQ6XHRcdHN0cnVjdCBtdnVzYl9tZGlvICptdnVzYiA9IG1kaW8tXHUwMDNlcHJpdjtcbiAgMzU6XHRcdGludCBlcnIsIGFsZW47XG4gIDM2Olx0XG4gIDM3Olx0XHRtdnVzYi1cdTAwM2VidWZbTVZVU0JfQ01EX0FERFJdID0gY3B1X3RvX2xlMTYoMHhhNDAwIHwgKGRldiBcdTAwM2NcdTAwM2MgNSkgfCByZWcpO1xuICAzODpcdFxuICAzOTpcdFx0ZXJyID0gdXNiX2J1bGtfbXNnKG12dXNiLVx1MDAzZXVkZXYsIHVzYl9zbmRidWxrcGlwZShtdnVzYi1cdTAwM2V1ZGV2LCAyKSxcbiAgNDA6XHRcdFx0XHQgICBtdnVzYi1cdTAwM2VidWYsIDYsIFx1MDAyNmFsZW4sIDEwMCk7XG4gIDQxOlx0XHRpZiAoZXJyKVxuICA0MjpcdFx0XHRyZXR1cm4gZXJyO1xuICA0MzpcdFxuICA0NDpcdFx0ZXJyID0gdXNiX2J1bGtfbXNnKG12dXNiLVx1MDAzZXVkZXYsIHVzYl9yY3ZidWxrcGlwZShtdnVzYi1cdTAwM2V1ZGV2LCA2KSxcbiAgNDU6XHRcdFx0XHQgICBcdTAwMjZtdnVzYi1cdTAwM2VidWZbTVZVU0JfQ01EX1ZBTF0sIDIsIFx1MDAyNmFsZW4sIDEwMCk7XG4gIDQ2Olx0XHRpZiAoZXJyKVxuICA0NzpcdFx0XHRyZXR1cm4gZXJyO1xuICA0ODpcdFxuICA0OTpcdFx0cmV0dXJuIGxlMTZfdG9fY3B1KG12dXNiLVx1MDAzZWJ1ZltNVlVTQl9DTURfVkFMXSk7XG4gIDUwOlx0fVxuICA1MTpcdFxuICA1MjpcdHN0YXRpYyBpbnQgbXZ1c2JfbWRpb193cml0ZShzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgaW50IGRldiwgaW50IHJlZywgdTE2IHZhbClcbiAgNTM6XHR7XG4gIDU0Olx0XHRzdHJ1Y3QgbXZ1c2JfbWRpbyAqbXZ1c2IgPSBtZGlvLVx1MDAzZXByaXY7XG4gIDU1Olx0XHRpbnQgYWxlbjtcbiAgNTY6XHRcbiAgNTc6XHRcdG12dXNiLVx1MDAzZWJ1ZltNVlVTQl9DTURfQUREUl0gPSBjcHVfdG9fbGUxNigweDgwMDAgfCAoZGV2IFx1MDAzY1x1MDAzYyA1KSB8IHJlZyk7XG4gIDU4Olx0XHRtdnVzYi1cdTAwM2VidWZbTVZVU0JfQ01EX1ZBTF0gID0gY3B1X3RvX2xlMTYodmFsKTtcbiAgNTk6XHRcbiAgNjA6XHRcdHJldHVybiB1c2JfYnVsa19tc2cobXZ1c2ItXHUwMDNldWRldiwgdXNiX3NuZGJ1bGtwaXBlKG12dXNiLVx1MDAzZXVkZXYsIDIpLFxuICA2MTpcdFx0XHRcdCAgICBtdnVzYi1cdTAwM2VidWYsIDgsIFx1MDAyNmFsZW4sIDEwMCk7XG4gIDYyOlx0fVxuICA2MzpcdFxuICA2NDpcdHN0YXRpYyBpbnQgbXZ1c2JfbWRpb19wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxuICA2NTpcdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4gIDY2Olx0e1xuICA2NzpcdFx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2aW50ZXJmYWNlLVx1MDAzZWRldjtcbiAgNjg6XHRcdHN0cnVjdCBtdnVzYl9tZGlvICptdnVzYjtcbiAgNjk6XHRcdHN0cnVjdCBtaWlfYnVzICptZGlvO1xuICA3MDpcdFxuICA3MTpcdFx0bWRpbyA9IGRldm1fbWRpb2J1c19hbGxvY19zaXplKGRldiwgc2l6ZW9mKCptdnVzYikpO1xuICA3MjpcdFx0aWYgKCFtZGlvKVxuICA3MzpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAgNzQ6XHRcbiAgNzU6XHRcdG12dXNiID0gbWRpby1cdTAwM2Vwcml2O1xuICA3NjpcdFx0bXZ1c2ItXHUwMDNlbWRpbyA9IG1kaW87XG4gIDc3Olx0XHRtdnVzYi1cdTAwM2V1ZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRlcmZhY2UpO1xuICA3ODpcdFxuICA3OTpcdFx0LyogUmV2ZXJzZWQgZnJvbSBVU0IgUENBUHMsIG5vIGlkZWEgd2hhdCB0aGVzZSBtZWFuLiAqL1xuICA4MDpcdFx0bXZ1c2ItXHUwMDNlYnVmW01WVVNCX0NNRF9QUkVBTUJMRTBdID0gY3B1X3RvX2xlMTYoMHhlODAwKTtcbiAgODE6XHRcdG12dXNiLVx1MDAzZWJ1ZltNVlVTQl9DTURfUFJFQU1CTEUxXSA9IGNwdV90b19sZTE2KDB4MDAwMSk7XG4gIDgyOlx0XG4gIDgzOlx0XHRzbnByaW50ZihtZGlvLVx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsIFwmIzM0O212dXNiLSVzXCYjMzQ7LCBkZXZfbmFtZShkZXYpKTtcbiAgODQ6XHRcdG1kaW8tXHUwMDNlbmFtZSA9IG1kaW8tXHUwMDNlaWQ7XG4gIDg1Olx0XHRtZGlvLVx1MDAzZXBhcmVudCA9IGRldjtcbiAgODY6XHRcdG1kaW8tXHUwMDNlcmVhZCA9IG12dXNiX21kaW9fcmVhZDtcbiAgODc6XHRcdG1kaW8tXHUwMDNld3JpdGUgPSBtdnVzYl9tZGlvX3dyaXRlO1xuICA4ODpcdFxuICA4OTpcdFx0dXNiX3NldF9pbnRmZGF0YShpbnRlcmZhY2UsIG12dXNiKTtcbiAgOTA6XHRcbiAgOTE6XHRcdHJldHVybiBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIGRldi1cdTAwM2VvZl9ub2RlKTtcbiAgOTI6XHR9XG4gIDkzOlx0XG4gIDk0Olx0c3RhdGljIHZvaWQgbXZ1c2JfbWRpb19kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UpXG4gIDk1Olx0e1xuICA5NjpcdFx0c3RydWN0IG12dXNiX21kaW8gKm12dXNiID0gdXNiX2dldF9pbnRmZGF0YShpbnRlcmZhY2UpO1xuICA5NzpcdFxuICA5ODpcdFx0bWRpb2J1c191bnJlZ2lzdGVyKG12dXNiLVx1MDAzZW1kaW8pO1xuICA5OTpcdFx0dXNiX3NldF9pbnRmZGF0YShpbnRlcmZhY2UsIE5VTEwpO1xuIDEwMDpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM1NTcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA0MTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgU3l6a2FsbGVyJiMzOTtzIFBvdGVudGlhbCBmb3IgVGVzdGluZyB0aGUgYGRhcDgyMTFyYCBQSFkgRHJpdmVyKioKCk9rYXksIHRoaXMgaXMgZXhjaXRpbmchIEkgc2VlIHRoYXQgYG1kaW8tbXZ1c2JgIGlzIGEgVVNCIE1ESU8gYnVzIGRyaXZlciwgYW5kIFN5emthbGxlciBjYW4gZW11bGF0ZSBhIFVTQiBkZXZpY2UgdXNpbmcgYHZoY2lgLiBUaGUgYmVhdXR5IG9mIHRoaXMgaXMgdGhhdCB3aGVuIFN5emthbGxlciBwcmVzZW50cyBhIFVTQiBkZXZpY2Ugd2l0aCBgaWRWZW5kb3I9MHgxMjg2YCBhbmQgYGlkUHJvZHVjdD0weDFmYTRgLCB0aGUgYG1kaW8tbXZ1c2JgIGRyaXZlciB3aWxsIHByb2JlLiBJdCB0aGVuIGFsbG9jYXRlcyBhbmQgcmVnaXN0ZXJzIGFuIE1ESU8gYnVzLiBDcnVjaWFsbHksIHRoaXMgTURJTyBidXMgd2lsbCBzdWJzZXF1ZW50bHkgc2NhbiBmb3IgUEhZcyBieSByZWFkaW5nIHJlZ2lzdGVycyAyIGFuZCAzIOKAkyB0aGUgUEhZIElEIOKAkyB2aWEgdGhlIGBtdnVzYl9tZGlvX3JlYWRgIGZ1bmN0aW9uLgoKTm93LCBoZXJlJiMzOTtzIHdoZXJlIFN5emthbGxlciBnZXRzIHRvIHNoaW5lLiBgbXZ1c2JfbWRpb19yZWFkYCBzZW5kcyBhIFVTQiBidWxrIG1lc3NhZ2UgdG8gdGhlIGVtdWxhdGVkIGRldmljZSwgd2hpY2ggbWVhbnMgU3l6a2FsbGVyIGNhbiBpbmplY3QgKndoYXRldmVyKiBkYXRhIGl0IGxpa2VzIGluIHJlc3BvbnNlISBUaGUgc3lzdGVtIGlzIHNldCB1cCB0byBhbGxvdyBTeXprYWxsZXIgdG8gY29udHJvbCB0aGUgUEhZIElELiBJIGNhbiBjcmFmdCB0aGUgcmVzcG9uc2UgdG8gYG12dXNiX21kaW9fcmVhZGAgdG8gZ2l2ZSB1cyBgMHgwMDA4YCBhbmQgYDB4MDExQmAgZm9yIHJlZ2lzdGVycyAyIGFuZCAzISBCaW5nby4KClRoZSBNRElPIGJ1cyB3aWxsIHRoZW4gY3JlYXRlIGEgUEhZIGRldmljZSB3aXRoIFBIWSBJRCBgMHgwMDA4MDExQmAsIGFuZCAqdGhhdCogd2lsbCBjYXVzZSB0aGUgYGRhcDgyMTFyYCBQSFkgZHJpdmVyIHRvIGJpbmQgdG8gaXQhIFRoaXMsIGluIHR1cm4sIHdpbGwgdHJpZ2dlciBhIGNhbGwgdG8gYGRhcDgyMTFyX2NvbmZpZ19pbml0YC4gQnJpbGxpYW50ISBTeXprYWxsZXIgaGFzIGEgY2xlYXIgcGF0aCB0byBnZXQgdG8gdGhpcyBjcml0aWNhbCBmdW5jdGlvbi4gVGhpcyBpcyBhYnNvbHV0ZWx5IGFuIGF2ZW51ZSBmb3IgdGVzdGluZyB0aGUgYGRhcDgyMTFyYCBQSFkgZHJpdmVyIQoKSG93ZXZlciwgYSBxdWVzdGlvbiBhcmlzZXMuIGBkYXA4MjExcl9jb25maWdfaW5pdGAgY2hlY2tzIGBwaHlfaW50ZXJmYWNlX2lzX3JnbWlpKHBoeWRldilgLiBCdXQgaG93IGlzIHRoZSBQSFkgaW50ZXJmYWNlIG1vZGUgc2V0PyBOb3JtYWxseSwgdGhpcyBpcyBkb25lIGJ5IHRoZSBNQUMgZHJpdmVyIHdoZW4gaXQgY2FsbHMgYHBoeV9jb25uZWN0YCBvciBgcGh5X2F0dGFjaGAuIEJ1dCBoZXJlJiMzOTtzIHRoZSBjYXRjaDogdGhlIFBIWSBpcyBiZWluZyBjcmVhdGVkIGRpcmVjdGx5IG9uIHRoZSBNRElPIGJ1cy4gSXQmIzM5O3MgKm5vdCogYXR0YWNoZWQgdG8gYW55IE1BQyB5ZXQuIElzIGBkYXA4MjExcl9jb25maWdfaW5pdGAgYWN0dWFsbHkgY2FsbGVkIGR1cmluZyBwcm9iZT8gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgIHRvIHNlZSBwcmVjaXNlbHkgd2hlbiBgY29uZmlnX2luaXRgIGlzIGludm9rZWQuIEl0IGNvdWxkIGJlIHBhcnQgb2YgdGhlIGluaXRpYWwgcHJvYmUgcHJvY2Vzcywgd2hpY2ggd291bGQgYmUgaWRlYWwuIEkgbmVlZCB0byBrbm93IHRoZSBzdGF0ZSBvZiB0aGUgUEhZIHdoZW4gYGNvbmZpZ19pbml0YCBpcyBjYWxsZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBpbnRlcmZhY2UgY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZ19pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTEzNDE9aW50IHBoeV9pbml0X2h3KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMzY1LVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMzY2Olx0aWYgKHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlY29uZmlnX2luaXQpIHtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTM2NzpcdFx0cmV0ID0gcGh5ZGV2LVx1MDAzZWRydi1cdTAwM2Vjb25maWdfaW5pdChwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMzY4LVx0XHRpZiAocmV0IFx1MDAzYyAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDczNAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJiMzOTttIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDoKCioqVW5kZXJzdGFuZGluZyB0aGUgVGltaW5nIG9mIGBwaHlfaW5pdF9od2AqKgoKUmlnaHQsIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYHBoeV9pbml0X2h3YC4gVGhlIGNydWNpYWwgcXVlc3Rpb24gSSYjMzk7bSBncmFwcGxpbmcgd2l0aCBpcyAqd2hlbiogaXMgdGhpcyBmdW5jdGlvbiBhY3R1YWxseSBpbnZva2VkIHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0gaW5pdGlhbGl6YXRpb24gZmxvdz8gSSYjMzk7bSB0cnlpbmcgdG8gcGluIGRvd24gdGhlIGV4YWN0IHNlcXVlbmNlIG9mIGV2ZW50cy4gSXMgaXQgY2FsbGVkIGVhcmx5LCBtYXliZSBkdXJpbmcgdGhlIGRldmljZSBkcml2ZXImIzM5O3MgcHJvYmUgcm91dGluZT8gT3IgcGVyaGFwcyBpdCYjMzk7cyBkZWZlcnJlZCB0byBhIGxhdGVyIHN0YWdlLCBsaWtlIGR1cmluZyBuZXR3b3JrIGludGVyZmFjZSBicmluZy11cD8gS25vd2luZyB0aGlzIGlzIGZ1bmRhbWVudGFsIGZvciBkZWJ1Z2dpbmcgYW5kIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGludm9sdmVkIGluIGluaXRpYWxpemluZyB0aGUgcGh5c2ljYWwgbGF5ZXIuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIHRocm91Z2ggdGhlIGRyaXZlciBjb2RlIGFuZCB0aGUgcGxhdGZvcm0gaW5pdGlhbGl6YXRpb24gc2NyaXB0cyB0byB0cmFjZSB0aGUgY2FsbGluZyBwYXRoLiBBbmQsIG9mIGNvdXJzZSwgSSYjMzk7bSBhc3N1bWluZyBpdCYjMzk7cyBoYXJkd2FyZS1zcGVjaWZpYywgcmVxdWlyaW5nIG1lIHRvIGxvb2sgYXQgdGhlIHJlbGV2YW50IGRhdGEgc2hlZXRzIGFuZCByZWZlcmVuY2UgbWFudWFscy4gVWx0aW1hdGVseSwgZGV0ZXJtaW5pbmcgdGhlIHRpbWluZyBpcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBoYXJkd2FyZSBpcyBpbml0aWFsaXplZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5X2luaXRfaHcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9Mzc4PXN0YXRpYyBfX21heWJlX3VudXNlZCBpbnQgbWRpb19idXNfcGh5X3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zOTgtXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjM5OTpcdHJldCA9IHBoeV9pbml0X2h3KHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTQwMC1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xMzA1PUVYUE9SVF9TWU1CT0wocGh5X2Rpc2Nvbm5lY3QpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTMyMS0gKiAgIGVmZm9ydCB0byBzdXBwb3J0IHN1Y2ggYnJva2VuIFBIWXMsIHRoaXMgZnVuY3Rpb24gaXMgc2VwYXJhdGUgZnJvbSB0aGVcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTMyMjogKiAgIHN0YW5kYXJkIHBoeV9pbml0X2h3KCkgd2hpY2ggd2lsbCB6ZXJvIGFsbCB0aGUgb3RoZXIgYml0cyBpbiB0aGUgQk1DUlxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMzIzLSAqICAgYW5kIHJlYXBwbHkgYWxsIGRyaXZlci1zcGVjaWZpYyBhbmQgYm9hcmQtc3BlY2lmaWMgZml4dXBzLlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTMyNT1zdGF0aWMgaW50IHBoeV9wb2xsX3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMzQwLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMzQxOmludCBwaHlfaW5pdF9odyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMzQyLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEzODctfVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMzg4OkVYUE9SVF9TWU1CT0wocGh5X2luaXRfaHcpO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMzg5LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTc1Mj1pbnQgcGh5X2F0dGFjaF9kaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE4NzQtXHQgKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTg3NTpcdGVyciA9IHBoeV9pbml0X2h3KHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE4NzYtXHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTU1MgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlLCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipUcmFjaW5nIHRoZSBQSFkgSW5pdGlhbGl6YXRpb24gUGF0aCoqCgpSaWdodCwgbGV0IG1lIHNlZS4uLiBgcGh5X2luaXRfaHdgIGlzIGRlZmluaXRlbHkgdHJpZ2dlcmVkIHdpdGhpbiB0aGUgYHBoeV9hdHRhY2hfZGlyZWN0YCBmdW5jdGlvbi4gQW5kIEkga25vdyB0aGF0IGBwaHlfYXR0YWNoX2RpcmVjdGAgaXMgY2FsbGVkIHdoZW4gYSBNQUMgZHJpdmVyLCByaWdodCBpbiBpdHMgYGNvbm5lY3RgIGNhbGxiYWNrLCBsaW5rcyB1cCB3aXRoIHRoZSBQSFkuIFNvIGZhciwgc28gZ29vZC4gVGhhdCYjMzk7cyB0aGUgbm9ybWFsIGRhdGEgcGF0aC4KCkJ1dCB0aGUgcmVhbCBxdWVzdGlvbiBJIG5lZWQgdG8gYXNrIG15c2VsZiBoZXJlIGlzIHdoZXRoZXIgYHBoeV9pbml0X2h3YCBpcyBhbHNvIGdldHRpbmcgY2FsbGVkIGR1cmluZyB0aGF0IGluaXRpYWwgUEhZICpwcm9iZSogcGhhc2UuIEkgbmVlZCB0byBiZSBzdXJlIHRoZSBoYXJkd2FyZSBpcyBiZWluZyBpbml0aWFsaXplZCBpbiB0aGUgcHJvcGVyIG9yZGVyLiBUaGF0IHN0YXJ0dXAgc2VxdWVuY2UgaXMgd2hlcmUgdGhpbmdzIHRlbmQgdG8gZ28gc2lkZXdheXMgaWYgeW91JiMzOTtyZSBub3QgY2FyZWZ1bC4gVGhpcyBpcyBjcnVjaWFsIGZvciBkZXRlcm1pbmluZyBob3cgdG8gZGVidWcgYW55IHBvdGVudGlhbCBQSFktcmVsYXRlZCBpc3N1ZXMgbGF0ZXIgb24uIExldCBtZSBrZWVwIGRpZ2dpbmcuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5X2luaXRfaHcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9Mzc4PXN0YXRpYyBfX21heWJlX3VudXNlZCBpbnQgbWRpb19idXNfcGh5X3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zOTgtXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjM5OTpcdHJldCA9IHBoeV9pbml0X2h3KHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTQwMC1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xMzA1PUVYUE9SVF9TWU1CT0wocGh5X2Rpc2Nvbm5lY3QpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTMyMS0gKiAgIGVmZm9ydCB0byBzdXBwb3J0IHN1Y2ggYnJva2VuIFBIWXMsIHRoaXMgZnVuY3Rpb24gaXMgc2VwYXJhdGUgZnJvbSB0aGVcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTMyMjogKiAgIHN0YW5kYXJkIHBoeV9pbml0X2h3KCkgd2hpY2ggd2lsbCB6ZXJvIGFsbCB0aGUgb3RoZXIgYml0cyBpbiB0aGUgQk1DUlxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMzIzLSAqICAgYW5kIHJlYXBwbHkgYWxsIGRyaXZlci1zcGVjaWZpYyBhbmQgYm9hcmQtc3BlY2lmaWMgZml4dXBzLlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTMyNT1zdGF0aWMgaW50IHBoeV9wb2xsX3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMzQwLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMzQxOmludCBwaHlfaW5pdF9odyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMzQyLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEzODctfVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMzg4OkVYUE9SVF9TWU1CT0wocGh5X2luaXRfaHcpO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMzg5LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTc1Mj1pbnQgcGh5X2F0dGFjaF9kaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE4NzQtXHQgKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTg3NTpcdGVyciA9IHBoeV9pbml0X2h3KHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE4NzYtXHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjM3MwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipIbW0sIFRoYXQmIzM5O3MgVW5leHBlY3RlZC4qKgoKV2FpdCBhIG1pbnV0ZS4uLiBJJiMzOTttIGxvb2tpbmcgYXQgYHBoeV9wcm9iZWAgaW4gYHBoeV9kZXZpY2UuY2AgYW5kIHNvbWV0aGluZyBqdXN0IGRvZXNuJiMzOTt0IHNpdCByaWdodC4gSSYjMzk7ZCAqYXNzdW1lZCogdGhhdCB0aGUgcHJvYmluZyBwcm9jZXNzIHdvdWxkIGluaGVyZW50bHkgaW5jbHVkZSBhbiBpbml0aWFsaXphdGlvbiBzdGVwLCBwYXJ0aWN1bGFybHkgc29tZXRoaW5nIGxpa2UgYHBoeV9pbml0X2h3YC4gSXQmIzM5O3MgYWxtb3N0IGF4aW9tYXRpYyB0aGF0IHlvdSYjMzk7ZCBuZWVkIHRvIGluaXRpYWxpemUgdGhlIGhhcmR3YXJlIHRvIGFjdHVhbGx5ICpwcm9iZSogaXQgZWZmZWN0aXZlbHksIHJpZ2h0PyBPdGhlcndpc2UsIHdoYXQgYXJlIHlvdSBldmVuIGxvb2tpbmcgZm9yPyBZb3UgY2FuJiMzOTt0IGp1c3QgZXhwZWN0IGl0IHRvIG1hZ2ljYWxseSB3b3JrIHdpdGhvdXQgcHV0dGluZyBpdCBpbiBhIGtub3duLCBiYXNlbGluZSBzdGF0ZS4gVGhpcyBjYWxscyBmb3IgYSBjbG9zZXIgaW5zcGVjdGlvbiBvZiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgdGhlIGludGVuZGVkIGFyY2hpdGVjdHVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgKmJlZm9yZSogYHBoeV9wcm9iZWAsIGFuZCBpZiB0aGUgaW5pdGlhbGl6YXRpb24gaXMgYmVpbmcgZGVmZXJyZWQsIG9yIHBlcmhhcHMgaGFuZGxlZCBpbiBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IHdheSB0aGFuIEkmIzM5O2QgZXhwZWN0LiBJcyB0aGVyZSBhIHNlcGFyYXRlLCBleHBsaWNpdCBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBjYWxsZWQgZWFybGllciwgcGVyaGFwcyB0aHJvdWdoIGEgZGV2aWNlIHRyZWUgb3IgcGxhdGZvcm0tc3BlY2lmaWMgZHJpdmVyIHNldHVwPyBPciBhbSBJIG1pc3Npbmcgc29tZXRoaW5nIGFsdG9nZXRoZXI/IFRoZXJlIG1pZ2h0IGJlIGFuIGludGVyZXN0aW5nIGRlc2lnbiBjaG9pY2UgaGVyZSBhbmQgSSB3YW50IHRvIHVuZGVyc3RhbmQgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeV9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0zNjUyPUVYUE9SVF9TWU1CT0xfR1BMKGZ3bm9kZV9nZXRfcGh5X25vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzY1NC0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MzY1NTogKiBwaHlfcHJvYmUgLSBwcm9iZSBhbmQgaW5pdCBhIFBIWSBkZXZpY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzY1Ni0gKiBAZGV2OiBkZXZpY2UgdG8gcHJvYmUgYW5kIGluaXRcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM2NTktICovXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjM2NjA6c3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNjYxLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTM4Mzk9c3RhdGljIGludCBwaHlfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBwaHlfZHJpdmVyICpuZXdfZHJpdmVyLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzg2NS1cdG5ld19kcml2ZXItXHUwMDNlbWRpb2Rydi5kcml2ZXIuYnVzID0gXHUwMDI2bWRpb19idXNfdHlwZTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6Mzg2NjpcdG5ld19kcml2ZXItXHUwMDNlbWRpb2Rydi5kcml2ZXIucHJvYmUgPSBwaHlfcHJvYmU7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM4NjctXHRuZXdfZHJpdmVyLVx1MDAzZW1kaW9kcnYuZHJpdmVyLnJlbW92ZSA9IHBoeV9yZW1vdmU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MDE1CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIGBwaHlfcHJvYmVgIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBgcGh5X3Byb2JlYCBpbXBsZW1lbnRhdGlvbi4gSSBuZWVkIHRvIGdldCBhIHNvbGlkIGdyYXNwIG9mIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGhhbmRsaW5nIFBIWSBkZXRlY3Rpb24gYW5kIGNvbmZpZ3VyYXRpb24uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBhbmQgdmVyaWZ5IHRoZSBzcGVjaWZpYyBtZXRob2RzIHVzZWQuIElzIGl0IHVzaW5nIGF1dG9uZWdvdGlhdGlvbj8gQXJlIHRoZXJlIHNwZWNpZmljIHJlZ2lzdGVyIHJlYWRzIGFuZCB3cml0ZXMgaW52b2x2ZWQ/IFdoYXQgYXJlIHRoZSBwb3RlbnRpYWwgZmFpbHVyZSBwb2ludHM/IEkgbmVlZCB0byBsb29rIGNsb3NlbHkgYXQgdGhlIGVycm9yIGhhbmRsaW5nLCBlc3BlY2lhbGx5IGNvbmNlcm5pbmcgd2hpY2ggUEhZIHR5cGVzIGl0JiMzOTtzIGF0dGVtcHRpbmcgdG8gZGV0ZWN0IGFuZCBzdXBwb3J0LiBJIGFsc28gbmVlZCB0byBzZWUgaWYgaXQgZ3JhY2VmdWxseSBoYW5kbGVzIHNpdHVhdGlvbnMgd2hlcmUgdGhlIFBIWSBtaWdodCBub3QgYmUgaW1tZWRpYXRlbHkgcmVzcG9uc2l2ZS4gSSB3YW50IHRvIGNoZWNrIGZvciByYWNlIGNvbmRpdGlvbnMsIGVzcGVjaWFsbHkgaWYgdGhlcmUmIzM5O3MgYW55IGludGVycnVwdC1kcml2ZW4gbG9naWMgaW52b2x2ZWQgaW4gdGhlIGRldGVjdGlvbiBwcm9jZXNzLiBBcmUgdGhlcmUgYW55IGFzc3VtcHRpb25zIGJlaW5nIG1hZGUgYWJvdXQgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgb3IgZHJpdmVyIGVudmlyb25tZW50IHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBJIHNob3VsZCBpZGVudGlmeSByaWdodCBub3c/IFRoaXMgaXMgYWxsIGFib3V0IHZlcmlmeWluZyB0aGUgcm9idXN0bmVzcyBhbmQgZWZmaWNpZW5jeSBvZiB0aGUgcHJvYmUgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzY1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzY1MDpcdFx0cmV0dXJuIGZ3bm9kZV9maW5kX3JlZmVyZW5jZShmd25vZGUsIFwmIzM0O3BoeS1kZXZpY2VcJiMzNDssIDApO1xuMzY1MTpcdH1cbjM2NTI6XHRFWFBPUlRfU1lNQk9MX0dQTChmd25vZGVfZ2V0X3BoeV9ub2RlKTtcbjM2NTM6XHRcbjM2NTQ6XHQvKipcbjM2NTU6XHQgKiBwaHlfcHJvYmUgLSBwcm9iZSBhbmQgaW5pdCBhIFBIWSBkZXZpY2VcbjM2NTY6XHQgKiBAZGV2OiBkZXZpY2UgdG8gcHJvYmUgYW5kIGluaXRcbjM2NTc6XHQgKlxuMzY1ODpcdCAqIFRha2UgY2FyZSBvZiBzZXR0aW5nIHVwIHRoZSBwaHlfZGV2aWNlIHN0cnVjdHVyZSwgc2V0IHRoZSBzdGF0ZSB0byBSRUFEWS5cbjM2NTk6XHQgKi9cbjM2NjA6XHRzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4zNjYxOlx0e1xuMzY2MjpcdFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHRvX3BoeV9kZXZpY2UoZGV2KTtcbjM2NjM6XHRcdHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYgPSBwaHlkZXYtXHUwMDNlbWRpby5kZXYuZHJpdmVyO1xuMzY2NDpcdFx0c3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydiA9IHRvX3BoeV9kcml2ZXIoZHJ2KTtcbjM2NjU6XHRcdGludCBlcnIgPSAwO1xuMzY2NjpcdFxuMzY2NzpcdFx0cGh5ZGV2LVx1MDAzZWRydiA9IHBoeWRydjtcbjM2Njg6XHRcbjM2Njk6XHRcdC8qIERpc2FibGUgdGhlIGludGVycnVwdCBpZiB0aGUgUEhZIGRvZXNuJiMzOTt0IHN1cHBvcnQgaXRcbjM2NzA6XHRcdCAqIGJ1dCB0aGUgaW50ZXJydXB0IGlzIHN0aWxsIGEgdmFsaWQgb25lXG4zNjcxOlx0XHQgKi9cbjM2NzI6XHRcdGlmICghcGh5X2Rydl9zdXBwb3J0c19pcnEocGh5ZHJ2KSBcdTAwMjZcdTAwMjYgcGh5X2ludGVycnVwdF9pc192YWxpZChwaHlkZXYpKVxuMzY3MzpcdFx0XHRwaHlkZXYtXHUwMDNlaXJxID0gUEhZX1BPTEw7XG4zNjc0Olx0XG4zNjc1Olx0XHRpZiAocGh5ZHJ2LVx1MDAzZWZsYWdzIFx1MDAyNiBQSFlfSVNfSU5URVJOQUwpXG4zNjc2Olx0XHRcdHBoeWRldi1cdTAwM2Vpc19pbnRlcm5hbCA9IHRydWU7XG4zNjc3Olx0XG4zNjc4Olx0XHQvKiBEZWFzc2VydCB0aGUgcmVzZXQgc2lnbmFsICovXG4zNjc5Olx0XHRwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMCk7XG4zNjgwOlx0XG4zNjgxOlx0XHRpZiAocGh5ZGV2LVx1MDAzZWRydi1cdTAwM2Vwcm9iZSkge1xuMzY4MjpcdFx0XHRlcnIgPSBwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZXByb2JlKHBoeWRldik7XG4zNjgzOlx0XHRcdGlmIChlcnIpXG4zNjg0Olx0XHRcdFx0Z290byBvdXQ7XG4zNjg1Olx0XHR9XG4zNjg2Olx0XG4zNjg3Olx0XHRwaHlfZGlzYWJsZV9pbnRlcnJ1cHRzKHBoeWRldik7XG4zNjg4Olx0XG4zNjg5Olx0XHQvKiBTdGFydCBvdXQgc3VwcG9ydGluZyBldmVyeXRoaW5nLiBFdmVudHVhbGx5LFxuMzY5MDpcdFx0ICogYSBjb250cm9sbGVyIHdpbGwgYXR0YWNoLCBhbmQgbWF5IG1vZGlmeSBvbmVcbjM2OTE6XHRcdCAqIG9yIGJvdGggb2YgdGhlc2UgdmFsdWVzXG4zNjkyOlx0XHQgKi9cbjM2OTM6XHRcdGlmIChwaHlkcnYtXHUwMDNlZmVhdHVyZXMpIHtcbjM2OTQ6XHRcdFx0bGlua21vZGVfY29weShwaHlkZXYtXHUwMDNlc3VwcG9ydGVkLCBwaHlkcnYtXHUwMDNlZmVhdHVyZXMpO1xuMzY5NTpcdFx0XHRnZW5waHlfYzQ1X3JlYWRfZWVlX2FiaWxpdGllcyhwaHlkZXYpO1xuMzY5NjpcdFx0fVxuMzY5NzpcdFx0ZWxzZSBpZiAocGh5ZHJ2LVx1MDAzZWdldF9mZWF0dXJlcylcbjM2OTg6XHRcdFx0ZXJyID0gcGh5ZHJ2LVx1MDAzZWdldF9mZWF0dXJlcyhwaHlkZXYpO1xuMzY5OTpcdFx0ZWxzZSBpZiAocGh5ZGV2LVx1MDAzZWlzX2M0NSlcbjM3MDA6XHRcdFx0ZXJyID0gZ2VucGh5X2M0NV9wbWFfcmVhZF9hYmlsaXRpZXMocGh5ZGV2KTtcbjM3MDE6XHRcdGVsc2VcbjM3MDI6XHRcdFx0ZXJyID0gZ2VucGh5X3JlYWRfYWJpbGl0aWVzKHBoeWRldik7XG4zNzAzOlx0XG4zNzA0Olx0XHRpZiAoZXJyKVxuMzcwNTpcdFx0XHRnb3RvIG91dDtcbjM3MDY6XHRcbjM3MDc6XHRcdGlmICghbGlua21vZGVfdGVzdF9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXV0b25lZ19CSVQsXG4zNzA4Olx0XHRcdFx0ICAgICAgIHBoeWRldi1cdTAwM2VzdXBwb3J0ZWQpKVxuMzcwOTpcdFx0XHRwaHlkZXYtXHUwMDNlYXV0b25lZyA9IDA7XG4zNzEwOlx0XG4zNzExOlx0XHRpZiAobGlua21vZGVfdGVzdF9iaXQoRVRIVE9PTF9MSU5LX01PREVfMTAwMGJhc2VUX0hhbGZfQklULFxuMzcxMjpcdFx0XHRcdCAgICAgIHBoeWRldi1cdTAwM2VzdXBwb3J0ZWQpKVxuMzcxMzpcdFx0XHRwaHlkZXYtXHUwMDNlaXNfZ2lnYWJpdF9jYXBhYmxlID0gMTtcbjM3MTQ6XHRcdGlmIChsaW5rbW9kZV90ZXN0X2JpdChFVEhUT09MX0xJTktfTU9ERV8xMDAwYmFzZVRfRnVsbF9CSVQsXG4zNzE1Olx0XHRcdFx0ICAgICAgcGh5ZGV2LVx1MDAzZXN1cHBvcnRlZCkpXG4zNzE2Olx0XHRcdHBoeWRldi1cdTAwM2Vpc19naWdhYml0X2NhcGFibGUgPSAxO1xuMzcxNzpcdFxuMzcxODpcdFx0b2Zfc2V0X3BoeV9zdXBwb3J0ZWQocGh5ZGV2KTtcbjM3MTk6XHRcbjM3MjA6XHRcdGVyciA9IHBoeV9zZXR1cF9wb3J0cyhwaHlkZXYpO1xuMzcyMTpcdFx0aWYgKGVycilcbjM3MjI6XHRcdFx0Z290byBvdXQ7XG4zNzIzOlx0XG4zNzI0Olx0XHRwaHlfYWR2ZXJ0aXNlX3N1cHBvcnRlZChwaHlkZXYpO1xuMzcyNTpcdFxuMzcyNjpcdFx0LyogR2V0IFBIWSBkZWZhdWx0IEVFRSBhZHZlcnRpc2luZyBtb2RlcyBhbmQgaGFuZGxlIHRoZW0gYXMgcG90ZW50aWFsbHlcbjM3Mjc6XHRcdCAqIHNhZmUgaW5pdGlhbCBjb25maWd1cmF0aW9uLlxuMzcyODpcdFx0ICovXG4zNzI5Olx0XHRlcnIgPSBnZW5waHlfYzQ1X3JlYWRfZWVlX2FkdihwaHlkZXYsIHBoeWRldi1cdTAwM2VhZHZlcnRpc2luZ19lZWUpO1xuMzczMDpcdFx0aWYgKGVycilcbjM3MzE6XHRcdFx0Z290byBvdXQ7XG4zNzMyOlx0XG4zNzMzOlx0XHQvKiBHZXQgdGhlIEVFRSBtb2RlcyB3ZSB3YW50IHRvIHByb2hpYml0LiAqL1xuMzczNDpcdFx0b2Zfc2V0X3BoeV9lZWVfYnJva2VuKHBoeWRldik7XG4zNzM1Olx0XG4zNzM2Olx0XHQvKiBTb21lIFBIWXMgbWF5IGFkdmVydGlzZSwgYnkgZGVmYXVsdCwgbm90IHN1cHBvcnQgRUVFIG1vZGVzLiBTbyxcbjM3Mzc6XHRcdCAqIHdlIG5lZWQgdG8gY2xlYW4gdGhlbS4gSW4gYWRkaXRpb24gcmVtb3ZlIGFsbCBkaXNhYmxlZCBFRUUgbW9kZXMuXG4zNzM4Olx0XHQgKi9cbjM3Mzk6XHRcdGxpbmttb2RlX2FuZChwaHlkZXYtXHUwMDNlYWR2ZXJ0aXNpbmdfZWVlLCBwaHlkZXYtXHUwMDNlc3VwcG9ydGVkX2VlZSxcbjM3NDA6XHRcdFx0ICAgICBwaHlkZXYtXHUwMDNlYWR2ZXJ0aXNpbmdfZWVlKTtcbjM3NDE6XHRcdGxpbmttb2RlX2FuZG5vdChwaHlkZXYtXHUwMDNlYWR2ZXJ0aXNpbmdfZWVlLCBwaHlkZXYtXHUwMDNlYWR2ZXJ0aXNpbmdfZWVlLFxuMzc0MjpcdFx0XHRcdHBoeWRldi1cdTAwM2VlZWVfZGlzYWJsZWRfbW9kZXMpO1xuMzc0MzpcdFxuMzc0NDpcdFx0LyogVGhlcmUgaXMgbm8gXCYjMzQ7ZW5hYmxlZFwmIzM0OyBmbGFnLiBJZiBQSFkgaXMgYWR2ZXJ0aXNpbmcsIGFzc3VtZSBpdCBpc1xuMzc0NTpcdFx0ICoga2luZCBvZiBlbmFibGVkLlxuMzc0NjpcdFx0ICovXG4zNzQ3Olx0XHRwaHlkZXYtXHUwMDNlZWVlX2NmZy5lZWVfZW5hYmxlZCA9ICFsaW5rbW9kZV9lbXB0eShwaHlkZXYtXHUwMDNlYWR2ZXJ0aXNpbmdfZWVlKTtcbjM3NDg6XHRcbjM3NDk6XHRcdC8qIEdldCBtYXN0ZXIvc2xhdmUgc3RyYXAgb3ZlcnJpZGVzICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4ODI1CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMjM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgUEhZIERyaXZlciBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IGhvdyBgZGFwODIxMXJfY29uZmlnX2luaXRgIGFjdHVhbGx5IGdldHMgY2FsbGVkLiBUaGUgY3J1Y2lhbCByZWFsaXphdGlvbiBpcyB0aGF0IGBwaHlfcHJvYmVgICpkb2VzbiYjMzk7dCogaW5pdGlhdGUgYGNvbmZpZ19pbml0YC4gVGhhdCBtZWFucyBgZGFwODIxMXJfY29uZmlnX2luaXRgIHdpbGwgb25seSBydW4gaWYgYSBNQUMgZHJpdmVyIHN1Y2Nlc3NmdWxseSBhdHRhY2hlcyB0byB0aGUgUEhZLiBUaGF0JiMzOTtzIHRoZSBrZXkuIE5vdywgY2FuIHN5emthbGxlciBhY2hpZXZlIHRoYXQgYXR0YWNobWVudD8KCklmIHN5emthbGxlciBjcmVhdGVzIGEgUEhZIGRldmljZSB1c2luZyB0aGUgYG1kaW8tbXZ1c2JgIGRyaXZlciwgYXMgSSBzdXNwZWN0IGl0IG1pZ2h0LCB0aGF0IFBIWSBpcyBqdXN0IGdvaW5nIHRvIGJlIHNpdHRpbmcgdGhlcmUgb24gdGhlIE1ESU8gYnVzLiBObyBNQUMgZHJpdmVyIHdpbGwgYXV0b21hdGljYWxseSBsaW5rIHVwIHdpdGggaXQganVzdCBieSBleGlzdGluZy4gSSBuZWVkIHRvIGZvcmNlIHRoZSBhc3NvY2lhdGlvbi4KClJpZ2h0LCBgZHNhX2xvb3BgICpkb2VzKiBhdHRhY2ggdG8gZml4ZWQgUEhZcywgd2hpY2ggZ2l2ZXMgbWUgYW4gaWRlYS4gQnV0IGlzIHRoZXJlIGEgbWV0aG9kIHRvIGNvbm5lY3QgYSBNQUMgdG8gYW4gYXJiaXRyYXJ5IFBIWT8gSSBjb3VsZCBsb29rIGF0IGBTSU9DU01JSVJFR2AsIGJ1dCB0aGF0JiMzOTtzIGp1c3QgZm9yIHJlZ2lzdGVyIGFjY2Vzcywgbm90IGF0dGFjaG1lbnQuIGBuZXRkZXZzaW1gIGlzIGEgZGVhZCBlbmQ7IG5vIFBIWSB1c2FnZSB0aGVyZS4gQW5kIGBtYWNtYWNgPyBOb3BlLgoKQWhhISBDb3VsZCBzeXprYWxsZXIgbGV2ZXJhZ2UgYHN5el9nZW5ldGxpbmtfZ2V0X2ZhbWlseWAgb3Igc2ltaWxhciBtZWNoYW5pc21zPyBDYW4gSSBtYW5pcHVsYXRlIHRoZSBrZXJuZWwgc3RhdGUgc29tZWhvdyB0byB0cmlnZ2VyIGBwaHlfYXR0YWNoX2RpcmVjdGAgb3IgYHBoeV9jb25uZWN0YCBmcm9tIHVzZXJzcGFjZT8gVGhhdCYjMzk7cyB0aGUgaW1wb3J0YW50IHBpZWNlLiBMZXQgbWUgY2hlY2sgd2hlcmUgYHBoeV9hdHRhY2hfZGlyZWN0YCBpcyB1c2VkIGFuZCBzZWUgaWYgSSBjYW4gZmluZCBhIHVzZXItc3BhY2UgY29udHJvbGxhYmxlIHBhdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5X2F0dGFjaF9kaXJlY3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk0MzEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqTmV0d29yayBEcml2ZXIgRGVidWdnaW5nIC0gV2hlcmUgdG8gQmVnaW4qKgoKT2theSwgc28gSSYjMzk7bSB0cm91Ymxlc2hvb3RpbmcgYSBuZXR3b3JrIGRyaXZlciBpc3N1ZSwgYW5kIEkmIzM5O3ZlIGdvdCBhIGh1bmNoIGl0JiMzOTtzIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSBQSFkgKFBoeXNpY2FsIExheWVyKS4gVGltZSB0byBkaXZlIGluLiBNeSBmaXJzdCBpbnN0aW5jdCwgYW5kIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQsIGlzIHRoZSBgZHJpdmVycy9uZXQvYCBkaXJlY3RvcnkuIFRoYXQmIzM5O3MgdGhlIGdvLXRvIGxvY2F0aW9uIGZvciBuZXR3b3JrIGRyaXZlciBjb2RlLCBvYnZpb3VzbHkuIE5vdywgd2hhdCBhbSBJIGxvb2tpbmcgZm9yIHdpdGhpbiB0aGF0IG1hc3NpdmUgY29kZWJhc2U/IFdlbGwsIEkgbmVlZCB0byBjaGVjayB0aGUgcG90ZW50aWFsIGNvbm5lY3Rpb24gcG9pbnRzIG9mIHRoZSBQSFkuIEkgYW0gZ29pbmcgdG8gc2VhcmNoIGZvciBgcGh5X2F0dGFjaF9kaXJlY3RgIG9yIGBwaHlfY29ubmVjdGAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcHJldHR5IHN0YW5kYXJkIGZvciBlc3RhYmxpc2hpbmcgYSBkaXJlY3Qgb3Igc3RhbmRhcmQgY29ubmVjdGlvbiB0byBhIFBIWSwgYW5kIGFyZSBsaWtlbHkgZW50cnkgcG9pbnRzIHRvIHRoZSBjb2RlIEkgYW0gaW50ZXJlc3RlZCBpbi4gVGhpcyB3aWxsIGdpdmUgbWUgYSBwb2ludCBvZiBkZXBhcnR1cmUgdG8gaW52ZXN0aWdhdGUgdGhlIFBIWSBjb25uZWN0aW9uIGxvZ2ljLCBlcnJvciBoYW5kbGluZywgYW5kIHJlc291cmNlIGFsbG9jYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeV9jb25uZWN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jPTYwNz1zdGF0aWMgaW50IGJjbV9zZjJfbWRpb19yZWdpc3RlcihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy02NTYtXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjY1NzpcdC8qIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgb2ZfcGh5X2Nvbm5lY3QoKSB3aWxsIG5vdCB3b3JrIGJ5XG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTY1OC1cdCAqIHJlbW92aW5nIHRoZSAmIzM5O3BoYW5kbGUmIzM5OyBhbmQgJiMzOTtsaW51eCxwaGFuZGxlJiMzOTsgcHJvcGVydGllcyBhbmRcbi0tXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYz05Njg9c3RhdGljIGJvb2wgbmV0Y19wb3J0X2lzX2VtZGlvX2NvbnN1bWVyKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy05ODQtXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzo5ODU6LyogQ3VycmVudGx5LCBwaHlsaW5rX29mX3BoeV9jb25uZWN0KCkgaXMgY2FsbGVkIGJ5IGRzYV91c2VyX2NyZWF0ZSgpLFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtOTg2LSAqIHNvIGlmIHRoZSBzd2l0Y2ggdXNlcyB0aGUgZXh0ZXJuYWwgTURJTyBjb250cm9sbGVyIChsaWtlIHRoZSBFTURJT1xuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtOTg3LSAqIGZ1bmN0aW9uKSB0byBtYW5hZ2UgdGhlIGV4dGVybmFsIFBIWXMuIFRoZSBNRElPIGJ1cyBtYXkgbm90IGJlXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzo5ODg6ICogY3JlYXRlZCB3aGVuIHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QoKSBpcyBjYWxsZWQsIHNvIGl0IHdpbGwgcmV0dXJuXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy05ODktICogYW4gZXJyb3IgYW5kIGNhdXNlIHRoZSBzd2l0Y2ggZHJpdmVyIHRvIGZhaWwgdG8gcHJvYmUuXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzo5OTA6ICogVGhpcyB3b3JrYXJvdW5kIGNhbiBiZSByZW1vdmVkIHdoZW4gRFNBIHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QoKVxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtOTkxLSAqIGNhbGxzIGFyZSBtb3ZlZCBmcm9tIHByb2JlKCkgdG8gbmRvX29wZW4oKS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAxNzUKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgYSBDb25uZWN0aW9uIFNjZW5hcmlvKioKCkFscmlnaHQsIEkmIzM5O20gdHJ5aW5nIHRvIHdyYXAgbXkgaGVhZCBhcm91bmQgdGhpcyBzeXN0ZW0sIGFuZCBteSBmaXJzdCB0aG91Z2h0IGltbWVkaWF0ZWx5IGp1bXBzIHRvIGBkc2FfdXNlcl9waHlfY29ubmVjdGAuIFRoYXQgZnVuY3Rpb24gbmFtZSBoYXMgYSB2ZXJ5IHNwZWNpZmljIGNvbm5vdGF0aW9uLCBkb2VzbiYjMzk7dCBpdD8gSXQgc3VnZ2VzdHMgYSBkaXJlY3QgcGh5c2ljYWwgY29ubmVjdGlvbiBvciBpbnRlcmFjdGlvbiBhdCB0aGUgdXNlciBsZXZlbCwgd2l0aGluIHRoZSBEb21haW4gU3BlY2lmaWMgQXJjaGl0ZWN0dXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgc3BlY2lmaWNhbGx5ICpkb2VzKiBhbmQgd2hhdCBpdCAqbWVhbnMqIGluIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50IHByb2JsZW0uIElzIHRoaXMgYSBkcml2ZXIgY2FsbD8gQSBuZXR3b3JrIHNldHVwIGZ1bmN0aW9uPyBJcyB0aGlzIHJlbGF0ZWQgdG8gc29tZSBmb3JtIG9mIGhhcmR3YXJlIGhhbmQtb2ZmPyBJIG5lZWQgbW9yZSBjb250ZXh0IHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBjYWxsaW5nIHRoaXMgcm91dGluZS4gV2hhdCBwcm90b2NvbHMgb3IgaW50ZXJmYWNlcyBhcmUgYmVpbmcgdXNlZCBoZXJlPwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkc2FfdXNlcl9waHlfY29ubmVjdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvZHNhL3VzZXIuYz0yNjI0PXN0YXRpYyB2b2lkIGRzYV91c2VyX3BoeWxpbmtfZml4ZWRfc3RhdGUoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG4tLVxubmV0L2RzYS91c2VyLmMtMjYzNi0vKiB1c2VyIGRldmljZSBzZXR1cCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xubmV0L2RzYS91c2VyLmM6MjYzNzpzdGF0aWMgaW50IGRzYV91c2VyX3BoeV9jb25uZWN0KHN0cnVjdCBuZXRfZGV2aWNlICp1c2VyX2RldiwgaW50IGFkZHIsXG5uZXQvZHNhL3VzZXIuYy0yNjM4LVx0XHRcdFx0dTMyIGZsYWdzKVxuLS1cbm5ldC9kc2EvdXNlci5jPTI2NTQ9c3RhdGljIGludCBkc2FfdXNlcl9waHlfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKnVzZXJfZGV2KVxuLS1cbm5ldC9kc2EvdXNlci5jLTI2ODUtXHRcdCAqL1xubmV0L2RzYS91c2VyLmM6MjY4NjpcdFx0cmV0ID0gZHNhX3VzZXJfcGh5X2Nvbm5lY3QodXNlcl9kZXYsIGRwLVx1MDAzZWluZGV4LCBwaHlfZmxhZ3MpO1xubmV0L2RzYS91c2VyLmMtMjY4Ny1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA2MjkKCQkJCQkJCW91dHB1dDogMTMyCgkJCQkJCQl0aG91Z2h0czogMjAwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgREFQODIxMVIgUEhZIERyaXZlciBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyB0aGUgYGRzYV91c2VyX3BoeV9zZXR1cGAgZnVuY3Rpb24gaXMga2V5IGhlcmUuIEl0IGxvb2tzIGxpa2Ugd2hlbiBhIERTQSB1c2VyIGRldmljZSBpcyBjcmVhdGVkLCBhbmQgaWYgc3l6a2FsbGVyIGNvbnN0cnVjdHMgYSBEU0Egc3dpdGNoIHVzaW5nIGEgZGV2aWNlIHRyZWUgb3ZlcmxheSwgYSBQSFkgbm9kZSBjYW4gYmUgc3BlY2lmaWVkLiBUaGlzIHNldHVwIHRoZW4gY2FsbHMgZWl0aGVyIGBwaHlsaW5rX29mX3BoeV9jb25uZWN0YCBvciBgZHNhX3VzZXJfcGh5X2Nvbm5lY3RgLCB3aGljaCB1bHRpbWF0ZWx5IGF0dGFjaGVzIHRoZSBQSFkuIFRoZSBjcml0aWNhbCBwb2ludCBpcyB0aGF0IHN5emthbGxlciAqY2FuKiBpbmplY3QgdGhlc2UgZGV2aWNlIHRyZWUgb3ZlcmxheXMuCgpJZiBzeXprYWxsZXIgY3JhZnRzIGEgRFQgb3ZlcmxheSB3aXRoIGEgRFNBIHN3aXRjaCBhbmQgYSBQSFkgbm9kZSB0aGF0IHNwZWNpZmllcyB0aGUgYGV0aGVybmV0LXBoeS1pZDAwMDguMDExYmAgY29tcGF0aWJsZSBzdHJpbmcsIHRoZW4gdGhlIGBkYXA4MjExcl9jb25maWdfaW5pdGAgZnVuY3Rpb24gKnNob3VsZCogYmUgY2FsbGVkLiBUaGUgcXVlc3Rpb24gaXMsIGRvZXMgc3l6a2FsbGVyICphY3R1YWxseSogZG8gdGhpcz8gSSBjYW4mIzM5O3QgY2hlY2sgdGhlIHN5emthbGxlciBzb3VyY2UgZGlyZWN0bHksIGJ1dCB0aGUgYXNzdW1wdGlvbiBpcyB0aGF0IGlmIGl0JiMzOTtzIHJlYWNoYWJsZSB2aWEgRFQgb3ZlcmxheSwgaXQgaXMsIGluIHRoZW9yeSwgcmVhY2hhYmxlIGZvciBmdXp6aW5nLgoKTm93LCBsb29raW5nIGF0IGBkYXA4MjExcl9jb25maWdfaW5pdGAsIGl0JiMzOTtzIGEgdmVyeSBzdHJhaWdodGZvcndhcmQgZnVuY3Rpb24uIEl0IHJlYWRzIGByeC1pbnRlcm5hbC1kZWxheS1wc2AgYW5kIGB0eC1pbnRlcm5hbC1kZWxheS1wc2AgcHJvcGVydGllcyBmcm9tIHRoZSBkZXZpY2UgdHJlZSwgZG9lcyBzb21lIGJpdCBtYW5pcHVsYXRpb24sIGFuZCB3cml0ZXMgdG8gTURJTyByZWdpc3RlcnMuIEl0JiMzOTtzIHJlYWxseSBqdXN0IGluaXRpYWxpemluZyB0aGUgUEhZLiBEb2VzIHRoaXMgcXVhbGlmeSBhcyAmIzM0O2NvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzJiMzNDsgdGhhdCBzaG91bGQgYmUgZnV6emVkPwoKVGhpcyBkcml2ZXIgaXMgaGFyZHdhcmUtc3BlY2lmaWMgYW5kIG9ubHkgd3JpdGVzIHRvIHJlZ2lzdGVycywgd2l0aCBtaW5pbWFsIGludGVyYWN0aW9uIHdpdGggdXNlcnNwYWNlLiBUaGlzIGlzbiYjMzk7dCBpbmhlcmVudGx5IGV4Y2l0aW5nIGZvciBmdXp6aW5nLCBidXQgaXQgKmlzKiBmdW5jdGlvbmFsIGNvZGUuIE5vdywgdGhlIHByb21wdCBnaXZlcyBjcml0ZXJpYSBmb3IgKm5vdCogZnV6emluZywgYW5kIGl0IHNwZWNpZmljYWxseSBtZW50aW9ucyB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyBmb3IgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFVzIHRoYXQgcmVxdWlyZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBQSFkgZHJpdmVyLiBJdCByZXF1aXJlcyBhIHBoeXNpY2FsIERBUDgyMTFSIGNoaXAuIElzIGl0IGVtdWxhdGVkIGluIFFFTVU/IE5vLgoKVGhlb3JldGljYWxseSwgaWYgc3l6a2FsbGVyIHVzZXMgc29tZXRoaW5nIGxpa2UgYG1kaW8tbXZ1c2JgIGFuZCBhIHZpcnR1YWwgaGFyZHdhcmUgY29udGV4dCwgaXQgY291bGQgKnJlYWNoKiB0aGlzIGRyaXZlci4gQnV0IGV2ZW4gaWYgaXQgY2FuLCBkb2VzIGl0ICpkbyogYW55dGhpbmcgbWVhbmluZ2Z1bD8gIElmIHRoZXJlJiMzOTtzIG5vIHJlYWwgaGFyZHdhcmUsIHRoZSBNRElPIHJlYWRzIHJldHVybiBnYXJiYWdlIChsaWtlIGFsbCB6ZXJvcykuIFRoZSBgcmVhZF9wb2xsX3RpbWVvdXRgIHdhaXRzIGZvciB0aGUgcmVzZXQgYml0IHRvIGNsZWFyLCBzbyBpZiBpdCByZWFkcyB6ZXJvZXMgZnJvbSBhIG1vY2sgYnVzLCBpdCB3aWxsIHRpbWUgb3V0IGFuZCBmYWlsLiBTbywgdGhpcyBjb2RlIHBhdGggd2lsbCBsaWtlbHkgZXJyb3Igb3V0LgoKVGhlbiBJIHJlYWQgdGhlIHByb21wdCBhZ2Fpbi4gSXQgZXhwbGljaXRseSBzYXlzLCAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSYjMzQ7LiBUaGlzIHNwZWNpZmljIFBIWSBjaGlwIGlzIGNvbnNpZGVyZWQgJiMzNDtpbXBvc3NpYmxlIHRvIHJlYWNoJiMzNDsuCgpUaGUgcHJvbXB0IHN0YXRlcyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgZm9yIHZlbmRvcnNwZWNpZmljIGRyaXZlcnMgZm9yIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBRRU1VLiAgVGhpcyBkcml2ZXIgZml0cyB0aGF0IGRlc2NyaXB0aW9uLiBUaGUgJiMzNDtQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSYjMzQ7IGV4YW1wbGVzIGFyZSBqdXN0IGV4YW1wbGVzOyB0aGUgKnByaW5jaXBsZSogaXMgd2hhdCBtYXR0ZXJzIOKAkyBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzIGZvciB1bmVtdWxhdGVkIGhhcmR3YXJlLgoKU28sIGxldCYjMzk7cyBzYXkgc3l6a2FsbGVyICpjYW4qIGluamVjdCByZXNwb25zZXMgYW5kIHBhc3MgdGhlIGByZWFkX3BvbGxfdGltZW91dGAuLi4gd2hhdCYjMzk7cyBsZWZ0PyBJdCYjMzk7cyBqdXN0IGEgc2luZ2xlIGBkYXA4MjExcl9tb2RpZnlfZXh0YCBjYWxsIGFmdGVyIHRoZSB3YWl0IGxvb3AuIFRoZXJlJiMzOTtzIG5vIGNvbXBsZXggbG9naWMsIG5vIG1lbW9yeSBhbGxvY2F0aW9uLCBhbmQgbm8gaW50ZXJhY3Rpb24gd2l0aCB0aGUgdXNlcnNwYWNlLiBKdXN0IHJlZ2lzdGVyIHdyaXRlcy4gIElzIHRoYXQgd29ydGggZnV6emluZz8KClRoZSBjb25jbHVzaW9uIGlzIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGJlY2F1c2UgaXQmIzM5O3MgYSB2ZW5kb3Itc3BlY2lmaWMgUEhZIGRyaXZlciBmb3IgdW5lbXVsYXRlZCBoYXJkd2FyZS4gSXQgY29udGFpbnMgb25seSB0cml2aWFsIHJlZ2lzdGVyIGluaXRpYWxpemF0aW9uIGxvZ2ljLgpMZXQmIzM5O3MganVzdCBkb3VibGUgY2hlY2ssIHRoYXQgYGRhcDgyMTFyX2NvbmZpZ19pbml0YCBpcyB0aGUgb25seSBjdXN0b20gZnVuY3Rpb24uIENoZWNraW5nIHRoZSBgZGFwODIxMXJfZHJpdmVyYCwgdGhhdCBpcyBjb3JyZWN0LiBJdCBpcyBqdXN0IGBkYXA4MjExcl9jb25maWdfaW5pdGAgYW5kIGFsbCBvdGhlciBmdW5jdGlvbnMgYXJlIGdlbmVyaWMgUEhZIGZ1bmN0aW9ucy4KCkZpbmFsIGRlY2lzaW9uOiBgV29ydGhGdXp6aW5nPWZhbHNlYAoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSB2ZW5kb3Itc3BlY2lmaWMgUEhZIGRyaXZlciBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWS4gVGhlIGRyaXZlciBvbmx5IGNvbnRhaW5zIHRyaXZpYWwgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gbG9naWMgKHJlYWRpbmcgZGV2aWNlIHRyZWUgcHJvcGVydGllcyBhbmQgd3JpdGluZyB0byBNRElPIHJlZ2lzdGVycykgYW5kIHJlbGllcyBvbiBnZW5lcmljIFBIWSBmdW5jdGlvbnMgZm9yIGFsbCBvdGhlciBvcGVyYXRpb25zLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCBhbmQgZXZlbiBpZiByZWFjaGVkIHZpYSBhIG1vY2sgTURJTyBidXMsIHRoZSBjb2RlIGxhY2tzIGNvbXBsZXggbG9naWMsIG1lbW9yeSBtYW5hZ2VtZW50LCBvciB1c2Vyc3BhY2UgaW50ZXJmYWNlcyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHZlbmRvci1zcGVjaWZpYyBQSFkgZHJpdmVyIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZLiBUaGUgZHJpdmVyIG9ubHkgY29udGFpbnMgdHJpdmlhbCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBsb2dpYyAocmVhZGluZyBkZXZpY2UgdHJlZSBwcm9wZXJ0aWVzIGFuZCB3cml0aW5nIHRvIE1ESU8gcmVnaXN0ZXJzKSBhbmQgcmVsaWVzIG9uIGdlbmVyaWMgUEhZIGZ1bmN0aW9ucyBmb3IgYWxsIG90aGVyIG9wZXJhdGlvbnMuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIGFuZCBldmVuIGlmIHJlYWNoZWQgdmlhIGEgbW9jayBNRElPIGJ1cywgdGhlIGNvZGUgbGFja3MgY29tcGxleCBsb2dpYywgbWVtb3J5IG1hbmFnZW1lbnQsIG9yIHVzZXJzcGFjZSBpbnRlcmZhY2VzIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6MzY6MDAuNjI3ODE0MDFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTI0MzQ2MTk1OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSB2ZW5kb3Itc3BlY2lmaWMgUEhZIGRyaXZlciBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWS4gVGhlIGRyaXZlciBvbmx5IGNvbnRhaW5zIHRyaXZpYWwgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gbG9naWMgKHJlYWRpbmcgZGV2aWNlIHRyZWUgcHJvcGVydGllcyBhbmQgd3JpdGluZyB0byBNRElPIHJlZ2lzdGVycykgYW5kIHJlbGllcyBvbiBnZW5lcmljIFBIWSBmdW5jdGlvbnMgZm9yIGFsbCBvdGhlciBvcGVyYXRpb25zLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCBhbmQgZXZlbiBpZiByZWFjaGVkIHZpYSBhIG1vY2sgTURJTyBidXMsIHRoZSBjb2RlIGxhY2tzIGNvbXBsZXggbG9naWMsIG1lbW9yeSBtYW5hZ2VtZW50LCBvciB1c2Vyc3BhY2UgaW50ZXJmYWNlcyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6MzY6MDAuNjI3ODIzMTVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzNTg0NTA5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU2MTdhZDM0OGE5NzJiNjI2ZTdmYTcxZGRiNjI4NGVlYThhYzc1YTdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdWwgMjcgMTk6MzU6NTggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kYXB1LGRhcDgyMTFyLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RhcHUsZGFwODIxMXIueWFtbFxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmJhOWIzMDFlYTFmNTEzXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZGFwdSxkYXA4MjExci55YW1sXFxuQEAgLTAsMCArMSw2MyBAQFxcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiAoR1BMLTIuMC1vbmx5IE9SIEJTRC0yLUNsYXVzZSlcXG4rJVlBTUwgMS4yXFxuKy0tLVxcbiskaWQ6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9zY2hlbWFzL25ldC9kYXB1LGRhcDgyMTFyLnlhbWwjXFxuKyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xcbitcXG4rdGl0bGU6IERBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWVxcbitcXG4rbWFpbnRhaW5lcnM6XFxuKyAgLSBBcnRlbSBTaGlta28gXFx1MDAzY2Euc2hpbWtvLmRldkBnbWFpbC5jb21cXHUwMDNlXFxuK1xcbitkZXNjcmlwdGlvbjogfFxcbisgIFRoZSBEQVA4MjExUihJKSBpcyBhIEdpZ2FiaXQgRXRoZXJuZXQgUEhZIHdpdGggUkdNSUkgaW50ZXJmYWNlLFxcbisgIHN1cHBvcnRpbmcgSUVFRSA4MDIuM2F6IEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQsIElFRUUgMTU4OCBTeW5jRSxcXG4rICBhbmQgYW4gaW50ZXJuYWwgcGFja2V0IGdlbmVyYXRvciBmb3IgZGlhZ25vc3RpY3MuXFxuK1xcbisgIFNwZWNpZmljYXRpb25zOlxcbisgICAgLSAxMEJBU0UtVGUsIDEwMEJBU0UtVFgsIDEwMDBCQVNFLVRcXG4rICAgIC0gUkdNSUkgd2l0aCBjb25maWd1cmFibGUgVFgvUlggY2xvY2sgZGVsYXlzICgxNTAgcHMgc3RlcHMsIDAtMjI1MCBwcylcXG4rICAgIC0gSUVFRSA4MDIuM2F6LTIwMTAgRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldFxcbisgICAgLSBJRUVFIDE1ODggU3luY0Ugc3VwcG9ydFxcbisgICAgLSBJbnRlcm5hbCBwYWNrZXQgZ2VuZXJhdG9yIGFuZCBjaGVja2VyIGZvciBsaW5rIGRpYWdub3N0aWNzXFxuK1xcbithbGxPZjpcXG4rICAtICRyZWY6IGV0aGVybmV0LXBoeS55YW1sI1xcbitcXG4rcHJvcGVydGllczpcXG4rICBjb21wYXRpYmxlOlxcbisgICAgY29uc3Q6IGV0aGVybmV0LXBoeS1pZDAwMDguMDExYlxcbitcXG4rICByZWc6XFxuKyAgICBtYXhJdGVtczogMVxcbitcXG4rICByeC1pbnRlcm5hbC1kZWxheS1wczpcXG4rICAgIGRlc2NyaXB0aW9uOlxcbisgICAgICBSR01JSSBSWCBjbG9jayBkZWxheSBpbiBwaWNvc2Vjb25kcyAoMCB0byBtYXhpbXVtKS5cXG4rICAgIG11bHRpcGxlT2Y6IDE1MFxcbisgICAgbWF4aW11bTogMjI1MFxcbisgICAgZGVmYXVsdDogMTk1MFxcbitcXG4rICB0eC1pbnRlcm5hbC1kZWxheS1wczpcXG4rICAgIGRlc2NyaXB0aW9uOlxcbisgICAgICBSR01JSSBUWCBjbG9jayBkZWxheSBpbiBwaWNvc2Vjb25kcyAoMCB0byBtYXhpbXVtKS5cXG4rICAgIG11bHRpcGxlT2Y6IDE1MFxcbisgICAgbWF4aW11bTogMjI1MFxcbisgICAgZGVmYXVsdDogMTk1MFxcbitcXG4rdW5ldmFsdWF0ZWRQcm9wZXJ0aWVzOiBmYWxzZVxcbitcXG4rZXhhbXBsZXM6XFxuKyAgLSB8XFxuKyAgICBtZGlvIHtcXG4rICAgICAgICAjYWRkcmVzcy1jZWxscyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4rICAgICAgICAjc2l6ZS1jZWxscyA9IFxcdTAwM2MwXFx1MDAzZTtcXG4rXFxuKyAgICAgICAgZXRoZXJuZXQtcGh5QDEge1xcbisgICAgICAgICAgICBjb21wYXRpYmxlID0gXFxcImV0aGVybmV0LXBoeS1pZDAwMDguMDExYlxcXCI7XFxuKyAgICAgICAgICAgIHJlZyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4rICAgICAgICAgICAgcngtaW50ZXJuYWwtZGVsYXktcHMgPSBcXHUwMDNjMjEwMFxcdTAwM2U7XFxuKyAgICAgICAgICAgIHR4LWludGVybmFsLWRlbGF5LXBzID0gXFx1MDAzYzIxMDBcXHUwMDNlO1xcbisgICAgICAgIH07XFxuKyAgICB9O1xcbitcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L0tjb25maWcgYi9kcml2ZXJzL25ldC9waHkvS2NvbmZpZ1xcbmluZGV4IDA5OWYyNWRjZWFiYmM3Li40NTc2ZjcwN2FjOTQ0NSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvS2NvbmZpZ1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnXFxuQEAgLTIzNyw2ICsyMzcsMTYgQEAgY29uZmlnIERBVklDT01fUEhZXFxuIFxcdGhlbHBcXG4gXFx0ICBDdXJyZW50bHkgc3VwcG9ydHMgZG05MTYxZSBhbmQgZG05MTMxXFxuIFxcbitjb25maWcgREFQODIxMVJfUEhZXFxuK1xcdHRyaXN0YXRlIFxcXCJEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFlcXFwiXFxuK1xcdGRlcGVuZHMgb24gT0ZcXG4rXFx0aGVscFxcbitcXHQgIFN1cHBvcnQgZm9yIHRoZSBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFkuXFxuK1xcdCAgVGhpcyBQSFkgaXMgZGVzaWduZWQgZm9yIGVudGVycHJpc2UgYW5kIGluZHVzdHJpYWwgbmV0d29ya2luZ1xcbitcXHQgIGFwcGxpY2F0aW9ucywgc3VwcG9ydGluZyAxMC8xMDAvMTAwMCBNYnBzIG9wZXJhdGlvbi5cXG4rXFx0ICBSR01JSSB3aXRoOiBjb25maWd1cmFibGUgVFgvUlggY2xvY2sgZGVsYXlzLCBvcHRpb25hbCBmbGFnIHRvIGVuYWJsZVxcbitcXHQgIDE4MC1kZWdyZWUgVFggY2xvY2sgcGhhc2Ugc2hpZnQgYW5kIGludGVybmFsIHBhY2tldCBnZW5lcmF0b3IuXFxuK1xcbiBjb25maWcgSUNQTFVTX1BIWVxcbiBcXHR0cmlzdGF0ZSBcXFwiSUNQbHVzIFBIWXNcXFwiXFxuIFxcdGhlbHBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlIGIvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXFxuaW5kZXggZGU2NjBhZTk0OTQ1M2QuLmFkMzU3MzNlYjRiYjYxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZVxcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZVxcbkBAIC01Myw2ICs1Myw3IEBAIG9iai0kKENPTkZJR19CUk9BRENPTV9QSFkpXFx0Kz0gYnJvYWRjb20ub1xcbiBvYmotJChDT05GSUdfQ0lDQURBX1BIWSlcXHQrPSBjaWNhZGEub1xcbiBvYmotJChDT05GSUdfQ09SVElOQV9QSFkpXFx0Kz0gY29ydGluYS5vXFxuIG9iai0kKENPTkZJR19EQVZJQ09NX1BIWSlcXHQrPSBkYXZpY29tLm9cXG4rb2JqLSQoQ09ORklHX0RBUDgyMTFSX1BIWSlcXHQrPSBkYXA4MjExci5vXFxuIG9iai0kKENPTkZJR19EUDgzNjQwX1BIWSlcXHQrPSBkcDgzNjQwLm9cXG4gb2JqLSQoQ09ORklHX0RQODM4MjJfUEhZKVxcdCs9IGRwODM4MjIub1xcbiBvYmotJChDT05GSUdfRFA4Mzg0OF9QSFkpXFx0Kz0gZHA4Mzg0OC5vXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jIGIvZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi42NWQ2ZmVmODZmMjZiN1xcbi0tLSAvZGV2L251bGxcXG4rKysgYi9kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuY1xcbkBAIC0wLDAgKzEsMjA2IEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUExcXG4rLypcXG4rICogRHJpdmVyIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZLlxcbisgKlxcbisgKiBTcGVjaWZpY2F0aW9uczpcXG4rICogICAtIElFRUUgODAyLjMgMTBCQVNFLVRlLCAxMDBCQVNFLVRYLCAxMDAwQkFTRS1UXFxuKyAqICAgLSBJRUVFIDgwMi4zYXotMjAxMCBFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0XFxuKyAqICAgLSBJRUVFIDE1ODggU3luY0Ugc3VwcG9ydFxcbisgKiAgIC0gUkdNSUlcXG4rICpcXG4rICogQXV0aG9yOiBBcnRlbSBTaGlta28gXFx1MDAzY2Euc2hpbWtvLmRldkBnbWFpbC5jb21cXHUwMDNlXFxuKyAqL1xcbitcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2JpdGZpZWxkLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9lcnJuby5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvZXRodG9vbC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgva2VybmVsLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9pb3BvbGwuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21paS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9uZXRkZXZpY2UuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9waHkuaFxcdTAwM2VcXG4rXFxuKyNkZWZpbmUgREFQODIxMVJfUEhZX0lEXFx0XFx0XFx0MHgwMDA4MDExQlxcbisjZGVmaW5lIERBUDgyMTFSX1BIWV9JRF9NQVNLXFx0XFx0MHhGRkZGRkZGRlxcbitcXG4rI2RlZmluZSBEQVA4MjExUl9FWFRfQUREXFx0XFx0MHgxRVxcbisjZGVmaW5lIERBUDgyMTFSX0VYVF9EQVRBXFx0XFx0MHgxRlxcbitcXG4rI2RlZmluZSBEQVA4MjExUl9QSFlfQ09OXFx0XFx0MHhBMDAxXFxuKyNkZWZpbmUgREFQODIxMVJfUEhZX1NXX1JTVFxcdFxcdEJJVCgxNSlcXG4rXFxuKyNkZWZpbmUgREFQODIxMVJfUkdNSUlfQ09OXFx0XFx0MHhBMDAzXFxuKyNkZWZpbmUgREFQODIxMVJfUkdNSUlfVFhfREVMX01BU0tcXHRHRU5NQVNLKDMsIDApXFxuKyNkZWZpbmUgREFQODIxMVJfUkdNSUlfUlhfREVMX01BU0tcXHRHRU5NQVNLKDEzLCAxMClcXG4rXFxuKyNkZWZpbmUgREFQODIxMVJfUkdNSUlfQ09ORklHX01BU0tcXHQoREFQODIxMVJfUkdNSUlfUlhfREVMX01BU0sgfCBEQVA4MjExUl9SR01JSV9UWF9ERUxfTUFTSylcXG4rXFxuKy8qIERlZmF1bHQgUkdNSUkgZGVsYXk6IDEzICogMTUwID09IDEuOTVucyAqL1xcbisjZGVmaW5lIERBUDgyMTFSX0RFRkFVTFRfREVMX1NFTFxcdDB4RFxcbitcXG4rc3RhdGljIGNvbnN0IGludCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheVtdID0gezAsIDE1MCwgMzAwLCA0NTAsIDYwMCwgNzUwLCA5MDAsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgIDEwNTAsIDEyMDAsIDEzNTAsIDE1MDAsIDE2NTAsIDE4MDAsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgIDE5NTAsIDIxMDAsIDIyNTB9O1xcbitcXG4rI2RlZmluZSBEQVA4MjExUl9ERUxBWV9TSVpFXFx0QVJSQVlfU0laRShkYXA4MjExcl9pbnRlcm5hbF9kZWxheSlcXG4rXFxuKy8qKlxcbisgKiBkYXA4MjExcl9yZWFkX2V4dCgpIC0gUmVhZCBleHRlbmRlZCByZWdpc3RlclxcbisgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHN0cnVjdHVyZVxcbisgKiBAcmVnOiBFeHRlbmRlZCByZWdpc3RlciBhZGRyZXNzXFxuKyAqXFxuKyAqIFJlYWRzIGEgUEhZIGV4dGVuZGVkIHJlZ2lzdGVyIHVzaW5nIHRoZSBpbmRpcmVjdCBhY2Nlc3MgbWV0aG9kLlxcbisgKiBUaGUgY2FsbGVyIG11c3QgaG9sZCB0aGUgTURJTyBidXMgbG9jay5cXG4rICpcXG4rICogUmV0dXJuOiBSZWdpc3RlciB2YWx1ZSBvbiBzdWNjZXNzLCBvciBuZWdhdGl2ZSBlcnJvciBjb2RlXFxuKyAqL1xcbitzdGF0aWMgaW50IGRhcDgyMTFyX3JlYWRfZXh0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiByZWcpXFxuK3tcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuK1xcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgREFQODIxMVJfRVhUX0FERCwgcmVnKTtcXG4rXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXG4rXFx0cmV0ID0gX19waHlfcmVhZChwaHlkZXYsIERBUDgyMTFSX0VYVF9EQVRBKTtcXG4rb3V0OlxcbitcXHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuKy8qKlxcbisgKiBkYXA4MjExcl9tb2RpZnlfZXh0KCkgLSBNb2RpZnkgZXh0ZW5kZWQgcmVnaXN0ZXIgYml0c1xcbisgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHN0cnVjdHVyZVxcbisgKiBAcmVnOiBFeHRlbmRlZCByZWdpc3RlciBhZGRyZXNzXFxuKyAqIEBtYXNrOiBCaXQgbWFzayBvZiBiaXRzIHRvIGNsZWFyXFxuKyAqIEBzZXQ6IEJpdCBtYXNrIG9mIGJpdHMgdG8gc2V0XFxuKyAqXFxuKyAqIE1vZGlmaWVzIGEgUEhZIGV4dGVuZGVkIHJlZ2lzdGVyIHVzaW5nIHRoZSBpbmRpcmVjdCBhY2Nlc3MgbWV0aG9kLlxcbisgKiBOZXcgdmFsdWUgPSAob2xkIHZhbHVlIFxcdTAwMjYgfm1hc2spIHwgc2V0LlxcbisgKiBUaGUgY2FsbGVyIG11c3QgaG9sZCB0aGUgTURJTyBidXMgbG9jay5cXG4rICpcXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGVcXG4rICovXFxuK3N0YXRpYyBpbnQgZGFwODIxMXJfbW9kaWZ5X2V4dChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnLCB1MTYgbWFzaywgdTE2IHNldClcXG4re1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcXG4rXFx0cmV0ID0gX19waHlfd3JpdGUocGh5ZGV2LCBEQVA4MjExUl9FWFRfQURELCByZWcpO1xcbitcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcbitcXHRyZXQgPSBfX3BoeV9tb2RpZnkocGh5ZGV2LCBEQVA4MjExUl9FWFRfREFUQSwgbWFzaywgc2V0KTtcXG4rb3V0OlxcbitcXHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuKy8qKlxcbisgKiBkYXA4MjExcl9jb25maWdfaW5pdCgpIC0gSW5pdGlhbGl6ZSBQSFlcXG4rICogQHBoeWRldjogUEhZIGRldmljZSBzdHJ1Y3R1cmVcXG4rICpcXG4rICogQ29uZmlndXJlcyB0aGUgUEhZIGR1cmluZyBpbml0aWFsaXphdGlvbjpcXG4rICogLSBSR01JSSBkZWxheXMgYmFzZWQgb24gaW50ZXJmYWNlIG1vZGVcXG4rICogLSBTb2Z0d2FyZSByZXNldCB0byBhcHBseSBzZXR0aW5ncyAobG93IGFjdGl2ZSwgc2VsZiBjbGVhcilcXG4rICpcXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGVcXG4rICovXFxuK3N0YXRpYyBpbnQgZGFwODIxMXJfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHR1MTYgc2V0ID0gMDtcXG4rXFx0aW50IHJldCwgdmFsO1xcbitcXHRzMzIgcnhfaW50ZXJuYWxfZGVsYXk7XFxuK1xcdHMzMiB0eF9pbnRlcm5hbF9kZWxheTtcXG4rXFxuK1xcdGlmICghcGh5X2ludGVyZmFjZV9pc19yZ21paShwaHlkZXYpKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdHJ4X2ludGVybmFsX2RlbGF5ID0gcGh5X2dldF9pbnRlcm5hbF9kZWxheShwaHlkZXYsIGRhcDgyMTFyX2ludGVybmFsX2RlbGF5LFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICBEQVA4MjExUl9ERUxBWV9TSVpFLCB0cnVlKTtcXG4rXFx0dHhfaW50ZXJuYWxfZGVsYXkgPSBwaHlfZ2V0X2ludGVybmFsX2RlbGF5KHBoeWRldiwgZGFwODIxMXJfaW50ZXJuYWxfZGVsYXksXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgIERBUDgyMTFSX0RFTEFZX1NJWkUsIGZhbHNlKTtcXG4rXFxuK1xcdHN3aXRjaCAocGh5ZGV2LVxcdTAwM2VpbnRlcmZhY2UpIHtcXG4rXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6XFxuK1xcdFxcdGlmIChyeF9pbnRlcm5hbF9kZWxheSBcXHUwMDNjIDApXFxuK1xcdFxcdFxcdHJ4X2ludGVybmFsX2RlbGF5ID0gMDtcXG4rXFxuK1xcdFxcdGlmICh0eF9pbnRlcm5hbF9kZWxheSBcXHUwMDNjIDApXFxuK1xcdFxcdFxcdHR4X2ludGVybmFsX2RlbGF5ID0gMDtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1JYSUQ6XFxuK1xcdFxcdGlmIChyeF9pbnRlcm5hbF9kZWxheSBcXHUwMDNjIDApXFxuK1xcdFxcdFxcdHJ4X2ludGVybmFsX2RlbGF5ID0gREFQODIxMVJfREVGQVVMVF9ERUxfU0VMO1xcbitcXG4rXFx0XFx0dHhfaW50ZXJuYWxfZGVsYXkgPSAwO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfSUQ6XFxuK1xcdFxcdGlmIChyeF9pbnRlcm5hbF9kZWxheSBcXHUwMDNjIDApXFxuK1xcdFxcdFxcdHJ4X2ludGVybmFsX2RlbGF5ID0gREFQODIxMVJfREVGQVVMVF9ERUxfU0VMO1xcbitcXHRcXHRpZiAodHhfaW50ZXJuYWxfZGVsYXkgXFx1MDAzYyAwKVxcbitcXHRcXHRcXHR0eF9pbnRlcm5hbF9kZWxheSA9IERBUDgyMTFSX0RFRkFVTFRfREVMX1NFTDtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1RYSUQ6XFxuK1xcdFxcdGlmICh0eF9pbnRlcm5hbF9kZWxheSBcXHUwMDNjIDApXFxuK1xcdFxcdFxcdHR4X2ludGVybmFsX2RlbGF5ID0gREFQODIxMVJfREVGQVVMVF9ERUxfU0VMO1xcbitcXG4rXFx0XFx0cnhfaW50ZXJuYWxfZGVsYXkgPSAwO1xcbitcXHRcXHRicmVhaztcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0cGh5ZGV2X2VycihwaHlkZXYsIFxcXCJVbnN1cHBvcnRlZCBpbnRlcmZhY2U6ICVkXFxcXG5cXFwiLFxcbitcXHRcXHRcXHQgICBwaHlkZXYtXFx1MDAzZWludGVyZmFjZSk7XFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuK1xcbitcXHRzZXQgfD0gRklFTERfUFJFUChEQVA4MjExUl9SR01JSV9SWF9ERUxfTUFTSywgcnhfaW50ZXJuYWxfZGVsYXkpO1xcbitcXHRzZXQgfD0gRklFTERfUFJFUChEQVA4MjExUl9SR01JSV9UWF9ERUxfTUFTSywgdHhfaW50ZXJuYWxfZGVsYXkpO1xcbitcXG4rXFx0cmV0ID0gZGFwODIxMXJfbW9kaWZ5X2V4dChwaHlkZXYsIERBUDgyMTFSX1BIWV9DT04sIERBUDgyMTFSX1BIWV9TV19SU1QsIDApO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0LyogV2FpdCBmb3IgcmVzZXQgc2VsZi1jbGVhciAoZnJvbSBsb3cgYWN0aXZlIHRvIGhpZ2gpICovXFxuK1xcdHJldCA9IHJlYWRfcG9sbF90aW1lb3V0KGRhcDgyMTFyX3JlYWRfZXh0LCB2YWwsXFxuK1xcdFxcdFxcdFxcdCh2YWwgXFx1MDAyNiBEQVA4MjExUl9QSFlfU1dfUlNUKSxcXG4rXFx0XFx0XFx0XFx0MjAsIDIwMCwgZmFsc2UsIHBoeWRldiwgREFQODIxMVJfUEhZX0NPTik7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcdGlmICh2YWwgXFx1MDAzYyAwKVxcbitcXHRcXHRyZXR1cm4gdmFsO1xcbitcXG4rXFx0cmV0ID0gZGFwODIxMXJfbW9kaWZ5X2V4dChwaHlkZXYsIERBUDgyMTFSX1JHTUlJX0NPTiwgREFQODIxMVJfUkdNSUlfQ09ORklHX01BU0ssIHNldCk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGRhcDgyMTFyX2RyaXZlcltdID0ge1xcbitcXHR7XFxuK1xcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVChEQVA4MjExUl9QSFlfSUQpLFxcbitcXHRcXHQubmFtZVxcdFxcdD0gXFxcIkRBUDgyMTFSIEdpZ2FiaXQgRXRoZXJuZXRcXFwiLFxcbitcXHRcXHQuc29mdF9yZXNldFxcdD0gZ2VucGh5X3NvZnRfcmVzZXQsXFxuK1xcdFxcdC5jb25maWdfaW5pdFxcdD0gZGFwODIxMXJfY29uZmlnX2luaXQsXFxuK1xcdFxcdC5yZWFkX3N0YXR1c1xcdD0gZ2VucGh5X3JlYWRfc3RhdHVzLFxcbitcXHRcXHQuc2V0X2xvb3BiYWNrXFx0PSBnZW5waHlfbG9vcGJhY2ssXFxuK1xcdFxcdC5jb25maWdfYW5lZ1xcdD0gZ2VucGh5X2NvbmZpZ19hbmVnLFxcbitcXHRcXHQuc3VzcGVuZFxcdD0gZ2VucGh5X3N1c3BlbmQsXFxuK1xcdFxcdC5yZXN1bWVcXHRcXHQ9IGdlbnBoeV9yZXN1bWUsXFxuK1xcdH0sXFxuK307XFxuK21vZHVsZV9waHlfZHJpdmVyKGRhcDgyMTFyX2RyaXZlcik7XFxuK1xcbitNT0RVTEVfREVTQ1JJUFRJT04oXFxcIkRBUDgyMTFSIEdpZ2FiaXQgRXRoZXJuZXQgUEhZIGRyaXZlclxcXCIpO1xcbitNT0RVTEVfQVVUSE9SKFxcXCJBcnRlbSBTaGlta28gXFx1MDAzY2Euc2hpbWtvLmRldkBnbWFpbC5jb21cXHUwMDNlXFxcIik7XFxuK01PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG4rXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgZGFwODIxMXJfdGJbXSA9IHtcXG4rXFx0eyBEQVA4MjExUl9QSFlfSUQsIERBUDgyMTFSX1BIWV9JRF9NQVNLIH0sXFxuK1xcdHsgLyogc2VudGluZWwgKi8gfVxcbit9O1xcbitNT0RVTEVfREVWSUNFX1RBQkxFKG1kaW8sIGRhcDgyMTFyX3RiKTtcXG4rXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM2OjAxLjQ2NDcyMDk5MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjMxMTU5NzcwMTY0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHZlbmRvci1zcGVjaWZpYyBQSFkgZHJpdmVyIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZLiBUaGUgZHJpdmVyIG9ubHkgY29udGFpbnMgdHJpdmlhbCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBsb2dpYyAocmVhZGluZyBkZXZpY2UgdHJlZSBwcm9wZXJ0aWVzIGFuZCB3cml0aW5nIHRvIE1ESU8gcmVnaXN0ZXJzKSBhbmQgcmVsaWVzIG9uIGdlbmVyaWMgUEhZIGZ1bmN0aW9ucyBmb3IgYWxsIG90aGVyIG9wZXJhdGlvbnMuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIGFuZCBldmVuIGlmIHJlYWNoZWQgdmlhIGEgbW9jayBNRElPIGJ1cywgdGhlIGNvZGUgbGFja3MgY29tcGxleCBsb2dpYywgbWVtb3J5IG1hbmFnZW1lbnQsIG9yIHVzZXJzcGFjZSBpbnRlcmZhY2VzIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1NjE3YWQzNDhhOTcyYjYyNmU3ZmE3MWRkYjYyODRlZWE4YWM3NWE3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMjcgMTk6MzU6NTggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RhcHUsZGFwODIxMXIueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZGFwdSxkYXA4MjExci55YW1sXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmJhOWIzMDFlYTFmNTEzXG4tLS0gL2Rldi9udWxsXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RhcHUsZGFwODIxMXIueWFtbFxuQEAgLTAsMCArMSw2MyBAQFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IChHUEwtMi4wLW9ubHkgT1IgQlNELTItQ2xhdXNlKVxuKyVZQU1MIDEuMlxuKy0tLVxuKyRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L2RhcHUsZGFwODIxMXIueWFtbCNcbiskc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcbitcbit0aXRsZTogREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZXG4rXG4rbWFpbnRhaW5lcnM6XG4rICAtIEFydGVtIFNoaW1rbyBcdTAwM2NhLnNoaW1rby5kZXZAZ21haWwuY29tXHUwMDNlXG4rXG4rZGVzY3JpcHRpb246IHxcbisgIFRoZSBEQVA4MjExUihJKSBpcyBhIEdpZ2FiaXQgRXRoZXJuZXQgUEhZIHdpdGggUkdNSUkgaW50ZXJmYWNlLFxuKyAgc3VwcG9ydGluZyBJRUVFIDgwMi4zYXogRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCwgSUVFRSAxNTg4IFN5bmNFLFxuKyAgYW5kIGFuIGludGVybmFsIHBhY2tldCBnZW5lcmF0b3IgZm9yIGRpYWdub3N0aWNzLlxuK1xuKyAgU3BlY2lmaWNhdGlvbnM6XG4rICAgIC0gMTBCQVNFLVRlLCAxMDBCQVNFLVRYLCAxMDAwQkFTRS1UXG4rICAgIC0gUkdNSUkgd2l0aCBjb25maWd1cmFibGUgVFgvUlggY2xvY2sgZGVsYXlzICgxNTAgcHMgc3RlcHMsIDAtMjI1MCBwcylcbisgICAgLSBJRUVFIDgwMi4zYXotMjAxMCBFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0XG4rICAgIC0gSUVFRSAxNTg4IFN5bmNFIHN1cHBvcnRcbisgICAgLSBJbnRlcm5hbCBwYWNrZXQgZ2VuZXJhdG9yIGFuZCBjaGVja2VyIGZvciBsaW5rIGRpYWdub3N0aWNzXG4rXG4rYWxsT2Y6XG4rICAtICRyZWY6IGV0aGVybmV0LXBoeS55YW1sI1xuK1xuK3Byb3BlcnRpZXM6XG4rICBjb21wYXRpYmxlOlxuKyAgICBjb25zdDogZXRoZXJuZXQtcGh5LWlkMDAwOC4wMTFiXG4rXG4rICByZWc6XG4rICAgIG1heEl0ZW1zOiAxXG4rXG4rICByeC1pbnRlcm5hbC1kZWxheS1wczpcbisgICAgZGVzY3JpcHRpb246XG4rICAgICAgUkdNSUkgUlggY2xvY2sgZGVsYXkgaW4gcGljb3NlY29uZHMgKDAgdG8gbWF4aW11bSkuXG4rICAgIG11bHRpcGxlT2Y6IDE1MFxuKyAgICBtYXhpbXVtOiAyMjUwXG4rICAgIGRlZmF1bHQ6IDE5NTBcbitcbisgIHR4LWludGVybmFsLWRlbGF5LXBzOlxuKyAgICBkZXNjcmlwdGlvbjpcbisgICAgICBSR01JSSBUWCBjbG9jayBkZWxheSBpbiBwaWNvc2Vjb25kcyAoMCB0byBtYXhpbXVtKS5cbisgICAgbXVsdGlwbGVPZjogMTUwXG4rICAgIG1heGltdW06IDIyNTBcbisgICAgZGVmYXVsdDogMTk1MFxuK1xuK3VuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2VcbitcbitleGFtcGxlczpcbisgIC0gfFxuKyAgICBtZGlvIHtcbisgICAgICAgICNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbisgICAgICAgICNzaXplLWNlbGxzID0gXHUwMDNjMFx1MDAzZTtcbitcbisgICAgICAgIGV0aGVybmV0LXBoeUAxIHtcbisgICAgICAgICAgICBjb21wYXRpYmxlID0gXCJldGhlcm5ldC1waHktaWQwMDA4LjAxMWJcIjtcbisgICAgICAgICAgICByZWcgPSBcdTAwM2MxXHUwMDNlO1xuKyAgICAgICAgICAgIHJ4LWludGVybmFsLWRlbGF5LXBzID0gXHUwMDNjMjEwMFx1MDAzZTtcbisgICAgICAgICAgICB0eC1pbnRlcm5hbC1kZWxheS1wcyA9IFx1MDAzYzIxMDBcdTAwM2U7XG4rICAgICAgICB9O1xuKyAgICB9O1xuK1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnIGIvZHJpdmVycy9uZXQvcGh5L0tjb25maWdcbmluZGV4IDA5OWYyNWRjZWFiYmM3Li40NTc2ZjcwN2FjOTQ0NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnXG4rKysgYi9kcml2ZXJzL25ldC9waHkvS2NvbmZpZ1xuQEAgLTIzNyw2ICsyMzcsMTYgQEAgY29uZmlnIERBVklDT01fUEhZXG4gXHRoZWxwXG4gXHQgIEN1cnJlbnRseSBzdXBwb3J0cyBkbTkxNjFlIGFuZCBkbTkxMzFcbiBcbitjb25maWcgREFQODIxMVJfUEhZXG4rXHR0cmlzdGF0ZSBcIkRBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWVwiXG4rXHRkZXBlbmRzIG9uIE9GXG4rXHRoZWxwXG4rXHQgIFN1cHBvcnQgZm9yIHRoZSBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFkuXG4rXHQgIFRoaXMgUEhZIGlzIGRlc2lnbmVkIGZvciBlbnRlcnByaXNlIGFuZCBpbmR1c3RyaWFsIG5ldHdvcmtpbmdcbitcdCAgYXBwbGljYXRpb25zLCBzdXBwb3J0aW5nIDEwLzEwMC8xMDAwIE1icHMgb3BlcmF0aW9uLlxuK1x0ICBSR01JSSB3aXRoOiBjb25maWd1cmFibGUgVFgvUlggY2xvY2sgZGVsYXlzLCBvcHRpb25hbCBmbGFnIHRvIGVuYWJsZVxuK1x0ICAxODAtZGVncmVlIFRYIGNsb2NrIHBoYXNlIHNoaWZ0IGFuZCBpbnRlcm5hbCBwYWNrZXQgZ2VuZXJhdG9yLlxuK1xuIGNvbmZpZyBJQ1BMVVNfUEhZXG4gXHR0cmlzdGF0ZSBcIklDUGx1cyBQSFlzXCJcbiBcdGhlbHBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGVcbmluZGV4IGRlNjYwYWU5NDk0NTNkLi5hZDM1NzMzZWI0YmI2MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZVxuKysrIGIvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXG5AQCAtNTMsNiArNTMsNyBAQCBvYmotJChDT05GSUdfQlJPQURDT01fUEhZKVx0Kz0gYnJvYWRjb20ub1xuIG9iai0kKENPTkZJR19DSUNBREFfUEhZKVx0Kz0gY2ljYWRhLm9cbiBvYmotJChDT05GSUdfQ09SVElOQV9QSFkpXHQrPSBjb3J0aW5hLm9cbiBvYmotJChDT05GSUdfREFWSUNPTV9QSFkpXHQrPSBkYXZpY29tLm9cbitvYmotJChDT05GSUdfREFQODIxMVJfUEhZKVx0Kz0gZGFwODIxMXIub1xuIG9iai0kKENPTkZJR19EUDgzNjQwX1BIWSlcdCs9IGRwODM2NDAub1xuIG9iai0kKENPTkZJR19EUDgzODIyX1BIWSlcdCs9IGRwODM4MjIub1xuIG9iai0kKENPTkZJR19EUDgzODQ4X1BIWSlcdCs9IGRwODM4NDgub1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jIGIvZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uNjVkNmZlZjg2ZjI2Yjdcbi0tLSAvZGV2L251bGxcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jXG5AQCAtMCwwICsxLDIwNiBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUExcbisvKlxuKyAqIERyaXZlciBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWS5cbisgKlxuKyAqIFNwZWNpZmljYXRpb25zOlxuKyAqICAgLSBJRUVFIDgwMi4zIDEwQkFTRS1UZSwgMTAwQkFTRS1UWCwgMTAwMEJBU0UtVFxuKyAqICAgLSBJRUVFIDgwMi4zYXotMjAxMCBFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0XG4rICogICAtIElFRUUgMTU4OCBTeW5jRSBzdXBwb3J0XG4rICogICAtIFJHTUlJXG4rICpcbisgKiBBdXRob3I6IEFydGVtIFNoaW1rbyBcdTAwM2NhLnNoaW1rby5kZXZAZ21haWwuY29tXHUwMDNlXG4rICovXG4rXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvYml0ZmllbGQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vycm5vLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGh0b29sLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9rZXJuZWwuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2lvcG9sbC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbWlpLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGRldmljZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeS5oXHUwMDNlXG4rXG4rI2RlZmluZSBEQVA4MjExUl9QSFlfSURcdFx0XHQweDAwMDgwMTFCXG4rI2RlZmluZSBEQVA4MjExUl9QSFlfSURfTUFTS1x0XHQweEZGRkZGRkZGXG4rXG4rI2RlZmluZSBEQVA4MjExUl9FWFRfQUREXHRcdDB4MUVcbisjZGVmaW5lIERBUDgyMTFSX0VYVF9EQVRBXHRcdDB4MUZcbitcbisjZGVmaW5lIERBUDgyMTFSX1BIWV9DT05cdFx0MHhBMDAxXG4rI2RlZmluZSBEQVA4MjExUl9QSFlfU1dfUlNUXHRcdEJJVCgxNSlcbitcbisjZGVmaW5lIERBUDgyMTFSX1JHTUlJX0NPTlx0XHQweEEwMDNcbisjZGVmaW5lIERBUDgyMTFSX1JHTUlJX1RYX0RFTF9NQVNLXHRHRU5NQVNLKDMsIDApXG4rI2RlZmluZSBEQVA4MjExUl9SR01JSV9SWF9ERUxfTUFTS1x0R0VOTUFTSygxMywgMTApXG4rXG4rI2RlZmluZSBEQVA4MjExUl9SR01JSV9DT05GSUdfTUFTS1x0KERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLIHwgREFQODIxMVJfUkdNSUlfVFhfREVMX01BU0spXG4rXG4rLyogRGVmYXVsdCBSR01JSSBkZWxheTogMTMgKiAxNTAgPT0gMS45NW5zICovXG4rI2RlZmluZSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUxcdDB4RFxuK1xuK3N0YXRpYyBjb25zdCBpbnQgZGFwODIxMXJfaW50ZXJuYWxfZGVsYXlbXSA9IHswLCAxNTAsIDMwMCwgNDUwLCA2MDAsIDc1MCwgOTAwLFxuK1x0XHRcdFx0XHQgICAgICAxMDUwLCAxMjAwLCAxMzUwLCAxNTAwLCAxNjUwLCAxODAwLFxuK1x0XHRcdFx0XHQgICAgICAxOTUwLCAyMTAwLCAyMjUwfTtcbitcbisjZGVmaW5lIERBUDgyMTFSX0RFTEFZX1NJWkVcdEFSUkFZX1NJWkUoZGFwODIxMXJfaW50ZXJuYWxfZGVsYXkpXG4rXG4rLyoqXG4rICogZGFwODIxMXJfcmVhZF9leHQoKSAtIFJlYWQgZXh0ZW5kZWQgcmVnaXN0ZXJcbisgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHN0cnVjdHVyZVxuKyAqIEByZWc6IEV4dGVuZGVkIHJlZ2lzdGVyIGFkZHJlc3NcbisgKlxuKyAqIFJlYWRzIGEgUEhZIGV4dGVuZGVkIHJlZ2lzdGVyIHVzaW5nIHRoZSBpbmRpcmVjdCBhY2Nlc3MgbWV0aG9kLlxuKyAqIFRoZSBjYWxsZXIgbXVzdCBob2xkIHRoZSBNRElPIGJ1cyBsb2NrLlxuKyAqXG4rICogUmV0dXJuOiBSZWdpc3RlciB2YWx1ZSBvbiBzdWNjZXNzLCBvciBuZWdhdGl2ZSBlcnJvciBjb2RlXG4rICovXG4rc3RhdGljIGludCBkYXA4MjExcl9yZWFkX2V4dChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnKVxuK3tcbitcdGludCByZXQ7XG4rXG4rXHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuK1x0cmV0ID0gX19waHlfd3JpdGUocGh5ZGV2LCBEQVA4MjExUl9FWFRfQURELCByZWcpO1xuK1x0aWYgKHJldCBcdTAwM2MgMClcbitcdFx0Z290byBvdXQ7XG4rXG4rXHRyZXQgPSBfX3BoeV9yZWFkKHBoeWRldiwgREFQODIxMVJfRVhUX0RBVEEpO1xuK291dDpcbitcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuKy8qKlxuKyAqIGRhcDgyMTFyX21vZGlmeV9leHQoKSAtIE1vZGlmeSBleHRlbmRlZCByZWdpc3RlciBiaXRzXG4rICogQHBoeWRldjogUEhZIGRldmljZSBzdHJ1Y3R1cmVcbisgKiBAcmVnOiBFeHRlbmRlZCByZWdpc3RlciBhZGRyZXNzXG4rICogQG1hc2s6IEJpdCBtYXNrIG9mIGJpdHMgdG8gY2xlYXJcbisgKiBAc2V0OiBCaXQgbWFzayBvZiBiaXRzIHRvIHNldFxuKyAqXG4rICogTW9kaWZpZXMgYSBQSFkgZXh0ZW5kZWQgcmVnaXN0ZXIgdXNpbmcgdGhlIGluZGlyZWN0IGFjY2VzcyBtZXRob2QuXG4rICogTmV3IHZhbHVlID0gKG9sZCB2YWx1ZSBcdTAwMjYgfm1hc2spIHwgc2V0LlxuKyAqIFRoZSBjYWxsZXIgbXVzdCBob2xkIHRoZSBNRElPIGJ1cyBsb2NrLlxuKyAqXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGVcbisgKi9cbitzdGF0aWMgaW50IGRhcDgyMTFyX21vZGlmeV9leHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZywgdTE2IG1hc2ssIHUxNiBzZXQpXG4re1xuK1x0aW50IHJldDtcbitcbitcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XG4rXHRyZXQgPSBfX3BoeV93cml0ZShwaHlkZXYsIERBUDgyMTFSX0VYVF9BREQsIHJlZyk7XG4rXHRpZiAocmV0IFx1MDAzYyAwKVxuK1x0XHRnb3RvIG91dDtcbitcbitcdHJldCA9IF9fcGh5X21vZGlmeShwaHlkZXYsIERBUDgyMTFSX0VYVF9EQVRBLCBtYXNrLCBzZXQpO1xuK291dDpcbitcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuKy8qKlxuKyAqIGRhcDgyMTFyX2NvbmZpZ19pbml0KCkgLSBJbml0aWFsaXplIFBIWVxuKyAqIEBwaHlkZXY6IFBIWSBkZXZpY2Ugc3RydWN0dXJlXG4rICpcbisgKiBDb25maWd1cmVzIHRoZSBQSFkgZHVyaW5nIGluaXRpYWxpemF0aW9uOlxuKyAqIC0gUkdNSUkgZGVsYXlzIGJhc2VkIG9uIGludGVyZmFjZSBtb2RlXG4rICogLSBTb2Z0d2FyZSByZXNldCB0byBhcHBseSBzZXR0aW5ncyAobG93IGFjdGl2ZSwgc2VsZiBjbGVhcilcbisgKlxuKyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBvciBuZWdhdGl2ZSBlcnJvciBjb2RlXG4rICovXG4rc3RhdGljIGludCBkYXA4MjExcl9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3tcbitcdHUxNiBzZXQgPSAwO1xuK1x0aW50IHJldCwgdmFsO1xuK1x0czMyIHJ4X2ludGVybmFsX2RlbGF5O1xuK1x0czMyIHR4X2ludGVybmFsX2RlbGF5O1xuK1xuK1x0aWYgKCFwaHlfaW50ZXJmYWNlX2lzX3JnbWlpKHBoeWRldikpXG4rXHRcdHJldHVybiAwO1xuK1xuK1x0cnhfaW50ZXJuYWxfZGVsYXkgPSBwaHlfZ2V0X2ludGVybmFsX2RlbGF5KHBoeWRldiwgZGFwODIxMXJfaW50ZXJuYWxfZGVsYXksXG4rXHRcdFx0XHRcdFx0ICAgREFQODIxMVJfREVMQVlfU0laRSwgdHJ1ZSk7XG4rXHR0eF9pbnRlcm5hbF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheSxcbitcdFx0XHRcdFx0XHQgICBEQVA4MjExUl9ERUxBWV9TSVpFLCBmYWxzZSk7XG4rXG4rXHRzd2l0Y2ggKHBoeWRldi1cdTAwM2VpbnRlcmZhY2UpIHtcbitcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxuK1x0XHRpZiAocnhfaW50ZXJuYWxfZGVsYXkgXHUwMDNjIDApXG4rXHRcdFx0cnhfaW50ZXJuYWxfZGVsYXkgPSAwO1xuK1xuK1x0XHRpZiAodHhfaW50ZXJuYWxfZGVsYXkgXHUwMDNjIDApXG4rXHRcdFx0dHhfaW50ZXJuYWxfZGVsYXkgPSAwO1xuK1x0XHRicmVhaztcbitcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1JYSUQ6XG4rXHRcdGlmIChyeF9pbnRlcm5hbF9kZWxheSBcdTAwM2MgMClcbitcdFx0XHRyeF9pbnRlcm5hbF9kZWxheSA9IERBUDgyMTFSX0RFRkFVTFRfREVMX1NFTDtcbitcbitcdFx0dHhfaW50ZXJuYWxfZGVsYXkgPSAwO1xuK1x0XHRicmVhaztcbitcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX0lEOlxuK1x0XHRpZiAocnhfaW50ZXJuYWxfZGVsYXkgXHUwMDNjIDApXG4rXHRcdFx0cnhfaW50ZXJuYWxfZGVsYXkgPSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUw7XG4rXHRcdGlmICh0eF9pbnRlcm5hbF9kZWxheSBcdTAwM2MgMClcbitcdFx0XHR0eF9pbnRlcm5hbF9kZWxheSA9IERBUDgyMTFSX0RFRkFVTFRfREVMX1NFTDtcbitcdFx0YnJlYWs7XG4rXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9UWElEOlxuK1x0XHRpZiAodHhfaW50ZXJuYWxfZGVsYXkgXHUwMDNjIDApXG4rXHRcdFx0dHhfaW50ZXJuYWxfZGVsYXkgPSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUw7XG4rXG4rXHRcdHJ4X2ludGVybmFsX2RlbGF5ID0gMDtcbitcdFx0YnJlYWs7XG4rXHRkZWZhdWx0OlxuK1x0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCJVbnN1cHBvcnRlZCBpbnRlcmZhY2U6ICVkXFxuXCIsXG4rXHRcdFx0ICAgcGh5ZGV2LVx1MDAzZWludGVyZmFjZSk7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuK1xuK1x0c2V0IHw9IEZJRUxEX1BSRVAoREFQODIxMVJfUkdNSUlfUlhfREVMX01BU0ssIHJ4X2ludGVybmFsX2RlbGF5KTtcbitcdHNldCB8PSBGSUVMRF9QUkVQKERBUDgyMTFSX1JHTUlJX1RYX0RFTF9NQVNLLCB0eF9pbnRlcm5hbF9kZWxheSk7XG4rXG4rXHRyZXQgPSBkYXA4MjExcl9tb2RpZnlfZXh0KHBoeWRldiwgREFQODIxMVJfUEhZX0NPTiwgREFQODIxMVJfUEhZX1NXX1JTVCwgMCk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0LyogV2FpdCBmb3IgcmVzZXQgc2VsZi1jbGVhciAoZnJvbSBsb3cgYWN0aXZlIHRvIGhpZ2gpICovXG4rXHRyZXQgPSByZWFkX3BvbGxfdGltZW91dChkYXA4MjExcl9yZWFkX2V4dCwgdmFsLFxuK1x0XHRcdFx0KHZhbCBcdTAwMjYgREFQODIxMVJfUEhZX1NXX1JTVCksXG4rXHRcdFx0XHQyMCwgMjAwLCBmYWxzZSwgcGh5ZGV2LCBEQVA4MjExUl9QSFlfQ09OKTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4rXHRpZiAodmFsIFx1MDAzYyAwKVxuK1x0XHRyZXR1cm4gdmFsO1xuK1xuK1x0cmV0ID0gZGFwODIxMXJfbW9kaWZ5X2V4dChwaHlkZXYsIERBUDgyMTFSX1JHTUlJX0NPTiwgREFQODIxMVJfUkdNSUlfQ09ORklHX01BU0ssIHNldCk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkYXA4MjExcl9kcml2ZXJbXSA9IHtcbitcdHtcbitcdFx0UEhZX0lEX01BVENIX0VYQUNUKERBUDgyMTFSX1BIWV9JRCksXG4rXHRcdC5uYW1lXHRcdD0gXCJEQVA4MjExUiBHaWdhYml0IEV0aGVybmV0XCIsXG4rXHRcdC5zb2Z0X3Jlc2V0XHQ9IGdlbnBoeV9zb2Z0X3Jlc2V0LFxuK1x0XHQuY29uZmlnX2luaXRcdD0gZGFwODIxMXJfY29uZmlnX2luaXQsXG4rXHRcdC5yZWFkX3N0YXR1c1x0PSBnZW5waHlfcmVhZF9zdGF0dXMsXG4rXHRcdC5zZXRfbG9vcGJhY2tcdD0gZ2VucGh5X2xvb3BiYWNrLFxuK1x0XHQuY29uZmlnX2FuZWdcdD0gZ2VucGh5X2NvbmZpZ19hbmVnLFxuK1x0XHQuc3VzcGVuZFx0PSBnZW5waHlfc3VzcGVuZCxcbitcdFx0LnJlc3VtZVx0XHQ9IGdlbnBoeV9yZXN1bWUsXG4rXHR9LFxuK307XG4rbW9kdWxlX3BoeV9kcml2ZXIoZGFwODIxMXJfZHJpdmVyKTtcbitcbitNT0RVTEVfREVTQ1JJUFRJT04oXCJEQVA4MjExUiBHaWdhYml0IEV0aGVybmV0IFBIWSBkcml2ZXJcIik7XG4rTU9EVUxFX0FVVEhPUihcIkFydGVtIFNoaW1rbyBcdTAwM2NhLnNoaW1rby5kZXZAZ21haWwuY29tXHUwMDNlXCIpO1xuK01PRFVMRV9MSUNFTlNFKFwiR1BMXCIpO1xuK1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgZGFwODIxMXJfdGJbXSA9IHtcbitcdHsgREFQODIxMVJfUEhZX0lELCBEQVA4MjExUl9QSFlfSURfTUFTSyB9LFxuK1x0eyAvKiBzZW50aW5lbCAqLyB9XG4rfTtcbitNT0RVTEVfREVWSUNFX1RBQkxFKG1kaW8sIGRhcDgyMTFyX3RiKTtcbitcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM2OjAxLjQ2NDcyMjk1MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg4Mjk5MTY5NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEQVA4MjExUiBQSFkgRHJpdmVyIGZvciBUZXN0YWJpbGl0eSoqXG5cbk9rYXksIHNvIHdlJ3ZlIGdvdCBhIG5ldyBwYXRjaCBhZGRpbmcgYSBkcml2ZXIgZm9yIHRoZSBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFkuIEl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIGluY2x1ZGVzIHRoZSBuZWNlc3NhcnkgZG9jdW1lbnRhdGlvbiBiaW5kaW5nLCBLY29uZmlnIGFuZCBNYWtlZmlsZSBlbnRyaWVzLCBhbmQsIGNydWNpYWxseSwgdGhlIGRyaXZlciBjb2RlIGl0c2VsZiAoYGRhcDgyMTFyLmNgKS4gVGhlIGRyaXZlciBpbXBsZW1lbnRzIHRoZSB1c3VhbCBzdXNwZWN0czogYGRhcDgyMTFyX3JlYWRfZXh0YCwgYGRhcDgyMTFyX21vZGlmeV9leHRgLCBhbmQgYGRhcDgyMTFyX2NvbmZpZ19pbml0YC4gU3RhbmRhcmQgUEhZIGRyaXZlciBzdHVmZi5cblxuTXkgaW5pdGlhbCBjb25jZXJuLCBuYXR1cmFsbHksIGlzIGhvdyB3ZSBjYW4gYWN0dWFsbHkgKnJlYWNoKiB0aGlzIHRoaW5nIGluIGEgY29udHJvbGxlZCB0ZXN0aW5nIGVudmlyb25tZW50LCBlc3BlY2lhbGx5IGluIHNvbWV0aGluZyBsaWtlIFFFTVUuIFBIWSBkcml2ZXJzIGFyZSB0eXBpY2FsbHkgYWNjZXNzZWQgdGhyb3VnaCBhbiBNRElPIGJ1cy4gU28sIHRoZSBxdWVzdGlvbiBpcywgaG93IGRvIHdlIGdldCBhdCB0aGUgREFQODIxMVIgaW4gYSB2aXJ0dWFsaXplZCBjb250ZXh0PyBDYW4gd2UgaW5zdGFudGlhdGUgYSB2aXJ0dWFsIE1ESU8gYnVzPyBgbWRpby1tb2NrdXBgIHNlZW1zIGxpa2UgdGhlIG9idmlvdXMgc3RhcnRpbmcgcG9pbnQsIG9yIG1heWJlIGEgYGZpeGVkLXBoeWAgc2V0dXAgaWYgd2UgY2FuIHJlZ2lzdGVyIHRoZW0gc29tZWhvdy4gSSB3YXMgYWxzbyB3b25kZXJpbmcgaWYgbmV0bGluay9pb2N0bCBvbiBhIGR1bW15IGRldmljZSBjb3VsZCBiZSBhIHBvc3NpYmlsaXR5LCBidXQgTURJTyBpcyB0aGUgc3RhbmRhcmQgZm9yIHRoZXNlIHRoaW5ncy5cblxuVGhlbiwgSSBzdGFydGVkIHRoaW5raW5nIGFib3V0IHN5emthbGxlci4gRG9lcyBzeXprYWxsZXIgb2ZmZXIgYSB3YXkgaW4/IENvdWxkIHdlIGluamVjdCBNRElPIGRldmljZXMgZGlyZWN0bHkgdXNpbmcgYGlvY3RsKFNJT0NTTUlJUkVHKWAgb3Igc29tZXRoaW5nIHNpbWlsYXI/IEFjdHVhbGx5LCBubywgUEhZIGRldmljZXMgYXJlICpwcm9iZWQqIHZpYSB0aGUgTURJTyBidXMsIGFuZCBzeXprYWxsZXIncyBNRElPL25ldGRldiBzdXBwb3J0IHNlZW1zIGxpbWl0ZWQuIFdhaXQsIHdoYXQgYWJvdXQgbmV0bGluaz8gSSBrbm93IHN5emthbGxlciBoYXMgYHN5el9nZW5ldGxpbmtfZ2V0X2ZhbWlseWAsIHNvIGl0ICpjb3VsZCogaW50ZXJhY3Qgd2l0aCBQSFlzIHRoYXQgd2F5LiBPciwgY291bGQgd2UgZ28gdGhyb3VnaCB0dW4vdGFwP1xuXG5CdXQgaGFuZyBvbi4gVGhpcyAqaXMqIGEgaGFyZHdhcmUtc3BlY2lmaWMgUEhZLiBJdCdzIG5vdCBsaWtlbHkgdG8gYmUgZW11bGF0ZWQgaW4gUUVNVS4gU28sIHRoZSBrZXkgaXMgZGVmaW5pdGVseSBnb2luZyB0byBiZSB1c2luZyBzb2Z0d2FyZSBNRElPIGJ1cyBzaW11bGF0aW9uLiBJIHJlY2FsbCBgbWRpby1tb2NrdXBgLCBgZml4ZWQtcGh5YCwgdGhvc2UgdHlwZXMgb2Ygc29sdXRpb25zLi4uIGlmIHdlIGNhbiBqdXN0IGdldCB0aGVtIHJlZ2lzdGVyZWQuIFRoZSBjaGFsbGVuZ2Ugd2lsbCBiZSBpZiBzeXprYWxsZXIgaXMgc2V0IHVwIHRvIHNwZWNpZmljYWxseSBoYW5kbGUgcmVnaXN0ZXJpbmcgYSBkZXZpY2UgbGlrZSB0aGF0LlxuXG5XYWl0IGEgc2Vjb25kLi4uIGRvZXNuJ3Qgc3l6a2FsbGVyIGhhdmUgYHN5el9tZGlvXy4uLmAgY2FsbHM/IE1heWJlIGl0IGRvZXMhIEkgc2hvdWxkIGNoZWNrIHRoZSBzeXprYWxsZXIgZG9jdW1lbnRhdGlvbiBhbmQgbG9vayBzcGVjaWZpY2FsbHkgZm9yIHRob3NlLiBUaGF0IGNvdWxkIGJlIHRoZSBrZXkgdG8gdGVzdGluZyB0aGlzIGRyaXZlci4gTGV0J3MgbG9vayBpbnRvIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODU3LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDkwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6MzY6MTAuMjk0NjQ0NTgzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1NTQ2MjE5ODA0LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzeXpfbWRpb1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6Mzc6MzUuODQwODc1OTk4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ0MjgyNTU2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlIHdoYXQgSSBjYW4gY29tZSB1cCB3aXRoIGJhc2VkIG9uIHRoYXQgcHJvbXB0LiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCByZW5kZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCBrZWVwaW5nIGluIG1pbmQgSSdtIGRlYWxpbmcgd2l0aCBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBTeXprYWxsZXIncyBDb3ZlcmFnZSBvZiBNRElPL1BIWSoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHdvcmsuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBnbyBzdHJhaWdodCB0byBzeXprYWxsZXIuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHdlJ3ZlIGdvdCBhbnkgcHJlLWV4aXN0aW5nIGRlc2NyaXB0aW9ucyBvciB0ZXN0cyByZWxhdGVkIHRvIE1ESU8gb3IgUEhZIGludGVyYWN0aW9ucyB3aXRoaW4gdGhhdCBmdXp6aW5nIGZyYW1ld29yay4gSXQncyBhIGtleSBzdGFydGluZyBwb2ludDsgSSBkb24ndCB3YW50IHRvIHJlaW52ZW50IHRoZSB3aGVlbCBpZiB0aGVyZSdzIGFscmVhZHkgc29tZSBmb3VuZGF0aW9uYWwgd29yayB0aGVyZS4gQSBxdWljayBzZWFyY2ggd2l0aGluIHN5emthbGxlcidzIGNvZGViYXNlIHdvdWxkIGJlIG15IGltbWVkaWF0ZSB0YWN0aWMgLSBsaWtlbHkgZm9jdXNpbmcgb24ga2V5d29yZHMgbGlrZSBcIk1ESU8sXCIgXCJQSFksXCIgb3IgcGVyaGFwcyBtb3JlIGdlbmVyaWMgdGVybXMgcmVsYXRlZCB0byBuZXR3b3JrIGludGVyZmFjZSBjb250cm9sbGVycyAoTklDcykgb3IgcGh5c2ljYWwgbGF5ZXIgdHJhbnNjZWl2ZXJzLCBkZXBlbmRpbmcgb24gaG93IGl0IG1pZ2h0IGJlIGltcGxlbWVudGVkIHdpdGhpbiB0aGUga2VybmVsLiBUaGUgZ29hbCBpcyBlZmZpY2llbmN5LCBzbyBrbm93aW5nIGlmIHN5emthbGxlciBhbHJlYWR5IGhhcyBjb3ZlcmFnZSBpbiB0aGlzIGFyZWEgd291bGQgc2F2ZSB0aW1lIGFuZCBjb3VsZCBwcm92aWRlIGEgdXNlZnVsIGJhc2UgZm9yIGZ1cnRoZXIgZXhwbG9yYXRpb24uIEknbGwgbmVlZCB0byByZW1lbWJlciB0aGF0IHRoZXNlIHRvb2xzIGNhbiBzb21ldGltZXMgaGF2ZSBkaWZmZXJlbnQgbmFtaW5nIGNvbnZlbnRpb25zIG9yIGludGVybmFsIGltcGxlbWVudGF0aW9ucywgc28gSSdsbCBzdGF5IGZsZXhpYmxlIGFuZCBub3QgZ2V0IHRvbyBodW5nIHVwIG9uIHNwZWNpZmljIHRlcm1pbm9sb2d5IGlmIG5vdGhpbmcgcG9wcyByaWdodCBhd2F5LiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZCFcblxuXG4iLCJJbnB1dFRva2VucyI6NjkxOSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM3OjM5LjI4MzcwNDU2NFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjI1MDE4NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9kc2EvZHNhLmM9NjIxPXN0YXRpYyBpbnQgZHNhX3N3aXRjaF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuLS1cXG5uZXQvZHNhL2RzYS5jLTY1My1cXHRpZiAoIWRzLVxcdTAwM2V1c2VyX21paV9idXMgXFx1MDAyNlxcdTAwMjYgZHMtXFx1MDAzZW9wcy1cXHUwMDNlcGh5X3JlYWQpIHtcXG5uZXQvZHNhL2RzYS5jOjY1NDpcXHRcXHRkcy1cXHUwMDNldXNlcl9taWlfYnVzID0gbWRpb2J1c19hbGxvYygpO1xcbm5ldC9kc2EvZHNhLmMtNjU1LVxcdFxcdGlmICghZHMtXFx1MDAzZXVzZXJfbWlpX2J1cykge1xcbi0tXFxubmV0L2RzYS9kc2EuYy02NjEtXFxubmV0L2RzYS9kc2EuYzo2NjI6XFx0XFx0ZXJyID0gbWRpb2J1c19yZWdpc3Rlcihkcy1cXHUwMDNldXNlcl9taWlfYnVzKTtcXG5uZXQvZHNhL2RzYS5jLTY2My1cXHRcXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4tLVxcbm5ldC9kc2EvZHNhLmMtNjczLVxcdGlmIChkcy1cXHUwMDNldXNlcl9taWlfYnVzIFxcdTAwMjZcXHUwMDI2IGRzLVxcdTAwM2VvcHMtXFx1MDAzZXBoeV9yZWFkKVxcbm5ldC9kc2EvZHNhLmM6Njc0OlxcdFxcdG1kaW9idXNfZnJlZShkcy1cXHUwMDNldXNlcl9taWlfYnVzKTtcXG5uZXQvZHNhL2RzYS5jLTY3NS10ZWFyZG93bjpcXG4tLVxcbm5ldC9kc2EvZHNhLmM9Njg1PXN0YXRpYyB2b2lkIGRzYV9zd2l0Y2hfdGVhcmRvd24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxubmV0L2RzYS9kc2EuYy02OTItXFx0aWYgKGRzLVxcdTAwM2V1c2VyX21paV9idXMgXFx1MDAyNlxcdTAwMjYgZHMtXFx1MDAzZW9wcy1cXHUwMDNlcGh5X3JlYWQpIHtcXG5uZXQvZHNhL2RzYS5jOjY5MzpcXHRcXHRtZGlvYnVzX3VucmVnaXN0ZXIoZHMtXFx1MDAzZXVzZXJfbWlpX2J1cyk7XFxubmV0L2RzYS9kc2EuYzo2OTQ6XFx0XFx0bWRpb2J1c19mcmVlKGRzLVxcdTAwM2V1c2VyX21paV9idXMpO1xcbm5ldC9kc2EvZHNhLmMtNjk1LVxcdFxcdGRzLVxcdTAwM2V1c2VyX21paV9idXMgPSBOVUxMO1xcbi0tXFxubmV0L2RzYS9wb3J0LmMtMTEtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L25vdGlmaWVyLmhcXHUwMDNlXFxubmV0L2RzYS9wb3J0LmM6MTI6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mX21kaW8uaFxcdTAwM2VcXG5uZXQvZHNhL3BvcnQuYy0xMy0jaW5jbHVkZSBcXHUwMDNjbGludXgvb2ZfbmV0LmhcXHUwMDNlXFxuLS1cXG5uZXQvZHNhL3BvcnQuYz0xNzI2PXN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgZHNhX3N3aXRjaGVzX2FwcGx5X3dvcmthcm91bmRzW10gPSB7XFxuLS1cXG5uZXQvZHNhL3BvcnQuYy0xNzk2LSNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfRFNBX1NNU0NfTEFOOTMwM19NRElPKVxcbm5ldC9kc2EvcG9ydC5jOjE3OTc6XFx0XFxcInNtc2MsbGFuOTMwMy1tZGlvXFxcIixcXG5uZXQvZHNhL3BvcnQuYy0xNzk4LSNlbmRpZlxcbi0tXFxubmV0L2RzYS91c2VyLmMtMTMtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mX25ldC5oXFx1MDAzZVxcbm5ldC9kc2EvdXNlci5jOjE0OiNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZl9tZGlvLmhcXHUwMDNlXFxubmV0L2RzYS91c2VyLmM6MTU6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21kaW8uaFxcdTAwM2VcXG5uZXQvZHNhL3VzZXIuYy0xNi0jaW5jbHVkZSBcXHUwMDNjbmV0L3J0bmV0bGluay5oXFx1MDAzZVxcbi0tXFxubmV0L2RzYS91c2VyLmM9MjYzNz1zdGF0aWMgaW50IGRzYV91c2VyX3BoeV9jb25uZWN0KHN0cnVjdCBuZXRfZGV2aWNlICp1c2VyX2RldiwgaW50IGFkZHIsXFxuLS1cXG5uZXQvZHNhL3VzZXIuYy0yNjQyLVxcbm5ldC9kc2EvdXNlci5jOjI2NDM6XFx0dXNlcl9kZXYtXFx1MDAzZXBoeWRldiA9IG1kaW9idXNfZ2V0X3BoeShkcy1cXHUwMDNldXNlcl9taWlfYnVzLCBhZGRyKTtcXG5uZXQvZHNhL3VzZXIuYy0yNjQ0LVxcdGlmICghdXNlcl9kZXYtXFx1MDAzZXBoeWRldikge1xcbi0tXFxubmV0L2V0aHRvb2wvY29tbW9uLmM9NTg3PWNvbnZlcnRfbGVnYWN5X3NldHRpbmdzX3RvX2xpbmtfa3NldHRpbmdzKFxcbi0tXFxubmV0L2V0aHRvb2wvY29tbW9uLmMtNjIxLVxcdFxcdD0gbGVnYWN5X3NldHRpbmdzLVxcdTAwM2VhdXRvbmVnO1xcbm5ldC9ldGh0b29sL2NvbW1vbi5jOjYyMjpcXHRsaW5rX2tzZXR0aW5ncy1cXHUwMDNlYmFzZS5tZGlvX3N1cHBvcnRcXG5uZXQvZXRodG9vbC9jb21tb24uYzo2MjM6XFx0XFx0PSBsZWdhY3lfc2V0dGluZ3MtXFx1MDAzZW1kaW9fc3VwcG9ydDtcXG5uZXQvZXRodG9vbC9jb21tb24uYy02MjQtXFx0bGlua19rc2V0dGluZ3MtXFx1MDAzZWJhc2UuZXRoX3RwX21kaXhcXG4tLVxcbm5ldC9ldGh0b29sL2lvY3RsLmM9MzgyPWNvbnZlcnRfbGlua19rc2V0dGluZ3NfdG9fbGVnYWN5X3NldHRpbmdzKFxcbi0tXFxubmV0L2V0aHRvb2wvaW9jdGwuYy00MTItXFx0XFx0PSBsaW5rX2tzZXR0aW5ncy1cXHUwMDNlYmFzZS5hdXRvbmVnO1xcbm5ldC9ldGh0b29sL2lvY3RsLmM6NDEzOlxcdGxlZ2FjeV9zZXR0aW5ncy1cXHUwMDNlbWRpb19zdXBwb3J0XFxubmV0L2V0aHRvb2wvaW9jdGwuYzo0MTQ6XFx0XFx0PSBsaW5rX2tzZXR0aW5ncy1cXHUwMDNlYmFzZS5tZGlvX3N1cHBvcnQ7XFxubmV0L2V0aHRvb2wvaW9jdGwuYy00MTUtXFx0bGVnYWN5X3NldHRpbmdzLVxcdTAwM2VldGhfdHBfbWRpeFxcbi0tXFxubmV0L2V0aHRvb2wvcGh5LmM9NzA9c3RhdGljIGludCBwaHlfcHJlcGFyZV9kYXRhKGNvbnN0IHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2luZm8sXFxuLS1cXG5uZXQvZXRodG9vbC9waHkuYy05MS1cXG5uZXQvZXRodG9vbC9waHkuYzo5MjpcXHRyZXBfZGF0YS1cXHUwMDNlbmFtZSA9IGtzdHJkdXAoZGV2X25hbWUoXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXYpLCBHRlBfS0VSTkVMKTtcXG5uZXQvZXRodG9vbC9waHkuYy05My1cXHRpZiAoIXJlcF9kYXRhLVxcdTAwM2VuYW1lKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTozNzo0MC4xMDYyMTQyNzRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzY4NzMzMzMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFN5emthbGxlciBcdTAwMjYgUEhZIERyaXZlciBCcmFpbnN0b3JtKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyB3ZSBjYW4gbGV2ZXJhZ2Ugc3l6a2FsbGVyIHRvIHRlc3QgUEhZIGRyaXZlcnMsIHNwZWNpZmljYWxseSB0aGF0IGBkYXA4MjExcmAgb25lLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiB3ZSBhY3R1YWxseSAqZ2V0KiB0aGF0IGRyaXZlciBpbnN0YW50aWF0ZWQgaW4gUUVNVT8gU3l6a2FsbGVyJ3Mgc3RyZW5ndGggbGllcyBpbiB0ZXN0aW5nIGRyaXZlcnMsIGJ1dCBpdCdzIHRoZSBpbnN0YW50aWF0aW9uIHRoYXQncyB0aGUgaHVyZGxlIGhlcmUuXG5cblR5cGljYWxseSwgUEhZIGRyaXZlcnMgZ2V0IG1hdGNoZWQgYmFzZWQgb24gdGhlaXIgUEhZIElEIHJlYWQgZnJvbSB0aGUgTURJTyBidXMuIFdpdGhvdXQgdGhlIHBoeXNpY2FsIGhhcmR3YXJlIHJlcG9ydGluZyB0aGUgY29ycmVjdCBJRCAoYDB4MDAwODAxMUJgKSwgdGhlIGRyaXZlciBqdXN0IHdvbid0IHByb2JlLCByaWdodD8gVW5sZXNzLi4uIHdlIGNhbiB0cmljayBpdC4gRGV2aWNlIHRyZWUgZW50cmllcyBjYW4gZm9yY2UgaW5zdGFudGlhdGlvbiwgdGhhdCdzIG9uZSBhdmVudWUuIE9yLCBhbmQgdGhpcyBpcyB3aGVyZSBzeXprYWxsZXIgbWlnaHQgY29tZSBpbiwgY291bGQgaXQgcG9zc2libHkgc2ltdWxhdGUgYSBzb2Z0d2FyZSBNRElPIGJ1cyB0aGF0IGZha2VzIHRoZSBQSFkgSUQ/XG5cblRoZSBrZXkgaGVyZSBpcyB3aGV0aGVyIHN5emthbGxlciBoYXMgdGhlIGFiaWxpdHkgdG8gaW5qZWN0IG9yIHNwZWNpZnkgTURJTyBkZXZpY2VzLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIHN5emthbGxlciBkb2N1bWVudGF0aW9uIGFuZCBjb2RlIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBtZWNoYW5pc20gZm9yIGNyZWF0aW5nIHRoaXMga2luZCBvZiB2aXJ0dWFsIGhhcmR3YXJlIGVudmlyb25tZW50LiBJZiB3ZSBjYW4gaW5qZWN0IHRoYXQgTURJTyBkZXZpY2Ugd2l0aCB0aGUgY29ycmVjdCBQSFkgSUQsIHdlJ3JlIGdvbGRlbi4gVGhhdCdzIHRoZSBmaXJzdCB0aGluZyB0byBjaGVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQ5MiwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTozNzo0NC40NzQ5NTE0MTdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjgwMTE1MDE3OTcsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1kaW8tbW9ja3VwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTozODoxMi40ODY1NDMyMDRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjY4MjY4MDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6XG5cbioqRGVidWdnaW5nIHRoZSBQSFkgRHJpdmVyKipcblxuSG1tLCBzb21ldGhpbmcncyBub3QgcmlnaHQuIEkgd2FzIGV4cGVjdGluZyB0byBzZWUgYG1kaW8tbW9ja3VwYCBpbiB0aGUgc3lzdGVtLCBidXQgaXQncyBub3QgcHJlc2VudC4gVGhhdCdzIG9kZC4gTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoZSB1c3VhbCBzdXNwZWN0cy4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUncyBhIG1vY2t1cCBvciBkdW1teSBQSFkgZHJpdmVyIGhpZGluZyBpbiBgZHJpdmVycy9uZXQvcGh5L2AuIEl0J3MgcG9zc2libGUgaXQncyBnb3QgYSBzbGlnaHRseSBkaWZmZXJlbnQgbmFtaW5nIGNvbnZlbnRpb24uIFRpbWUgdG8gZ28gc3BlbHVua2luZyBpbiB0aGUgY29kZSBiYXNlIVxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTIzLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6Mzg6MTUuNzU0ODE0MzA0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIwODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvcGh5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJhZGluLmNcIixcbiAgICBcImFkaW4xMTAwLmNcIixcbiAgICBcImFpcl9hbjg4MDEuY1wiLFxuICAgIFwiYWlyX2VuODgxMWguY1wiLFxuICAgIFwiYWlyX3BoeV9saWIuY1wiLFxuICAgIFwiYWlyX3BoeV9saWIuaFwiLFxuICAgIFwiYW1kLmNcIixcbiAgICBcImFzMjF4eHguY1wiLFxuICAgIFwiYXg4ODc5NmIuY1wiLFxuICAgIFwiYXg4ODc5NmJfcnVzdC5yc1wiLFxuICAgIFwiYmNtLWN5Z251cy5jXCIsXG4gICAgXCJiY20tcGh5LWxpYi5jXCIsXG4gICAgXCJiY20tcGh5LWxpYi5oXCIsXG4gICAgXCJiY20tcGh5LXB0cC5jXCIsXG4gICAgXCJiY201NDE0MC5jXCIsXG4gICAgXCJiY202M3h4LmNcIixcbiAgICBcImJjbTd4eHguY1wiLFxuICAgIFwiYmNtODQ4ODEuY1wiLFxuICAgIFwiYmNtODd4eC5jXCIsXG4gICAgXCJicm9hZGNvbS5jXCIsXG4gICAgXCJjaWNhZGEuY1wiLFxuICAgIFwiY29ydGluYS5jXCIsXG4gICAgXCJkYXA4MjExci5jXCIsXG4gICAgXCJkYXZpY29tLmNcIixcbiAgICBcImRwODM2NDAuY1wiLFxuICAgIFwiZHA4MzY0MF9yZWcuaFwiLFxuICAgIFwiZHA4MzgyMi5jXCIsXG4gICAgXCJkcDgzODQ4LmNcIixcbiAgICBcImRwODM4NjcuY1wiLFxuICAgIFwiZHA4Mzg2OS5jXCIsXG4gICAgXCJkcDgzdGM4MTEuY1wiLFxuICAgIFwiZHA4M3RkNTEwLmNcIixcbiAgICBcImRwODN0ZzcyMC5jXCIsXG4gICAgXCJldDEwMTFjLmNcIixcbiAgICBcImZpeGVkX3BoeS5jXCIsXG4gICAgXCJpY3BsdXMuY1wiLFxuICAgIFwiaW50ZWwteHdheS5jXCIsXG4gICAgXCJsaW5rbW9kZS5jXCIsXG4gICAgXCJseHQuY1wiLFxuICAgIFwibWFydmVsbC04OHEyeHh4LmNcIixcbiAgICBcIm1hcnZlbGwtODh4MjIyMi5jXCIsXG4gICAgXCJtYXJ2ZWxsLmNcIixcbiAgICBcIm1hcnZlbGwxMGcuY1wiLFxuICAgIFwibWRpby1vcGVuLWFsbGlhbmNlLmhcIixcbiAgICBcIm1kaW9fYnVzLmNcIixcbiAgICBcIm1kaW9fYnVzX3Byb3ZpZGVyLmNcIixcbiAgICBcIm1kaW9fZGV2aWNlLmNcIixcbiAgICBcIm1kaW9fZGV2cmVzLmNcIixcbiAgICBcIm1lc29uLWd4bC5jXCIsXG4gICAgXCJtaWNyZWwuY1wiLFxuICAgIFwibWljcm9jaGlwLmNcIixcbiAgICBcIm1pY3JvY2hpcF9yZHNfcHRwLmNcIixcbiAgICBcIm1pY3JvY2hpcF9yZHNfcHRwLmhcIixcbiAgICBcIm1pY3JvY2hpcF90MS5jXCIsXG4gICAgXCJtaWNyb2NoaXBfdDFzLmNcIixcbiAgICBcIm1paV90aW1lc3RhbXBlci5jXCIsXG4gICAgXCJtb3RvcmNvbW0uY1wiLFxuICAgIFwibXhsLTg2MTEwLmNcIixcbiAgICBcIm14bC1ncHkuY1wiLFxuICAgIFwibmF0aW9uYWwuY1wiLFxuICAgIFwibmNuMjYwMDAuY1wiLFxuICAgIFwibnhwLWM0NS10amExMXh4LW1hY3NlYy5jXCIsXG4gICAgXCJueHAtYzQ1LXRqYTExeHguY1wiLFxuICAgIFwibnhwLWM0NS10amExMXh4LmhcIixcbiAgICBcIm54cC1jYnR4LmNcIixcbiAgICBcIm54cC10amExMXh4LmNcIixcbiAgICBcIm9wZW5fYWxsaWFuY2VfaGVscGVycy5jXCIsXG4gICAgXCJvcGVuX2FsbGlhbmNlX2hlbHBlcnMuaFwiLFxuICAgIFwicGh5LWM0NS5jXCIsXG4gICAgXCJwaHktY2Fwcy5oXCIsXG4gICAgXCJwaHktY29yZS5jXCIsXG4gICAgXCJwaHkuY1wiLFxuICAgIFwicGh5X2NhcHMuY1wiLFxuICAgIFwicGh5X2RldmljZS5jXCIsXG4gICAgXCJwaHlfbGVkX3RyaWdnZXJzLmNcIixcbiAgICBcInBoeV9saW5rX3RvcG9sb2d5LmNcIixcbiAgICBcInBoeV9wYWNrYWdlLmNcIixcbiAgICBcInBoeV9wb3J0LmNcIixcbiAgICBcInBoeWxpYi1pbnRlcm5hbC5oXCIsXG4gICAgXCJwaHlsaWIuaFwiLFxuICAgIFwicGh5bGluay5jXCIsXG4gICAgXCJxc2VtaS5jXCIsXG4gICAgXCJxdDIwMjUucnNcIixcbiAgICBcInJvY2tjaGlwLmNcIixcbiAgICBcInNmcC1idXMuY1wiLFxuICAgIFwic2ZwLmNcIixcbiAgICBcInNmcC5oXCIsXG4gICAgXCJzbXNjLmNcIixcbiAgICBcInN0ZTEwWHAuY1wiLFxuICAgIFwic3R1YnMuY1wiLFxuICAgIFwic3dwaHkuY1wiLFxuICAgIFwic3dwaHkuaFwiLFxuICAgIFwidGVyYW5ldGljcy5jXCIsXG4gICAgXCJ1UEQ2MDYyMC5jXCIsXG4gICAgXCJ2aXRlc3NlLmNcIixcbiAgICBcInhpbGlueF9nbWlpMnJnbWlpLmNcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogW1xuICAgIFwiYXF1YW50aWFcIixcbiAgICBcIm1lZGlhdGVrXCIsXG4gICAgXCJtc2NjXCIsXG4gICAgXCJxY29tXCIsXG4gICAgXCJyZWFsdGVrXCJcbiAgXVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6Mzg6MTUuNzU1MDM3NDk0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwNjIxMjEzMzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ3VycmVudCBBbmFseXNpcyBvZiB0aGUgUEhZIERldmljZSBJbmplY3Rpb24gQ2hhbGxlbmdlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgZmlsZXM6IGBmaXhlZF9waHkuY2AsIGBtZGlvX2J1cy5jYCwgYG1kaW9fZGV2aWNlLmNgLCBhbmQgYHBoeV9kZXZpY2UuY2AuIFRoZSBjb3JlIGlzc3VlIGlzIHRyeWluZyB0byBnZXQgc3l6a2FsbGVyIHRvIGludGVyYWN0IHdpdGggYSBzcGVjaWZpYyBQSFkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYGRhcDgyMTFyX2NvbmZpZ19pbml0YC4gVGhlIGltbWVkaWF0ZSBwcm9ibGVtIGlzIHRoYXQgc3l6a2FsbGVyIGRvZXNuJ3Qgc2VlbSB0byBoYXZlIGEgc3RyYWlnaHRmb3J3YXJkIHdheSB0byBpbmplY3QgYSBQSFkgZGV2aWNlIHdpdGggYW4gYXJiaXRyYXJ5IElELiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdG8gZm9yY2UgdGhhdCBkcml2ZXIgdG8gYmluZC5cblxuVGhlIG9idmlvdXMgcm91dGVzIGFyZSBlaXRoZXIgdGhyb3VnaCBhIHNvZnR3YXJlIE1ESU8gYnVzIHRoYXQgdXNlcnNwYWNlIGNhbiBjb250cm9sIHRvIHJlZ2lzdGVyIFBIWXMsIG9yIHNvbWUgY2xldmVyIHVzZSBvZiBuZXRsaW5rLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIHN5emthbGxlciAqY2FuKiBldmVuIHJlYWNoIGBkYXA4MjExcl9jb25maWdfaW5pdGAgZGlyZWN0bHkuIFRoZSBkcml2ZXIgYmluZHMgaXRzZWxmIHZpYSBgbW9kdWxlX3BoeV9kcml2ZXIoZGFwODIxMXJfZHJpdmVyKWAuIEl0IHNlZW1zIGl0IGxvb2tzIGZvciBhIFBIWSB3aXRoIHRoZSBJRCBgMHgwMDA4MDExQmAuIFNvLCB0aGUgbWlsbGlvbi1kb2xsYXIgcXVlc3Rpb246IGNhbiBJIGNyZWF0ZSBhIFBIWSBkZXZpY2UgKndpdGgqIHRoYXQgSUQgdXNpbmcgc3l6a2FsbGVyP1xuXG5gZml4ZWRfcGh5X3JlZ2lzdGVyYCBpcyBhIHBvc3NpYmlsaXR5IGZvciByZWdpc3RlcmluZyBhIGZpeGVkIFBIWSwgYnV0IGl0J3MgdHlwaWNhbGx5IHVzZWQgaW50ZXJuYWxseSBieSBvdGhlciBkcml2ZXJzLiBJIG5lZWQgdG8gZmluZCBhIHVzZXJzcGFjZSBpbnRlcmZhY2UgdGhhdCBjYW4gY3JlYXRlIE1ESU8gZGV2aWNlcyBvciBQSFlzIGRpcmVjdGx5LiBMZXQncyBzZWUuLi4gY2FuIGBTSU9DU01JSVJFR2AgZG8gdGhlIHRyaWNrPyBObywgdGhhdCBqdXN0IHdyaXRlcyB0byBhIHJlZ2lzdGVyLCBhbmQgdGhlIFBIWSBJRCBpcyBjaGVja2VkIGR1cmluZyBNRElPIGJ1cyBzY2FubmluZywgc28gaXQgd29uJ3QgaGVscC5cblxuSSBrbm93IHN5emthbGxlciBjYW4gdXNlIHZpcnR1YWwgbmV0d29yayBkZXZpY2VzIGxpa2UgYHR1bmAgb3IgYHRhcGAsIGJ1dCB0aG9zZSBkb24ndCBoYXZlIGFuIE1ESU8gYnVzLiBXaGF0IGFib3V0IG90aGVyIHZpcnR1YWwgZGV2aWNlcz8gYG1hY3NlY2AsIGB2ZXRoYCwgYGR1bW15YCwgYG1hY3ZsYW5gLi4uIG5vcGUsIG5vbmUgb2YgdGhvc2UgaGF2ZSBhbiBNRElPIGJ1cyBlaXRoZXIuIElzIHRoZXJlIGFueSBjaGFuY2UgdGhhdCBgbmV0ZGV2c2ltYCBtaWdodCBvZmZlciBzb21ldGhpbmc/IEl0J3MgdGhlIG9ubHkgb3RoZXIgbmV0d29yayBkZXZpY2UgdGhhdCdzIGV2ZW4gcmVtb3RlbHkgaW4gdGhlIGJhbGxwYXJrIGhlcmUuIEknbSBnb2luZyB0byBoYXZlIHRvIGludmVzdGlnYXRlIHRoYXQgZnVydGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwODcsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzcsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM4OjIyLjgxNzE2MzM0MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcxODMyNTczLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZGlvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM4OjIzLjA4OTAwNjE4NVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTE0MzQxNDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRlbHZpbmcgaW50byBgZHNhX2xvb3BgIGFuZCBNRElPIEltcGxpY2F0aW9ucyoqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4uLkknbSBtdWxsaW5nIG92ZXIgcG90ZW50aWFsIGNvbXBvbmVudHMgYW5kIGNvbmZpZ3VyYXRpb25zLiBUaGF0IGBkc2FfbG9vcGAgY29uc3RydWN0Li4uIGhtbSwgYSBtb2NrIERTQSBzd2l0Y2gsIHlvdSBzYXk/IFRoZSBcIm1vY2tcIiBhc3BlY3QgaXMgaW50ZXJlc3RpbmcuIEl0IGltbWVkaWF0ZWx5IHRyaWdnZXJzIHRob3VnaHRzIGFib3V0IHRoZSBpbnRlbmRlZCBwdXJwb3NlIOKAkyBwZXJoYXBzIHRlc3RpbmcsIHNpbXVsYXRpb24sIG9yIHByb3ZpZGluZyBhIGNvbnRyb2xsZWQgZW52aXJvbm1lbnQgZm9yIERTQSBpbnRlcmFjdGlvbnMuXG5cbk5vdywgdGhlIGNvbm5lY3Rpb24gdGhhdCByZWFsbHkgc3BhcmtzIG15IGN1cmlvc2l0eSBpcyB0aGUgcG90ZW50aWFsIGZvciBhbiBNRElPIGJ1cyB3aXRoaW4gdGhhdCBgZHNhX2xvb3BgIHNldHVwLiBJZiBpdCAqZG9lcyogZW1wbG95IGFuIE1ESU8gYnVzLCB0aGF0IG9wZW5zIHVwIGEgd2hvbGUgc2V0IG9mIHBvc3NpYmlsaXRpZXMsIGFuZCBxdWVzdGlvbnMuIElzIGl0IGVtdWxhdGVkPyBJcyB0aGVyZSBhIHNvZnR3YXJlLWRlZmluZWQgTURJTyBhY2Nlc3MgbGF5ZXIsIG9yIGlzIGl0IGEgZGlyZWN0IGhhcmR3YXJlIGludGVyZmFjZT8gVW5kZXJzdGFuZGluZyBob3cgdGhlIE1ESU8gb3BlcmF0aW9ucyBhcmUgaGFuZGxlZCB3aXRoaW4gdGhpcyBtb2NrIGVudmlyb25tZW50IGlzIGNydWNpYWwuIEl0IGNoYW5nZXMgaG93IEkgd291bGQgYXBwcm9hY2ggZGVidWdnaW5nLCBkcml2ZXIgZGV2ZWxvcG1lbnQsIG9yIGFueSBhbmFseXNpcyBpbnZvbHZpbmcgdGhpcyBjb21wb25lbnQuIEknbSB3b25kZXJpbmcgaWYgdGhpcyBvZmZlcnMgYW4gYXZlbnVlIGZvciB2YWxpZGF0aW5nIG9yIGRldmVsb3BpbmcgRFNBLXNwZWNpZmljIE1ESU8gaW50ZXJhY3Rpb25zIGluIGlzb2xhdGlvbiwgd2l0aG91dCBkZXBlbmRpbmcgb24gdGhlIGNoYXJhY3RlcmlzdGljcyBvZiBhIHJlYWwgaGFyZHdhcmUgc3dpdGNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDkyMiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM4OjI3LjYwMzM1MTUyNVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc5NTQ0MDE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1kaW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9NzQ9c3RhdGljIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXZzW1BIWV9NQVhfQUREUl07XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NzU6c3RhdGljIHN0cnVjdCBtZGlvX2RldmljZSAqc3dpdGNoX21kaW9kZXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzYtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz0xODQ9c3RhdGljIGludCBkc2FfbG9vcF9waHlfcmVhZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTg5LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE5MDpcXHRyZXQgPSBtZGlvYnVzX3JlYWRfbmVzdGVkKGJ1cywgcHMtXFx1MDAzZXBvcnRfYmFzZSArIHBvcnQsIHJlZ251bSk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTkxLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9MTk5PXN0YXRpYyBpbnQgZHNhX2xvb3BfcGh5X3dyaXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMDUtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjA2OlxcdHJldCA9IG1kaW9idXNfd3JpdGVfbmVzdGVkKGJ1cywgcHMtXFx1MDAzZXBvcnRfYmFzZSArIHBvcnQsIHJlZ251bSwgdmFsdWUpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwNy1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTI1MD1zdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfdmxhbl9hZGQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI2My1cXHQvKiBKdXN0IGRvIGEgc2xlZXBpbmcgb3BlcmF0aW9uIHRvIG1ha2UgbG9ja2RlcCBjaGVja3MgZWZmZWN0aXZlICovXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjY0OlxcdG1kaW9idXNfcmVhZChidXMsIHBzLVxcdTAwM2Vwb3J0X2Jhc2UgKyBwb3J0LCBNSUlfQk1TUik7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjY1LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9MjgzPXN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjkyLVxcdC8qIEp1c3QgZG8gYSBzbGVlcGluZyBvcGVyYXRpb24gdG8gbWFrZSBsb2NrZGVwIGNoZWNrcyBlZmZlY3RpdmUgKi9cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyOTM6XFx0bWRpb2J1c19yZWFkKGJ1cywgcHMtXFx1MDAzZXBvcnRfYmFzZSArIHBvcnQsIE1JSV9CTVNSKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yOTQtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz0zMzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBkc2FfbG9vcF9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU1OnN0YXRpYyBpbnQgZHNhX2xvb3BfZHJ2X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTYte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1NzpcXHRzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgKnBkYXRhID0gbWRpb2Rldi1cXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGE7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU4LVxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM2NC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNjU6XFx0ZHMgPSBkZXZtX2t6YWxsb2MoXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldiwgc2l6ZW9mKCpkcyksIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM2Ni1cXHRpZiAoIWRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzY4LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM2OTpcXHRkcy1cXHUwMDNlZGV2ID0gXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNzAtXFx0ZHMtXFx1MDAzZW51bV9wb3J0cyA9IERTQV9MT09QX05VTV9QT1JUUztcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNzEtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzcyOlxcdHBzID0gZGV2bV9remFsbG9jKFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXYsIHNpemVvZigqcHMpLCBHRlBfS0VSTkVMKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNzMtXFx0aWYgKCFwcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4MS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozODI6XFx0ZHMtXFx1MDAzZWRldiA9IFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzgzLVxcdGRzLVxcdTAwM2VvcHMgPSBcXHUwMDI2ZHNhX2xvb3BfZHJpdmVyO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4NC1cXHRkcy1cXHUwMDNlcHJpdiA9IHBzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM4NTpcXHRwcy1cXHUwMDNlYnVzID0gbWRpb2Rldi1cXHUwMDNlYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozODc6XFx0ZGV2X3NldF9kcnZkYXRhKFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXYsIGRzKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zODgtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTAtXFx0aWYgKCFyZXQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzkxOlxcdFxcdGRldl9pbmZvKFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXYsIFxcXCIlczogMHglMHhcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzkyLVxcdFxcdFxcdCBwZGF0YS1cXHUwMDNlbmFtZSwgcGRhdGEtXFx1MDAzZWVuYWJsZWRfcG9ydHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk2LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM5NzpzdGF0aWMgdm9pZCBkc2FfbG9vcF9kcnZfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTgte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM5OTpcXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBkZXZfZ2V0X2RydmRhdGEoXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDAwLVxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxMC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MTE6c3RhdGljIHZvaWQgZHNhX2xvb3BfZHJ2X3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MTIte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQxMzpcXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBkZXZfZ2V0X2RydmRhdGEoXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDE0LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDE5LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyMDpcXHRkZXZfc2V0X2RydmRhdGEoXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldiwgTlVMTCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDIxLX1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDIzOnN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgZHNhX2xvb3BfZHJ2ID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyNDpcXHQubWRpb2Rydi5kcml2ZXJcXHQ9IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjUtXFx0XFx0Lm5hbWVcXHQ9IFxcXCJkc2EtbG9vcFxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz00MzI9c3RhdGljIGludCBkc2FfbG9vcF9idXNfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM0LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MzU6XFx0cmV0dXJuIGRydiA9PSBcXHUwMDI2ZHNhX2xvb3BfZHJ2Lm1kaW9kcnYuZHJpdmVyO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzNi19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz00Mzg9c3RhdGljIHZvaWQgZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDUtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ2OnN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2Rldih2b2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NjItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDYzOlxcdGJ1cyA9IG1kaW9fZmluZF9idXMoXFxcImZpeGVkLTBcXFwiKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NjQtXFx0aWYgKFdBUk5fT04oIWJ1cykpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NjYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDY3OlxcdHN3aXRjaF9tZGlvZGV2ID0gbWRpb19kZXZpY2VfY3JlYXRlKGJ1cywgMzEpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ2ODpcXHRpZiAoSVNfRVJSKHN3aXRjaF9tZGlvZGV2KSlcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NjktXFx0XFx0Z290byBvdXQ7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDcwLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ3MTpcXHRzd2l0Y2hfbWRpb2Rldi1cXHUwMDNlYnVzX21hdGNoID0gZHNhX2xvb3BfYnVzX21hdGNoO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ3MjpcXHRzd2l0Y2hfbWRpb2Rldi1cXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGEgPSBcXHUwMDI2ZHNhX2xvb3BfcGRhdGE7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDczLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ3NDpcXHRyZXQgPSBtZGlvX2RldmljZV9yZWdpc3Rlcihzd2l0Y2hfbWRpb2Rldik7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDc1LVxcdGlmIChyZXQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDc2OlxcdFxcdG1kaW9fZGV2aWNlX2ZyZWUoc3dpdGNoX21kaW9kZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ3Ny1vdXQ6XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz00ODI9c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDg2LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ4NzpcXHRyZXQgPSBkc2FfbG9vcF9jcmVhdGVfc3dpdGNoX21kaW9kZXYoKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5My1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTQ6XFx0cmV0ID0gbWRpb19kcml2ZXJfcmVnaXN0ZXIoXFx1MDAyNmRzYV9sb29wX2Rydik7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDk1LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTYtXFx0XFx0ZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk3OlxcdFxcdG1kaW9fZGV2aWNlX3JlbW92ZShzd2l0Y2hfbWRpb2Rldik7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk4OlxcdFxcdG1kaW9fZGV2aWNlX2ZyZWUoc3dpdGNoX21kaW9kZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5OS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz01MDU9c3RhdGljIHZvaWQgX19leGl0IGRzYV9sb29wX2V4aXQodm9pZClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDYte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwNzpcXHRtZGlvX2RyaXZlcl91bnJlZ2lzdGVyKFxcdTAwMjZkc2FfbG9vcF9kcnYpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwOC1cXHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDk6XFx0bWRpb19kZXZpY2VfcmVtb3ZlKHN3aXRjaF9tZGlvZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MTA6XFx0bWRpb19kZXZpY2VfZnJlZShzd2l0Y2hfbWRpb2Rldik7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTExLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6Mzg6MjcuNzgyOTAyNzQxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMTYyMjU0MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBGaXhlZCBQSFkgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldmAgZnVuY3Rpb24gYW5kIGltbWVkaWF0ZWx5IG15IHJhZGFyIHBpbmdzIG9uIHRoZSB1c2Ugb2YgYG1kaW9fZmluZF9idXMoXCJmaXhlZC0wXCIpYC4gSW50ZXJlc3RpbmcuLi4gSSBuZWVkIHRvIGNvbnNpZGVyIGEgc2NlbmFyaW8gd2hlcmUgSSB3YW50IG1vcmUgZmxleGliaWxpdHkuIFRoZSBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzLCBjYW4gSSBjcmVhdGUgYSBmaXhlZCBQSFkgd2l0aCBhIHNwZWNpZmljLCBhcmJpdHJhcnkgUEhZIElELCBpbnN0ZWFkIG9mIGJlaW5nIGxpbWl0ZWQgdG8gd2hhdGV2ZXIgXCJmaXhlZC0wXCIgcmVzb2x2ZXMgdG8/XG5cblRvIGZpZ3VyZSB0aGlzIG91dCwgSSBzaG91bGQgdGFrZSBhIGxvb2sgYXQgdGhlIGZ1bmN0aW9uIGBmaXhlZF9waHlfcmVnaXN0ZXJgLiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0IGRpZ2dpbmcgdG8gc2VlIGlmIHRoZXJlJ3MgYW55IG1lY2hhbmlzbSBmb3IgbW9yZSBmaW5lLWdyYWluZWQgY29udHJvbCBvdmVyIGZpeGVkIFBIWSBkZXZpY2UgY3JlYXRpb24gYW5kIGNvbmZpZ3VyYXRpb24uIEl0J3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgbG9va2luZyBmb3IgdGhlIGhvb2tzIEknZCBuZWVkIHRvIGFjaGlldmUgdGhhdCBmbGV4aWJpbGl0eS4gSSB3YW50IHRvIHNlZSBob3cgdGhlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIGhhbmRsZXMgUEhZIElEcyBhbmQgYnVzIGFzc2lnbm1lbnQuIFRoaXMgZmVlbHMgbGlrZSBhIHBvdGVudGlhbCBhcmVhIGZvciBjdXN0b21pemF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDMwMywiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM4OjMxLjA5OTEzODg5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjY2NzUxODA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZpeGVkX3BoeV9yZWdpc3RlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz00ODI9c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDkxLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBOVU1fRklYRURfUEhZUzsgaSsrKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5MjpcXHRcXHRwaHlkZXZzW2ldID0gZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDkzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM9MjIzND1zdGF0aWMgaW50IGI0NF9yZWdpc3Rlcl9waHlfb25lKHN0cnVjdCBiNDQgKmJwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjI3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYzoyMjczOlxcdFxcdHBoeWRldiA9IGZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNzQtXFx0XFx0aWYgKCFJU19FUlIocGh5ZGV2KSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmM9MTQzOT1pbnQgYmdtYWNfcGh5X2Nvbm5lY3RfZGlyZWN0KHN0cnVjdCBiZ21hYyAqYmdtYWMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jLTE0NDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYzoxNDQ5OlxcdHBoeV9kZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXIoXFx1MDAyNmZwaHlfc3RhdHVzLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jLTE0NTAtXFx0aWYgKElTX0VSUihwaHlfZGV2KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYz0xODQ4PXN0YXRpYyBpbnQgZnRnbWFjMTAwX3Byb2JlX25jc2koc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTg2Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jOjE4Njc6XFx0cGh5ZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFxcdTAwMjZuY3NpX3BoeV9zdGF0dXMsIG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE4NjgtXFx0aWYgKElTX0VSUihwaHlkZXYpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz0yOTgxPXN0YXRpYyBpbnQgZmVjX2VuZXRfbWlpX3Byb2JlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzAwMi1cXHRcXHRcXHRuZXRkZXZfaW5mbyhuZGV2LCBcXFwibm8gUEhZLCBhc3N1bWluZyBkaXJlY3QgY29ubmVjdGlvbiB0byBzd2l0Y2hcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjMwMDM6XFx0XFx0XFx0cGh5X2RldiA9IGZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTMwMDQtXFx0XFx0XFx0aWYgKElTX0VSUihwaHlfZGV2KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYz0yMzg9c3RhdGljIGludCBoYmdfZml4ZWRfcGh5X2luaXQoc3RydWN0IGhiZ19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYy0yNTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYzoyNTE6XFx0cGh5ZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFxcdTAwMjZoYmdfZml4ZWRfcGh5X3N0YXR1cywgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYy0yNTItXFx0aWYgKElTX0VSUihwaHlkZXYpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYz00MTI9aW50IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy00NTktcmVnaXN0ZXJfcGh5OlxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjQ2MDpcXHRyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKGZpeGVkX3BoeV9yZWdpc3RlcihcXHUwMDI2c3RhdHVzLCBucCkpO1xcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQ2MS19XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM9MTE4PXN0YXRpYyBpbnQgZml4ZWRfcGh5X2dldF9mcmVlX2FkZHIodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xMzAtXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjEzMTpzdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzICpzdGF0dXMsXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTEzMi1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE3Mi19XFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjE3MzpFWFBPUlRfU1lNQk9MX0dQTChmaXhlZF9waHlfcmVnaXN0ZXIpO1xcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xNzQtXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjE3NTpzdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKHZvaWQpXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE3Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTgxLVxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoxODI6XFx0cmV0dXJuIGZpeGVkX3BoeV9yZWdpc3RlcihcXHUwMDI2c3RhdHVzLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTgzLX1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM6MTg0OkVYUE9SVF9TWU1CT0xfR1BMKGZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCk7XFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE4NS1cXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmg9MTk9ZXh0ZXJuIGludCBmaXhlZF9waHlfY2hhbmdlX2NhcnJpZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCBuZXdfY2Fycmllcik7XFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaDoyMDpzdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzICpzdGF0dXMsXFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaC0yMS1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKTtcXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oOjIyOnN0cnVjdCBwaHlfZGV2aWNlICpmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQodm9pZCk7XFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaC0yMy1cXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmg9Mjk9c3RhdGljIGlubGluZSBzdHJ1Y3QgcGh5X2RldmljZSAqXFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaDozMDpmaXhlZF9waHlfcmVnaXN0ZXIoY29uc3Qgc3RydWN0IGZpeGVkX3BoeV9zdGF0dXMgKnN0YXR1cyxcXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oLTMxLVxcdFxcdCAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oLTM1LVxcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmg6MzY6c3RhdGljIGlubGluZSBzdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKHZvaWQpXFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaC0zNy17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM4OjM1Ljc2NTg5ODkxNloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTc1MTM5MTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEh5cG90aGVzaXMgb24gU3l6a2FsbGVyIGFuZCBGaXhlZCBQSFkgRGV2aWNlcyoqXG5cbk9rYXksIGxldCdzIHRoaW5rIHRoaXMgdGhyb3VnaC4gVGhlIGBmaXhlZF9waHlfcmVnaXN0ZXJgIGZ1bmN0aW9uLCByaWdodD8gVGhhdCdzIGNyZWF0aW5nIGEgUEhZIGRldmljZSwgdXN1YWxseSB3aXRoIGEgZml4ZWQgUEhZIElELCBsaWtlIGAweDAwMDAwMDAwYCBvciBzaW1pbGFyLiBOb3RoaW5nIHRvbyBleGNpdGluZyBvbiBpdHMgb3duLiBCdXQsIGhvbGQgb24gYSBzZWNvbmQuLi5TeXprYWxsZXIsIHRoZSBmdXp6ZXIsIGNhbiBpbmplY3QgZGV2aWNlIHRyZWUgb3ZlcmxheXMhIFRoaXMgaXMgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZy5cblxuSWYgU3l6a2FsbGVyIGNyYWZ0cyBhIGRldmljZSB0cmVlIG92ZXJsYXkgd2l0aCBhIG5vZGUgdGhhdCAqbWF0Y2hlcyogdGhpcyBmaXhlZCBQSFksIGNvdWxkIHdlIGdldCBpdCBwcm9iZWQ/IFllcywgdGhhdCBjb3VsZCB3b3JrISBTeXprYWxsZXIgKmRvZXMqIGhhdmUgc3VwcG9ydCBmb3IgZGV2aWNlIHRyZWUgb3ZlcmxheXMuIEkga25vdyB0aGF0IG11Y2guIFRoZSBrZXkgcXVlc3Rpb24gaXMsICpob3cqIGRvZXMgaXQgZG8gaXQ/IE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBpdCB1c2VzIGBzeXpfbW91bnRfaW1hZ2VgIG9yIHNpbWlsYXIsIGJ1dCB3YWl0LCBpdCBjYW4gYWxzbyBpbmplY3QgdGhlbSB2aWEgYHN5c2ZzYCBpZiBgQ09ORklHX09GX09WRVJMQVlgIGlzIGVuYWJsZWQsIG9yIG1heWJlIG90aGVyIG1lYW5zLiBEb2VzIFN5emthbGxlciAqYWN0dWFsbHkqIGV4cGxvaXQgdGhpcyBtZWNoYW5pc20/IEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQgcGFydC5cblxuSSBrbm93IFN5emthbGxlciBoYXMgcHNldWRvLXN5c2NhbGxzIGxpa2UgYHN5el9pbml0X25ldF9zb2NrZXRgLiBEb2VzIGl0IGhhdmUgYSBjb3JyZXNwb25kaW5nIGBzeXpfZHRfb3ZlcmxheWAgZnVuY3Rpb24/IElmIGl0IGRvZXMsIHRoYXQncyBwb3RlbnRpYWxseSB0aGUgYnJlYWt0aHJvdWdoIEknbSBsb29raW5nIGZvci4gVGhpcyBuZWVkcyB0byBiZSBpbnZlc3RpZ2F0ZWQgZnVydGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYyMzgsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6Mzg6NDAuOTQxMDQxODJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMjc5ODY3NDMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN5el8uKm92ZXJsYXlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM4OjQ2Ljk2OTAzOTk5M1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MzA2OTIyOTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEN1cnJlbnQgSW52ZXN0aWdhdGlvbiBpbnRvIFBIWSBEcml2ZXIgVHJpZ2dlcmluZyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0byB0cmlnZ2VyIHRoZSBgZGFwODIxMXIuY2AgUEhZIGRyaXZlciB3aXRoaW4gdGhlIGNvbnRleHQgb2Ygc3l6a2FsbGVyLiBGaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byByZW1lbWJlciB0aGF0IHRoZSBwc2V1ZG8tc3lzY2FsbHMgc3l6a2FsbGVyIHVzZXMgYXJlbid0ICppbiogdGhlIGtlcm5lbCBzb3VyY2UgdHJlZSwgc28gZ3JlcHBpbmcgdGhlcmUgaXMgYSBkZWFkIGVuZC4gUmlnaHQsIGl0J3MgYWJvdXQgZmluZGluZyB0aGUgcGF0aHdheS5cblxuSWYgdGhlIFBIWSBkcml2ZXIgaXMgYSBtb2R1bGUsIHdoaWNoIEkgYmVsaWV2ZSBpdCBtaWdodCBiZSwgdGhlbiBpdCBuZWVkcyB0byBiZSBsb2FkZWQsIEkgaGF2ZSBjb25maXJtZWQgdGhhdC4gQnV0LCBob3cgZG8gSSBhY3R1YWxseSAqcmVhY2gqIHRoZSBjb2RlIHdpdGhpbiBgZGFwODIxMXIuY2AsIHNwZWNpZmljYWxseSBgZGFwODIxMXJfY29uZmlnX2luaXRgPyBJdCBsb29rcyBsaWtlIGEgUEhZIGRldmljZSBuZWVkcyB0byBiZSBjcmVhdGVkIGFuZCBib3VuZCB0byB0aGUgZHJpdmVyLlxuXG5DYW4gSSBjcmVhdGUgYSBQSFkgZGV2aWNlIGZyb20gdXNlcnNwYWNlPyBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbG9vayBmb3IgcGxhdGZvcm0gZGV2aWNlcywgbGlrZSBgbWRpby1iY20tdW5pbWFjLmNgIG9yIGBtZGlvLWdwaW9gLiBCdXQgc3l6a2FsbGVyIGNhbid0ICphcmJpdHJhcmlseSogY3JlYXRlIHBsYXRmb3JtIGRldmljZXMsIG5vdCB3aXRob3V0IHNvbWUgZXhwb3NlZCBBUEkuIEkndmUgbG9va2VkIGZvciBhIGBzeXpfcGxhdGZvcm1fZGV2aWNlX2FkZGAgY2FsbCBhbmQgZm91bmQgbm90aGluZy4gSSBoYXZlIHRvIGxldmVyYWdlIHdoYXQncyAqdGhlcmUqLlxuXG5JIGtub3cgc3l6a2FsbGVyIGhhcyBgdmhjaWAgZm9yIFVTQiwgYG1hYzgwMjExX2h3c2ltYCBmb3Igd2lmaSwgYHVpbnB1dGAgZm9yIGlucHV0LCBgc25kLWFsb29wYCBmb3Igc291bmQsIGFuZCBgbmV0ZGV2c2ltYCBmb3IgbmV0ZGV2cy4gTm9uZSBvZiB0aGVzZSBzZWVtIHRvIGhhdmUgTURJTyBzdXBwb3J0LCBhbmQgc28gY2FuJ3QgYmUgdXNlZCB0byBtb2NrIGEgUEhZIGRldmljZS5cblxuSG93IGFib3V0IGBkc2FfbG9vcGA/IFRoYXQncyBpbnRlcmVzdGluZywgYmVjYXVzZSBpdCAqZG9lcyogY3JlYXRlIGZpeGVkIFBIWXMuIEhvd2V2ZXIsIHRoZSBQSFkgSUQgaXMgZml4ZWQgdG8gYDBgIGFuZCB0aGVyZWZvcmUgaXMgbm90IHVzZWZ1bCBmb3IgbXkgdGVzdGluZy4gSXMgdGhlcmUgYSB3YXkgdG8gd3JpdGUgZGlyZWN0bHkgdG8gTURJTyBidXMgcmVnaXN0ZXJzIGZyb20gdXNlcnNwYWNlLCBldmVuIGlmIGl0IGRvZXNuJ3QgY3JlYXRlIGEgUEhZIGRldmljZSBkaXJlY3RseT8gQWgsIHllcywgYGlvY3RsKFNJT0NTTUlJUkVHKWAuIEJ1dCB0aGF0IGRvZXNuJ3QgKmNyZWF0ZSogYSBQSFkgZGV2aWNlLCBpdCBqdXN0IGxldHMgbWUgaW50ZXJhY3Qgd2l0aCBvbmUgdGhhdCBhbHJlYWR5IGV4aXN0cy5cblxuVG8gY3JlYXRlIHRoZSBkZXZpY2UgaXRzZWxmLCB0aGUgTURJTyBidXMgbmVlZHMgdG8gc2NhbiBmb3IgYSBQSFkgSUQuIFNvLCBpZiB0aGVyZSBpcyBhIHNvZnR3YXJlIE1ESU8gYnVzLCBkb2VzIGl0IHNjYW4/IEFuZCB0aGVuIHRoZXJlJ3MgdGhlIGBmaXhlZF9tZGlvX3JlYWRgIGZ1bmN0aW9uLiBUaGF0IHJldHVybnMgYSAqZml4ZWQqIFBIWSBJRCwgc28gdGhhdCBkb2Vzbid0IGhlbHAgbWUgaW4gbXkgcHVyc3VpdC5cblxuTXkgdGhvdWdodHMgYXJlIHR1cm5pbmcgdG93YXJkIHNvbWUga2luZCBvZiBtb2NrdXA6IElzIHRoZXJlIGFueSB3YXkgdG8gbW9jayBhbiBNRElPIGJ1cyB3aGVyZSB1c2Vyc3BhY2UgY29udHJvbHMgdGhlIHJlYWQvd3JpdGUgYmVoYXZpb3I/IE5vdywgbGV0J3Mgc2VlLCBpcyB0aGVyZSBhbiBgbWRpby1tb2NrdXBgIGRyaXZlcj9cblxuXG4iLCJJbnB1dFRva2VucyI6MTY3OTAsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6Mzg6NTYuMjc1OTY2NTI2WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjUzNjUzNzcyLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZGlvLiptb2NrdXBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM5OjAxLjUyOTYyOTEwOFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODU3Nzk2MTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNvbnNpZGVyaW5nIEFsdGVybmF0aXZlcyB0byBgbWRpby1tb2NrdXBgKipcblxuT2theSwgc28gdGhlcmUncyBubyBgbWRpby1tb2NrdXBgLi4uIFRoYXQncyBhIGJpdCBvZiBhIHNldGJhY2suIEkgbmVlZCBhIHF1aWNrIGFuZCBkaXJ0eSB3YXkgdG8gc2ltdWxhdGUgYW4gTURJTyBpbnRlcmZhY2UgZm9yIHRlc3RpbmcsIGFuZCB0aGF0IHdvdWxkIGhhdmUgYmVlbiBpZGVhbC4gV2hhdCBvdGhlciBvcHRpb25zIGFyZSB0aGVyZSB0aGF0IGFyZSBhbHJlYWR5IGluIHRoZSBldGhlcj8gV2hhdCBhYm91dCBzb21ldGhpbmcgYSBiaXQgbW9yZSBnZW5lcmljLCB5ZXQgc3RpbGwgZnVuY3Rpb25hbD8gTGV0J3Mgc2VlLi4uIGNvdWxkIGEgcGxhaW4gYG1kaW8tZHVtbXlgIGFjdHVhbGx5IGZpdCB0aGUgYmlsbD8gSXQgd291bGQgbmVlZCB0byBiZSBzaW1wbGUgYnV0IHJvYnVzdC4gSSB3b25kZXIgaWYgdGhlcmUgaXMgYW4gZXhpc3RpbmcgcGFja2FnZT8gSXQgd291bGQgbmVlZCB0byBiZSBzdWl0YWJsZSBmb3IgaW50ZWdyYXRpb24gaW50byBteSB0b29sY2hhaW4uIFRoaXMgcmVxdWlyZXMgYSBiaXQgbW9yZSBpbnZlc3RpZ2F0aW9uLiBUaGUgbmFtZSBpcyBhIHBsYWNlaG9sZGVyIGZvciBub3csIG9mIGNvdXJzZSwgYnV0IGl0IGdpdmVzIG1lIGEgd29ya2luZyBmcmFtZXdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3OTQ5LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6Mzk6MDQuMzg3NDI5NjY4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTgyMjYwOTY0LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZGlvLipkdW1teVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6Mzk6MDkuOTY5NzAzNjkyWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwMzU0NTE2NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBQSFkgRHJpdmVyIFRlc3RpbmcgaW4gUUVNVSoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgdG8gdGVzdCB0aGVzZSBQSFkgZHJpdmVycy4gV2hhdCBhYm91dCBgbWRpby1ncGlvYD8gVGhhdCdzIGEgcG9zc2liaWxpdHksIHNpbmNlIGl0IHVzZXMgR1BJT3MuIEkgd29uZGVyIGlmIHRoZXJlJ3MgYW55IHdheSB0byB0ZXN0IFBIWSBkcml2ZXJzIGVmZmVjdGl2ZWx5IHdpdGhpbiBRRU1VLiBJdCBzZWVtcyBsaWtlIGl0IHdvdWxkIGJlIGEgaHVnZSBhZHZhbnRhZ2UuXG5cbldhaXQsIFFFTVUgKmRvZXMqIGVtdWxhdGUgYSBidW5jaCBvZiBuZXR3b3JrIGNhcmRzLCByaWdodD8gTGlrZSwgSSBrbm93IGFib3V0IGBlMTAwMGAsIGBydGw4MTM5YCwgYHBjbmV0YCwgYG5lMmtfcGNpYCwgYW5kIGB2aXJ0aW8tbmV0YC4gQnV0IGRvIGFueSBvZiB0aG9zZSBhY3R1YWxseSAqZXhwb3NlKiBhbiBNRElPIGJ1cyB0byB0aGUga2VybmVsPyBUaGF0J3MgdGhlIGtleS5cblxuVGhlIGBlMTAwMGAgaGFzIGFuIGludGVybmFsIFBIWSwgYnV0IHRoZSBgZTEwMDBgIGRyaXZlciBtYW5hZ2VzIGl0IGRpcmVjdGx5LCBub3QgdGhyb3VnaCB0aGUgc3RhbmRhcmQgUEhZIGxheWVyLCBzbyB0aGF0J3Mgbm90IGhlbHBmdWwuIFRoZSBgZmVjYCAoRnJlZXNjYWxlIEZhc3QgRXRoZXJuZXQgQ29udHJvbGxlcikgaXMgZW11bGF0ZWQgaW4gUUVNVSBmb3Igc29tZSBBUk0gYm9hcmRzLCBhbmQgKnRoYXQqIHVzZXMgdGhlIGdlbmVyaWMgUEhZIGxheWVyLiBCdXQgSSBuZWVkIHNvbWV0aGluZyB0aGF0IHJ1bnMgaW4geDg2XzY0LCB3aGljaCBpcyB3aGF0IEknbSBmb2N1c2VkIG9uIGZvciBzeXprYWxsZXIuXG5cblNvLCBvbiB4ODZfNjQsIGRvZXMgUUVNVSBlbXVsYXRlICphbnkqIE5JQyB0aGF0IHVzZXMgdGhlIGdlbmVyaWMgUEhZIGxheWVyPyBUaW1lIHRvIGludmVzdGlnYXRlLiBJJ2xsIG5lZWQgdG8gY2hlY2sgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2AgYW5kIGxvb2sgZm9yIGRyaXZlcnMgdGhhdCBjYWxsIGBwaHlfY29ubmVjdGAgb3IgYG1kaW9idXNfcmVnaXN0ZXJgLCBhbmQgbWFrZSBzdXJlIHRoZXkncmUgZW11bGF0ZWQgYnkgUUVNVS5cblxuQWgsIGxvb2tzIGxpa2UgYHRnM2AgKEJyb2FkY29tIFRpZ29uMykgaXMgZW11bGF0ZWQgYnkgUUVNVS4gRG9lcyBpdCB1c2UgdGhlIGdlbmVyaWMgUEhZIGxheWVyPyBUaGF0J3MgdGhlIG5leHQgc3RlcCBpbiBteSBzZWFyY2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MTc4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM5OjE3LjAwNTE2MDI4MVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA2NDgyNzMyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeV9jb25uZWN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTIwODQ9c3RhdGljIGludCB0ZzNfcGh5X2luaXQoc3RydWN0IHRnMyAqdHApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0yMDk2LVxcdC8qIEF0dGFjaCB0aGUgTUFDIHRvIHRoZSBQSFkuICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6MjA5NzpcXHRwaHlkZXYgPSBwaHlfY29ubmVjdCh0cC1cXHUwMDNlZGV2LCBwaHlkZXZfbmFtZShwaHlkZXYpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTIwOTgtXFx0XFx0XFx0ICAgICB0ZzNfYWRqdXN0X2xpbmssIHBoeWRldi1cXHUwMDNlaW50ZXJmYWNlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6Mzk6MTcuMzExNjUxNjkzWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyOTE3MTQ0MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgdGczIERyaXZlciBhbmQgTURJTyBJbnRlcmFjdGlvbioqXG5cblJpZ2h0LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYHRnM2AgZHJpdmVyLCBhbmQgaXQncyBxdWlja2x5IGJlY29taW5nIGNsZWFyIHRoYXQgaXQgbGV2ZXJhZ2VzIGBwaHlfY29ubmVjdGAuIE1ha2VzIHNlbnNlOyB0aGF0J3MgdGhlIHN0YW5kYXJkIGFwcHJvYWNoIGZvciBQSFkgaW50ZXJhY3Rpb24sIGVzcGVjaWFsbHkgd2l0aCBhIG5ldHdvcmsgZHJpdmVyLiBHb29kIHRvIHNlZSB0aGF0IGltcGxlbWVudGVkIGNvcnJlY3RseS5cblxuQnV0IGhvbGQgb24gYSBzZWNvbmQuLi4gaXMgdGhlIGRyaXZlciAqYWxzbyogcmVnaXN0ZXJpbmcgYW4gTURJTyBidXM/IE5vdywgdGhhdCdzIGludGVyZXN0aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYXJjaGl0ZWN0dXJlIGhlcmUuIElzIGBwaHlfY29ubmVjdGAgaGFuZGxpbmcgdGhlIHByaW1hcnkgTURJTyBjb21tdW5pY2F0aW9uLCBhbmQgdGhlIHNlcGFyYXRlIE1ESU8gYnVzIHJlZ2lzdHJhdGlvbiBpcyBmb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFBlcmhhcHMgZm9yIG1vbml0b3Jpbmcgb3Igc29tZSBzcGVjaWFsaXplZCwgdmVuZG9yLXNwZWNpZmljIGZ1bmN0aW9uYWxpdHkgdGhhdCdzIGxheWVyZWQgb24gdG9wIG9mIHRoZSBzdGFuZGFyZCBQSFkgaW50ZXJmYWNlPyBDb3VsZCBpdCBiZSB1c2luZyBhIGRpZmZlcmVudCBNRElPIGJ1cyBmb3IgYWNjZXNzaW5nIGFkZGl0aW9uYWwgcmVnaXN0ZXJzIG9yIGRldmljZXMgYmV5b25kIHRoZSBzdGFuZGFyZCBQSFk/IE9yIG1heWJlIHRoZXJlJ3Mgc29tZSBsZWdhY3kgc3VwcG9ydCBsdXJraW5nIGluIHRoZSBjb2RlPyBUaGlzIHdhcnJhbnRzIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBpbnRvIGhvdyB0aGVzZSB0d28gbWVjaGFuaXNtcyBpbnRlcmFjdC4gVGltZSB0byBkaXZlIGRlZXBlciBpbnRvIHRoZSBjb2RlIGFuZCBzZWUgd2hhdCdzIGFjdHVhbGx5IGdvaW5nIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTAxNiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM5OjIwLjYwMzM2OTY2M1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE1MjM0Njg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1kaW9idXNfcmVnaXN0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM9MTUwNT1zdGF0aWMgaW50IHRnM19tZGlvX2luaXQoc3RydWN0IHRnMyAqdHApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNTU3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jOjE1NTg6XFx0aSA9IG1kaW9idXNfcmVnaXN0ZXIodHAtXFx1MDAzZW1kaW9fYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNTU5LVxcdGlmIChpKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM5OjIwLjgxODYxMDU1OFoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTc2MjU4MDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEN1cnJlbnQgSW52ZXN0aWdhdGlvbiBpbnRvIGB0ZzNgIGFuZCBQSFkgSUQgTWFuaXB1bGF0aW9uKipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgdGhhdCB0aGUgYHRnM2AgZHJpdmVyICpkb2VzKiBwcm9wZXJseSByZWdpc3RlciBhbiBNRElPIGJ1cy4gVGhhdCdzIGEgc29saWQgc3RhcnRpbmcgcG9pbnQuIE5vdywgd2hlbiBpdCByZWdpc3RlcnMgdGhlIGJ1cywgaXQgbmF0dXJhbGx5IGdvZXMgb24gdG8gc2NhbiBmb3IgUEhZcy4gVGhlIHRyaWNreSBwYXJ0IGlzIHRoYXQgdGhlIFBIWSBJRCBpdCdzIHJlYWRpbmcgaXMgZXNzZW50aWFsbHkgd2hhdGV2ZXIgUUVNVSBpcyBlbXVsYXRpbmcgZm9yIHRoZSBgdGczYCBkZXZpY2UsIGFuZCB0aGF0J3MgZ2VuZXJhbGx5IGEgQnJvYWRjb20gUEhZLiBUaGUgY29yZSBxdWVzdGlvbiBpczogY2FuIEkgbWFuaXB1bGF0ZSB0aGF0IGV4cG9zZWQgUEhZIElELCBlc3BlY2lhbGx5IHZpYSBzeXprYWxsZXI/XG5cbkRpcmVjdGx5IGFsdGVyaW5nIHdoYXQgUUVNVSBwcmVzZW50cyBzZWVtcyB1bmxpa2VseS4gU28sIHRoZSBhbHRlcm5hdGl2ZSBpcyB0byB0cnkgYW5kIHdyaXRlIHRvIHRoZSBQSFkgSUQgcmVnaXN0ZXJzIGRpcmVjdGx5IHVzaW5nIGBTSU9DU01JSVJFR2AuIEkgcmVjYWxsIHRob3NlIFBIWSBJRCByZWdpc3RlcnMgYXJlIHVzdWFsbHkgYXQgb2Zmc2V0cyAyIGFuZCAzLiBNeSBodW5jaCBpcywgaWYgc3l6a2FsbGVyIGNvdWxkIGV4ZWN1dGUgYFNJT0NTTUlJUkVHYCB0byBjaGFuZ2UgdGhvc2UgcmVnaXN0ZXJzLCB0aGVuIGl0IGNvdWxkLCBpbiBlZmZlY3QsIGNoYW5nZSB0aGUgZW11bGF0ZWQgUEhZIElELlxuXG5CdXQsIGEgc2lnbmlmaWNhbnQgcHJvYmxlbSBhcmlzZXM6IHRoZSBNRElPIGJ1cyBzY2FubmluZyBhbmQgUEhZIHByb2JlIGhhcHBlbnMgKmR1cmluZyogdGhlIGRyaXZlcidzIHByb2JlIHNlcXVlbmNlLiBUaGF0J3MgKmJlZm9yZSogc3l6a2FsbGVyIGdldHMgaXRzIGNoYW5jZSB0byBwbGF5IHdpdGggYGlvY3RsYC4gRGFtbi5cblxuV2FpdCwgaXMgdGhlcmUgYSB3YXkgdG8gZm9yY2UgYSByZXNjYW4gb2YgdGhlIE1ESU8gYnVzIGZyb20gdXNlcnNwYWNlPyBVc2Vyc3BhY2UgKmNhbiogd3JpdGUgdG8gdGhlIGAvc3lzL2J1cy9tZGlvX2J1cy9kZXZpY2VzLy4uLi91ZXZlbnRgIGZpbGUsIG9yIGJpbmQvdW5iaW5kIGRyaXZlcnMsIGJ1dCB0aGF0IHdvbid0IGhlbHAgaWYgdGhlIFBIWSBkZXZpY2UgaXMgYWxyZWFkeSBjcmVhdGVkIHdpdGggdGhlIG9sZCBJRC5cblxuQ2FuIEkgc29tZWhvdyBkZWxldGUgdGhlIGV4aXN0aW5nIFBIWSBkZXZpY2UgYW5kICpmb3JjZSogYSByZXNjYW4/IFRoZXJlJ3Mgbm8gYC9zeXMvYnVzL21kaW9fYnVzL3Jlc2NhbmAgYW5hbG9nIGxpa2Ugd2UgaGF2ZSB3aXRoIFBDSS4gVGhhdCdzIGEgZGVhZCBlbmQuXG5cbk9rYXksIGxldCdzIHRoaW5rIGJpZ2dlci4gV2hhdCBpZiwgaW5zdGVhZCBvZiB0cnlpbmcgdG8gcmVzY2FuIHRoZSBleGlzdGluZyBidXMsIHVzZXJzcGFjZSBjb3VsZCBzb21laG93ICpjcmVhdGUqIGEgbmV3IFBIWSBkZXZpY2UgdGhyb3VnaCBzeXNmcz8gSXMgdGhlcmUgZXZlbiBhIHdheSB0byBpbnN0YW50aWF0ZSBhIFBIWSBkZXZpY2UgZnJvbSB1c2Vyc3BhY2U/IFRoYXQncyB3aGF0IEkgcmVhbGx5IG5lZWQgdG8gZmlndXJlIG91dC4gSSBzdXBwb3NlIEkgc2hvdWxkIG5vdyBsb29rIGF0IGBkcml2ZXJzL25ldC9waHkvbWRpb19idXMuY2AuIFRoYXQgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBuZXh0IHN0ZXAgdG8gdW5jb3ZlciB0aGF0IHBvc3NpYmlsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTQ0NywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTozOToyNy4zOTQ4NzI0MzhaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0NDIzNzI3MiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RvcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM5OjI3LjczOTExOTUzOVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDU4ODI5NDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqSW52ZXN0aWdhdGluZyBNRElPIEJ1cyBTeXNmcyBBdHRyaWJ1dGVzKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3Qgd2F5IHRvIGludGVyYWN0IHdpdGggYW4gTURJTyBidXMuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZGlnIGludG8gdGhlIHN5c2ZzIGZpbGVzeXN0ZW0uIEl0J3MgdXN1YWxseSB0aGUgZ28tdG8gZm9yIHByb2JpbmcgYW5kIGNvbnRyb2xsaW5nIGhhcmR3YXJlIGluIGEgc3RydWN0dXJlZCwgc3RhbmRhcmRpemVkIHdheSBpbiBMaW51eC4gU28sIGxldCdzIHN0YXJ0IHRoZXJlLiBJJ2xsIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzeXNmcyBhdHRyaWJ1dGVzIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZSBgbWRpb19idXNgIGRyaXZlciBvciBmdW5jdGlvbmFsaXR5LiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJhc2UgdG8gdGhlbiB1bmRlcnN0YW5kIGlmIEkgY2FuIHJlYWQsIHdyaXRlLCBhbmQgY29udHJvbCB0aGUgTURJTyBidXMgdGhyb3VnaCB0aGlzIGludGVyZmFjZS4gV2hhdCBzcGVjaWZpYyBhdHRyaWJ1dGVzIGFyZSBhdmFpbGFibGUgd2lsbCBsZWFkIG1lIHRvIHRoZSBzcGVjaWZpY3Mgb2YgaG93IHRvIGdvIGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMjcyLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6Mzk6MzAuNzk3OTUyOTY0WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzQwMzk2NTQsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkRFVklDRV9BVFRSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1cy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTozOTozMS4wNzIwMDIyNDhaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkyMDExMjkwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkluaXRpYWwgSW5xdWlyeSBvbiBQSFkgRHJpdmVyIEltcGxlbWVudGF0aW9uKipcblxuTXkgaW5pdGlhbCB0aG91Z2h0LCB3aGVuIGVuY291bnRlcmluZyBhIG5ldHdvcmtpbmcgZGV2aWNlIGludGVyYWN0aW9uIGF0IGEgbG93IGxldmVsLCBpbnZhcmlhYmx5IGxlYWRzIG1lIHRvIHRoZSBwaHlzaWNhbCBsYXllci4gVGhlIHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMsIFwiV2hhdCdzIGdvaW5nIG9uIHdpdGhpbiBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2A/XCIgVGhhdCdzIG9mdGVuIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIHNvIHRvIHNwZWFrLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCB0aGUgbG93LWxldmVsIG1hbmFnZW1lbnQgb2YgdGhlIFBoeXNpY2FsIExheWVyIFRyYW5zY2VpdmVyIChQSFkpLiBJJ20gbGlrZWx5IGludGVyZXN0ZWQgaW4gaXRzIGNhcGFiaWxpdGllcyBhbmQgY29uZmlndXJhdGlvbi4gSXMgdGhpcyB3aGVyZSBJIHNob3VsZCBnbz9cblxuXG4iLCJJbnB1dFRva2VucyI6MjA0OTQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTozOTozMy45OTIxMjE0MzdaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MTU0OTg5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJERVZJQ0VfQVRUUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9NTYxPXBoeV9pZF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNTY2LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjU2NzpzdGF0aWMgREVWSUNFX0FUVFJfUk8ocGh5X2lkKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTU2OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9NTcwPXBoeV9pbnRlcmZhY2Vfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTU4MS19XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzo1ODI6c3RhdGljIERFVklDRV9BVFRSX1JPKHBoeV9pbnRlcmZhY2UpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNTgzLVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz01ODU9cGh5X2hhc19maXh1cHNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy01OTEtfVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6NTkyOnN0YXRpYyBERVZJQ0VfQVRUUl9STyhwaHlfaGFzX2ZpeHVwcyk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy01OTMtXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz01OTQ9c3RhdGljIHNzaXplX3QgcGh5X2Rldl9mbGFnc19zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNjAxLX1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjYwMjpzdGF0aWMgREVWSUNFX0FUVFJfUk8ocGh5X2Rldl9mbGFncyk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy02MDMtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTYxNz1zdGF0aWMgc3NpemVfdCBtbWQjI24jI19kZXZpY2VfaWRfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNjIzLX0gXFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6NjI0OnN0YXRpYyBERVZJQ0VfQVRUUl9STyhtbWQjI24jI19kZXZpY2VfaWQpXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy02MjUtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTE0NzA9cGh5X3N0YW5kYWxvbmVfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xNDc2LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE0Nzc6c3RhdGljIERFVklDRV9BVFRSX1JPKHBoeV9zdGFuZGFsb25lKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE0NzgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM5OjM0LjE4MzY3OTA1MloiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4Nzg4NDg2MDI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IExpbmUgb2YgUmVhc29uaW5nKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHN5emthbGxlciB0ZXN0cyBQSFkgZHJpdmVycy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhlcmUgYXJlbid0IGFueSBlYXNpbHkgd3JpdGVhYmxlIGF0dHJpYnV0ZXMgdG8ganVzdCAqY3JlYXRlKiBQSFlzIGRpcmVjdGx5LiBCdXQgd2FpdCwgZG9lc24ndCBzeXprYWxsZXIgaGF2ZSBzb21lIGtpbmQgb2YgcHNldWRvLWRldmljZSBmb3IgTURJTz8gSSBzaG91bGQgY2hlY2sgaWYgdGhlcmUncyBhIGBzeXpfbWRpb2Agb3Igc29tZXRoaW5nIHNpbWlsYXIgZGlyZWN0bHkgd2l0aGluIHRoZSBzeXprYWxsZXIgY29kZSBpdHNlbGYuIFVuZm9ydHVuYXRlbHksIEkgY2FuJ3QgZGlyZWN0bHkgKmNoZWNrKiB0aGUgc3l6a2FsbGVyIGNvZGUgaW4gdGhpcyBjb250ZXh0LCBzbywgbGV0J3MgbG9vayBmb3Igc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIGVuYWJsZWQgZm9yIHN5emthbGxlciB3aGVuIHRlc3RpbmcgUEhZcy5cblxuT2theSwgSSByZWNhbGwgYGRzYV9sb29wYCAqZG9lcyogY3JlYXRlIGZpeGVkIFBIWXMuIFRoYXQncyBhIHBvc3NpYmlsaXR5LCBidXQgaXMgdGhhdCB0aGUgb25seSB3YXk/IEFyZSB0aGVyZSBhbnkgb3RoZXIgcG90ZW50aWFsIHJvdXRlcz8gTWF5YmUgdGhyb3VnaCBgbmV0bGlua2A/IENhbiBhIFBIWSBiZSBjcmVhdGVkIHRoYXQgd2F5PyBObywgUEhZcyB0eXBpY2FsbHkgY29tZSBvbmxpbmUgdGhyb3VnaCBNRElPIGJ1cyBzY2FubmluZyBvciBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9ucywgdXN1YWxseS5cblxuSGFuZyBvbi4uLiBzeXprYWxsZXIgKmRvZXMqIGhhdmUgYSB3YXkgdG8gdGVzdCBQSFkgZHJpdmVycywgSSBrbm93IHRoYXQuIEhvdywgdGhvdWdoPyBNYXliZSBgZHNhX2xvb3BgIGlzIGludm9sdmVkLCBidXQgY2FuIEkgc29tZWhvdyBtYW5pcHVsYXRlIHRoZSBQSFkgSUQ/IE5vLCB0aGF0J3Mgbm90IGl0LiBgZHNhX2xvb3BgIHVzZXMgYGZpeGVkX3BoeWAsIHdoaWNoIGRvZXNuJ3QgaW50ZXJmYWNlIHdpdGggaGFyZHdhcmU7IGl0IGp1c3QgcmV0dXJucyBhIGZpeGVkIHN0YXR1cy5cblxuT2theSwgbGV0J3MgZXhwbG9yZSBvdGhlciBuZXR3b3JraW5nIGRldmljZSBvcHRpb25zIHdpdGhpbiBzeXprYWxsZXIncyBwdXJ2aWV3LiBEb2VzIHN5emthbGxlciBtYWtlIHVzZSBvZiBgdHVuYCBvciBgdGFwYD8gTm9wZSwgdGhleSBkb24ndCBoYXZlIE1ESU8uIFdoYXQgYWJvdXQgYG1hY21hY2Agb3IgYHZldGhgPyBTdGlsbCBuby5cblxuSG1tLi4uIHdoYXQgYWJvdXQgYG1kaW8tYmNtLXVuaW1hY2A/IFRoYXQncyBhIHBsYXRmb3JtIGRyaXZlciwgdGhvdWdoLiBTeXprYWxsZXIgcHJvYmFibHkgY2FuJ3QgaW5zdGFudGlhdGUgaXQgZGlyZWN0bHksIHVubGVzcyBpdCdzIHByZXNlbnQgaW4gdGhlIGRldmljZSB0cmVlLlxuXG5BaGEhIERldmljZSB0cmVlISBXYWl0Li4uIGRvZXNuJ3Qgc3l6a2FsbGVyICppbmplY3QqIGRldmljZSB0cmVlIG92ZXJsYXlzPyBCaW5nbyEgSXQncyBsaWtlbHkgdXNpbmcgdGhhdC4gSSByZW1lbWJlciBgc3l6X21vdW50X2ltYWdlYCBjYW4gbW91bnQgYSBmaWxlc3lzdGVtLCBidXQgaXQgYWxzbyBoYXMgYHN5el9pbml0X25ldF9zb2NrZXRgIGFuZCBzaW1pbGFyIGZhY2lsaXRpZXMuXG5cbkRvZXMgc3l6a2FsbGVyIHRydWx5IHV0aWxpemUgRFQgb3ZlcmxheXM/IFllcyEgSSBrbm93IGl0IGRvZXMhIFRoZXJlIGFyZSBmdW5jdGlvbnMgbGlrZSBgc3l6X2RldmxpbmtgIGFuZCBgc3l6X3VzYl9jb25uZWN0YC5cblxuQWN0dWFsbHksIGRpZG4ndCBJIHJlYWQgc29tZXRoaW5nIGFib3V0IHJlY2VudCBzeXprYWxsZXIgYWRkaXRpb25zIGNvbmNlcm5pbmcgdGVzdGluZyBQSFkgZHJpdmVycyB1c2luZyBhIG1vY2sgTURJTyBidXMgb3Igc29tZXRoaW5nIHNpbWlsYXI/XG5cbkFscmlnaHQsIGxldCdzIGRpZyBpbnRvIHRoZSBrZXJuZWwgc291cmNlLiBJJ2xsIHNlYXJjaCBmb3IgYG1kaW9gIHdpdGhpbiBgbmV0L2AgYW5kIGBkcml2ZXJzL25ldC9gIHRvIHNlZSBpZiB0aGVyZSdzIGEgbW9jayBkcml2ZXIgdGhhdCdzIGJlZW4gcmVjZW50bHkgYWRkZWQuIFRoaXMgZmVlbHMgbGlrZSB0aGUgcmlnaHQgZGlyZWN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTMzMSwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTozOTo0Mi45NzIxNjk0OThaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MDA0NzkxNTgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1kaW8uKm1vY2tcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM5OjQ4LjM3MjY2NDQ2NloiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzU0MTQ4MDM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aG9zZSB0aG91Z2h0cyBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlLCB1c2luZyBhIGZpcnN0LXBlcnNvbiBwZXJzcGVjdGl2ZTpcblxuKipNRElPIGFuZCBgbmV0ZGV2c2ltYCAtIExldCdzIERpZyBJbioqXG5cbkFscmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCBuZXR3b3JrIGRldmljZSBzaW11bGF0aW9uIGFnYWluLiBJdCdzIGEga2V5IHBhcnQgb2YgbXkgd29ya2Zsb3cgZm9yIHRlc3RpbmcgYW5kIHByb3RvdHlwaW5nLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGhhcmR3YXJlLWxldmVsIGludGVyYWN0aW9ucy4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBgbmV0ZGV2c2ltYC4gVGhhdCdzIGEgc29saWQgdG9vbCwgYnV0IHRoZSByZWFsIHF1ZXN0aW9uIGlzOiBkb2VzIGl0IHN1cHBvcnQgdGhlIE1lZGlhIEluZGVwZW5kZW50IEludGVyZmFjZSAoTURJTyk/IEkga25vdyBpdCBoYW5kbGVzIHRoZSBnZW5lcmFsIEV0aGVybmV0IGRldmljZSBlbXVsYXRpb24gd2VsbCwgYnV0IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiBJIGNhbiB1c2UgaXQgdG8gc2ltdWxhdGUgdGhlIFBIWSBtYW5hZ2VtZW50IGZlYXR1cmVzIEknbSB3b3JraW5nIHdpdGguIFRoZSBwcmVzZW5jZSBvciBhYnNlbmNlIG9mIE1ESU8gc3VwcG9ydCBmdW5kYW1lbnRhbGx5IHNoYXBlcyBpdHMgdXNlZnVsbmVzcyBmb3IgdGhpcyBjdXJyZW50IHByb2plY3QuIFRpbWUgdG8gY2hlY2sgdGhlIGRvY3VtZW50YXRpb24sIG9yIGJldHRlciB5ZXQsIG1heWJlIEkgc2hvdWxkIGp1c3Qgc3BpbiBpdCB1cCBhbmQgdGFrZSBhIGxvb2sgbXlzZWxmLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjM3NCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM5OjUyLjEyNjgxODQ1NFoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM5MDk0MTI1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZGlvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM5OjUyLjM2NTkyMTczOFoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDI5NTQwODQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFzc2Vzc2luZyBTeXprYWxsZXIncyBDb3ZlcmFnZSBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBpbml0aWFsbHksIG15IGluc3RpbmN0IHdhcyBhIGZpcm0gXCJubyxcIiB0aGF0IHN5emthbGxlciBjb3VsZG4ndCBwb3NzaWJseSBiZSByZWxldmFudCBoZXJlLiBCdXQgaG9sZCBvbiwgSSBuZWVkIHRvIGJlIG1vcmUgcmlnb3JvdXMuIFRoZSBjb3JlIHF1ZXN0aW9uIGlzOiBob3cgKmNvdWxkKiBzeXprYWxsZXIgYWN0dWFsbHkgdG91Y2ggdGhpcyBkcml2ZXI/IElmIGRpcmVjdCBhY2Nlc3MgaXMgaW1wb3NzaWJsZSwgdGhlbiBpbW1lZGlhdGVseSByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAgd291bGQgYmUgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwLiBIb3dldmVyLCBpdCdzIHRvbyBlYXJseSB0byBqdW1wIHRvIGNvbmNsdXNpb25zLiBJcyB0aGVyZSBhbnkgaW5kaXJlY3QgcGF0aHdheT8gQ291bGQgYSBnZW5lcmljIFBIWSB0ZXN0aW5nIGZyYW1ld29yayBwb3RlbnRpYWxseSBleHBvc2UgdGhpcyBkcml2ZXIgdG8gZnV6emluZz8gSSBuZWVkIHRvIGV4cGxvcmUgdGhhdCBwb3NzaWJpbGl0eS4gTXkgbmV4dCBtb3ZlIGlzIGNsZWFyOiBJIG5lZWQgdG8gZXhwbGljaXRseSBjaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiBhbnkgc3l6a2FsbGVyIHRlc3QgbW9kdWxlcyByZWxhdGVkIHRvIFwicGh5LlwiIFRoYXQgc2VhcmNoIHdpbGwgYmUgdGhlIGRldGVybWluYW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjYyMCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjczLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM5OjU3LjM5NTQ2NjYyNloiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcxMTg0NjEzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeS4qdGVzdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jPTY1ND1zdGF0aWMgaW50IF9fYmNtX3BoeV9lbmFibGVfbGVnYWN5X2FjY2VzcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtNjU5LVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjY2MDpzdGF0aWMgaW50IF9iY21fcGh5X2NhYmxlX3Rlc3Rfc3RhcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCBpc19yZGIpXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtNjYxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTY5NS1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo2OTY6c3RhdGljIGludCBiY21fcGh5X2NhYmxlX3Rlc3RfcmVwb3J0X3RyYW5zKGludCByZXN1bHQpXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtNjk3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jPTcyNT1zdGF0aWMgaW50IGJjbV9waHlfcmVwb3J0X2xlbmd0aChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgcGFpcilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTc0MS1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo3NDI6c3RhdGljIGludCBfYmNtX3BoeV9jYWJsZV90ZXN0X2dldF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy03NDMtXFx0XFx0XFx0XFx0XFx0ICBib29sICpmaW5pc2hlZCwgYm9vbCBpc19yZGIpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy03NzUtXFx0ZXRobmxfY2FibGVfdGVzdF9yZXN1bHQocGh5ZGV2LCBFVEhUT09MX0FfQ0FCTEVfUEFJUl9BLFxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjc3NjpcXHRcXHRcXHRcXHRiY21fcGh5X2NhYmxlX3Rlc3RfcmVwb3J0X3RyYW5zKHBhaXJfYSkpO1xcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTc3Ny1cXHRldGhubF9jYWJsZV90ZXN0X3Jlc3VsdChwaHlkZXYsIEVUSFRPT0xfQV9DQUJMRV9QQUlSX0IsXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6Nzc4OlxcdFxcdFxcdFxcdGJjbV9waHlfY2FibGVfdGVzdF9yZXBvcnRfdHJhbnMocGFpcl9iKSk7XFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtNzc5LVxcdGV0aG5sX2NhYmxlX3Rlc3RfcmVzdWx0KHBoeWRldiwgRVRIVE9PTF9BX0NBQkxFX1BBSVJfQyxcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo3ODA6XFx0XFx0XFx0XFx0YmNtX3BoeV9jYWJsZV90ZXN0X3JlcG9ydF90cmFucyhwYWlyX2MpKTtcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy03ODEtXFx0ZXRobmxfY2FibGVfdGVzdF9yZXN1bHQocGh5ZGV2LCBFVEhUT09MX0FfQ0FCTEVfUEFJUl9ELFxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjc4MjpcXHRcXHRcXHRcXHRiY21fcGh5X2NhYmxlX3Rlc3RfcmVwb3J0X3RyYW5zKHBhaXJfZCkpO1xcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTc4My1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jPTgzMD1zdGF0aWMgdTMyIGJjbV9saW5rbW9kZV9hZHZfdG9fbHJlX2Fkdl90KHVuc2lnbmVkIGxvbmcgKmFkdmVydGlzaW5nKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtODQ3LVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjg0ODppbnQgYmNtX3BoeV9jYWJsZV90ZXN0X3N0YXJ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtODQ5LXtcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo4NTA6XFx0cmV0dXJuIF9iY21fcGh5X2NhYmxlX3Rlc3Rfc3RhcnQocGh5ZGV2LCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtODUxLX1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo4NTI6RVhQT1JUX1NZTUJPTF9HUEwoYmNtX3BoeV9jYWJsZV90ZXN0X3N0YXJ0KTtcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy04NTMtXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6ODU0OmludCBiY21fcGh5X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sICpmaW5pc2hlZClcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy04NTUte1xcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjg1NjpcXHRyZXR1cm4gX2JjbV9waHlfY2FibGVfdGVzdF9nZXRfc3RhdHVzKHBoeWRldiwgZmluaXNoZWQsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy04NTctfVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjg1ODpFWFBPUlRfU1lNQk9MX0dQTChiY21fcGh5X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyk7XFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtODU5LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtODYzLSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjg2NDppbnQgYmNtX3BoeV9jYWJsZV90ZXN0X3N0YXJ0X3JkYihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTg2NS17XFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6ODY2OlxcdHJldHVybiBfYmNtX3BoeV9jYWJsZV90ZXN0X3N0YXJ0KHBoeWRldiwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtODY3LX1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo4Njg6RVhQT1JUX1NZTUJPTF9HUEwoYmNtX3BoeV9jYWJsZV90ZXN0X3N0YXJ0X3JkYik7XFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtODY5LVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjg3MDppbnQgYmNtX3BoeV9jYWJsZV90ZXN0X2dldF9zdGF0dXNfcmRiKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtODcxLVxcdFxcdFxcdFxcdCAgICAgIGJvb2wgKmZpbmlzaGVkKVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTg3Mi17XFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6ODczOlxcdHJldHVybiBfYmNtX3BoeV9jYWJsZV90ZXN0X2dldF9zdGF0dXMocGh5ZGV2LCBmaW5pc2hlZCwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtODc0LX1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo4NzU6RVhQT1JUX1NZTUJPTF9HUEwoYmNtX3BoeV9jYWJsZV90ZXN0X2dldF9zdGF0dXNfcmRiKTtcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy04NzYtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuaD05MT1pbnQgYmNtX3BoeV9lbmFibGVfanVtYm8oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmgtOTItXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmg6OTM6aW50IGJjbV9waHlfY2FibGVfdGVzdF9nZXRfc3RhdHVzX3JkYihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5oLTk0LVxcdFxcdFxcdFxcdCAgICAgIGJvb2wgKmZpbmlzaGVkKTtcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuaDo5NTppbnQgYmNtX3BoeV9jYWJsZV90ZXN0X3N0YXJ0X3JkYihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuaDo5NjppbnQgYmNtX3BoeV9jYWJsZV90ZXN0X3N0YXJ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5oOjk3OmludCBiY21fcGh5X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sICpmaW5pc2hlZCk7XFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmgtOTgtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtNTQxNDAuYz04NjU9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGJjbTU0MTQwX2RyaXZlcnNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY201NDE0MC5jLTg4MC1cXHRcXHQuc2V0X3R1bmFibGVcXHQ9IGJjbTU0MTQwX3NldF90dW5hYmxlLFxcbmRyaXZlcnMvbmV0L3BoeS9iY201NDE0MC5jOjg4MTpcXHRcXHQuY2FibGVfdGVzdF9zdGFydCA9IGJjbV9waHlfY2FibGVfdGVzdF9zdGFydF9yZGIsXFxuZHJpdmVycy9uZXQvcGh5L2JjbTU0MTQwLmM6ODgyOlxcdFxcdC5jYWJsZV90ZXN0X2dldF9zdGF0dXMgPSBiY21fcGh5X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1c19yZGIsXFxuZHJpdmVycy9uZXQvcGh5L2JjbTU0MTQwLmMtODgzLVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYz04Nzc9c3RhdGljIGludCBicmNtX2ZldF9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtOTY5LVxcdC8qIERpc2FibGUgc2hhZG93IHJlZ2lzdGVyIGFjY2VzcyAqL1xcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jOjk3MDpcXHRlcnIyID0gX19waHlfd3JpdGUocGh5ZGV2LCBNSUlfQlJDTV9GRVRfQlJDTVRFU1QsIGJyY210ZXN0KTtcXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy05NzEtXFx0aWYgKCFlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYz0xMDM2PXN0YXRpYyBpbnQgYnJjbV9mZXRfc3VzcGVuZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTA3MS1cXHQvKiBEaXNhYmxlIHNoYWRvdyByZWdpc3RlciBhY2Nlc3MgKi9cXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYzoxMDcyOlxcdGVycjIgPSBfX3BoeV93cml0ZShwaHlkZXYsIE1JSV9CUkNNX0ZFVF9CUkNNVEVTVCwgYnJjbXRlc3QpO1xcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTEwNzMtXFx0aWYgKCFlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jPTIyMTk9c3RhdGljIGludCBtYXJ2ZWxsX3ZjdDVfd2FpdF9jb21wbGV0ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYy0yMjMyLVxcbmRyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmM6MjIzMzpcXHRwaHlkZXZfZXJyKHBoeWRldiwgXFxcIlRpbWVvdXQgd2hpbGUgd2FpdGluZyBmb3IgY2FibGUgdGVzdCB0byBmaW5pc2hcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmMtMjIzNC1cXHRyZXR1cm4gLUVUSU1FRE9VVDtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYz04MTM9c3RhdGljIGludCBsYW44N3h4X2NhYmxlX3Rlc3Rfc3RhcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy04ODctXFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6ODg4OlxcdFxcdFxcdHJjID0gYWNjZXNzX2VyZWcocGh5ZGV2LCBjYWJsZV90ZXN0W2ldLm1vZGUsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTg4OS1cXHRcXHRcXHRcXHRcXHQgY2FibGVfdGVzdFtpXS5iYW5rLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYz01Mzc9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MXNfZHJpdmVyW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTU3NS1cXHRcXHQuZ2V0X3BsY2Ffc3RhdHVzICAgID0gZ2VucGh5X2M0NV9wbGNhX2dldF9zdGF0dXMsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo1NzY6XFx0XFx0LmNhYmxlX3Rlc3Rfc3RhcnQgICA9IGdlbnBoeV9jNDVfb2F0YzE0X2NhYmxlX3Rlc3Rfc3RhcnQsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo1Nzc6XFx0XFx0LmNhYmxlX3Rlc3RfZ2V0X3N0YXR1cyA9IGdlbnBoeV9jNDVfb2F0YzE0X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTU3OC1cXHRcXHQuZ2V0X3NxaSAgICAgICAgICAgID0gZ2VucGh5X2M0NV9vYXRjMTRfZ2V0X3NxaSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYz0xMzI2PXN0YXRpYyBpbnQgbnhwX2M0NV9jYWJsZV90ZXN0X3N0YXJ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbnhwLWM0NS10amExMXh4LmMtMTMzMS1cXHRcXHRcXHQgVkVORDFfUE9SVF9GVU5DX0VOQUJMRVMsIFBIWV9URVNUX0VOQUJMRSk7XFxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jOjEzMzI6XFx0cmV0dXJuIHBoeV9zZXRfYml0c19tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgcmVnbWFwLVxcdTAwM2VjYWJsZV90ZXN0LFxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYy0xMzMzLVxcdFxcdFxcdFxcdENBQkxFX1RFU1RfRU5BQkxFIHwgQ0FCTEVfVEVTVF9TVEFSVCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbnhwLWM0NS10amExMXh4LmM9MTMzNj1zdGF0aWMgaW50IG54cF9jNDVfY2FibGVfdGVzdF9nZXRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbnhwLWM0NS10amExMXh4LmMtMTM0Mi1cXG5kcml2ZXJzL25ldC9waHkvbnhwLWM0NS10amExMXh4LmM6MTM0MzpcXHRyZXQgPSBueHBfYzQ1X3JlYWRfcmVnX2ZpZWxkKHBoeWRldiwgXFx1MDAyNnJlZ21hcC1cXHUwMDNlY2FibGVfdGVzdF92YWxpZCk7XFxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jLTEzNDQtXFx0aWYgKCFyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYy0xMzcwLVxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYzoxMzcxOlxcdHBoeV9jbGVhcl9iaXRzX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCByZWdtYXAtXFx1MDAzZWNhYmxlX3Rlc3QsXFxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jLTEzNzItXFx0XFx0XFx0ICAgQ0FCTEVfVEVTVF9FTkFCTEUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmM9MjExPXN0YXRpYyBpbnQgdGphMTF4eF9jb25maWdfYW5lZ19jYWJsZV90ZXN0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYy0yMTgtXFxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmM6MjE5OlxcdGlmICghcGh5ZGV2LVxcdTAwM2VkcnYtXFx1MDAzZWNhYmxlX3Rlc3Rfc3RhcnQgfHxcXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYzoyMjA6XFx0ICAgICFwaHlkZXYtXFx1MDAzZWRydi1cXHUwMDNlY2FibGVfdGVzdF9nZXRfc3RhdHVzKVxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jLTIyMS1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jLTIyNi1cXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYzoyMjc6XFx0cmV0ID0gcGh5ZGV2LVxcdTAwM2VkcnYtXFx1MDAzZWNhYmxlX3Rlc3Rfc3RhcnQocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYy0yMjgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jLTIzMy1cXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYzoyMzQ6XFx0cmV0ID0gcGh5ZGV2LVxcdTAwM2VkcnYtXFx1MDAzZWNhYmxlX3Rlc3RfZ2V0X3N0YXR1cyhwaHlkZXYsIFxcdTAwMjZmaW5pc2hlZCk7XFxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmMtMjM1LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jPTE2MDI9c3RhdGljIGludCBvYXRjMTRfY2FibGVfdGVzdF9nZXRfcmVzdWx0X2NvZGUoZW51bSBvYXRjMTRfaGRkX3N0YXR1cyBzdGF0dXMpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTE2MTctLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYzoxNjE4OiAqIGdlbnBoeV9jNDVfb2F0YzE0X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyAtIEdldCBzdGF0dXMgb2YgT0FUQzE0IDEwQmFzZS1UMVNcXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTE2MTktICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEhZIGNhYmxlIHRlc3QuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTE2MzMtICovXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYzoxNjM0OmludCBnZW5waHlfYzQ1X29hdGMxNF9jYWJsZV90ZXN0X2dldF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTE2MzUtXFx0XFx0XFx0XFx0XFx0ICAgIGJvb2wgKmZpbmlzaGVkKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy0xNjYwLX1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jOjE2NjE6RVhQT1JUX1NZTUJPTChnZW5waHlfYzQ1X29hdGMxNF9jYWJsZV90ZXN0X2dldF9zdGF0dXMpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTY2Mi1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTE2NjMtLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYzoxNjY0OiAqIGdlbnBoeV9jNDVfb2F0YzE0X2NhYmxlX3Rlc3Rfc3RhcnQgLSBTdGFydCBhIGNhYmxlIHRlc3Qgb24gYW4gT0FUQzE0XFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy0xNjY1LSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMEJhc2UtVDFTIFBIWS5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTY4MS0gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jOjE2ODI6aW50IGdlbnBoeV9jNDVfb2F0YzE0X2NhYmxlX3Rlc3Rfc3RhcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTE2ODMte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy0xNzA0LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jOjE3MDU6RVhQT1JUX1NZTUJPTChnZW5waHlfYzQ1X29hdGMxNF9jYWJsZV90ZXN0X3N0YXJ0KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTE3MDYtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYz0zMjI9dm9pZCBwaHlfcmVzb2x2ZV9hbmVnX3BhdXNlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy0zMjQtXFx0aWYgKHBoeWRldi1cXHUwMDNlZHVwbGV4ID09IERVUExFWF9GVUxMKSB7XFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM6MzI1OlxcdFxcdHBoeWRldi1cXHUwMDNlcGF1c2UgPSBsaW5rbW9kZV90ZXN0X2JpdChFVEhUT09MX0xJTktfTU9ERV9QYXVzZV9CSVQsXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmMtMzI2LVxcdFxcdFxcdFxcdFxcdFxcdCAgcGh5ZGV2LVxcdTAwM2VscF9hZHZlcnRpc2luZyk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM6MzI3OlxcdFxcdHBoeWRldi1cXHUwMDNlYXN5bV9wYXVzZSA9IGxpbmttb2RlX3Rlc3RfYml0KFxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTMyOC1cXHRcXHRcXHRFVEhUT09MX0xJTktfTU9ERV9Bc3ltX1BhdXNlX0JJVCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYz00NDY9RVhQT1JUX1NZTUJPTChwaHlfZG9faW9jdGwpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTQ0OC0vKipcXG5kcml2ZXJzL25ldC9waHkvcGh5LmM6NDQ5OiAqIHBoeV9kb19pb2N0bF9ydW5uaW5nIC0gZ2VuZXJpYyBuZG9fZXRoX2lvY3RsIGltcGxlbWVudGF0aW9uIGJ1dCB0ZXN0IGZpcnN0XFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTQ1MC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jPTUzMD1FWFBPUlRfU1lNQk9MKHBoeV90cmlnZ2VyX21hY2hpbmUpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy01MzEtXFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjUzMjpzdGF0aWMgdm9pZCBwaHlfYWJvcnRfY2FibGVfdGVzdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy01MzMte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTUzOS1cXHRpZiAoZXJyKVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYzo1NDA6XFx0XFx0cGh5ZGV2X2VycihwaHlkZXYsIFxcXCJFcnJvciB3aGlsZSBhYm9ydGluZyBjYWJsZSB0ZXN0XFxcIik7XFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTU0MS19XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmM9ODIxPWludCBwaHlfZXRodG9vbF9nZXRfcGxjYV9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy04NDQtLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjg0NTogKiBwaHlfc3RhcnRfY2FibGVfdGVzdCAtIFN0YXJ0IGEgY2FibGUgdGVzdFxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy04NDYtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy04NDktICovXFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjg1MDppbnQgcGh5X3N0YXJ0X2NhYmxlX3Rlc3Qoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtODUxLVxcdFxcdFxcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtODU2LVxcdGlmICghKHBoeWRldi1cXHUwMDNlZHJ2IFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjg1NzpcXHQgICAgICBwaHlkZXYtXFx1MDAzZWRydi1cXHUwMDNlY2FibGVfdGVzdF9zdGFydCBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYzo4NTg6XFx0ICAgICAgcGh5ZGV2LVxcdTAwM2VkcnYtXFx1MDAzZWNhYmxlX3Rlc3RfZ2V0X3N0YXR1cykpIHtcXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtODU5LVxcdFxcdE5MX1NFVF9FUlJfTVNHKGV4dGFjayxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy04ODctXFx0bmV0aWZfdGVzdGluZ19vbihkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHkuYzo4ODg6XFx0ZXJyID0gcGh5ZGV2LVxcdTAwM2VkcnYtXFx1MDAzZWNhYmxlX3Rlc3Rfc3RhcnQocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtODg5LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy05MTAtfVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYzo5MTE6RVhQT1JUX1NZTUJPTChwaHlfc3RhcnRfY2FibGVfdGVzdCk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTkxMi1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtOTEzLS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYzo5MTQ6ICogcGh5X3N0YXJ0X2NhYmxlX3Rlc3RfdGRyIC0gU3RhcnQgYSByYXcgVERSIGNhYmxlIHRlc3RcXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtOTE1LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtOTE5LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHkuYzo5MjA6aW50IHBoeV9zdGFydF9jYWJsZV90ZXN0X3RkcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy05MjEtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2ssXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtOTI3LVxcdGlmICghKHBoeWRldi1cXHUwMDNlZHJ2IFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjkyODpcXHQgICAgICBwaHlkZXYtXFx1MDAzZWRydi1cXHUwMDNlY2FibGVfdGVzdF90ZHJfc3RhcnQgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9waHkvcGh5LmM6OTI5OlxcdCAgICAgIHBoeWRldi1cXHUwMDNlZHJ2LVxcdTAwM2VjYWJsZV90ZXN0X2dldF9zdGF0dXMpKSB7XFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTkzMC1cXHRcXHROTF9TRVRfRVJSX01TRyhleHRhY2ssXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtOTU4LVxcdG5ldGlmX3Rlc3Rpbmdfb24oZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5LmM6OTU5OlxcdGVyciA9IHBoeWRldi1cXHUwMDNlZHJ2LVxcdTAwM2VjYWJsZV90ZXN0X3Rkcl9zdGFydChwaHlkZXYsIGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTk2MC1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtOTgxLX1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmM6OTgyOkVYUE9SVF9TWU1CT0wocGh5X3N0YXJ0X2NhYmxlX3Rlc3RfdGRyKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtOTgzLVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jPTE1Mzg9c3RhdGljIGVudW0gcGh5X3N0YXRlX3dvcmsgX3BoeV9zdGF0ZV9tYWNoaW5lKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtMTU2Mi1cXHRjYXNlIFBIWV9DQUJMRVRFU1Q6XFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjE1NjM6XFx0XFx0ZXJyID0gcGh5ZGV2LVxcdTAwM2VkcnYtXFx1MDAzZWNhYmxlX3Rlc3RfZ2V0X3N0YXR1cyhwaHlkZXYsIFxcdTAwMjZmaW5pc2hlZCk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTE1NjQtXFx0XFx0aWYgKGVycikge1xcbmRyaXZlcnMvbmV0L3BoeS9waHkuYzoxNTY1OlxcdFxcdFxcdHBoeV9hYm9ydF9jYWJsZV90ZXN0KHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTE1NjYtXFx0XFx0XFx0bmV0aWZfdGVzdGluZ19vZmYoZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYz0xNjYyPXZvaWQgcGh5X3N0b3Aoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0xNjc4LVxcdGlmIChwaHlkZXYtXFx1MDAzZXN0YXRlID09IFBIWV9DQUJMRVRFU1QpIHtcXG5kcml2ZXJzL25ldC9waHkvcGh5LmM6MTY3OTpcXHRcXHRwaHlfYWJvcnRfY2FibGVfdGVzdChwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0xNjgwLVxcdFxcdG5ldGlmX3Rlc3Rpbmdfb2ZmKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYz0xMjI9c2l6ZV90IHBoeV9jYXBzX3NwZWVkcyh1bnNpZ25lZCBpbnQgKnNwZWVkcywgc2l6ZV90IHNpemUsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0xNDAtLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM6MTQxOiAqIHBoeV9jYXBzX2xvb2t1cF9ieV9saW5rbW9kZSgpIC0gTG9va3VwIHRoZSBmYXN0ZXN0IG1hdGNoaW5nIGxpbmtfY2FwYWJpbGl0aWVzXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmMtMTQyLSAqIEBsaW5rbW9kZXM6IExpbmttb2RlcyB0byBtYXRjaCBhZ2FpbnN0XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTI2Mj1zdGF0aWMgdm9pZCBwaHlfbGlua19jaGFuZ2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCB1cClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMjc1LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6Mjc2OiAqIHBoeV91c2VzX3N0YXRlX21hY2hpbmUgLSB0ZXN0IHdoZXRoZXIgY29uc3VtZXIgZHJpdmVyIHVzZXMgUEFMIHN0YXRlIG1hY2hpbmVcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTI3Ny0gKiBAcGh5ZGV2OiB0aGUgdGFyZ2V0IFBIWSBkZXZpY2Ugc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTM5MjU9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX3BoeV9vcHMgcGh5X2V0aHRvb2xfcGh5X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzkzMS1cXHQuZ2V0X3BsY2Ffc3RhdHVzXFx0PSBwaHlfZXRodG9vbF9nZXRfcGxjYV9zdGF0dXMsXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzozOTMyOlxcdC5zdGFydF9jYWJsZV90ZXN0XFx0PSBwaHlfc3RhcnRfY2FibGVfdGVzdCxcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjM5MzM6XFx0LnN0YXJ0X2NhYmxlX3Rlc3RfdGRyXFx0PSBwaHlfc3RhcnRfY2FibGVfdGVzdF90ZHIsXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zOTM0LX07XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMxOTE9aW50IHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbShzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyMDItXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMjAzOlxcdGlmICghcGh5bGlua190ZXN0KHBsLVxcdTAwM2VzdXBwb3J0ZWQsIFBhdXNlKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzIwNDpcXHQgICAgIXBoeWxpbmtfdGVzdChwbC1cXHUwMDNlc3VwcG9ydGVkLCBBc3ltX1BhdXNlKSlcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyMDUtXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzIwNi1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMyMDc6XFx0aWYgKCFwaHlsaW5rX3Rlc3QocGwtXFx1MDAzZXN1cHBvcnRlZCwgQXN5bV9QYXVzZSkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyMDgtXFx0ICAgIHBhdXNlLVxcdTAwM2VyeF9wYXVzZSAhPSBwYXVzZS1cXHUwMDNldHhfcGF1c2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jPTM0MD1waHlfaW50ZXJmYWNlX3Qgc2ZwX3NlbGVjdF9pbnRlcmZhY2Uoc3RydWN0IHNmcF9idXMgKmJ1cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmMtMzQyLXtcXG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jOjM0MzpcXHRpZiAocGh5bGlua190ZXN0KGxpbmtfbW9kZXMsIDI1MDAwYmFzZUNSX0Z1bGwpIHx8XFxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYzozNDQ6XFx0ICAgIHBoeWxpbmtfdGVzdChsaW5rX21vZGVzLCAyNTAwMGJhc2VLUl9GdWxsKSB8fFxcbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmM6MzQ1OlxcdCAgICBwaHlsaW5rX3Rlc3QobGlua19tb2RlcywgMjUwMDBiYXNlU1JfRnVsbCkpXFxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYy0zNDYtXFx0XFx0cmV0dXJuIFBIWV9JTlRFUkZBQ0VfTU9ERV8yNUdCQVNFUjtcXG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jLTM0Ny1cXG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jOjM0ODpcXHRpZiAocGh5bGlua190ZXN0KGxpbmtfbW9kZXMsIDEwMDAwYmFzZUNSX0Z1bGwpIHx8XFxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYzozNDk6XFx0ICAgIHBoeWxpbmtfdGVzdChsaW5rX21vZGVzLCAxMDAwMGJhc2VTUl9GdWxsKSB8fFxcbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmM6MzUwOlxcdCAgICBwaHlsaW5rX3Rlc3QobGlua19tb2RlcywgMTAwMDBiYXNlTFJfRnVsbCkgfHxcXG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jOjM1MTpcXHQgICAgcGh5bGlua190ZXN0KGxpbmtfbW9kZXMsIDEwMDAwYmFzZUxSTV9GdWxsKSB8fFxcbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmM6MzUyOlxcdCAgICBwaHlsaW5rX3Rlc3QobGlua19tb2RlcywgMTAwMDBiYXNlRVJfRnVsbCkgfHxcXG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jOjM1MzpcXHQgICAgcGh5bGlua190ZXN0KGxpbmtfbW9kZXMsIDEwMDAwYmFzZVRfRnVsbCkpXFxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYy0zNTQtXFx0XFx0cmV0dXJuIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUjtcXG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jLTM1NS1cXG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jOjM1NjpcXHRpZiAocGh5bGlua190ZXN0KGxpbmtfbW9kZXMsIDUwMDBiYXNlVF9GdWxsKSlcXG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jLTM1Ny1cXHRcXHRyZXR1cm4gUEhZX0lOVEVSRkFDRV9NT0RFXzVHQkFTRVI7XFxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYy0zNTgtXFxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYzozNTk6XFx0aWYgKHBoeWxpbmtfdGVzdChsaW5rX21vZGVzLCAyNTAwYmFzZVhfRnVsbCkgfHxcXG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jOjM2MDpcXHQgICAgcGh5bGlua190ZXN0KGxpbmtfbW9kZXMsIDI1MDBiYXNlVF9GdWxsKSlcXG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jLTM2MS1cXHRcXHRyZXR1cm4gUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWDtcXG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jLTM2Mi1cXG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jOjM2MzpcXHRpZiAocGh5bGlua190ZXN0KGxpbmtfbW9kZXMsIDEwMDBiYXNlVF9IYWxmKSB8fFxcbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmM6MzY0OlxcdCAgICBwaHlsaW5rX3Rlc3QobGlua19tb2RlcywgMTAwMGJhc2VUX0Z1bGwpKVxcbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmMtMzY1LVxcdFxcdHJldHVybiBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk7XFxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYy0zNjYtXFxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYzozNjc6XFx0aWYgKHBoeWxpbmtfdGVzdChsaW5rX21vZGVzLCAxMDAwYmFzZVhfRnVsbCkpXFxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYy0zNjgtXFx0XFx0cmV0dXJuIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVg7XFxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYy0zNjktXFxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYzozNzA6XFx0aWYgKHBoeWxpbmtfdGVzdChsaW5rX21vZGVzLCAxMDBiYXNlRlhfRnVsbCkpXFxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYy0zNzEtXFx0XFx0cmV0dXJuIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDBCQVNFWDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6Mzk6NTcuNjY2NjU3NTY5WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzNTQ0NzE5MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBQSFkgRHJpdmVyIEluc3RhbnRpYXRpb24gYW5kIFRlc3RpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBmdW5jdGlvbnMsIGBwaHlfc3RhcnRfY2FibGVfdGVzdGAsIGBwaHlfc3RhcnRfY2FibGVfdGVzdF90ZHJgLCBhbmQgdGhlIGxpa2UsIGJ1dCBJJ20gbm90IHNlZWluZyBhIGdlbmVyaWMgd2F5IHRvIG1vY2sgYSBQSFkgZHJpdmVyIG9yIGEgY2xlYW4gbWVjaGFuaXNtIHRvIGluc3RhbnRpYXRlIGEgUEhZIGRyaXZlciBkaXJlY3RseSBmcm9tIHVzZXJzcGFjZS4gVGhhdCdzIGEgYml0IG9mIGEgcmVkIGZsYWcuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGVzZSBhcmUgZ2V0dGluZyBzZXQgdXAsIGVzcGVjaWFsbHkgaW4gYSB0ZXN0aW5nIGNvbnRleHQuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIGlmIFN5emthbGxlciBvZmZlcnMgYW55IGRlZGljYXRlZCBtZXRob2RzIGZvciB0ZXN0aW5nIFBIWSBkcml2ZXJzLCBiZWNhdXNlIGlmIGl0IGRvZXMsIGl0ICpoYXMqIHRvIGJlIGluc3RhbnRpYXRpbmcgdGhlbSBzb21laG93LiBTbywgdGhlIHF1ZXN0aW9uIGJlY29tZXMsIGhvdyBhcmUgUEhZIGRyaXZlcnMgdHlwaWNhbGx5IGJyb3VnaHQgdG8gbGlmZT8gSSBrbm93IHRoZSBjb21tb24gcGF0dGVybjogYG1kaW9idXNfcmVnaXN0ZXJgIHNjYW5zIHRoZSBNRElPIGJ1cywgcmVhZHMgdGhlIFBIWSBJRCwgYW5kIHRoZW4gaW5zdGFudGlhdGVzIHRoZSBgcGh5X2RldmljZWAgc3RydWN0dXJlLiBTaW1wbGUgZW5vdWdoIGluIGEgcmVhbC13b3JsZCBzY2VuYXJpby5cblxuVGhlIHByb2JsZW0gaGVyZSwgb2YgY291cnNlLCBpcyB0aGF0IHdpdGhvdXQgYWN0dWFsIGhhcmR3YXJlLCBgbWRpb2J1c19yZWdpc3RlcmAgd29uJ3QgZmluZCBhbnl0aGluZy4gVGhhdCBwb2ludHMgbWUgdG8gdGhlIGlkZWEgdGhhdCB0aGVyZSBoYXMgdG8gYmUgc29tZSBzb3J0IG9mIHNvZnR3YXJlLWVtdWxhdGVkIE1ESU8gYnVzIHRoYXQgdXNlcnNwYWNlIGNhbiBpbnRlcmFjdCB3aXRoLiBTbywgSSBuZWVkIHRvIGZpbmQgdGhlIGltcGxlbWVudGF0aW9uIG9mIHN1Y2ggYSBidXMuIExldCdzIHN0YXJ0IHdpdGggYSBxdWljayBzZWFyY2gsIHBlcmhhcHMgc29tZXRoaW5nIGxpa2UgYGRyaXZlcnMvbmV0L3BoeS9tZGlvLW1vY2t1cC5jYCBvciBzb21ldGhpbmcgYW5hbG9nb3VzLiBOb3BlLCBub3RoaW5nIHRoZXJlLiBPa2F5LCBsZXQncyB3aWRlbiB0aGUgc2VhcmNoIHNsaWdodGx5IGFuZCBzZWUgd2hhdCdzIGluIGBkcml2ZXJzL25ldC9tZGlvL2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNDMzLCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjQwOjAzLjAyMTEzMzQxOVoiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MTQ0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L21kaW8vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImFjcGlfbWRpby5jXCIsXG4gICAgXCJmd25vZGVfbWRpby5jXCIsXG4gICAgXCJtZGlvLWFpcm9oYS5jXCIsXG4gICAgXCJtZGlvLWFzcGVlZC5jXCIsXG4gICAgXCJtZGlvLWJjbS1pcHJvYy5jXCIsXG4gICAgXCJtZGlvLWJjbS11bmltYWMuY1wiLFxuICAgIFwibWRpby1iaXRiYW5nLmNcIixcbiAgICBcIm1kaW8tY2F2aXVtLmNcIixcbiAgICBcIm1kaW8tY2F2aXVtLmhcIixcbiAgICBcIm1kaW8tZ3Bpby5jXCIsXG4gICAgXCJtZGlvLWhpc2ktZmVtYWMuY1wiLFxuICAgIFwibWRpby1pMmMuY1wiLFxuICAgIFwibWRpby1pcHE0MDE5LmNcIixcbiAgICBcIm1kaW8taXBxODA2NC5jXCIsXG4gICAgXCJtZGlvLW1veGFydC5jXCIsXG4gICAgXCJtZGlvLW1zY2MtbWlpbS5jXCIsXG4gICAgXCJtZGlvLW11eC1iY20taXByb2MuY1wiLFxuICAgIFwibWRpby1tdXgtYmNtNjM2OC5jXCIsXG4gICAgXCJtZGlvLW11eC1ncGlvLmNcIixcbiAgICBcIm1kaW8tbXV4LW1lc29uLWcxMmEuY1wiLFxuICAgIFwibWRpby1tdXgtbWVzb24tZ3hsLmNcIixcbiAgICBcIm1kaW8tbXV4LW1taW9yZWcuY1wiLFxuICAgIFwibWRpby1tdXgtbXVsdGlwbGV4ZXIuY1wiLFxuICAgIFwibWRpby1tdXguY1wiLFxuICAgIFwibWRpby1tdnVzYi5jXCIsXG4gICAgXCJtZGlvLW9jdGVvbi5jXCIsXG4gICAgXCJtZGlvLXBpYzY0aHBzYy5jXCIsXG4gICAgXCJtZGlvLXJlYWx0ZWstcnRsOTMwMC5jXCIsXG4gICAgXCJtZGlvLXJlZ21hcC5jXCIsXG4gICAgXCJtZGlvLXN1bjRpLmNcIixcbiAgICBcIm1kaW8tdGh1bmRlci5jXCIsXG4gICAgXCJtZGlvLXhnZW5lLmNcIixcbiAgICBcIm9mX21kaW8uY1wiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBudWxsXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTo0MDowMy4wMjEyNzY4NTlaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI5MjY3MzQyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNRElPIERyaXZlciBFeHBsb3JhdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byBNRElPIGRyaXZlcnMsIGFuZCBpdCBzZWVtcyB0aGVyZSdzIGEgcmFuZ2Ugb2YgaW1wbGVtZW50YXRpb25zIGhlcmU6IGBtZGlvLWdwaW8uY2AsIGBtZGlvLWJpdGJhbmcuY2AsIGBtZGlvLWkyYy5jYCwgYG1kaW8tcmVnbWFwLmNgLCBhbmQgYG1kaW8tbXV4LWdwaW8uY2AuIE5vbmUgb2YgdGhlc2UgaW1tZWRpYXRlbHkganVtcCBvdXQgYXMgYmVpbmcgbW9jayBkcml2ZXJzLCB3aGljaCBpcyB3aGF0IEknbSBsb29raW5nIGZvciBpbiB0aGUgY29udGV4dCBvZiBmdXp6aW5nLiBIbW0uLi4gd2FpdCBhIG1pbnV0ZS4uLiAqbWRpby1tdnVzYi5jKi4uLiBhIFVTQiBNRElPIGJ1cz8hIFRoYXQncyBwb3RlbnRpYWxseSBpbnRlcmVzdGluZy5cblxuSWYgc3l6a2FsbGVyIGNhbiBlbXVsYXRlIFVTQiBkZXZpY2VzLCB3aGljaCBJICprbm93KiBpdCBjYW4gdmlhIGB2aGNpYCwgdGhlbiB0aGVvcmV0aWNhbGx5LCBpdCBzaG91bGQgYmUgYWJsZSB0byBlbXVsYXRlIGEgTWFydmVsbCBVU0IgTURJTyBkZXZpY2UhIFRoYXQgb3BlbnMgdXAgc29tZSBleGNpdGluZyBwb3NzaWJpbGl0aWVzIGZvciBmdXp6aW5nIHRoaXMgc3BlY2lmaWMgaW50ZXJmYWNlLiBMZXQncyBkaWcgaW50byBgbWRpby1tdnVzYi5jYCBhbmQgc2VlIHdoYXQgd2UncmUgd29ya2luZyB3aXRoIGhlcmUuIFRoaXMgY291bGQgYmUgYSBzb2xpZCB0YXJnZXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMzgzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE4LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTo0MDowNy4zMTM5NTQ2NDRaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NDc4NDgzNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpby1tdnVzYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9tZGlvL21kaW8tbXZ1c2IuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6NDA6MDcuNTA4NzQ4MloiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjYxNDAwMjUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIGBtZGlvLW12dXNiLmNgKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2YgaG93IHRoZSBNYXJ2ZWxsIFVTQiBNRElPIGRyaXZlciwgYG1kaW8tbXZ1c2IuY2AsIGlzIGltcGxlbWVudGVkLiBJIG5lZWQgdG8gcXVpY2tseSByZWNhbGwgdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgTURJTyBpbnRlcmZhY2UsIGFuZCBob3cgYSBVU0IgdHJhbnNwb3J0IG1pZ2h0IGludGVyYWN0IHdpdGggaXQuIFdoYXQgYXJlIHRoZSBrZXkgZGF0YSBzdHJ1Y3R1cmVzPyBIb3cgaXMgdGhlIE1ESU8gdHJhbnNhY3Rpb24gcHJvdG9jb2wgbWFwcGVkIG9udG8gVVNCIHRyYW5zZmVycz8gQXJlIHRoZXkgdXNpbmcgYnVsaywgaW50ZXJydXB0LCBvciBjb250cm9sIGVuZHBvaW50cz8gTW9yZSBpbXBvcnRhbnRseSwgd2hlcmUgZG9lcyB0aGUgY29kZSByZXNpZGU/IFRoaXMgY2hlY2sgaXMgbGlrZWx5IHJlbGF0ZWQgdG8gaXNzdWVzIGZyb20gcmVjZW50IGxvZ3MgYW5kIEkgbmVlZCB0byBhc3Nlc3MgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBkaWZmZXJlbnQgUEhZIHN0YXRlcywgZXJyb3IgY29uZGl0aW9ucywgYW5kIGludGVycnVwdCBzZXJ2aWNpbmcuIExldCdzIHNlZSBob3cgbXVjaCBvZiB0aGlzIGlzIGRvbmUgaW4gaGFyZHdhcmUgYW5kIGZpcm13YXJlLiBXaGF0IGFyZSB0aGUgdHlwaWNhbCByYWNlIGNvbmRpdGlvbnMgdG8gbG9vayBvdXQgZm9yLCB3aXRoIHVzYiBhbmQgTURJTz9cblxuXG4iLCJJbnB1dFRva2VucyI6MzE3NzAsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTo0MDoxMC43NzAxNTM3NloiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzYzMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvbWRpby9tZGlvLW12dXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdFxcbiAgIDM6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2tlcm5lbC5oXFx1MDAzZVxcbiAgIDQ6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbiAgIDU6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mX21kaW8uaFxcdTAwM2VcXG4gICA2OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9waHkuaFxcdTAwM2VcXG4gICA3OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC91c2IuaFxcdTAwM2VcXG4gICA4OlxcdFxcbiAgIDk6XFx0I2RlZmluZSBVU0JfTUFSVkVMTF9WSURcXHQweDEyODZcXG4gIDEwOlxcdFxcbiAgMTE6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIG12dXNiX21kaW9fdGFibGVbXSA9IHtcXG4gIDEyOlxcdFxcdHsgVVNCX0RFVklDRShVU0JfTUFSVkVMTF9WSUQsIDB4MWZhNCkgfSxcXG4gIDEzOlxcdFxcbiAgMTQ6XFx0XFx0e31cXG4gIDE1OlxcdH07XFxuICAxNjpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgbXZ1c2JfbWRpb190YWJsZSk7XFxuICAxNzpcXHRcXG4gIDE4OlxcdGVudW0ge1xcbiAgMTk6XFx0XFx0TVZVU0JfQ01EX1BSRUFNQkxFMCxcXG4gIDIwOlxcdFxcdE1WVVNCX0NNRF9QUkVBTUJMRTEsXFxuICAyMTpcXHRcXHRNVlVTQl9DTURfQUREUixcXG4gIDIyOlxcdFxcdE1WVVNCX0NNRF9WQUwsXFxuICAyMzpcXHR9O1xcbiAgMjQ6XFx0XFxuICAyNTpcXHRzdHJ1Y3QgbXZ1c2JfbWRpbyB7XFxuICAyNjpcXHRcXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldjtcXG4gIDI3OlxcdFxcdHN0cnVjdCBtaWlfYnVzICptZGlvO1xcbiAgMjg6XFx0XFxuICAyOTpcXHRcXHRfX2xlMTYgYnVmWzRdO1xcbiAgMzA6XFx0fTtcXG4gIDMxOlxcdFxcbiAgMzI6XFx0c3RhdGljIGludCBtdnVzYl9tZGlvX3JlYWQoc3RydWN0IG1paV9idXMgKm1kaW8sIGludCBkZXYsIGludCByZWcpXFxuICAzMzpcXHR7XFxuICAzNDpcXHRcXHRzdHJ1Y3QgbXZ1c2JfbWRpbyAqbXZ1c2IgPSBtZGlvLVxcdTAwM2Vwcml2O1xcbiAgMzU6XFx0XFx0aW50IGVyciwgYWxlbjtcXG4gIDM2OlxcdFxcbiAgMzc6XFx0XFx0bXZ1c2ItXFx1MDAzZWJ1ZltNVlVTQl9DTURfQUREUl0gPSBjcHVfdG9fbGUxNigweGE0MDAgfCAoZGV2IFxcdTAwM2NcXHUwMDNjIDUpIHwgcmVnKTtcXG4gIDM4OlxcdFxcbiAgMzk6XFx0XFx0ZXJyID0gdXNiX2J1bGtfbXNnKG12dXNiLVxcdTAwM2V1ZGV2LCB1c2Jfc25kYnVsa3BpcGUobXZ1c2ItXFx1MDAzZXVkZXYsIDIpLFxcbiAgNDA6XFx0XFx0XFx0XFx0ICAgbXZ1c2ItXFx1MDAzZWJ1ZiwgNiwgXFx1MDAyNmFsZW4sIDEwMCk7XFxuICA0MTpcXHRcXHRpZiAoZXJyKVxcbiAgNDI6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gIDQzOlxcdFxcbiAgNDQ6XFx0XFx0ZXJyID0gdXNiX2J1bGtfbXNnKG12dXNiLVxcdTAwM2V1ZGV2LCB1c2JfcmN2YnVsa3BpcGUobXZ1c2ItXFx1MDAzZXVkZXYsIDYpLFxcbiAgNDU6XFx0XFx0XFx0XFx0ICAgXFx1MDAyNm12dXNiLVxcdTAwM2VidWZbTVZVU0JfQ01EX1ZBTF0sIDIsIFxcdTAwMjZhbGVuLCAxMDApO1xcbiAgNDY6XFx0XFx0aWYgKGVycilcXG4gIDQ3OlxcdFxcdFxcdHJldHVybiBlcnI7XFxuICA0ODpcXHRcXG4gIDQ5OlxcdFxcdHJldHVybiBsZTE2X3RvX2NwdShtdnVzYi1cXHUwMDNlYnVmW01WVVNCX0NNRF9WQUxdKTtcXG4gIDUwOlxcdH1cXG4gIDUxOlxcdFxcbiAgNTI6XFx0c3RhdGljIGludCBtdnVzYl9tZGlvX3dyaXRlKHN0cnVjdCBtaWlfYnVzICptZGlvLCBpbnQgZGV2LCBpbnQgcmVnLCB1MTYgdmFsKVxcbiAgNTM6XFx0e1xcbiAgNTQ6XFx0XFx0c3RydWN0IG12dXNiX21kaW8gKm12dXNiID0gbWRpby1cXHUwMDNlcHJpdjtcXG4gIDU1OlxcdFxcdGludCBhbGVuO1xcbiAgNTY6XFx0XFxuICA1NzpcXHRcXHRtdnVzYi1cXHUwMDNlYnVmW01WVVNCX0NNRF9BRERSXSA9IGNwdV90b19sZTE2KDB4ODAwMCB8IChkZXYgXFx1MDAzY1xcdTAwM2MgNSkgfCByZWcpO1xcbiAgNTg6XFx0XFx0bXZ1c2ItXFx1MDAzZWJ1ZltNVlVTQl9DTURfVkFMXSAgPSBjcHVfdG9fbGUxNih2YWwpO1xcbiAgNTk6XFx0XFxuICA2MDpcXHRcXHRyZXR1cm4gdXNiX2J1bGtfbXNnKG12dXNiLVxcdTAwM2V1ZGV2LCB1c2Jfc25kYnVsa3BpcGUobXZ1c2ItXFx1MDAzZXVkZXYsIDIpLFxcbiAgNjE6XFx0XFx0XFx0XFx0ICAgIG12dXNiLVxcdTAwM2VidWYsIDgsIFxcdTAwMjZhbGVuLCAxMDApO1xcbiAgNjI6XFx0fVxcbiAgNjM6XFx0XFxuICA2NDpcXHRzdGF0aWMgaW50IG12dXNiX21kaW9fcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSxcXG4gIDY1OlxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuICA2NjpcXHR7XFxuICA2NzpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2aW50ZXJmYWNlLVxcdTAwM2VkZXY7XFxuICA2ODpcXHRcXHRzdHJ1Y3QgbXZ1c2JfbWRpbyAqbXZ1c2I7XFxuICA2OTpcXHRcXHRzdHJ1Y3QgbWlpX2J1cyAqbWRpbztcXG4gIDcwOlxcdFxcbiAgNzE6XFx0XFx0bWRpbyA9IGRldm1fbWRpb2J1c19hbGxvY19zaXplKGRldiwgc2l6ZW9mKCptdnVzYikpO1xcbiAgNzI6XFx0XFx0aWYgKCFtZGlvKVxcbiAgNzM6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuICA3NDpcXHRcXG4gIDc1OlxcdFxcdG12dXNiID0gbWRpby1cXHUwMDNlcHJpdjtcXG4gIDc2OlxcdFxcdG12dXNiLVxcdTAwM2VtZGlvID0gbWRpbztcXG4gIDc3OlxcdFxcdG12dXNiLVxcdTAwM2V1ZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRlcmZhY2UpO1xcbiAgNzg6XFx0XFxuICA3OTpcXHRcXHQvKiBSZXZlcnNlZCBmcm9tIFVTQiBQQ0FQcywgbm8gaWRlYSB3aGF0IHRoZXNlIG1lYW4uICovXFxuICA4MDpcXHRcXHRtdnVzYi1cXHUwMDNlYnVmW01WVVNCX0NNRF9QUkVBTUJMRTBdID0gY3B1X3RvX2xlMTYoMHhlODAwKTtcXG4gIDgxOlxcdFxcdG12dXNiLVxcdTAwM2VidWZbTVZVU0JfQ01EX1BSRUFNQkxFMV0gPSBjcHVfdG9fbGUxNigweDAwMDEpO1xcbiAgODI6XFx0XFxuICA4MzpcXHRcXHRzbnByaW50ZihtZGlvLVxcdTAwM2VpZCwgTUlJX0JVU19JRF9TSVpFLCBcXFwibXZ1c2ItJXNcXFwiLCBkZXZfbmFtZShkZXYpKTtcXG4gIDg0OlxcdFxcdG1kaW8tXFx1MDAzZW5hbWUgPSBtZGlvLVxcdTAwM2VpZDtcXG4gIDg1OlxcdFxcdG1kaW8tXFx1MDAzZXBhcmVudCA9IGRldjtcXG4gIDg2OlxcdFxcdG1kaW8tXFx1MDAzZXJlYWQgPSBtdnVzYl9tZGlvX3JlYWQ7XFxuICA4NzpcXHRcXHRtZGlvLVxcdTAwM2V3cml0ZSA9IG12dXNiX21kaW9fd3JpdGU7XFxuICA4ODpcXHRcXG4gIDg5OlxcdFxcdHVzYl9zZXRfaW50ZmRhdGEoaW50ZXJmYWNlLCBtdnVzYik7XFxuICA5MDpcXHRcXG4gIDkxOlxcdFxcdHJldHVybiBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIGRldi1cXHUwMDNlb2Zfbm9kZSk7XFxuICA5MjpcXHR9XFxuICA5MzpcXHRcXG4gIDk0OlxcdHN0YXRpYyB2b2lkIG12dXNiX21kaW9fZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxcbiAgOTU6XFx0e1xcbiAgOTY6XFx0XFx0c3RydWN0IG12dXNiX21kaW8gKm12dXNiID0gdXNiX2dldF9pbnRmZGF0YShpbnRlcmZhY2UpO1xcbiAgOTc6XFx0XFxuICA5ODpcXHRcXHRtZGlvYnVzX3VucmVnaXN0ZXIobXZ1c2ItXFx1MDAzZW1kaW8pO1xcbiAgOTk6XFx0XFx0dXNiX3NldF9pbnRmZGF0YShpbnRlcmZhY2UsIE5VTEwpO1xcbiAxMDA6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTo0MDoxMC43NzAyOTE5MloiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MjIyMDM2Mzg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIFN5emthbGxlcidzIFBvdGVudGlhbCBmb3IgVGVzdGluZyB0aGUgYGRhcDgyMTFyYCBQSFkgRHJpdmVyKipcblxuT2theSwgdGhpcyBpcyBleGNpdGluZyEgSSBzZWUgdGhhdCBgbWRpby1tdnVzYmAgaXMgYSBVU0IgTURJTyBidXMgZHJpdmVyLCBhbmQgU3l6a2FsbGVyIGNhbiBlbXVsYXRlIGEgVVNCIGRldmljZSB1c2luZyBgdmhjaWAuIFRoZSBiZWF1dHkgb2YgdGhpcyBpcyB0aGF0IHdoZW4gU3l6a2FsbGVyIHByZXNlbnRzIGEgVVNCIGRldmljZSB3aXRoIGBpZFZlbmRvcj0weDEyODZgIGFuZCBgaWRQcm9kdWN0PTB4MWZhNGAsIHRoZSBgbWRpby1tdnVzYmAgZHJpdmVyIHdpbGwgcHJvYmUuIEl0IHRoZW4gYWxsb2NhdGVzIGFuZCByZWdpc3RlcnMgYW4gTURJTyBidXMuIENydWNpYWxseSwgdGhpcyBNRElPIGJ1cyB3aWxsIHN1YnNlcXVlbnRseSBzY2FuIGZvciBQSFlzIGJ5IHJlYWRpbmcgcmVnaXN0ZXJzIDIgYW5kIDMg4oCTIHRoZSBQSFkgSUQg4oCTIHZpYSB0aGUgYG12dXNiX21kaW9fcmVhZGAgZnVuY3Rpb24uXG5cbk5vdywgaGVyZSdzIHdoZXJlIFN5emthbGxlciBnZXRzIHRvIHNoaW5lLiBgbXZ1c2JfbWRpb19yZWFkYCBzZW5kcyBhIFVTQiBidWxrIG1lc3NhZ2UgdG8gdGhlIGVtdWxhdGVkIGRldmljZSwgd2hpY2ggbWVhbnMgU3l6a2FsbGVyIGNhbiBpbmplY3QgKndoYXRldmVyKiBkYXRhIGl0IGxpa2VzIGluIHJlc3BvbnNlISBUaGUgc3lzdGVtIGlzIHNldCB1cCB0byBhbGxvdyBTeXprYWxsZXIgdG8gY29udHJvbCB0aGUgUEhZIElELiBJIGNhbiBjcmFmdCB0aGUgcmVzcG9uc2UgdG8gYG12dXNiX21kaW9fcmVhZGAgdG8gZ2l2ZSB1cyBgMHgwMDA4YCBhbmQgYDB4MDExQmAgZm9yIHJlZ2lzdGVycyAyIGFuZCAzISBCaW5nby5cblxuVGhlIE1ESU8gYnVzIHdpbGwgdGhlbiBjcmVhdGUgYSBQSFkgZGV2aWNlIHdpdGggUEhZIElEIGAweDAwMDgwMTFCYCwgYW5kICp0aGF0KiB3aWxsIGNhdXNlIHRoZSBgZGFwODIxMXJgIFBIWSBkcml2ZXIgdG8gYmluZCB0byBpdCEgVGhpcywgaW4gdHVybiwgd2lsbCB0cmlnZ2VyIGEgY2FsbCB0byBgZGFwODIxMXJfY29uZmlnX2luaXRgLiBCcmlsbGlhbnQhIFN5emthbGxlciBoYXMgYSBjbGVhciBwYXRoIHRvIGdldCB0byB0aGlzIGNyaXRpY2FsIGZ1bmN0aW9uLiBUaGlzIGlzIGFic29sdXRlbHkgYW4gYXZlbnVlIGZvciB0ZXN0aW5nIHRoZSBgZGFwODIxMXJgIFBIWSBkcml2ZXIhXG5cbkhvd2V2ZXIsIGEgcXVlc3Rpb24gYXJpc2VzLiBgZGFwODIxMXJfY29uZmlnX2luaXRgIGNoZWNrcyBgcGh5X2ludGVyZmFjZV9pc19yZ21paShwaHlkZXYpYC4gQnV0IGhvdyBpcyB0aGUgUEhZIGludGVyZmFjZSBtb2RlIHNldD8gTm9ybWFsbHksIHRoaXMgaXMgZG9uZSBieSB0aGUgTUFDIGRyaXZlciB3aGVuIGl0IGNhbGxzIGBwaHlfY29ubmVjdGAgb3IgYHBoeV9hdHRhY2hgLiBCdXQgaGVyZSdzIHRoZSBjYXRjaDogdGhlIFBIWSBpcyBiZWluZyBjcmVhdGVkIGRpcmVjdGx5IG9uIHRoZSBNRElPIGJ1cy4gSXQncyAqbm90KiBhdHRhY2hlZCB0byBhbnkgTUFDIHlldC4gSXMgYGRhcDgyMTFyX2NvbmZpZ19pbml0YCBhY3R1YWxseSBjYWxsZWQgZHVyaW5nIHByb2JlPyBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYCB0byBzZWUgcHJlY2lzZWx5IHdoZW4gYGNvbmZpZ19pbml0YCBpcyBpbnZva2VkLiBJdCBjb3VsZCBiZSBwYXJ0IG9mIHRoZSBpbml0aWFsIHByb2JlIHByb2Nlc3MsIHdoaWNoIHdvdWxkIGJlIGlkZWFsLiBJIG5lZWQgdG8ga25vdyB0aGUgc3RhdGUgb2YgdGhlIFBIWSB3aGVuIGBjb25maWdfaW5pdGAgaXMgY2FsbGVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgaW50ZXJmYWNlIGNoZWNrLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzU1NywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjQwOjE3Ljk5MjMzMjUxNFoiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk2MzE1OTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZ19pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xMzQxPWludCBwaHlfaW5pdF9odyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMzY1LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTM2NjpcXHRpZiAocGh5ZGV2LVxcdTAwM2VkcnYtXFx1MDAzZWNvbmZpZ19pbml0KSB7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMzY3OlxcdFxcdHJldCA9IHBoeWRldi1cXHUwMDNlZHJ2LVxcdTAwM2Vjb25maWdfaW5pdChwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTM2OC1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6NDA6MTguMTg4NjU3NTA5WiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNTM3OTUzMzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSdtIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDpcblxuKipVbmRlcnN0YW5kaW5nIHRoZSBUaW1pbmcgb2YgYHBoeV9pbml0X2h3YCoqXG5cblJpZ2h0LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgYHBoeV9pbml0X2h3YC4gVGhlIGNydWNpYWwgcXVlc3Rpb24gSSdtIGdyYXBwbGluZyB3aXRoIGlzICp3aGVuKiBpcyB0aGlzIGZ1bmN0aW9uIGFjdHVhbGx5IGludm9rZWQgd2l0aGluIHRoZSBicm9hZGVyIHN5c3RlbSBpbml0aWFsaXphdGlvbiBmbG93PyBJJ20gdHJ5aW5nIHRvIHBpbiBkb3duIHRoZSBleGFjdCBzZXF1ZW5jZSBvZiBldmVudHMuIElzIGl0IGNhbGxlZCBlYXJseSwgbWF5YmUgZHVyaW5nIHRoZSBkZXZpY2UgZHJpdmVyJ3MgcHJvYmUgcm91dGluZT8gT3IgcGVyaGFwcyBpdCdzIGRlZmVycmVkIHRvIGEgbGF0ZXIgc3RhZ2UsIGxpa2UgZHVyaW5nIG5ldHdvcmsgaW50ZXJmYWNlIGJyaW5nLXVwPyBLbm93aW5nIHRoaXMgaXMgZnVuZGFtZW50YWwgZm9yIGRlYnVnZ2luZyBhbmQgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgaW52b2x2ZWQgaW4gaW5pdGlhbGl6aW5nIHRoZSBwaHlzaWNhbCBsYXllci4gSSdsbCBuZWVkIHRvIGRpZyB0aHJvdWdoIHRoZSBkcml2ZXIgY29kZSBhbmQgdGhlIHBsYXRmb3JtIGluaXRpYWxpemF0aW9uIHNjcmlwdHMgdG8gdHJhY2UgdGhlIGNhbGxpbmcgcGF0aC4gQW5kLCBvZiBjb3Vyc2UsIEknbSBhc3N1bWluZyBpdCdzIGhhcmR3YXJlLXNwZWNpZmljLCByZXF1aXJpbmcgbWUgdG8gbG9vayBhdCB0aGUgcmVsZXZhbnQgZGF0YSBzaGVldHMgYW5kIHJlZmVyZW5jZSBtYW51YWxzLiBVbHRpbWF0ZWx5LCBkZXRlcm1pbmluZyB0aGUgdGltaW5nIGlzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhlIGhhcmR3YXJlIGlzIGluaXRpYWxpemVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDczNCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjQwOjIxLjU0MjQ1ODE0N1oiLCJTZXEiOjQ4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYxNDAyOTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeV9pbml0X2h3XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0zNzg9c3RhdGljIF9fbWF5YmVfdW51c2VkIGludCBtZGlvX2J1c19waHlfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzk4LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6Mzk5OlxcdHJldCA9IHBoeV9pbml0X2h3KHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy00MDAtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTEzMDU9RVhQT1JUX1NZTUJPTChwaHlfZGlzY29ubmVjdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEzMjEtICogICBlZmZvcnQgdG8gc3VwcG9ydCBzdWNoIGJyb2tlbiBQSFlzLCB0aGlzIGZ1bmN0aW9uIGlzIHNlcGFyYXRlIGZyb20gdGhlXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMzIyOiAqICAgc3RhbmRhcmQgcGh5X2luaXRfaHcoKSB3aGljaCB3aWxsIHplcm8gYWxsIHRoZSBvdGhlciBiaXRzIGluIHRoZSBCTUNSXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMzIzLSAqICAgYW5kIHJlYXBwbHkgYWxsIGRyaXZlci1zcGVjaWZpYyBhbmQgYm9hcmQtc3BlY2lmaWMgZml4dXBzLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xMzI1PXN0YXRpYyBpbnQgcGh5X3BvbGxfcmVzZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTM0MC1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjEzNDE6aW50IHBoeV9pbml0X2h3KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMzQyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTM4Ny19XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMzg4OkVYUE9SVF9TWU1CT0wocGh5X2luaXRfaHcpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTM4OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTc1Mj1pbnQgcGh5X2F0dGFjaF9kaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTg3NC1cXHQgKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE4NzU6XFx0ZXJyID0gcGh5X2luaXRfaHcocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE4NzYtXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6NDA6MjEuODAzODcyNTgxWiIsIlNlcSI6NDksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MTU5NDQ1MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlLCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKlRyYWNpbmcgdGhlIFBIWSBJbml0aWFsaXphdGlvbiBQYXRoKipcblxuUmlnaHQsIGxldCBtZSBzZWUuLi4gYHBoeV9pbml0X2h3YCBpcyBkZWZpbml0ZWx5IHRyaWdnZXJlZCB3aXRoaW4gdGhlIGBwaHlfYXR0YWNoX2RpcmVjdGAgZnVuY3Rpb24uIEFuZCBJIGtub3cgdGhhdCBgcGh5X2F0dGFjaF9kaXJlY3RgIGlzIGNhbGxlZCB3aGVuIGEgTUFDIGRyaXZlciwgcmlnaHQgaW4gaXRzIGBjb25uZWN0YCBjYWxsYmFjaywgbGlua3MgdXAgd2l0aCB0aGUgUEhZLiBTbyBmYXIsIHNvIGdvb2QuIFRoYXQncyB0aGUgbm9ybWFsIGRhdGEgcGF0aC5cblxuQnV0IHRoZSByZWFsIHF1ZXN0aW9uIEkgbmVlZCB0byBhc2sgbXlzZWxmIGhlcmUgaXMgd2hldGhlciBgcGh5X2luaXRfaHdgIGlzIGFsc28gZ2V0dGluZyBjYWxsZWQgZHVyaW5nIHRoYXQgaW5pdGlhbCBQSFkgKnByb2JlKiBwaGFzZS4gSSBuZWVkIHRvIGJlIHN1cmUgdGhlIGhhcmR3YXJlIGlzIGJlaW5nIGluaXRpYWxpemVkIGluIHRoZSBwcm9wZXIgb3JkZXIuIFRoYXQgc3RhcnR1cCBzZXF1ZW5jZSBpcyB3aGVyZSB0aGluZ3MgdGVuZCB0byBnbyBzaWRld2F5cyBpZiB5b3UncmUgbm90IGNhcmVmdWwuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgZGV0ZXJtaW5pbmcgaG93IHRvIGRlYnVnIGFueSBwb3RlbnRpYWwgUEhZLXJlbGF0ZWQgaXNzdWVzIGxhdGVyIG9uLiBMZXQgbWUga2VlcCBkaWdnaW5nLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NTUyLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6NDA6MjUuMzE5ODIxNjA1WiIsIlNlcSI6NTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzA2Mzc3OTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5X2luaXRfaHdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTM3OD1zdGF0aWMgX19tYXliZV91bnVzZWQgaW50IG1kaW9fYnVzX3BoeV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zOTgtXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzozOTk6XFx0cmV0ID0gcGh5X2luaXRfaHcocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTQwMC1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTMwNT1FWFBPUlRfU1lNQk9MKHBoeV9kaXNjb25uZWN0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTMyMS0gKiAgIGVmZm9ydCB0byBzdXBwb3J0IHN1Y2ggYnJva2VuIFBIWXMsIHRoaXMgZnVuY3Rpb24gaXMgc2VwYXJhdGUgZnJvbSB0aGVcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjEzMjI6ICogICBzdGFuZGFyZCBwaHlfaW5pdF9odygpIHdoaWNoIHdpbGwgemVybyBhbGwgdGhlIG90aGVyIGJpdHMgaW4gdGhlIEJNQ1JcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEzMjMtICogICBhbmQgcmVhcHBseSBhbGwgZHJpdmVyLXNwZWNpZmljIGFuZCBib2FyZC1zcGVjaWZpYyBmaXh1cHMuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTEzMjU9c3RhdGljIGludCBwaHlfcG9sbF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMzQwLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTM0MTppbnQgcGh5X2luaXRfaHcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEzNDIte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMzg3LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjEzODg6RVhQT1JUX1NZTUJPTChwaHlfaW5pdF9odyk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMzg5LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xNzUyPWludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xODc0LVxcdCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTg3NTpcXHRlcnIgPSBwaHlfaW5pdF9odyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTg3Ni1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTo0MDoyNS41NTA0NjU3NzlaIiwiU2VxIjo1MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQzNjcyMjkxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSG1tLCBUaGF0J3MgVW5leHBlY3RlZC4qKlxuXG5XYWl0IGEgbWludXRlLi4uIEknbSBsb29raW5nIGF0IGBwaHlfcHJvYmVgIGluIGBwaHlfZGV2aWNlLmNgIGFuZCBzb21ldGhpbmcganVzdCBkb2Vzbid0IHNpdCByaWdodC4gSSdkICphc3N1bWVkKiB0aGF0IHRoZSBwcm9iaW5nIHByb2Nlc3Mgd291bGQgaW5oZXJlbnRseSBpbmNsdWRlIGFuIGluaXRpYWxpemF0aW9uIHN0ZXAsIHBhcnRpY3VsYXJseSBzb21ldGhpbmcgbGlrZSBgcGh5X2luaXRfaHdgLiBJdCdzIGFsbW9zdCBheGlvbWF0aWMgdGhhdCB5b3UnZCBuZWVkIHRvIGluaXRpYWxpemUgdGhlIGhhcmR3YXJlIHRvIGFjdHVhbGx5ICpwcm9iZSogaXQgZWZmZWN0aXZlbHksIHJpZ2h0PyBPdGhlcndpc2UsIHdoYXQgYXJlIHlvdSBldmVuIGxvb2tpbmcgZm9yPyBZb3UgY2FuJ3QganVzdCBleHBlY3QgaXQgdG8gbWFnaWNhbGx5IHdvcmsgd2l0aG91dCBwdXR0aW5nIGl0IGluIGEga25vd24sIGJhc2VsaW5lIHN0YXRlLiBUaGlzIGNhbGxzIGZvciBhIGNsb3NlciBpbnNwZWN0aW9uIG9mIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCB0aGUgaW50ZW5kZWQgYXJjaGl0ZWN0dXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nICpiZWZvcmUqIGBwaHlfcHJvYmVgLCBhbmQgaWYgdGhlIGluaXRpYWxpemF0aW9uIGlzIGJlaW5nIGRlZmVycmVkLCBvciBwZXJoYXBzIGhhbmRsZWQgaW4gYSBjb21wbGV0ZWx5IGRpZmZlcmVudCB3YXkgdGhhbiBJJ2QgZXhwZWN0LiBJcyB0aGVyZSBhIHNlcGFyYXRlLCBleHBsaWNpdCBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBjYWxsZWQgZWFybGllciwgcGVyaGFwcyB0aHJvdWdoIGEgZGV2aWNlIHRyZWUgb3IgcGxhdGZvcm0tc3BlY2lmaWMgZHJpdmVyIHNldHVwPyBPciBhbSBJIG1pc3Npbmcgc29tZXRoaW5nIGFsdG9nZXRoZXI/IFRoZXJlIG1pZ2h0IGJlIGFuIGludGVyZXN0aW5nIGRlc2lnbiBjaG9pY2UgaGVyZSBhbmQgSSB3YW50IHRvIHVuZGVyc3RhbmQgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2MzczLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6NDA6MjguOTg3MTkzMTQ1WiIsIlNlcSI6NTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDc5Mzk3MjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5X3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0zNjUyPUVYUE9SVF9TWU1CT0xfR1BMKGZ3bm9kZV9nZXRfcGh5X25vZGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNjU0LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MzY1NTogKiBwaHlfcHJvYmUgLSBwcm9iZSBhbmQgaW5pdCBhIFBIWSBkZXZpY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM2NTYtICogQGRldjogZGV2aWNlIHRvIHByb2JlIGFuZCBpbml0XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM2NTktICovXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzozNjYwOnN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM2NjEte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0zODM5PXN0YXRpYyBpbnQgcGh5X2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgcGh5X2RyaXZlciAqbmV3X2RyaXZlcixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzg2NS1cXHRuZXdfZHJpdmVyLVxcdTAwM2VtZGlvZHJ2LmRyaXZlci5idXMgPSBcXHUwMDI2bWRpb19idXNfdHlwZTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjM4NjY6XFx0bmV3X2RyaXZlci1cXHUwMDNlbWRpb2Rydi5kcml2ZXIucHJvYmUgPSBwaHlfcHJvYmU7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zODY3LVxcdG5ld19kcml2ZXItXFx1MDAzZW1kaW9kcnYuZHJpdmVyLnJlbW92ZSA9IHBoeV9yZW1vdmU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjQwOjI5LjMzNTE0NjA2N1oiLCJTZXEiOjUzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjgzOTMyNzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgYHBoeV9wcm9iZWAgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgYHBoeV9wcm9iZWAgaW1wbGVtZW50YXRpb24uIEkgbmVlZCB0byBnZXQgYSBzb2xpZCBncmFzcCBvZiBob3cgdGhpcyBmdW5jdGlvbiBpcyBoYW5kbGluZyBQSFkgZGV0ZWN0aW9uIGFuZCBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgYW5kIHZlcmlmeSB0aGUgc3BlY2lmaWMgbWV0aG9kcyB1c2VkLiBJcyBpdCB1c2luZyBhdXRvbmVnb3RpYXRpb24/IEFyZSB0aGVyZSBzcGVjaWZpYyByZWdpc3RlciByZWFkcyBhbmQgd3JpdGVzIGludm9sdmVkPyBXaGF0IGFyZSB0aGUgcG90ZW50aWFsIGZhaWx1cmUgcG9pbnRzPyBJIG5lZWQgdG8gbG9vayBjbG9zZWx5IGF0IHRoZSBlcnJvciBoYW5kbGluZywgZXNwZWNpYWxseSBjb25jZXJuaW5nIHdoaWNoIFBIWSB0eXBlcyBpdCdzIGF0dGVtcHRpbmcgdG8gZGV0ZWN0IGFuZCBzdXBwb3J0LiBJIGFsc28gbmVlZCB0byBzZWUgaWYgaXQgZ3JhY2VmdWxseSBoYW5kbGVzIHNpdHVhdGlvbnMgd2hlcmUgdGhlIFBIWSBtaWdodCBub3QgYmUgaW1tZWRpYXRlbHkgcmVzcG9uc2l2ZS4gSSB3YW50IHRvIGNoZWNrIGZvciByYWNlIGNvbmRpdGlvbnMsIGVzcGVjaWFsbHkgaWYgdGhlcmUncyBhbnkgaW50ZXJydXB0LWRyaXZlbiBsb2dpYyBpbnZvbHZlZCBpbiB0aGUgZGV0ZWN0aW9uIHByb2Nlc3MuIEFyZSB0aGVyZSBhbnkgYXNzdW1wdGlvbnMgYmVpbmcgbWFkZSBhYm91dCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBvciBkcml2ZXIgZW52aXJvbm1lbnQgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIEkgc2hvdWxkIGlkZW50aWZ5IHJpZ2h0IG5vdz8gVGhpcyBpcyBhbGwgYWJvdXQgdmVyaWZ5aW5nIHRoZSByb2J1c3RuZXNzIGFuZCBlZmZpY2llbmN5IG9mIHRoZSBwcm9iZSBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzAxNSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjQwOjMzLjAxOTA4MjQxN1oiLCJTZXEiOjU0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTc2NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzNjUwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzY1MDpcXHRcXHRyZXR1cm4gZndub2RlX2ZpbmRfcmVmZXJlbmNlKGZ3bm9kZSwgXFxcInBoeS1kZXZpY2VcXFwiLCAwKTtcXG4zNjUxOlxcdH1cXG4zNjUyOlxcdEVYUE9SVF9TWU1CT0xfR1BMKGZ3bm9kZV9nZXRfcGh5X25vZGUpO1xcbjM2NTM6XFx0XFxuMzY1NDpcXHQvKipcXG4zNjU1OlxcdCAqIHBoeV9wcm9iZSAtIHByb2JlIGFuZCBpbml0IGEgUEhZIGRldmljZVxcbjM2NTY6XFx0ICogQGRldjogZGV2aWNlIHRvIHByb2JlIGFuZCBpbml0XFxuMzY1NzpcXHQgKlxcbjM2NTg6XFx0ICogVGFrZSBjYXJlIG9mIHNldHRpbmcgdXAgdGhlIHBoeV9kZXZpY2Ugc3RydWN0dXJlLCBzZXQgdGhlIHN0YXRlIHRvIFJFQURZLlxcbjM2NTk6XFx0ICovXFxuMzY2MDpcXHRzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuMzY2MTpcXHR7XFxuMzY2MjpcXHRcXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2ID0gdG9fcGh5X2RldmljZShkZXYpO1xcbjM2NjM6XFx0XFx0c3RydWN0IGRldmljZV9kcml2ZXIgKmRydiA9IHBoeWRldi1cXHUwMDNlbWRpby5kZXYuZHJpdmVyO1xcbjM2NjQ6XFx0XFx0c3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydiA9IHRvX3BoeV9kcml2ZXIoZHJ2KTtcXG4zNjY1OlxcdFxcdGludCBlcnIgPSAwO1xcbjM2NjY6XFx0XFxuMzY2NzpcXHRcXHRwaHlkZXYtXFx1MDAzZWRydiA9IHBoeWRydjtcXG4zNjY4OlxcdFxcbjM2Njk6XFx0XFx0LyogRGlzYWJsZSB0aGUgaW50ZXJydXB0IGlmIHRoZSBQSFkgZG9lc24ndCBzdXBwb3J0IGl0XFxuMzY3MDpcXHRcXHQgKiBidXQgdGhlIGludGVycnVwdCBpcyBzdGlsbCBhIHZhbGlkIG9uZVxcbjM2NzE6XFx0XFx0ICovXFxuMzY3MjpcXHRcXHRpZiAoIXBoeV9kcnZfc3VwcG9ydHNfaXJxKHBoeWRydikgXFx1MDAyNlxcdTAwMjYgcGh5X2ludGVycnVwdF9pc192YWxpZChwaHlkZXYpKVxcbjM2NzM6XFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2VpcnEgPSBQSFlfUE9MTDtcXG4zNjc0OlxcdFxcbjM2NzU6XFx0XFx0aWYgKHBoeWRydi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBQSFlfSVNfSU5URVJOQUwpXFxuMzY3NjpcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZWlzX2ludGVybmFsID0gdHJ1ZTtcXG4zNjc3OlxcdFxcbjM2Nzg6XFx0XFx0LyogRGVhc3NlcnQgdGhlIHJlc2V0IHNpZ25hbCAqL1xcbjM2Nzk6XFx0XFx0cGh5X2RldmljZV9yZXNldChwaHlkZXYsIDApO1xcbjM2ODA6XFx0XFxuMzY4MTpcXHRcXHRpZiAocGh5ZGV2LVxcdTAwM2VkcnYtXFx1MDAzZXByb2JlKSB7XFxuMzY4MjpcXHRcXHRcXHRlcnIgPSBwaHlkZXYtXFx1MDAzZWRydi1cXHUwMDNlcHJvYmUocGh5ZGV2KTtcXG4zNjgzOlxcdFxcdFxcdGlmIChlcnIpXFxuMzY4NDpcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4zNjg1OlxcdFxcdH1cXG4zNjg2OlxcdFxcbjM2ODc6XFx0XFx0cGh5X2Rpc2FibGVfaW50ZXJydXB0cyhwaHlkZXYpO1xcbjM2ODg6XFx0XFxuMzY4OTpcXHRcXHQvKiBTdGFydCBvdXQgc3VwcG9ydGluZyBldmVyeXRoaW5nLiBFdmVudHVhbGx5LFxcbjM2OTA6XFx0XFx0ICogYSBjb250cm9sbGVyIHdpbGwgYXR0YWNoLCBhbmQgbWF5IG1vZGlmeSBvbmVcXG4zNjkxOlxcdFxcdCAqIG9yIGJvdGggb2YgdGhlc2UgdmFsdWVzXFxuMzY5MjpcXHRcXHQgKi9cXG4zNjkzOlxcdFxcdGlmIChwaHlkcnYtXFx1MDAzZWZlYXR1cmVzKSB7XFxuMzY5NDpcXHRcXHRcXHRsaW5rbW9kZV9jb3B5KHBoeWRldi1cXHUwMDNlc3VwcG9ydGVkLCBwaHlkcnYtXFx1MDAzZWZlYXR1cmVzKTtcXG4zNjk1OlxcdFxcdFxcdGdlbnBoeV9jNDVfcmVhZF9lZWVfYWJpbGl0aWVzKHBoeWRldik7XFxuMzY5NjpcXHRcXHR9XFxuMzY5NzpcXHRcXHRlbHNlIGlmIChwaHlkcnYtXFx1MDAzZWdldF9mZWF0dXJlcylcXG4zNjk4OlxcdFxcdFxcdGVyciA9IHBoeWRydi1cXHUwMDNlZ2V0X2ZlYXR1cmVzKHBoeWRldik7XFxuMzY5OTpcXHRcXHRlbHNlIGlmIChwaHlkZXYtXFx1MDAzZWlzX2M0NSlcXG4zNzAwOlxcdFxcdFxcdGVyciA9IGdlbnBoeV9jNDVfcG1hX3JlYWRfYWJpbGl0aWVzKHBoeWRldik7XFxuMzcwMTpcXHRcXHRlbHNlXFxuMzcwMjpcXHRcXHRcXHRlcnIgPSBnZW5waHlfcmVhZF9hYmlsaXRpZXMocGh5ZGV2KTtcXG4zNzAzOlxcdFxcbjM3MDQ6XFx0XFx0aWYgKGVycilcXG4zNzA1OlxcdFxcdFxcdGdvdG8gb3V0O1xcbjM3MDY6XFx0XFxuMzcwNzpcXHRcXHRpZiAoIWxpbmttb2RlX3Rlc3RfYml0KEVUSFRPT0xfTElOS19NT0RFX0F1dG9uZWdfQklULFxcbjM3MDg6XFx0XFx0XFx0XFx0ICAgICAgIHBoeWRldi1cXHUwMDNlc3VwcG9ydGVkKSlcXG4zNzA5OlxcdFxcdFxcdHBoeWRldi1cXHUwMDNlYXV0b25lZyA9IDA7XFxuMzcxMDpcXHRcXG4zNzExOlxcdFxcdGlmIChsaW5rbW9kZV90ZXN0X2JpdChFVEhUT09MX0xJTktfTU9ERV8xMDAwYmFzZVRfSGFsZl9CSVQsXFxuMzcxMjpcXHRcXHRcXHRcXHQgICAgICBwaHlkZXYtXFx1MDAzZXN1cHBvcnRlZCkpXFxuMzcxMzpcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZWlzX2dpZ2FiaXRfY2FwYWJsZSA9IDE7XFxuMzcxNDpcXHRcXHRpZiAobGlua21vZGVfdGVzdF9iaXQoRVRIVE9PTF9MSU5LX01PREVfMTAwMGJhc2VUX0Z1bGxfQklULFxcbjM3MTU6XFx0XFx0XFx0XFx0ICAgICAgcGh5ZGV2LVxcdTAwM2VzdXBwb3J0ZWQpKVxcbjM3MTY6XFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2Vpc19naWdhYml0X2NhcGFibGUgPSAxO1xcbjM3MTc6XFx0XFxuMzcxODpcXHRcXHRvZl9zZXRfcGh5X3N1cHBvcnRlZChwaHlkZXYpO1xcbjM3MTk6XFx0XFxuMzcyMDpcXHRcXHRlcnIgPSBwaHlfc2V0dXBfcG9ydHMocGh5ZGV2KTtcXG4zNzIxOlxcdFxcdGlmIChlcnIpXFxuMzcyMjpcXHRcXHRcXHRnb3RvIG91dDtcXG4zNzIzOlxcdFxcbjM3MjQ6XFx0XFx0cGh5X2FkdmVydGlzZV9zdXBwb3J0ZWQocGh5ZGV2KTtcXG4zNzI1OlxcdFxcbjM3MjY6XFx0XFx0LyogR2V0IFBIWSBkZWZhdWx0IEVFRSBhZHZlcnRpc2luZyBtb2RlcyBhbmQgaGFuZGxlIHRoZW0gYXMgcG90ZW50aWFsbHlcXG4zNzI3OlxcdFxcdCAqIHNhZmUgaW5pdGlhbCBjb25maWd1cmF0aW9uLlxcbjM3Mjg6XFx0XFx0ICovXFxuMzcyOTpcXHRcXHRlcnIgPSBnZW5waHlfYzQ1X3JlYWRfZWVlX2FkdihwaHlkZXYsIHBoeWRldi1cXHUwMDNlYWR2ZXJ0aXNpbmdfZWVlKTtcXG4zNzMwOlxcdFxcdGlmIChlcnIpXFxuMzczMTpcXHRcXHRcXHRnb3RvIG91dDtcXG4zNzMyOlxcdFxcbjM3MzM6XFx0XFx0LyogR2V0IHRoZSBFRUUgbW9kZXMgd2Ugd2FudCB0byBwcm9oaWJpdC4gKi9cXG4zNzM0OlxcdFxcdG9mX3NldF9waHlfZWVlX2Jyb2tlbihwaHlkZXYpO1xcbjM3MzU6XFx0XFxuMzczNjpcXHRcXHQvKiBTb21lIFBIWXMgbWF5IGFkdmVydGlzZSwgYnkgZGVmYXVsdCwgbm90IHN1cHBvcnQgRUVFIG1vZGVzLiBTbyxcXG4zNzM3OlxcdFxcdCAqIHdlIG5lZWQgdG8gY2xlYW4gdGhlbS4gSW4gYWRkaXRpb24gcmVtb3ZlIGFsbCBkaXNhYmxlZCBFRUUgbW9kZXMuXFxuMzczODpcXHRcXHQgKi9cXG4zNzM5OlxcdFxcdGxpbmttb2RlX2FuZChwaHlkZXYtXFx1MDAzZWFkdmVydGlzaW5nX2VlZSwgcGh5ZGV2LVxcdTAwM2VzdXBwb3J0ZWRfZWVlLFxcbjM3NDA6XFx0XFx0XFx0ICAgICBwaHlkZXYtXFx1MDAzZWFkdmVydGlzaW5nX2VlZSk7XFxuMzc0MTpcXHRcXHRsaW5rbW9kZV9hbmRub3QocGh5ZGV2LVxcdTAwM2VhZHZlcnRpc2luZ19lZWUsIHBoeWRldi1cXHUwMDNlYWR2ZXJ0aXNpbmdfZWVlLFxcbjM3NDI6XFx0XFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2VlZWVfZGlzYWJsZWRfbW9kZXMpO1xcbjM3NDM6XFx0XFxuMzc0NDpcXHRcXHQvKiBUaGVyZSBpcyBubyBcXFwiZW5hYmxlZFxcXCIgZmxhZy4gSWYgUEhZIGlzIGFkdmVydGlzaW5nLCBhc3N1bWUgaXQgaXNcXG4zNzQ1OlxcdFxcdCAqIGtpbmQgb2YgZW5hYmxlZC5cXG4zNzQ2OlxcdFxcdCAqL1xcbjM3NDc6XFx0XFx0cGh5ZGV2LVxcdTAwM2VlZWVfY2ZnLmVlZV9lbmFibGVkID0gIWxpbmttb2RlX2VtcHR5KHBoeWRldi1cXHUwMDNlYWR2ZXJ0aXNpbmdfZWVlKTtcXG4zNzQ4OlxcdFxcbjM3NDk6XFx0XFx0LyogR2V0IG1hc3Rlci9zbGF2ZSBzdHJhcCBvdmVycmlkZXMgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6NDA6MzMuMDE5MzgzNTg3WiIsIlNlcSI6NTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3ODE4NDc3MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBQSFkgRHJpdmVyIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IGhvdyBgZGFwODIxMXJfY29uZmlnX2luaXRgIGFjdHVhbGx5IGdldHMgY2FsbGVkLiBUaGUgY3J1Y2lhbCByZWFsaXphdGlvbiBpcyB0aGF0IGBwaHlfcHJvYmVgICpkb2Vzbid0KiBpbml0aWF0ZSBgY29uZmlnX2luaXRgLiBUaGF0IG1lYW5zIGBkYXA4MjExcl9jb25maWdfaW5pdGAgd2lsbCBvbmx5IHJ1biBpZiBhIE1BQyBkcml2ZXIgc3VjY2Vzc2Z1bGx5IGF0dGFjaGVzIHRvIHRoZSBQSFkuIFRoYXQncyB0aGUga2V5LiBOb3csIGNhbiBzeXprYWxsZXIgYWNoaWV2ZSB0aGF0IGF0dGFjaG1lbnQ/XG5cbklmIHN5emthbGxlciBjcmVhdGVzIGEgUEhZIGRldmljZSB1c2luZyB0aGUgYG1kaW8tbXZ1c2JgIGRyaXZlciwgYXMgSSBzdXNwZWN0IGl0IG1pZ2h0LCB0aGF0IFBIWSBpcyBqdXN0IGdvaW5nIHRvIGJlIHNpdHRpbmcgdGhlcmUgb24gdGhlIE1ESU8gYnVzLiBObyBNQUMgZHJpdmVyIHdpbGwgYXV0b21hdGljYWxseSBsaW5rIHVwIHdpdGggaXQganVzdCBieSBleGlzdGluZy4gSSBuZWVkIHRvIGZvcmNlIHRoZSBhc3NvY2lhdGlvbi5cblxuUmlnaHQsIGBkc2FfbG9vcGAgKmRvZXMqIGF0dGFjaCB0byBmaXhlZCBQSFlzLCB3aGljaCBnaXZlcyBtZSBhbiBpZGVhLiBCdXQgaXMgdGhlcmUgYSBtZXRob2QgdG8gY29ubmVjdCBhIE1BQyB0byBhbiBhcmJpdHJhcnkgUEhZPyBJIGNvdWxkIGxvb2sgYXQgYFNJT0NTTUlJUkVHYCwgYnV0IHRoYXQncyBqdXN0IGZvciByZWdpc3RlciBhY2Nlc3MsIG5vdCBhdHRhY2htZW50LiBgbmV0ZGV2c2ltYCBpcyBhIGRlYWQgZW5kOyBubyBQSFkgdXNhZ2UgdGhlcmUuIEFuZCBgbWFjbWFjYD8gTm9wZS5cblxuQWhhISBDb3VsZCBzeXprYWxsZXIgbGV2ZXJhZ2UgYHN5el9nZW5ldGxpbmtfZ2V0X2ZhbWlseWAgb3Igc2ltaWxhciBtZWNoYW5pc21zPyBDYW4gSSBtYW5pcHVsYXRlIHRoZSBrZXJuZWwgc3RhdGUgc29tZWhvdyB0byB0cmlnZ2VyIGBwaHlfYXR0YWNoX2RpcmVjdGAgb3IgYHBoeV9jb25uZWN0YCBmcm9tIHVzZXJzcGFjZT8gVGhhdCdzIHRoZSBpbXBvcnRhbnQgcGllY2UuIExldCBtZSBjaGVjayB3aGVyZSBgcGh5X2F0dGFjaF9kaXJlY3RgIGlzIHVzZWQgYW5kIHNlZSBpZiBJIGNhbiBmaW5kIGEgdXNlci1zcGFjZSBjb250cm9sbGFibGUgcGF0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg4MjUsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTo0MDozOC44MDEyMzY1MDZaIiwiU2VxIjo1NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwOTQ3NjYzMywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5X2F0dGFjaF9kaXJlY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6NDA6MzkuMTEwNzI0ODE4WiIsIlNlcSI6NTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NDc2MzY0NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipOZXR3b3JrIERyaXZlciBEZWJ1Z2dpbmcgLSBXaGVyZSB0byBCZWdpbioqXG5cbk9rYXksIHNvIEknbSB0cm91Ymxlc2hvb3RpbmcgYSBuZXR3b3JrIGRyaXZlciBpc3N1ZSwgYW5kIEkndmUgZ290IGEgaHVuY2ggaXQncyBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgUEhZIChQaHlzaWNhbCBMYXllcikuIFRpbWUgdG8gZGl2ZSBpbi4gTXkgZmlyc3QgaW5zdGluY3QsIGFuZCB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0LCBpcyB0aGUgYGRyaXZlcnMvbmV0L2AgZGlyZWN0b3J5LiBUaGF0J3MgdGhlIGdvLXRvIGxvY2F0aW9uIGZvciBuZXR3b3JrIGRyaXZlciBjb2RlLCBvYnZpb3VzbHkuIE5vdywgd2hhdCBhbSBJIGxvb2tpbmcgZm9yIHdpdGhpbiB0aGF0IG1hc3NpdmUgY29kZWJhc2U/IFdlbGwsIEkgbmVlZCB0byBjaGVjayB0aGUgcG90ZW50aWFsIGNvbm5lY3Rpb24gcG9pbnRzIG9mIHRoZSBQSFkuIEkgYW0gZ29pbmcgdG8gc2VhcmNoIGZvciBgcGh5X2F0dGFjaF9kaXJlY3RgIG9yIGBwaHlfY29ubmVjdGAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcHJldHR5IHN0YW5kYXJkIGZvciBlc3RhYmxpc2hpbmcgYSBkaXJlY3Qgb3Igc3RhbmRhcmQgY29ubmVjdGlvbiB0byBhIFBIWSwgYW5kIGFyZSBsaWtlbHkgZW50cnkgcG9pbnRzIHRvIHRoZSBjb2RlIEkgYW0gaW50ZXJlc3RlZCBpbi4gVGhpcyB3aWxsIGdpdmUgbWUgYSBwb2ludCBvZiBkZXBhcnR1cmUgdG8gaW52ZXN0aWdhdGUgdGhlIFBIWSBjb25uZWN0aW9uIGxvZ2ljLCBlcnJvciBoYW5kbGluZywgYW5kIHJlc291cmNlIGFsbG9jYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5NDMxLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6NDA6NDIuOTU4MzY1Mzc1WiIsIlNlcSI6NTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTY0MjU2NDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5X2Nvbm5lY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jPTYwNz1zdGF0aWMgaW50IGJjbV9zZjJfbWRpb19yZWdpc3RlcihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTY1Ni1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjY1NzpcXHQvKiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IG9mX3BoeV9jb25uZWN0KCkgd2lsbCBub3Qgd29yayBieVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNjU4LVxcdCAqIHJlbW92aW5nIHRoZSAncGhhbmRsZScgYW5kICdsaW51eCxwaGFuZGxlJyBwcm9wZXJ0aWVzIGFuZFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmM9OTY4PXN0YXRpYyBib29sIG5ldGNfcG9ydF9pc19lbWRpb19jb25zdW1lcihzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy05ODQtXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmM6OTg1Oi8qIEN1cnJlbnRseSwgcGh5bGlua19vZl9waHlfY29ubmVjdCgpIGlzIGNhbGxlZCBieSBkc2FfdXNlcl9jcmVhdGUoKSxcXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy05ODYtICogc28gaWYgdGhlIHN3aXRjaCB1c2VzIHRoZSBleHRlcm5hbCBNRElPIGNvbnRyb2xsZXIgKGxpa2UgdGhlIEVNRElPXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtOTg3LSAqIGZ1bmN0aW9uKSB0byBtYW5hZ2UgdGhlIGV4dGVybmFsIFBIWXMuIFRoZSBNRElPIGJ1cyBtYXkgbm90IGJlXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmM6OTg4OiAqIGNyZWF0ZWQgd2hlbiBwaHlsaW5rX29mX3BoeV9jb25uZWN0KCkgaXMgY2FsbGVkLCBzbyBpdCB3aWxsIHJldHVyblxcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTk4OS0gKiBhbiBlcnJvciBhbmQgY2F1c2UgdGhlIHN3aXRjaCBkcml2ZXIgdG8gZmFpbCB0byBwcm9iZS5cXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzo5OTA6ICogVGhpcyB3b3JrYXJvdW5kIGNhbiBiZSByZW1vdmVkIHdoZW4gRFNBIHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QoKVxcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTk5MS0gKiBjYWxscyBhcmUgbW92ZWQgZnJvbSBwcm9iZSgpIHRvIG5kb19vcGVuKCkuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjQwOjQzLjE3NDc5NzY1WiIsIlNlcSI6NTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3ODkxMTEwODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBhIENvbm5lY3Rpb24gU2NlbmFyaW8qKlxuXG5BbHJpZ2h0LCBJJ20gdHJ5aW5nIHRvIHdyYXAgbXkgaGVhZCBhcm91bmQgdGhpcyBzeXN0ZW0sIGFuZCBteSBmaXJzdCB0aG91Z2h0IGltbWVkaWF0ZWx5IGp1bXBzIHRvIGBkc2FfdXNlcl9waHlfY29ubmVjdGAuIFRoYXQgZnVuY3Rpb24gbmFtZSBoYXMgYSB2ZXJ5IHNwZWNpZmljIGNvbm5vdGF0aW9uLCBkb2Vzbid0IGl0PyBJdCBzdWdnZXN0cyBhIGRpcmVjdCBwaHlzaWNhbCBjb25uZWN0aW9uIG9yIGludGVyYWN0aW9uIGF0IHRoZSB1c2VyIGxldmVsLCB3aXRoaW4gdGhlIERvbWFpbiBTcGVjaWZpYyBBcmNoaXRlY3R1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBzcGVjaWZpY2FsbHkgKmRvZXMqIGFuZCB3aGF0IGl0ICptZWFucyogaW4gdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnQgcHJvYmxlbS4gSXMgdGhpcyBhIGRyaXZlciBjYWxsPyBBIG5ldHdvcmsgc2V0dXAgZnVuY3Rpb24/IElzIHRoaXMgcmVsYXRlZCB0byBzb21lIGZvcm0gb2YgaGFyZHdhcmUgaGFuZC1vZmY/IEkgbmVlZCBtb3JlIGNvbnRleHQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGNhbGxpbmcgdGhpcyByb3V0aW5lLiBXaGF0IHByb3RvY29scyBvciBpbnRlcmZhY2VzIGFyZSBiZWluZyB1c2VkIGhlcmU/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMTc1LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6NDA6NDYuOTYzOTEzNjU3WiIsIlNlcSI6NjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzQ1MTU5OTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRzYV91c2VyX3BoeV9jb25uZWN0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9kc2EvdXNlci5jPTI2MjQ9c3RhdGljIHZvaWQgZHNhX3VzZXJfcGh5bGlua19maXhlZF9zdGF0ZShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG4tLVxcbm5ldC9kc2EvdXNlci5jLTI2MzYtLyogdXNlciBkZXZpY2Ugc2V0dXAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5uZXQvZHNhL3VzZXIuYzoyNjM3OnN0YXRpYyBpbnQgZHNhX3VzZXJfcGh5X2Nvbm5lY3Qoc3RydWN0IG5ldF9kZXZpY2UgKnVzZXJfZGV2LCBpbnQgYWRkcixcXG5uZXQvZHNhL3VzZXIuYy0yNjM4LVxcdFxcdFxcdFxcdHUzMiBmbGFncylcXG4tLVxcbm5ldC9kc2EvdXNlci5jPTI2NTQ9c3RhdGljIGludCBkc2FfdXNlcl9waHlfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKnVzZXJfZGV2KVxcbi0tXFxubmV0L2RzYS91c2VyLmMtMjY4NS1cXHRcXHQgKi9cXG5uZXQvZHNhL3VzZXIuYzoyNjg2OlxcdFxcdHJldCA9IGRzYV91c2VyX3BoeV9jb25uZWN0KHVzZXJfZGV2LCBkcC1cXHUwMDNlaW5kZXgsIHBoeV9mbGFncyk7XFxubmV0L2RzYS91c2VyLmMtMjY4Ny1cXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjQwOjUxLjcwOTA4MTUyMloiLCJTZXEiOjYxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMTM1MzI5NTkxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgREFQODIxMVIgUEhZIERyaXZlciBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIHRoZSBgZHNhX3VzZXJfcGh5X3NldHVwYCBmdW5jdGlvbiBpcyBrZXkgaGVyZS4gSXQgbG9va3MgbGlrZSB3aGVuIGEgRFNBIHVzZXIgZGV2aWNlIGlzIGNyZWF0ZWQsIGFuZCBpZiBzeXprYWxsZXIgY29uc3RydWN0cyBhIERTQSBzd2l0Y2ggdXNpbmcgYSBkZXZpY2UgdHJlZSBvdmVybGF5LCBhIFBIWSBub2RlIGNhbiBiZSBzcGVjaWZpZWQuIFRoaXMgc2V0dXAgdGhlbiBjYWxscyBlaXRoZXIgYHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3RgIG9yIGBkc2FfdXNlcl9waHlfY29ubmVjdGAsIHdoaWNoIHVsdGltYXRlbHkgYXR0YWNoZXMgdGhlIFBIWS4gVGhlIGNyaXRpY2FsIHBvaW50IGlzIHRoYXQgc3l6a2FsbGVyICpjYW4qIGluamVjdCB0aGVzZSBkZXZpY2UgdHJlZSBvdmVybGF5cy5cblxuSWYgc3l6a2FsbGVyIGNyYWZ0cyBhIERUIG92ZXJsYXkgd2l0aCBhIERTQSBzd2l0Y2ggYW5kIGEgUEhZIG5vZGUgdGhhdCBzcGVjaWZpZXMgdGhlIGBldGhlcm5ldC1waHktaWQwMDA4LjAxMWJgIGNvbXBhdGlibGUgc3RyaW5nLCB0aGVuIHRoZSBgZGFwODIxMXJfY29uZmlnX2luaXRgIGZ1bmN0aW9uICpzaG91bGQqIGJlIGNhbGxlZC4gVGhlIHF1ZXN0aW9uIGlzLCBkb2VzIHN5emthbGxlciAqYWN0dWFsbHkqIGRvIHRoaXM/IEkgY2FuJ3QgY2hlY2sgdGhlIHN5emthbGxlciBzb3VyY2UgZGlyZWN0bHksIGJ1dCB0aGUgYXNzdW1wdGlvbiBpcyB0aGF0IGlmIGl0J3MgcmVhY2hhYmxlIHZpYSBEVCBvdmVybGF5LCBpdCBpcywgaW4gdGhlb3J5LCByZWFjaGFibGUgZm9yIGZ1enppbmcuXG5cbk5vdywgbG9va2luZyBhdCBgZGFwODIxMXJfY29uZmlnX2luaXRgLCBpdCdzIGEgdmVyeSBzdHJhaWdodGZvcndhcmQgZnVuY3Rpb24uIEl0IHJlYWRzIGByeC1pbnRlcm5hbC1kZWxheS1wc2AgYW5kIGB0eC1pbnRlcm5hbC1kZWxheS1wc2AgcHJvcGVydGllcyBmcm9tIHRoZSBkZXZpY2UgdHJlZSwgZG9lcyBzb21lIGJpdCBtYW5pcHVsYXRpb24sIGFuZCB3cml0ZXMgdG8gTURJTyByZWdpc3RlcnMuIEl0J3MgcmVhbGx5IGp1c3QgaW5pdGlhbGl6aW5nIHRoZSBQSFkuIERvZXMgdGhpcyBxdWFsaWZ5IGFzIFwiY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXNcIiB0aGF0IHNob3VsZCBiZSBmdXp6ZWQ/XG5cblRoaXMgZHJpdmVyIGlzIGhhcmR3YXJlLXNwZWNpZmljIGFuZCBvbmx5IHdyaXRlcyB0byByZWdpc3RlcnMsIHdpdGggbWluaW1hbCBpbnRlcmFjdGlvbiB3aXRoIHVzZXJzcGFjZS4gVGhpcyBpc24ndCBpbmhlcmVudGx5IGV4Y2l0aW5nIGZvciBmdXp6aW5nLCBidXQgaXQgKmlzKiBmdW5jdGlvbmFsIGNvZGUuIE5vdywgdGhlIHByb21wdCBnaXZlcyBjcml0ZXJpYSBmb3IgKm5vdCogZnV6emluZywgYW5kIGl0IHNwZWNpZmljYWxseSBtZW50aW9ucyB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyBmb3IgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFVzIHRoYXQgcmVxdWlyZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBQSFkgZHJpdmVyLiBJdCByZXF1aXJlcyBhIHBoeXNpY2FsIERBUDgyMTFSIGNoaXAuIElzIGl0IGVtdWxhdGVkIGluIFFFTVU/IE5vLlxuXG5UaGVvcmV0aWNhbGx5LCBpZiBzeXprYWxsZXIgdXNlcyBzb21ldGhpbmcgbGlrZSBgbWRpby1tdnVzYmAgYW5kIGEgdmlydHVhbCBoYXJkd2FyZSBjb250ZXh0LCBpdCBjb3VsZCAqcmVhY2gqIHRoaXMgZHJpdmVyLiBCdXQgZXZlbiBpZiBpdCBjYW4sIGRvZXMgaXQgKmRvKiBhbnl0aGluZyBtZWFuaW5nZnVsPyAgSWYgdGhlcmUncyBubyByZWFsIGhhcmR3YXJlLCB0aGUgTURJTyByZWFkcyByZXR1cm4gZ2FyYmFnZSAobGlrZSBhbGwgemVyb3MpLiBUaGUgYHJlYWRfcG9sbF90aW1lb3V0YCB3YWl0cyBmb3IgdGhlIHJlc2V0IGJpdCB0byBjbGVhciwgc28gaWYgaXQgcmVhZHMgemVyb2VzIGZyb20gYSBtb2NrIGJ1cywgaXQgd2lsbCB0aW1lIG91dCBhbmQgZmFpbC4gU28sIHRoaXMgY29kZSBwYXRoIHdpbGwgbGlrZWx5IGVycm9yIG91dC5cblxuVGhlbiBJIHJlYWQgdGhlIHByb21wdCBhZ2Fpbi4gSXQgZXhwbGljaXRseSBzYXlzLCBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZVwiLiBUaGlzIHNwZWNpZmljIFBIWSBjaGlwIGlzIGNvbnNpZGVyZWQgXCJpbXBvc3NpYmxlIHRvIHJlYWNoXCIuXG5cblRoZSBwcm9tcHQgc3RhdGVzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBmb3IgdmVuZG9yc3BlY2lmaWMgZHJpdmVycyBmb3IgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIFFFTVUuICBUaGlzIGRyaXZlciBmaXRzIHRoYXQgZGVzY3JpcHRpb24uIFRoZSBcIlBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVXCIgZXhhbXBsZXMgYXJlIGp1c3QgZXhhbXBsZXM7IHRoZSAqcHJpbmNpcGxlKiBpcyB3aGF0IG1hdHRlcnMg4oCTIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnMgZm9yIHVuZW11bGF0ZWQgaGFyZHdhcmUuXG5cblNvLCBsZXQncyBzYXkgc3l6a2FsbGVyICpjYW4qIGluamVjdCByZXNwb25zZXMgYW5kIHBhc3MgdGhlIGByZWFkX3BvbGxfdGltZW91dGAuLi4gd2hhdCdzIGxlZnQ/IEl0J3MganVzdCBhIHNpbmdsZSBgZGFwODIxMXJfbW9kaWZ5X2V4dGAgY2FsbCBhZnRlciB0aGUgd2FpdCBsb29wLiBUaGVyZSdzIG5vIGNvbXBsZXggbG9naWMsIG5vIG1lbW9yeSBhbGxvY2F0aW9uLCBhbmQgbm8gaW50ZXJhY3Rpb24gd2l0aCB0aGUgdXNlcnNwYWNlLiBKdXN0IHJlZ2lzdGVyIHdyaXRlcy4gIElzIHRoYXQgd29ydGggZnV6emluZz9cblxuVGhlIGNvbmNsdXNpb24gaXMgYFdvcnRoRnV6emluZz1mYWxzZWAgYmVjYXVzZSBpdCdzIGEgdmVuZG9yLXNwZWNpZmljIFBIWSBkcml2ZXIgZm9yIHVuZW11bGF0ZWQgaGFyZHdhcmUuIEl0IGNvbnRhaW5zIG9ubHkgdHJpdmlhbCByZWdpc3RlciBpbml0aWFsaXphdGlvbiBsb2dpYy5cbkxldCdzIGp1c3QgZG91YmxlIGNoZWNrLCB0aGF0IGBkYXA4MjExcl9jb25maWdfaW5pdGAgaXMgdGhlIG9ubHkgY3VzdG9tIGZ1bmN0aW9uLiBDaGVja2luZyB0aGUgYGRhcDgyMTFyX2RyaXZlcmAsIHRoYXQgaXMgY29ycmVjdC4gSXQgaXMganVzdCBgZGFwODIxMXJfY29uZmlnX2luaXRgIGFuZCBhbGwgb3RoZXIgZnVuY3Rpb25zIGFyZSBnZW5lcmljIFBIWSBmdW5jdGlvbnMuXG5cbkZpbmFsIGRlY2lzaW9uOiBgV29ydGhGdXp6aW5nPWZhbHNlYFxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDYyOSwiT3V0cHV0VG9rZW5zIjoxMzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDA5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjQxOjEzLjA2MjM4MDk3MVoiLCJTZXEiOjYyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4OTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSB2ZW5kb3Itc3BlY2lmaWMgUEhZIGRyaXZlciBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWS4gVGhlIGRyaXZlciBvbmx5IGNvbnRhaW5zIHRyaXZpYWwgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gbG9naWMgKHJlYWRpbmcgZGV2aWNlIHRyZWUgcHJvcGVydGllcyBhbmQgd3JpdGluZyB0byBNRElPIHJlZ2lzdGVycykgYW5kIHJlbGllcyBvbiBnZW5lcmljIFBIWSBmdW5jdGlvbnMgZm9yIGFsbCBvdGhlciBvcGVyYXRpb25zLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCBhbmQgZXZlbiBpZiByZWFjaGVkIHZpYSBhIG1vY2sgTURJTyBidXMsIHRoZSBjb2RlIGxhY2tzIGNvbXBsZXggbG9naWMsIG1lbW9yeSBtYW5hZ2VtZW50LCBvciB1c2Vyc3BhY2UgaW50ZXJmYWNlcyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHZlbmRvci1zcGVjaWZpYyBQSFkgZHJpdmVyIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZLiBUaGUgZHJpdmVyIG9ubHkgY29udGFpbnMgdHJpdmlhbCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBsb2dpYyAocmVhZGluZyBkZXZpY2UgdHJlZSBwcm9wZXJ0aWVzIGFuZCB3cml0aW5nIHRvIE1ESU8gcmVnaXN0ZXJzKSBhbmQgcmVsaWVzIG9uIGdlbmVyaWMgUEhZIGZ1bmN0aW9ucyBmb3IgYWxsIG90aGVyIG9wZXJhdGlvbnMuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIGFuZCBldmVuIGlmIHJlYWNoZWQgdmlhIGEgbW9jayBNRElPIGJ1cywgdGhlIGNvZGUgbGFja3MgY29tcGxleCBsb2dpYywgbWVtb3J5IG1hbmFnZW1lbnQsIG9yIHVzZXJzcGFjZSBpbnRlcmZhY2VzIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowkbqhh[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-27 18:55:38 +0000 UTC FinishedAt: 2026-07-27 19:41: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+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSB2ZW5kb3Itc3BlY2lmaWMgUEhZIGRyaXZlciBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWS4gVGhlIGRyaXZlciBvbmx5IGNvbnRhaW5zIHRyaXZpYWwgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gbG9naWMgKHJlYWRpbmcgZGV2aWNlIHRyZWUgcHJvcGVydGllcyBhbmQgd3JpdGluZyB0byBNRElPIHJlZ2lzdGVycykgYW5kIHJlbGllcyBvbiBnZW5lcmljIFBIWSBmdW5jdGlvbnMgZm9yIGFsbCBvdGhlciBvcGVyYXRpb25zLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCBhbmQgZXZlbiBpZiByZWFjaGVkIHZpYSBhIG1vY2sgTURJTyBidXMsIHRoZSBjb2RlIGxhY2tzIGNvbXBsZXggbG9naWMsIG1lbW9yeSBtYW5hZ2VtZW50LCBvciB1c2Vyc3BhY2UgaW50ZXJmYWNlcyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTozNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDU2MTdhZDM0OGE5NzJiNjI2ZTdmYTcxZGRiNjI4NGVlYThhYzc1YTdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyNyAxOTozNTo1OCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RhcHUsZGFwODIxMXIueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZGFwdSxkYXA4MjExci55YW1sXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmJhOWIzMDFlYTFmNTEzXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RhcHUsZGFwODIxMXIueWFtbFxuQEAgLTAsMCAmIzQzOzEsNjMgQEBcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAtb25seSBPUiBCU0QtMi1DbGF1c2UpXG4mIzQzOyVZQU1MIDEuMlxuJiM0MzstLS1cbiYjNDM7JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvZGFwdSxkYXA4MjExci55YW1sI1xuJiM0Mzskc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcbiYjNDM7XG4mIzQzO3RpdGxlOiBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFlcbiYjNDM7XG4mIzQzO21haW50YWluZXJzOlxuJiM0MzsgIC0gQXJ0ZW0gU2hpbWtvIFx1MDAzY2Euc2hpbWtvLmRldkBnbWFpbC5jb21cdTAwM2VcbiYjNDM7XG4mIzQzO2Rlc2NyaXB0aW9uOiB8XG4mIzQzOyAgVGhlIERBUDgyMTFSKEkpIGlzIGEgR2lnYWJpdCBFdGhlcm5ldCBQSFkgd2l0aCBSR01JSSBpbnRlcmZhY2UsXG4mIzQzOyAgc3VwcG9ydGluZyBJRUVFIDgwMi4zYXogRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCwgSUVFRSAxNTg4IFN5bmNFLFxuJiM0MzsgIGFuZCBhbiBpbnRlcm5hbCBwYWNrZXQgZ2VuZXJhdG9yIGZvciBkaWFnbm9zdGljcy5cbiYjNDM7XG4mIzQzOyAgU3BlY2lmaWNhdGlvbnM6XG4mIzQzOyAgICAtIDEwQkFTRS1UZSwgMTAwQkFTRS1UWCwgMTAwMEJBU0UtVFxuJiM0MzsgICAgLSBSR01JSSB3aXRoIGNvbmZpZ3VyYWJsZSBUWC9SWCBjbG9jayBkZWxheXMgKDE1MCBwcyBzdGVwcywgMC0yMjUwIHBzKVxuJiM0MzsgICAgLSBJRUVFIDgwMi4zYXotMjAxMCBFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0XG4mIzQzOyAgICAtIElFRUUgMTU4OCBTeW5jRSBzdXBwb3J0XG4mIzQzOyAgICAtIEludGVybmFsIHBhY2tldCBnZW5lcmF0b3IgYW5kIGNoZWNrZXIgZm9yIGxpbmsgZGlhZ25vc3RpY3NcbiYjNDM7XG4mIzQzO2FsbE9mOlxuJiM0MzsgIC0gJHJlZjogZXRoZXJuZXQtcGh5LnlhbWwjXG4mIzQzO1xuJiM0Mztwcm9wZXJ0aWVzOlxuJiM0MzsgIGNvbXBhdGlibGU6XG4mIzQzOyAgICBjb25zdDogZXRoZXJuZXQtcGh5LWlkMDAwOC4wMTFiXG4mIzQzO1xuJiM0MzsgIHJlZzpcbiYjNDM7ICAgIG1heEl0ZW1zOiAxXG4mIzQzO1xuJiM0MzsgIHJ4LWludGVybmFsLWRlbGF5LXBzOlxuJiM0MzsgICAgZGVzY3JpcHRpb246XG4mIzQzOyAgICAgIFJHTUlJIFJYIGNsb2NrIGRlbGF5IGluIHBpY29zZWNvbmRzICgwIHRvIG1heGltdW0pLlxuJiM0MzsgICAgbXVsdGlwbGVPZjogMTUwXG4mIzQzOyAgICBtYXhpbXVtOiAyMjUwXG4mIzQzOyAgICBkZWZhdWx0OiAxOTUwXG4mIzQzO1xuJiM0MzsgIHR4LWludGVybmFsLWRlbGF5LXBzOlxuJiM0MzsgICAgZGVzY3JpcHRpb246XG4mIzQzOyAgICAgIFJHTUlJIFRYIGNsb2NrIGRlbGF5IGluIHBpY29zZWNvbmRzICgwIHRvIG1heGltdW0pLlxuJiM0MzsgICAgbXVsdGlwbGVPZjogMTUwXG4mIzQzOyAgICBtYXhpbXVtOiAyMjUwXG4mIzQzOyAgICBkZWZhdWx0OiAxOTUwXG4mIzQzO1xuJiM0Mzt1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlXG4mIzQzO1xuJiM0MztleGFtcGxlczpcbiYjNDM7ICAtIHxcbiYjNDM7ICAgIG1kaW8ge1xuJiM0MzsgICAgICAgICNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7ICAgICAgICAjc2l6ZS1jZWxscyA9IFx1MDAzYzBcdTAwM2U7XG4mIzQzO1xuJiM0MzsgICAgICAgIGV0aGVybmV0LXBoeUAxIHtcbiYjNDM7ICAgICAgICAgICAgY29tcGF0aWJsZSA9IFwmIzM0O2V0aGVybmV0LXBoeS1pZDAwMDguMDExYlwmIzM0OztcbiYjNDM7ICAgICAgICAgICAgcmVnID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7ICAgICAgICAgICAgcngtaW50ZXJuYWwtZGVsYXktcHMgPSBcdTAwM2MyMTAwXHUwMDNlO1xuJiM0MzsgICAgICAgICAgICB0eC1pbnRlcm5hbC1kZWxheS1wcyA9IFx1MDAzYzIxMDBcdTAwM2U7XG4mIzQzOyAgICAgICAgfTtcbiYjNDM7ICAgIH07XG4mIzQzO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnIGIvZHJpdmVycy9uZXQvcGh5L0tjb25maWdcbmluZGV4IDA5OWYyNWRjZWFiYmM3Li40NTc2ZjcwN2FjOTQ0NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvS2NvbmZpZ1xuQEAgLTIzNyw2ICYjNDM7MjM3LDE2IEBAIGNvbmZpZyBEQVZJQ09NX1BIWVxuIFx0aGVscFxuIFx0ICBDdXJyZW50bHkgc3VwcG9ydHMgZG05MTYxZSBhbmQgZG05MTMxXG4gXG4mIzQzO2NvbmZpZyBEQVA4MjExUl9QSFlcbiYjNDM7XHR0cmlzdGF0ZSBcJiMzNDtEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFlcJiMzNDtcbiYjNDM7XHRkZXBlbmRzIG9uIE9GXG4mIzQzO1x0aGVscFxuJiM0MztcdCAgU3VwcG9ydCBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWS5cbiYjNDM7XHQgIFRoaXMgUEhZIGlzIGRlc2lnbmVkIGZvciBlbnRlcnByaXNlIGFuZCBpbmR1c3RyaWFsIG5ldHdvcmtpbmdcbiYjNDM7XHQgIGFwcGxpY2F0aW9ucywgc3VwcG9ydGluZyAxMC8xMDAvMTAwMCBNYnBzIG9wZXJhdGlvbi5cbiYjNDM7XHQgIFJHTUlJIHdpdGg6IGNvbmZpZ3VyYWJsZSBUWC9SWCBjbG9jayBkZWxheXMsIG9wdGlvbmFsIGZsYWcgdG8gZW5hYmxlXG4mIzQzO1x0ICAxODAtZGVncmVlIFRYIGNsb2NrIHBoYXNlIHNoaWZ0IGFuZCBpbnRlcm5hbCBwYWNrZXQgZ2VuZXJhdG9yLlxuJiM0MztcbiBjb25maWcgSUNQTFVTX1BIWVxuIFx0dHJpc3RhdGUgXCYjMzQ7SUNQbHVzIFBIWXNcJiMzNDtcbiBcdGhlbHBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGVcbmluZGV4IGRlNjYwYWU5NDk0NTNkLi5hZDM1NzMzZWI0YmI2MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZVxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXG5AQCAtNTMsNiAmIzQzOzUzLDcgQEAgb2JqLSQoQ09ORklHX0JST0FEQ09NX1BIWSlcdCYjNDM7PSBicm9hZGNvbS5vXG4gb2JqLSQoQ09ORklHX0NJQ0FEQV9QSFkpXHQmIzQzOz0gY2ljYWRhLm9cbiBvYmotJChDT05GSUdfQ09SVElOQV9QSFkpXHQmIzQzOz0gY29ydGluYS5vXG4gb2JqLSQoQ09ORklHX0RBVklDT01fUEhZKVx0JiM0Mzs9IGRhdmljb20ub1xuJiM0MztvYmotJChDT05GSUdfREFQODIxMVJfUEhZKVx0JiM0Mzs9IGRhcDgyMTFyLm9cbiBvYmotJChDT05GSUdfRFA4MzY0MF9QSFkpXHQmIzQzOz0gZHA4MzY0MC5vXG4gb2JqLSQoQ09ORklHX0RQODM4MjJfUEhZKVx0JiM0Mzs9IGRwODM4MjIub1xuIG9iai0kKENPTkZJR19EUDgzODQ4X1BIWSlcdCYjNDM7PSBkcDgzODQ4Lm9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYyBiL2RyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjY1ZDZmZWY4NmYyNmI3XG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuY1xuQEAgLTAsMCAmIzQzOzEsMjA2IEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUExcbiYjNDM7LypcbiYjNDM7ICogRHJpdmVyIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZLlxuJiM0MzsgKlxuJiM0MzsgKiBTcGVjaWZpY2F0aW9uczpcbiYjNDM7ICogICAtIElFRUUgODAyLjMgMTBCQVNFLVRlLCAxMDBCQVNFLVRYLCAxMDAwQkFTRS1UXG4mIzQzOyAqICAgLSBJRUVFIDgwMi4zYXotMjAxMCBFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0XG4mIzQzOyAqICAgLSBJRUVFIDE1ODggU3luY0Ugc3VwcG9ydFxuJiM0MzsgKiAgIC0gUkdNSUlcbiYjNDM7ICpcbiYjNDM7ICogQXV0aG9yOiBBcnRlbSBTaGlta28gXHUwMDNjYS5zaGlta28uZGV2QGdtYWlsLmNvbVx1MDAzZVxuJiM0MzsgKi9cbiYjNDM7XG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdGZpZWxkLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZXJybm8uaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGh0b29sLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvaW9wb2xsLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbWlpLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZGV2aWNlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZVxuJiM0MztcbiYjNDM7I2RlZmluZSBEQVA4MjExUl9QSFlfSURcdFx0XHQweDAwMDgwMTFCXG4mIzQzOyNkZWZpbmUgREFQODIxMVJfUEhZX0lEX01BU0tcdFx0MHhGRkZGRkZGRlxuJiM0MztcbiYjNDM7I2RlZmluZSBEQVA4MjExUl9FWFRfQUREXHRcdDB4MUVcbiYjNDM7I2RlZmluZSBEQVA4MjExUl9FWFRfREFUQVx0XHQweDFGXG4mIzQzO1xuJiM0MzsjZGVmaW5lIERBUDgyMTFSX1BIWV9DT05cdFx0MHhBMDAxXG4mIzQzOyNkZWZpbmUgREFQODIxMVJfUEhZX1NXX1JTVFx0XHRCSVQoMTUpXG4mIzQzO1xuJiM0MzsjZGVmaW5lIERBUDgyMTFSX1JHTUlJX0NPTlx0XHQweEEwMDNcbiYjNDM7I2RlZmluZSBEQVA4MjExUl9SR01JSV9UWF9ERUxfTUFTS1x0R0VOTUFTSygzLCAwKVxuJiM0MzsjZGVmaW5lIERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLXHRHRU5NQVNLKDEzLCAxMClcbiYjNDM7XG4mIzQzOyNkZWZpbmUgREFQODIxMVJfUkdNSUlfQ09ORklHX01BU0tcdChEQVA4MjExUl9SR01JSV9SWF9ERUxfTUFTSyB8IERBUDgyMTFSX1JHTUlJX1RYX0RFTF9NQVNLKVxuJiM0MztcbiYjNDM7LyogRGVmYXVsdCBSR01JSSBkZWxheTogMTMgKiAxNTAgPT0gMS45NW5zICovXG4mIzQzOyNkZWZpbmUgREFQODIxMVJfREVGQVVMVF9ERUxfU0VMXHQweERcbiYjNDM7XG4mIzQzO3N0YXRpYyBjb25zdCBpbnQgZGFwODIxMXJfaW50ZXJuYWxfZGVsYXlbXSA9IHswLCAxNTAsIDMwMCwgNDUwLCA2MDAsIDc1MCwgOTAwLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgMTA1MCwgMTIwMCwgMTM1MCwgMTUwMCwgMTY1MCwgMTgwMCxcbiYjNDM7XHRcdFx0XHRcdCAgICAgIDE5NTAsIDIxMDAsIDIyNTB9O1xuJiM0MztcbiYjNDM7I2RlZmluZSBEQVA4MjExUl9ERUxBWV9TSVpFXHRBUlJBWV9TSVpFKGRhcDgyMTFyX2ludGVybmFsX2RlbGF5KVxuJiM0MztcbiYjNDM7LyoqXG4mIzQzOyAqIGRhcDgyMTFyX3JlYWRfZXh0KCkgLSBSZWFkIGV4dGVuZGVkIHJlZ2lzdGVyXG4mIzQzOyAqIEBwaHlkZXY6IFBIWSBkZXZpY2Ugc3RydWN0dXJlXG4mIzQzOyAqIEByZWc6IEV4dGVuZGVkIHJlZ2lzdGVyIGFkZHJlc3NcbiYjNDM7ICpcbiYjNDM7ICogUmVhZHMgYSBQSFkgZXh0ZW5kZWQgcmVnaXN0ZXIgdXNpbmcgdGhlIGluZGlyZWN0IGFjY2VzcyBtZXRob2QuXG4mIzQzOyAqIFRoZSBjYWxsZXIgbXVzdCBob2xkIHRoZSBNRElPIGJ1cyBsb2NrLlxuJiM0MzsgKlxuJiM0MzsgKiBSZXR1cm46IFJlZ2lzdGVyIHZhbHVlIG9uIHN1Y2Nlc3MsIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGVcbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBpbnQgZGFwODIxMXJfcmVhZF9leHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZylcbiYjNDM7e1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XG4mIzQzO1x0cmV0ID0gX19waHlfd3JpdGUocGh5ZGV2LCBEQVA4MjExUl9FWFRfQURELCByZWcpO1xuJiM0MztcdGlmIChyZXQgXHUwMDNjIDApXG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gX19waHlfcmVhZChwaHlkZXYsIERBUDgyMTFSX0VYVF9EQVRBKTtcbiYjNDM7b3V0OlxuJiM0MztcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogZGFwODIxMXJfbW9kaWZ5X2V4dCgpIC0gTW9kaWZ5IGV4dGVuZGVkIHJlZ2lzdGVyIGJpdHNcbiYjNDM7ICogQHBoeWRldjogUEhZIGRldmljZSBzdHJ1Y3R1cmVcbiYjNDM7ICogQHJlZzogRXh0ZW5kZWQgcmVnaXN0ZXIgYWRkcmVzc1xuJiM0MzsgKiBAbWFzazogQml0IG1hc2sgb2YgYml0cyB0byBjbGVhclxuJiM0MzsgKiBAc2V0OiBCaXQgbWFzayBvZiBiaXRzIHRvIHNldFxuJiM0MzsgKlxuJiM0MzsgKiBNb2RpZmllcyBhIFBIWSBleHRlbmRlZCByZWdpc3RlciB1c2luZyB0aGUgaW5kaXJlY3QgYWNjZXNzIG1ldGhvZC5cbiYjNDM7ICogTmV3IHZhbHVlID0gKG9sZCB2YWx1ZSBcdTAwMjYgfm1hc2spIHwgc2V0LlxuJiM0MzsgKiBUaGUgY2FsbGVyIG11c3QgaG9sZCB0aGUgTURJTyBidXMgbG9jay5cbiYjNDM7ICpcbiYjNDM7ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGVcbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBpbnQgZGFwODIxMXJfbW9kaWZ5X2V4dChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnLCB1MTYgbWFzaywgdTE2IHNldClcbiYjNDM7e1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XG4mIzQzO1x0cmV0ID0gX19waHlfd3JpdGUocGh5ZGV2LCBEQVA4MjExUl9FWFRfQURELCByZWcpO1xuJiM0MztcdGlmIChyZXQgXHUwMDNjIDApXG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gX19waHlfbW9kaWZ5KHBoeWRldiwgREFQODIxMVJfRVhUX0RBVEEsIG1hc2ssIHNldCk7XG4mIzQzO291dDpcbiYjNDM7XHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7LyoqXG4mIzQzOyAqIGRhcDgyMTFyX2NvbmZpZ19pbml0KCkgLSBJbml0aWFsaXplIFBIWVxuJiM0MzsgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHN0cnVjdHVyZVxuJiM0MzsgKlxuJiM0MzsgKiBDb25maWd1cmVzIHRoZSBQSFkgZHVyaW5nIGluaXRpYWxpemF0aW9uOlxuJiM0MzsgKiAtIFJHTUlJIGRlbGF5cyBiYXNlZCBvbiBpbnRlcmZhY2UgbW9kZVxuJiM0MzsgKiAtIFNvZnR3YXJlIHJlc2V0IHRvIGFwcGx5IHNldHRpbmdzIChsb3cgYWN0aXZlLCBzZWxmIGNsZWFyKVxuJiM0MzsgKlxuJiM0MzsgKiBSZXR1cm46IDAgb24gc3VjY2Vzcywgb3IgbmVnYXRpdmUgZXJyb3IgY29kZVxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIGludCBkYXA4MjExcl9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuJiM0Mzt7XG4mIzQzO1x0dTE2IHNldCA9IDA7XG4mIzQzO1x0aW50IHJldCwgdmFsO1xuJiM0MztcdHMzMiByeF9pbnRlcm5hbF9kZWxheTtcbiYjNDM7XHRzMzIgdHhfaW50ZXJuYWxfZGVsYXk7XG4mIzQzO1xuJiM0MztcdGlmICghcGh5X2ludGVyZmFjZV9pc19yZ21paShwaHlkZXYpKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdHJ4X2ludGVybmFsX2RlbGF5ID0gcGh5X2dldF9pbnRlcm5hbF9kZWxheShwaHlkZXYsIGRhcDgyMTFyX2ludGVybmFsX2RlbGF5LFxuJiM0MztcdFx0XHRcdFx0XHQgICBEQVA4MjExUl9ERUxBWV9TSVpFLCB0cnVlKTtcbiYjNDM7XHR0eF9pbnRlcm5hbF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheSxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgREFQODIxMVJfREVMQVlfU0laRSwgZmFsc2UpO1xuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKHBoeWRldi1cdTAwM2VpbnRlcmZhY2UpIHtcbiYjNDM7XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSTpcbiYjNDM7XHRcdGlmIChyeF9pbnRlcm5hbF9kZWxheSBcdTAwM2MgMClcbiYjNDM7XHRcdFx0cnhfaW50ZXJuYWxfZGVsYXkgPSAwO1xuJiM0MztcbiYjNDM7XHRcdGlmICh0eF9pbnRlcm5hbF9kZWxheSBcdTAwM2MgMClcbiYjNDM7XHRcdFx0dHhfaW50ZXJuYWxfZGVsYXkgPSAwO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfUlhJRDpcbiYjNDM7XHRcdGlmIChyeF9pbnRlcm5hbF9kZWxheSBcdTAwM2MgMClcbiYjNDM7XHRcdFx0cnhfaW50ZXJuYWxfZGVsYXkgPSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUw7XG4mIzQzO1xuJiM0MztcdFx0dHhfaW50ZXJuYWxfZGVsYXkgPSAwO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfSUQ6XG4mIzQzO1x0XHRpZiAocnhfaW50ZXJuYWxfZGVsYXkgXHUwMDNjIDApXG4mIzQzO1x0XHRcdHJ4X2ludGVybmFsX2RlbGF5ID0gREFQODIxMVJfREVGQVVMVF9ERUxfU0VMO1xuJiM0MztcdFx0aWYgKHR4X2ludGVybmFsX2RlbGF5IFx1MDAzYyAwKVxuJiM0MztcdFx0XHR0eF9pbnRlcm5hbF9kZWxheSA9IERBUDgyMTFSX0RFRkFVTFRfREVMX1NFTDtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1RYSUQ6XG4mIzQzO1x0XHRpZiAodHhfaW50ZXJuYWxfZGVsYXkgXHUwMDNjIDApXG4mIzQzO1x0XHRcdHR4X2ludGVybmFsX2RlbGF5ID0gREFQODIxMVJfREVGQVVMVF9ERUxfU0VMO1xuJiM0MztcbiYjNDM7XHRcdHJ4X2ludGVybmFsX2RlbGF5ID0gMDtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCYjMzQ7VW5zdXBwb3J0ZWQgaW50ZXJmYWNlOiAlZFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0ICAgcGh5ZGV2LVx1MDAzZWludGVyZmFjZSk7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHNldCB8PSBGSUVMRF9QUkVQKERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLLCByeF9pbnRlcm5hbF9kZWxheSk7XG4mIzQzO1x0c2V0IHw9IEZJRUxEX1BSRVAoREFQODIxMVJfUkdNSUlfVFhfREVMX01BU0ssIHR4X2ludGVybmFsX2RlbGF5KTtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gZGFwODIxMXJfbW9kaWZ5X2V4dChwaHlkZXYsIERBUDgyMTFSX1BIWV9DT04sIERBUDgyMTFSX1BIWV9TV19SU1QsIDApO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHQvKiBXYWl0IGZvciByZXNldCBzZWxmLWNsZWFyIChmcm9tIGxvdyBhY3RpdmUgdG8gaGlnaCkgKi9cbiYjNDM7XHRyZXQgPSByZWFkX3BvbGxfdGltZW91dChkYXA4MjExcl9yZWFkX2V4dCwgdmFsLFxuJiM0MztcdFx0XHRcdCh2YWwgXHUwMDI2IERBUDgyMTFSX1BIWV9TV19SU1QpLFxuJiM0MztcdFx0XHRcdDIwLCAyMDAsIGZhbHNlLCBwaHlkZXYsIERBUDgyMTFSX1BIWV9DT04pO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcdGlmICh2YWwgXHUwMDNjIDApXG4mIzQzO1x0XHRyZXR1cm4gdmFsO1xuJiM0MztcbiYjNDM7XHRyZXQgPSBkYXA4MjExcl9tb2RpZnlfZXh0KHBoeWRldiwgREFQODIxMVJfUkdNSUlfQ09OLCBEQVA4MjExUl9SR01JSV9DT05GSUdfTUFTSywgc2V0KTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkYXA4MjExcl9kcml2ZXJbXSA9IHtcbiYjNDM7XHR7XG4mIzQzO1x0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoREFQODIxMVJfUEhZX0lEKSxcbiYjNDM7XHRcdC5uYW1lXHRcdD0gXCYjMzQ7REFQODIxMVIgR2lnYWJpdCBFdGhlcm5ldFwmIzM0OyxcbiYjNDM7XHRcdC5zb2Z0X3Jlc2V0XHQ9IGdlbnBoeV9zb2Z0X3Jlc2V0LFxuJiM0MztcdFx0LmNvbmZpZ19pbml0XHQ9IGRhcDgyMTFyX2NvbmZpZ19pbml0LFxuJiM0MztcdFx0LnJlYWRfc3RhdHVzXHQ9IGdlbnBoeV9yZWFkX3N0YXR1cyxcbiYjNDM7XHRcdC5zZXRfbG9vcGJhY2tcdD0gZ2VucGh5X2xvb3BiYWNrLFxuJiM0MztcdFx0LmNvbmZpZ19hbmVnXHQ9IGdlbnBoeV9jb25maWdfYW5lZyxcbiYjNDM7XHRcdC5zdXNwZW5kXHQ9IGdlbnBoeV9zdXNwZW5kLFxuJiM0MztcdFx0LnJlc3VtZVx0XHQ9IGdlbnBoeV9yZXN1bWUsXG4mIzQzO1x0fSxcbiYjNDM7fTtcbiYjNDM7bW9kdWxlX3BoeV9kcml2ZXIoZGFwODIxMXJfZHJpdmVyKTtcbiYjNDM7XG4mIzQzO01PRFVMRV9ERVNDUklQVElPTihcJiMzNDtEQVA4MjExUiBHaWdhYml0IEV0aGVybmV0IFBIWSBkcml2ZXJcJiMzNDspO1xuJiM0MztNT0RVTEVfQVVUSE9SKFwmIzM0O0FydGVtIFNoaW1rbyBcdTAwM2NhLnNoaW1rby5kZXZAZ21haWwuY29tXHUwMDNlXCYjMzQ7KTtcbiYjNDM7TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgZGFwODIxMXJfdGJbXSA9IHtcbiYjNDM7XHR7IERBUDgyMTFSX1BIWV9JRCwgREFQODIxMVJfUEhZX0lEX01BU0sgfSxcbiYjNDM7XHR7IC8qIHNlbnRpbmVsICovIH1cbiYjNDM7fTtcbiYjNDM7TU9EVUxFX0RFVklDRV9UQUJMRShtZGlvLCBkYXA4MjExcl90Yik7XG4mIzQzO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjM2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjVtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgdmVuZG9yLXNwZWNpZmljIFBIWSBkcml2ZXIgZm9yIHRoZSBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFkuIFRoZSBkcml2ZXIgb25seSBjb250YWlucyB0cml2aWFsIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIGxvZ2ljIChyZWFkaW5nIGRldmljZSB0cmVlIHByb3BlcnRpZXMgYW5kIHdyaXRpbmcgdG8gTURJTyByZWdpc3RlcnMpIGFuZCByZWxpZXMgb24gZ2VuZXJpYyBQSFkgZnVuY3Rpb25zIGZvciBhbGwgb3RoZXIgb3BlcmF0aW9ucy4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgYW5kIGV2ZW4gaWYgcmVhY2hlZCB2aWEgYSBtb2NrIE1ESU8gYnVzLCB0aGUgY29kZSBsYWNrcyBjb21wbGV4IGxvZ2ljLCBtZW1vcnkgbWFuYWdlbWVudCwgb3IgdXNlcnNwYWNlIGludGVyZmFjZXMgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1NjE3YWQzNDhhOTcyYjYyNmU3ZmE3MWRkYjYyODRlZWE4YWM3NWE3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdWwgMjcgMTk6MzU6NTggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RhcHUsZGFwODIxMXIueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZGFwdSxkYXA4MjExci55YW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi5iYTliMzAxZWExZjUxMwotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZGFwdSxkYXA4MjExci55YW1sCkBAIC0wLDAgJiM0MzsxLDYzIEBACiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAtb25seSBPUiBCU0QtMi1DbGF1c2UpCiYjNDM7JVlBTUwgMS4yCiYjNDM7LS0tCiYjNDM7JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvZGFwdSxkYXA4MjExci55YW1sIwomIzQzOyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sIwomIzQzOwomIzQzO3RpdGxlOiBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFkKJiM0MzsKJiM0MzttYWludGFpbmVyczoKJiM0MzsgIC0gQXJ0ZW0gU2hpbWtvICZsdDthLnNoaW1rby5kZXZAZ21haWwuY29tJmd0OwomIzQzOwomIzQzO2Rlc2NyaXB0aW9uOiB8CiYjNDM7ICBUaGUgREFQODIxMVIoSSkgaXMgYSBHaWdhYml0IEV0aGVybmV0IFBIWSB3aXRoIFJHTUlJIGludGVyZmFjZSwKJiM0MzsgIHN1cHBvcnRpbmcgSUVFRSA4MDIuM2F6IEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQsIElFRUUgMTU4OCBTeW5jRSwKJiM0MzsgIGFuZCBhbiBpbnRlcm5hbCBwYWNrZXQgZ2VuZXJhdG9yIGZvciBkaWFnbm9zdGljcy4KJiM0MzsKJiM0MzsgIFNwZWNpZmljYXRpb25zOgomIzQzOyAgICAtIDEwQkFTRS1UZSwgMTAwQkFTRS1UWCwgMTAwMEJBU0UtVAomIzQzOyAgICAtIFJHTUlJIHdpdGggY29uZmlndXJhYmxlIFRYL1JYIGNsb2NrIGRlbGF5cyAoMTUwIHBzIHN0ZXBzLCAwLTIyNTAgcHMpCiYjNDM7ICAgIC0gSUVFRSA4MDIuM2F6LTIwMTAgRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldAomIzQzOyAgICAtIElFRUUgMTU4OCBTeW5jRSBzdXBwb3J0CiYjNDM7ICAgIC0gSW50ZXJuYWwgcGFja2V0IGdlbmVyYXRvciBhbmQgY2hlY2tlciBmb3IgbGluayBkaWFnbm9zdGljcwomIzQzOwomIzQzO2FsbE9mOgomIzQzOyAgLSAkcmVmOiBldGhlcm5ldC1waHkueWFtbCMKJiM0MzsKJiM0Mztwcm9wZXJ0aWVzOgomIzQzOyAgY29tcGF0aWJsZToKJiM0MzsgICAgY29uc3Q6IGV0aGVybmV0LXBoeS1pZDAwMDguMDExYgomIzQzOwomIzQzOyAgcmVnOgomIzQzOyAgICBtYXhJdGVtczogMQomIzQzOwomIzQzOyAgcngtaW50ZXJuYWwtZGVsYXktcHM6CiYjNDM7ICAgIGRlc2NyaXB0aW9uOgomIzQzOyAgICAgIFJHTUlJIFJYIGNsb2NrIGRlbGF5IGluIHBpY29zZWNvbmRzICgwIHRvIG1heGltdW0pLgomIzQzOyAgICBtdWx0aXBsZU9mOiAxNTAKJiM0MzsgICAgbWF4aW11bTogMjI1MAomIzQzOyAgICBkZWZhdWx0OiAxOTUwCiYjNDM7CiYjNDM7ICB0eC1pbnRlcm5hbC1kZWxheS1wczoKJiM0MzsgICAgZGVzY3JpcHRpb246CiYjNDM7ICAgICAgUkdNSUkgVFggY2xvY2sgZGVsYXkgaW4gcGljb3NlY29uZHMgKDAgdG8gbWF4aW11bSkuCiYjNDM7ICAgIG11bHRpcGxlT2Y6IDE1MAomIzQzOyAgICBtYXhpbXVtOiAyMjUwCiYjNDM7ICAgIGRlZmF1bHQ6IDE5NTAKJiM0MzsKJiM0Mzt1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlCiYjNDM7CiYjNDM7ZXhhbXBsZXM6CiYjNDM7ICAtIHwKJiM0MzsgICAgbWRpbyB7CiYjNDM7ICAgICAgICAjYWRkcmVzcy1jZWxscyA9ICZsdDsxJmd0OzsKJiM0MzsgICAgICAgICNzaXplLWNlbGxzID0gJmx0OzAmZ3Q7OwomIzQzOwomIzQzOyAgICAgICAgZXRoZXJuZXQtcGh5QDEgewomIzQzOyAgICAgICAgICAgIGNvbXBhdGlibGUgPSAmIzM0O2V0aGVybmV0LXBoeS1pZDAwMDguMDExYiYjMzQ7OwomIzQzOyAgICAgICAgICAgIHJlZyA9ICZsdDsxJmd0OzsKJiM0MzsgICAgICAgICAgICByeC1pbnRlcm5hbC1kZWxheS1wcyA9ICZsdDsyMTAwJmd0OzsKJiM0MzsgICAgICAgICAgICB0eC1pbnRlcm5hbC1kZWxheS1wcyA9ICZsdDsyMTAwJmd0OzsKJiM0MzsgICAgICAgIH07CiYjNDM7ICAgIH07CiYjNDM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnCmluZGV4IDA5OWYyNWRjZWFiYmM3Li40NTc2ZjcwN2FjOTQ0NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L0tjb25maWcKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L0tjb25maWcKQEAgLTIzNyw2ICYjNDM7MjM3LDE2IEBAIGNvbmZpZyBEQVZJQ09NX1BIWQogCWhlbHAKIAkgIEN1cnJlbnRseSBzdXBwb3J0cyBkbTkxNjFlIGFuZCBkbTkxMzEKIAomIzQzO2NvbmZpZyBEQVA4MjExUl9QSFkKJiM0MzsJdHJpc3RhdGUgJiMzNDtEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFkmIzM0OwomIzQzOwlkZXBlbmRzIG9uIE9GCiYjNDM7CWhlbHAKJiM0MzsJICBTdXBwb3J0IGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZLgomIzQzOwkgIFRoaXMgUEhZIGlzIGRlc2lnbmVkIGZvciBlbnRlcnByaXNlIGFuZCBpbmR1c3RyaWFsIG5ldHdvcmtpbmcKJiM0MzsJICBhcHBsaWNhdGlvbnMsIHN1cHBvcnRpbmcgMTAvMTAwLzEwMDAgTWJwcyBvcGVyYXRpb24uCiYjNDM7CSAgUkdNSUkgd2l0aDogY29uZmlndXJhYmxlIFRYL1JYIGNsb2NrIGRlbGF5cywgb3B0aW9uYWwgZmxhZyB0byBlbmFibGUKJiM0MzsJICAxODAtZGVncmVlIFRYIGNsb2NrIHBoYXNlIHNoaWZ0IGFuZCBpbnRlcm5hbCBwYWNrZXQgZ2VuZXJhdG9yLgomIzQzOwogY29uZmlnIElDUExVU19QSFkKIAl0cmlzdGF0ZSAmIzM0O0lDUGx1cyBQSFlzJiMzNDsKIAloZWxwCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUKaW5kZXggZGU2NjBhZTk0OTQ1M2QuLmFkMzU3MzNlYjRiYjYxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlCkBAIC01Myw2ICYjNDM7NTMsNyBAQCBvYmotJChDT05GSUdfQlJPQURDT01fUEhZKQkmIzQzOz0gYnJvYWRjb20ubwogb2JqLSQoQ09ORklHX0NJQ0FEQV9QSFkpCSYjNDM7PSBjaWNhZGEubwogb2JqLSQoQ09ORklHX0NPUlRJTkFfUEhZKQkmIzQzOz0gY29ydGluYS5vCiBvYmotJChDT05GSUdfREFWSUNPTV9QSFkpCSYjNDM7PSBkYXZpY29tLm8KJiM0MztvYmotJChDT05GSUdfREFQODIxMVJfUEhZKQkmIzQzOz0gZGFwODIxMXIubwogb2JqLSQoQ09ORklHX0RQODM2NDBfUEhZKQkmIzQzOz0gZHA4MzY0MC5vCiBvYmotJChDT05GSUdfRFA4MzgyMl9QSFkpCSYjNDM7PSBkcDgzODIyLm8KIG9iai0kKENPTkZJR19EUDgzODQ4X1BIWSkJJiM0Mzs9IGRwODM4NDgubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmMgYi9kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMC4uNjVkNmZlZjg2ZjI2YjcKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYwpAQCAtMCwwICYjNDM7MSwyMDYgQEAKJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMCiYjNDM7LyoKJiM0MzsgKiBEcml2ZXIgZm9yIHRoZSBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFkuCiYjNDM7ICoKJiM0MzsgKiBTcGVjaWZpY2F0aW9uczoKJiM0MzsgKiAgIC0gSUVFRSA4MDIuMyAxMEJBU0UtVGUsIDEwMEJBU0UtVFgsIDEwMDBCQVNFLVQKJiM0MzsgKiAgIC0gSUVFRSA4MDIuM2F6LTIwMTAgRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldAomIzQzOyAqICAgLSBJRUVFIDE1ODggU3luY0Ugc3VwcG9ydAomIzQzOyAqICAgLSBSR01JSQomIzQzOyAqCiYjNDM7ICogQXV0aG9yOiBBcnRlbSBTaGlta28gJmx0O2Euc2hpbWtvLmRldkBnbWFpbC5jb20mZ3Q7CiYjNDM7ICovCiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2JpdGZpZWxkLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2Vycm5vLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2V0aHRvb2wuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgva2VybmVsLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2lvcG9sbC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9taWkuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvbW9kdWxlLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L25ldGRldmljZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9vZi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9waHkuaCZndDsKJiM0MzsKJiM0MzsjZGVmaW5lIERBUDgyMTFSX1BIWV9JRAkJCTB4MDAwODAxMUIKJiM0MzsjZGVmaW5lIERBUDgyMTFSX1BIWV9JRF9NQVNLCQkweEZGRkZGRkZGCiYjNDM7CiYjNDM7I2RlZmluZSBEQVA4MjExUl9FWFRfQURECQkweDFFCiYjNDM7I2RlZmluZSBEQVA4MjExUl9FWFRfREFUQQkJMHgxRgomIzQzOwomIzQzOyNkZWZpbmUgREFQODIxMVJfUEhZX0NPTgkJMHhBMDAxCiYjNDM7I2RlZmluZSBEQVA4MjExUl9QSFlfU1dfUlNUCQlCSVQoMTUpCiYjNDM7CiYjNDM7I2RlZmluZSBEQVA4MjExUl9SR01JSV9DT04JCTB4QTAwMwomIzQzOyNkZWZpbmUgREFQODIxMVJfUkdNSUlfVFhfREVMX01BU0sJR0VOTUFTSygzLCAwKQomIzQzOyNkZWZpbmUgREFQODIxMVJfUkdNSUlfUlhfREVMX01BU0sJR0VOTUFTSygxMywgMTApCiYjNDM7CiYjNDM7I2RlZmluZSBEQVA4MjExUl9SR01JSV9DT05GSUdfTUFTSwkoREFQODIxMVJfUkdNSUlfUlhfREVMX01BU0sgfCBEQVA4MjExUl9SR01JSV9UWF9ERUxfTUFTSykKJiM0MzsKJiM0MzsvKiBEZWZhdWx0IFJHTUlJIGRlbGF5OiAxMyAqIDE1MCA9PSAxLjk1bnMgKi8KJiM0MzsjZGVmaW5lIERBUDgyMTFSX0RFRkFVTFRfREVMX1NFTAkweEQKJiM0MzsKJiM0MztzdGF0aWMgY29uc3QgaW50IGRhcDgyMTFyX2ludGVybmFsX2RlbGF5W10gPSB7MCwgMTUwLCAzMDAsIDQ1MCwgNjAwLCA3NTAsIDkwMCwKJiM0MzsJCQkJCSAgICAgIDEwNTAsIDEyMDAsIDEzNTAsIDE1MDAsIDE2NTAsIDE4MDAsCiYjNDM7CQkJCQkgICAgICAxOTUwLCAyMTAwLCAyMjUwfTsKJiM0MzsKJiM0MzsjZGVmaW5lIERBUDgyMTFSX0RFTEFZX1NJWkUJQVJSQVlfU0laRShkYXA4MjExcl9pbnRlcm5hbF9kZWxheSkKJiM0MzsKJiM0MzsvKioKJiM0MzsgKiBkYXA4MjExcl9yZWFkX2V4dCgpIC0gUmVhZCBleHRlbmRlZCByZWdpc3RlcgomIzQzOyAqIEBwaHlkZXY6IFBIWSBkZXZpY2Ugc3RydWN0dXJlCiYjNDM7ICogQHJlZzogRXh0ZW5kZWQgcmVnaXN0ZXIgYWRkcmVzcwomIzQzOyAqCiYjNDM7ICogUmVhZHMgYSBQSFkgZXh0ZW5kZWQgcmVnaXN0ZXIgdXNpbmcgdGhlIGluZGlyZWN0IGFjY2VzcyBtZXRob2QuCiYjNDM7ICogVGhlIGNhbGxlciBtdXN0IGhvbGQgdGhlIE1ESU8gYnVzIGxvY2suCiYjNDM7ICoKJiM0MzsgKiBSZXR1cm46IFJlZ2lzdGVyIHZhbHVlIG9uIHN1Y2Nlc3MsIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGUKJiM0MzsgKi8KJiM0MztzdGF0aWMgaW50IGRhcDgyMTFyX3JlYWRfZXh0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiByZWcpCiYjNDM7ewomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpOwomIzQzOwlyZXQgPSBfX3BoeV93cml0ZShwaHlkZXYsIERBUDgyMTFSX0VYVF9BREQsIHJlZyk7CiYjNDM7CWlmIChyZXQgJmx0OyAwKQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CiYjNDM7CXJldCA9IF9fcGh5X3JlYWQocGh5ZGV2LCBEQVA4MjExUl9FWFRfREFUQSk7CiYjNDM7b3V0OgomIzQzOwlwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwomIzQzOy8qKgomIzQzOyAqIGRhcDgyMTFyX21vZGlmeV9leHQoKSAtIE1vZGlmeSBleHRlbmRlZCByZWdpc3RlciBiaXRzCiYjNDM7ICogQHBoeWRldjogUEhZIGRldmljZSBzdHJ1Y3R1cmUKJiM0MzsgKiBAcmVnOiBFeHRlbmRlZCByZWdpc3RlciBhZGRyZXNzCiYjNDM7ICogQG1hc2s6IEJpdCBtYXNrIG9mIGJpdHMgdG8gY2xlYXIKJiM0MzsgKiBAc2V0OiBCaXQgbWFzayBvZiBiaXRzIHRvIHNldAomIzQzOyAqCiYjNDM7ICogTW9kaWZpZXMgYSBQSFkgZXh0ZW5kZWQgcmVnaXN0ZXIgdXNpbmcgdGhlIGluZGlyZWN0IGFjY2VzcyBtZXRob2QuCiYjNDM7ICogTmV3IHZhbHVlID0gKG9sZCB2YWx1ZSAmYW1wOyB+bWFzaykgfCBzZXQuCiYjNDM7ICogVGhlIGNhbGxlciBtdXN0IGhvbGQgdGhlIE1ESU8gYnVzIGxvY2suCiYjNDM7ICoKJiM0MzsgKiBSZXR1cm46IDAgb24gc3VjY2Vzcywgb3IgbmVnYXRpdmUgZXJyb3IgY29kZQomIzQzOyAqLwomIzQzO3N0YXRpYyBpbnQgZGFwODIxMXJfbW9kaWZ5X2V4dChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnLCB1MTYgbWFzaywgdTE2IHNldCkKJiM0Mzt7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CXBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7CiYjNDM7CXJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgREFQODIxMVJfRVhUX0FERCwgcmVnKTsKJiM0MzsJaWYgKHJldCAmbHQ7IDApCiYjNDM7CQlnb3RvIG91dDsKJiM0MzsKJiM0MzsJcmV0ID0gX19waHlfbW9kaWZ5KHBoeWRldiwgREFQODIxMVJfRVhUX0RBVEEsIG1hc2ssIHNldCk7CiYjNDM7b3V0OgomIzQzOwlwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwomIzQzOy8qKgomIzQzOyAqIGRhcDgyMTFyX2NvbmZpZ19pbml0KCkgLSBJbml0aWFsaXplIFBIWQomIzQzOyAqIEBwaHlkZXY6IFBIWSBkZXZpY2Ugc3RydWN0dXJlCiYjNDM7ICoKJiM0MzsgKiBDb25maWd1cmVzIHRoZSBQSFkgZHVyaW5nIGluaXRpYWxpemF0aW9uOgomIzQzOyAqIC0gUkdNSUkgZGVsYXlzIGJhc2VkIG9uIGludGVyZmFjZSBtb2RlCiYjNDM7ICogLSBTb2Z0d2FyZSByZXNldCB0byBhcHBseSBzZXR0aW5ncyAobG93IGFjdGl2ZSwgc2VsZiBjbGVhcikKJiM0MzsgKgomIzQzOyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBvciBuZWdhdGl2ZSBlcnJvciBjb2RlCiYjNDM7ICovCiYjNDM7c3RhdGljIGludCBkYXA4MjExcl9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQomIzQzO3sKJiM0MzsJdTE2IHNldCA9IDA7CiYjNDM7CWludCByZXQsIHZhbDsKJiM0MzsJczMyIHJ4X2ludGVybmFsX2RlbGF5OwomIzQzOwlzMzIgdHhfaW50ZXJuYWxfZGVsYXk7CiYjNDM7CiYjNDM7CWlmICghcGh5X2ludGVyZmFjZV9pc19yZ21paShwaHlkZXYpKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CXJ4X2ludGVybmFsX2RlbGF5ID0gcGh5X2dldF9pbnRlcm5hbF9kZWxheShwaHlkZXYsIGRhcDgyMTFyX2ludGVybmFsX2RlbGF5LAomIzQzOwkJCQkJCSAgIERBUDgyMTFSX0RFTEFZX1NJWkUsIHRydWUpOwomIzQzOwl0eF9pbnRlcm5hbF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheSwKJiM0MzsJCQkJCQkgICBEQVA4MjExUl9ERUxBWV9TSVpFLCBmYWxzZSk7CiYjNDM7CiYjNDM7CXN3aXRjaCAocGh5ZGV2LSZndDtpbnRlcmZhY2UpIHsKJiM0MzsJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6CiYjNDM7CQlpZiAocnhfaW50ZXJuYWxfZGVsYXkgJmx0OyAwKQomIzQzOwkJCXJ4X2ludGVybmFsX2RlbGF5ID0gMDsKJiM0MzsKJiM0MzsJCWlmICh0eF9pbnRlcm5hbF9kZWxheSAmbHQ7IDApCiYjNDM7CQkJdHhfaW50ZXJuYWxfZGVsYXkgPSAwOwomIzQzOwkJYnJlYWs7CiYjNDM7CWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1JYSUQ6CiYjNDM7CQlpZiAocnhfaW50ZXJuYWxfZGVsYXkgJmx0OyAwKQomIzQzOwkJCXJ4X2ludGVybmFsX2RlbGF5ID0gREFQODIxMVJfREVGQVVMVF9ERUxfU0VMOwomIzQzOwomIzQzOwkJdHhfaW50ZXJuYWxfZGVsYXkgPSAwOwomIzQzOwkJYnJlYWs7CiYjNDM7CWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX0lEOgomIzQzOwkJaWYgKHJ4X2ludGVybmFsX2RlbGF5ICZsdDsgMCkKJiM0MzsJCQlyeF9pbnRlcm5hbF9kZWxheSA9IERBUDgyMTFSX0RFRkFVTFRfREVMX1NFTDsKJiM0MzsJCWlmICh0eF9pbnRlcm5hbF9kZWxheSAmbHQ7IDApCiYjNDM7CQkJdHhfaW50ZXJuYWxfZGVsYXkgPSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUw7CiYjNDM7CQlicmVhazsKJiM0MzsJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfVFhJRDoKJiM0MzsJCWlmICh0eF9pbnRlcm5hbF9kZWxheSAmbHQ7IDApCiYjNDM7CQkJdHhfaW50ZXJuYWxfZGVsYXkgPSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUw7CiYjNDM7CiYjNDM7CQlyeF9pbnRlcm5hbF9kZWxheSA9IDA7CiYjNDM7CQlicmVhazsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCXBoeWRldl9lcnIocGh5ZGV2LCAmIzM0O1Vuc3VwcG9ydGVkIGludGVyZmFjZTogJWRcbiYjMzQ7LAomIzQzOwkJCSAgIHBoeWRldi0mZ3Q7aW50ZXJmYWNlKTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiYjNDM7CiYjNDM7CXNldCB8PSBGSUVMRF9QUkVQKERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLLCByeF9pbnRlcm5hbF9kZWxheSk7CiYjNDM7CXNldCB8PSBGSUVMRF9QUkVQKERBUDgyMTFSX1JHTUlJX1RYX0RFTF9NQVNLLCB0eF9pbnRlcm5hbF9kZWxheSk7CiYjNDM7CiYjNDM7CXJldCA9IGRhcDgyMTFyX21vZGlmeV9leHQocGh5ZGV2LCBEQVA4MjExUl9QSFlfQ09OLCBEQVA4MjExUl9QSFlfU1dfUlNULCAwKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CS8qIFdhaXQgZm9yIHJlc2V0IHNlbGYtY2xlYXIgKGZyb20gbG93IGFjdGl2ZSB0byBoaWdoKSAqLwomIzQzOwlyZXQgPSByZWFkX3BvbGxfdGltZW91dChkYXA4MjExcl9yZWFkX2V4dCwgdmFsLAomIzQzOwkJCQkodmFsICZhbXA7IERBUDgyMTFSX1BIWV9TV19SU1QpLAomIzQzOwkJCQkyMCwgMjAwLCBmYWxzZSwgcGh5ZGV2LCBEQVA4MjExUl9QSFlfQ09OKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CWlmICh2YWwgJmx0OyAwKQomIzQzOwkJcmV0dXJuIHZhbDsKJiM0MzsKJiM0MzsJcmV0ID0gZGFwODIxMXJfbW9kaWZ5X2V4dChwaHlkZXYsIERBUDgyMTFSX1JHTUlJX0NPTiwgREFQODIxMVJfUkdNSUlfQ09ORklHX01BU0ssIHNldCk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGRhcDgyMTFyX2RyaXZlcltdID0gewomIzQzOwl7CiYjNDM7CQlQSFlfSURfTUFUQ0hfRVhBQ1QoREFQODIxMVJfUEhZX0lEKSwKJiM0MzsJCS5uYW1lCQk9ICYjMzQ7REFQODIxMVIgR2lnYWJpdCBFdGhlcm5ldCYjMzQ7LAomIzQzOwkJLnNvZnRfcmVzZXQJPSBnZW5waHlfc29mdF9yZXNldCwKJiM0MzsJCS5jb25maWdfaW5pdAk9IGRhcDgyMTFyX2NvbmZpZ19pbml0LAomIzQzOwkJLnJlYWRfc3RhdHVzCT0gZ2VucGh5X3JlYWRfc3RhdHVzLAomIzQzOwkJLnNldF9sb29wYmFjawk9IGdlbnBoeV9sb29wYmFjaywKJiM0MzsJCS5jb25maWdfYW5lZwk9IGdlbnBoeV9jb25maWdfYW5lZywKJiM0MzsJCS5zdXNwZW5kCT0gZ2VucGh5X3N1c3BlbmQsCiYjNDM7CQkucmVzdW1lCQk9IGdlbnBoeV9yZXN1bWUsCiYjNDM7CX0sCiYjNDM7fTsKJiM0Mzttb2R1bGVfcGh5X2RyaXZlcihkYXA4MjExcl9kcml2ZXIpOwomIzQzOwomIzQzO01PRFVMRV9ERVNDUklQVElPTigmIzM0O0RBUDgyMTFSIEdpZ2FiaXQgRXRoZXJuZXQgUEhZIGRyaXZlciYjMzQ7KTsKJiM0MztNT0RVTEVfQVVUSE9SKCYjMzQ7QXJ0ZW0gU2hpbWtvICZsdDthLnNoaW1rby5kZXZAZ21haWwuY29tJmd0OyYjMzQ7KTsKJiM0MztNT0RVTEVfTElDRU5TRSgmIzM0O0dQTCYjMzQ7KTsKJiM0MzsKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIGRhcDgyMTFyX3RiW10gPSB7CiYjNDM7CXsgREFQODIxMVJfUEhZX0lELCBEQVA4MjExUl9QSFlfSURfTUFTSyB9LAomIzQzOwl7IC8qIHNlbnRpbmVsICovIH0KJiM0Mzt9OwomIzQzO01PRFVMRV9ERVZJQ0VfVEFCTEUobWRpbywgZGFwODIxMXJfdGIpOwomIzQzOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODU3CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogNDkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgREFQODIxMVIgUEhZIERyaXZlciBmb3IgVGVzdGFiaWxpdHkqKgoKT2theSwgc28gd2UmIzM5O3ZlIGdvdCBhIG5ldyBwYXRjaCBhZGRpbmcgYSBkcml2ZXIgZm9yIHRoZSBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFkuIEl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIGluY2x1ZGVzIHRoZSBuZWNlc3NhcnkgZG9jdW1lbnRhdGlvbiBiaW5kaW5nLCBLY29uZmlnIGFuZCBNYWtlZmlsZSBlbnRyaWVzLCBhbmQsIGNydWNpYWxseSwgdGhlIGRyaXZlciBjb2RlIGl0c2VsZiAoYGRhcDgyMTFyLmNgKS4gVGhlIGRyaXZlciBpbXBsZW1lbnRzIHRoZSB1c3VhbCBzdXNwZWN0czogYGRhcDgyMTFyX3JlYWRfZXh0YCwgYGRhcDgyMTFyX21vZGlmeV9leHRgLCBhbmQgYGRhcDgyMTFyX2NvbmZpZ19pbml0YC4gU3RhbmRhcmQgUEhZIGRyaXZlciBzdHVmZi4KCk15IGluaXRpYWwgY29uY2VybiwgbmF0dXJhbGx5LCBpcyBob3cgd2UgY2FuIGFjdHVhbGx5ICpyZWFjaCogdGhpcyB0aGluZyBpbiBhIGNvbnRyb2xsZWQgdGVzdGluZyBlbnZpcm9ubWVudCwgZXNwZWNpYWxseSBpbiBzb21ldGhpbmcgbGlrZSBRRU1VLiBQSFkgZHJpdmVycyBhcmUgdHlwaWNhbGx5IGFjY2Vzc2VkIHRocm91Z2ggYW4gTURJTyBidXMuIFNvLCB0aGUgcXVlc3Rpb24gaXMsIGhvdyBkbyB3ZSBnZXQgYXQgdGhlIERBUDgyMTFSIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dD8gQ2FuIHdlIGluc3RhbnRpYXRlIGEgdmlydHVhbCBNRElPIGJ1cz8gYG1kaW8tbW9ja3VwYCBzZWVtcyBsaWtlIHRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50LCBvciBtYXliZSBhIGBmaXhlZC1waHlgIHNldHVwIGlmIHdlIGNhbiByZWdpc3RlciB0aGVtIHNvbWVob3cuIEkgd2FzIGFsc28gd29uZGVyaW5nIGlmIG5ldGxpbmsvaW9jdGwgb24gYSBkdW1teSBkZXZpY2UgY291bGQgYmUgYSBwb3NzaWJpbGl0eSwgYnV0IE1ESU8gaXMgdGhlIHN0YW5kYXJkIGZvciB0aGVzZSB0aGluZ3MuCgpUaGVuLCBJIHN0YXJ0ZWQgdGhpbmtpbmcgYWJvdXQgc3l6a2FsbGVyLiBEb2VzIHN5emthbGxlciBvZmZlciBhIHdheSBpbj8gQ291bGQgd2UgaW5qZWN0IE1ESU8gZGV2aWNlcyBkaXJlY3RseSB1c2luZyBgaW9jdGwoU0lPQ1NNSUlSRUcpYCBvciBzb21ldGhpbmcgc2ltaWxhcj8gQWN0dWFsbHksIG5vLCBQSFkgZGV2aWNlcyBhcmUgKnByb2JlZCogdmlhIHRoZSBNRElPIGJ1cywgYW5kIHN5emthbGxlciYjMzk7cyBNRElPL25ldGRldiBzdXBwb3J0IHNlZW1zIGxpbWl0ZWQuIFdhaXQsIHdoYXQgYWJvdXQgbmV0bGluaz8gSSBrbm93IHN5emthbGxlciBoYXMgYHN5el9nZW5ldGxpbmtfZ2V0X2ZhbWlseWAsIHNvIGl0ICpjb3VsZCogaW50ZXJhY3Qgd2l0aCBQSFlzIHRoYXQgd2F5LiBPciwgY291bGQgd2UgZ28gdGhyb3VnaCB0dW4vdGFwPwoKQnV0IGhhbmcgb24uIFRoaXMgKmlzKiBhIGhhcmR3YXJlLXNwZWNpZmljIFBIWS4gSXQmIzM5O3Mgbm90IGxpa2VseSB0byBiZSBlbXVsYXRlZCBpbiBRRU1VLiBTbywgdGhlIGtleSBpcyBkZWZpbml0ZWx5IGdvaW5nIHRvIGJlIHVzaW5nIHNvZnR3YXJlIE1ESU8gYnVzIHNpbXVsYXRpb24uIEkgcmVjYWxsIGBtZGlvLW1vY2t1cGAsIGBmaXhlZC1waHlgLCB0aG9zZSB0eXBlcyBvZiBzb2x1dGlvbnMuLi4gaWYgd2UgY2FuIGp1c3QgZ2V0IHRoZW0gcmVnaXN0ZXJlZC4gVGhlIGNoYWxsZW5nZSB3aWxsIGJlIGlmIHN5emthbGxlciBpcyBzZXQgdXAgdG8gc3BlY2lmaWNhbGx5IGhhbmRsZSByZWdpc3RlcmluZyBhIGRldmljZSBsaWtlIHRoYXQuCgpXYWl0IGEgc2Vjb25kLi4uIGRvZXNuJiMzOTt0IHN5emthbGxlciBoYXZlIGBzeXpfbWRpb18uLi5gIGNhbGxzPyBNYXliZSBpdCBkb2VzISBJIHNob3VsZCBjaGVjayB0aGUgc3l6a2FsbGVyIGRvY3VtZW50YXRpb24gYW5kIGxvb2sgc3BlY2lmaWNhbGx5IGZvciB0aG9zZS4gVGhhdCBjb3VsZCBiZSB0aGUga2V5IHRvIHRlc3RpbmcgdGhpcyBkcml2ZXIuIExldCYjMzk7cyBsb29rIGludG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzeXpfbWRpbyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjkxOQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlIHdoYXQgSSBjYW4gY29tZSB1cCB3aXRoIGJhc2VkIG9uIHRoYXQgcHJvbXB0LiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgcmVuZGVyZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gZGVhbGluZyB3aXRoIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBTeXprYWxsZXImIzM5O3MgQ292ZXJhZ2Ugb2YgTURJTy9QSFkqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgdG8gd29yay4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGdvIHN0cmFpZ2h0IHRvIHN5emthbGxlci4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgd2UmIzM5O3ZlIGdvdCBhbnkgcHJlLWV4aXN0aW5nIGRlc2NyaXB0aW9ucyBvciB0ZXN0cyByZWxhdGVkIHRvIE1ESU8gb3IgUEhZIGludGVyYWN0aW9ucyB3aXRoaW4gdGhhdCBmdXp6aW5nIGZyYW1ld29yay4gSXQmIzM5O3MgYSBrZXkgc3RhcnRpbmcgcG9pbnQ7IEkgZG9uJiMzOTt0IHdhbnQgdG8gcmVpbnZlbnQgdGhlIHdoZWVsIGlmIHRoZXJlJiMzOTtzIGFscmVhZHkgc29tZSBmb3VuZGF0aW9uYWwgd29yayB0aGVyZS4gQSBxdWljayBzZWFyY2ggd2l0aGluIHN5emthbGxlciYjMzk7cyBjb2RlYmFzZSB3b3VsZCBiZSBteSBpbW1lZGlhdGUgdGFjdGljIC0gbGlrZWx5IGZvY3VzaW5nIG9uIGtleXdvcmRzIGxpa2UgJiMzNDtNRElPLCYjMzQ7ICYjMzQ7UEhZLCYjMzQ7IG9yIHBlcmhhcHMgbW9yZSBnZW5lcmljIHRlcm1zIHJlbGF0ZWQgdG8gbmV0d29yayBpbnRlcmZhY2UgY29udHJvbGxlcnMgKE5JQ3MpIG9yIHBoeXNpY2FsIGxheWVyIHRyYW5zY2VpdmVycywgZGVwZW5kaW5nIG9uIGhvdyBpdCBtaWdodCBiZSBpbXBsZW1lbnRlZCB3aXRoaW4gdGhlIGtlcm5lbC4gVGhlIGdvYWwgaXMgZWZmaWNpZW5jeSwgc28ga25vd2luZyBpZiBzeXprYWxsZXIgYWxyZWFkeSBoYXMgY292ZXJhZ2UgaW4gdGhpcyBhcmVhIHdvdWxkIHNhdmUgdGltZSBhbmQgY291bGQgcHJvdmlkZSBhIHVzZWZ1bCBiYXNlIGZvciBmdXJ0aGVyIGV4cGxvcmF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgdGhlc2UgdG9vbHMgY2FuIHNvbWV0aW1lcyBoYXZlIGRpZmZlcmVudCBuYW1pbmcgY29udmVudGlvbnMgb3IgaW50ZXJuYWwgaW1wbGVtZW50YXRpb25zLCBzbyBJJiMzOTtsbCBzdGF5IGZsZXhpYmxlIGFuZCBub3QgZ2V0IHRvbyBodW5nIHVwIG9uIHNwZWNpZmljIHRlcm1pbm9sb2d5IGlmIG5vdGhpbmcgcG9wcyByaWdodCBhd2F5LiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWRpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2RzYS9kc2EuYz02MjE9c3RhdGljIGludCBkc2Ffc3dpdGNoX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5uZXQvZHNhL2RzYS5jLTY1My1cdGlmICghZHMtXHUwMDNldXNlcl9taWlfYnVzIFx1MDAyNlx1MDAyNiBkcy1cdTAwM2VvcHMtXHUwMDNlcGh5X3JlYWQpIHtcbm5ldC9kc2EvZHNhLmM6NjU0Olx0XHRkcy1cdTAwM2V1c2VyX21paV9idXMgPSBtZGlvYnVzX2FsbG9jKCk7XG5uZXQvZHNhL2RzYS5jLTY1NS1cdFx0aWYgKCFkcy1cdTAwM2V1c2VyX21paV9idXMpIHtcbi0tXG5uZXQvZHNhL2RzYS5jLTY2MS1cbm5ldC9kc2EvZHNhLmM6NjYyOlx0XHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKGRzLVx1MDAzZXVzZXJfbWlpX2J1cyk7XG5uZXQvZHNhL2RzYS5jLTY2My1cdFx0aWYgKGVyciBcdTAwM2MgMClcbi0tXG5uZXQvZHNhL2RzYS5jLTY3My1cdGlmIChkcy1cdTAwM2V1c2VyX21paV9idXMgXHUwMDI2XHUwMDI2IGRzLVx1MDAzZW9wcy1cdTAwM2VwaHlfcmVhZClcbm5ldC9kc2EvZHNhLmM6Njc0Olx0XHRtZGlvYnVzX2ZyZWUoZHMtXHUwMDNldXNlcl9taWlfYnVzKTtcbm5ldC9kc2EvZHNhLmMtNjc1LXRlYXJkb3duOlxuLS1cbm5ldC9kc2EvZHNhLmM9Njg1PXN0YXRpYyB2b2lkIGRzYV9zd2l0Y2hfdGVhcmRvd24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbm5ldC9kc2EvZHNhLmMtNjkyLVx0aWYgKGRzLVx1MDAzZXVzZXJfbWlpX2J1cyBcdTAwMjZcdTAwMjYgZHMtXHUwMDNlb3BzLVx1MDAzZXBoeV9yZWFkKSB7XG5uZXQvZHNhL2RzYS5jOjY5MzpcdFx0bWRpb2J1c191bnJlZ2lzdGVyKGRzLVx1MDAzZXVzZXJfbWlpX2J1cyk7XG5uZXQvZHNhL2RzYS5jOjY5NDpcdFx0bWRpb2J1c19mcmVlKGRzLVx1MDAzZXVzZXJfbWlpX2J1cyk7XG5uZXQvZHNhL2RzYS5jLTY5NS1cdFx0ZHMtXHUwMDNldXNlcl9taWlfYnVzID0gTlVMTDtcbi0tXG5uZXQvZHNhL3BvcnQuYy0xMS0jaW5jbHVkZSBcdTAwM2NsaW51eC9ub3RpZmllci5oXHUwMDNlXG5uZXQvZHNhL3BvcnQuYzoxMjojaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9tZGlvLmhcdTAwM2Vcbm5ldC9kc2EvcG9ydC5jLTEzLSNpbmNsdWRlIFx1MDAzY2xpbnV4L29mX25ldC5oXHUwMDNlXG4tLVxubmV0L2RzYS9wb3J0LmM9MTcyNj1zdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGRzYV9zd2l0Y2hlc19hcHBseV93b3JrYXJvdW5kc1tdID0ge1xuLS1cbm5ldC9kc2EvcG9ydC5jLTE3OTYtI2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9EU0FfU01TQ19MQU45MzAzX01ESU8pXG5uZXQvZHNhL3BvcnQuYzoxNzk3Olx0XCYjMzQ7c21zYyxsYW45MzAzLW1kaW9cJiMzNDssXG5uZXQvZHNhL3BvcnQuYy0xNzk4LSNlbmRpZlxuLS1cbm5ldC9kc2EvdXNlci5jLTEzLSNpbmNsdWRlIFx1MDAzY2xpbnV4L29mX25ldC5oXHUwMDNlXG5uZXQvZHNhL3VzZXIuYzoxNDojaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9tZGlvLmhcdTAwM2Vcbm5ldC9kc2EvdXNlci5jOjE1OiNpbmNsdWRlIFx1MDAzY2xpbnV4L21kaW8uaFx1MDAzZVxubmV0L2RzYS91c2VyLmMtMTYtI2luY2x1ZGUgXHUwMDNjbmV0L3J0bmV0bGluay5oXHUwMDNlXG4tLVxubmV0L2RzYS91c2VyLmM9MjYzNz1zdGF0aWMgaW50IGRzYV91c2VyX3BoeV9jb25uZWN0KHN0cnVjdCBuZXRfZGV2aWNlICp1c2VyX2RldiwgaW50IGFkZHIsXG4tLVxubmV0L2RzYS91c2VyLmMtMjY0Mi1cbm5ldC9kc2EvdXNlci5jOjI2NDM6XHR1c2VyX2Rldi1cdTAwM2VwaHlkZXYgPSBtZGlvYnVzX2dldF9waHkoZHMtXHUwMDNldXNlcl9taWlfYnVzLCBhZGRyKTtcbm5ldC9kc2EvdXNlci5jLTI2NDQtXHRpZiAoIXVzZXJfZGV2LVx1MDAzZXBoeWRldikge1xuLS1cbm5ldC9ldGh0b29sL2NvbW1vbi5jPTU4Nz1jb252ZXJ0X2xlZ2FjeV9zZXR0aW5nc190b19saW5rX2tzZXR0aW5ncyhcbi0tXG5uZXQvZXRodG9vbC9jb21tb24uYy02MjEtXHRcdD0gbGVnYWN5X3NldHRpbmdzLVx1MDAzZWF1dG9uZWc7XG5uZXQvZXRodG9vbC9jb21tb24uYzo2MjI6XHRsaW5rX2tzZXR0aW5ncy1cdTAwM2ViYXNlLm1kaW9fc3VwcG9ydFxubmV0L2V0aHRvb2wvY29tbW9uLmM6NjIzOlx0XHQ9IGxlZ2FjeV9zZXR0aW5ncy1cdTAwM2VtZGlvX3N1cHBvcnQ7XG5uZXQvZXRodG9vbC9jb21tb24uYy02MjQtXHRsaW5rX2tzZXR0aW5ncy1cdTAwM2ViYXNlLmV0aF90cF9tZGl4XG4tLVxubmV0L2V0aHRvb2wvaW9jdGwuYz0zODI9Y29udmVydF9saW5rX2tzZXR0aW5nc190b19sZWdhY3lfc2V0dGluZ3MoXG4tLVxubmV0L2V0aHRvb2wvaW9jdGwuYy00MTItXHRcdD0gbGlua19rc2V0dGluZ3MtXHUwMDNlYmFzZS5hdXRvbmVnO1xubmV0L2V0aHRvb2wvaW9jdGwuYzo0MTM6XHRsZWdhY3lfc2V0dGluZ3MtXHUwMDNlbWRpb19zdXBwb3J0XG5uZXQvZXRodG9vbC9pb2N0bC5jOjQxNDpcdFx0PSBsaW5rX2tzZXR0aW5ncy1cdTAwM2ViYXNlLm1kaW9fc3VwcG9ydDtcbm5ldC9ldGh0b29sL2lvY3RsLmMtNDE1LVx0bGVnYWN5X3NldHRpbmdzLVx1MDAzZWV0aF90cF9tZGl4XG4tLVxubmV0L2V0aHRvb2wvcGh5LmM9NzA9c3RhdGljIGludCBwaHlfcHJlcGFyZV9kYXRhKGNvbnN0IHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2luZm8sXG4tLVxubmV0L2V0aHRvb2wvcGh5LmMtOTEtXG5uZXQvZXRodG9vbC9waHkuYzo5MjpcdHJlcF9kYXRhLVx1MDAzZW5hbWUgPSBrc3RyZHVwKGRldl9uYW1lKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldiksIEdGUF9LRVJORUwpO1xubmV0L2V0aHRvb2wvcGh5LmMtOTMtXHRpZiAoIXJlcF9kYXRhLVx1MDAzZW5hbWUpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQ5MgoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDEzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBTeXprYWxsZXIgJmFtcDsgUEhZIERyaXZlciBCcmFpbnN0b3JtKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHdlIGNhbiBsZXZlcmFnZSBzeXprYWxsZXIgdG8gdGVzdCBQSFkgZHJpdmVycywgc3BlY2lmaWNhbGx5IHRoYXQgYGRhcDgyMTFyYCBvbmUuIFRoZSBxdWVzdGlvbiBpcywgY2FuIHdlIGFjdHVhbGx5ICpnZXQqIHRoYXQgZHJpdmVyIGluc3RhbnRpYXRlZCBpbiBRRU1VPyBTeXprYWxsZXImIzM5O3Mgc3RyZW5ndGggbGllcyBpbiB0ZXN0aW5nIGRyaXZlcnMsIGJ1dCBpdCYjMzk7cyB0aGUgaW5zdGFudGlhdGlvbiB0aGF0JiMzOTtzIHRoZSBodXJkbGUgaGVyZS4KClR5cGljYWxseSwgUEhZIGRyaXZlcnMgZ2V0IG1hdGNoZWQgYmFzZWQgb24gdGhlaXIgUEhZIElEIHJlYWQgZnJvbSB0aGUgTURJTyBidXMuIFdpdGhvdXQgdGhlIHBoeXNpY2FsIGhhcmR3YXJlIHJlcG9ydGluZyB0aGUgY29ycmVjdCBJRCAoYDB4MDAwODAxMUJgKSwgdGhlIGRyaXZlciBqdXN0IHdvbiYjMzk7dCBwcm9iZSwgcmlnaHQ/IFVubGVzcy4uLiB3ZSBjYW4gdHJpY2sgaXQuIERldmljZSB0cmVlIGVudHJpZXMgY2FuIGZvcmNlIGluc3RhbnRpYXRpb24sIHRoYXQmIzM5O3Mgb25lIGF2ZW51ZS4gT3IsIGFuZCB0aGlzIGlzIHdoZXJlIHN5emthbGxlciBtaWdodCBjb21lIGluLCBjb3VsZCBpdCBwb3NzaWJseSBzaW11bGF0ZSBhIHNvZnR3YXJlIE1ESU8gYnVzIHRoYXQgZmFrZXMgdGhlIFBIWSBJRD8KClRoZSBrZXkgaGVyZSBpcyB3aGV0aGVyIHN5emthbGxlciBoYXMgdGhlIGFiaWxpdHkgdG8gaW5qZWN0IG9yIHNwZWNpZnkgTURJTyBkZXZpY2VzLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIHN5emthbGxlciBkb2N1bWVudGF0aW9uIGFuZCBjb2RlIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgbWVjaGFuaXNtIGZvciBjcmVhdGluZyB0aGlzIGtpbmQgb2YgdmlydHVhbCBoYXJkd2FyZSBlbnZpcm9ubWVudC4gSWYgd2UgY2FuIGluamVjdCB0aGF0IE1ESU8gZGV2aWNlIHdpdGggdGhlIGNvcnJlY3QgUEhZIElELCB3ZSYjMzk7cmUgZ29sZGVuLiBUaGF0JiMzOTtzIHRoZSBmaXJzdCB0aGluZyB0byBjaGVjay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW8tbW9ja3VwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4OTIzCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6CgoqKkRlYnVnZ2luZyB0aGUgUEhZIERyaXZlcioqCgpIbW0sIHNvbWV0aGluZyYjMzk7cyBub3QgcmlnaHQuIEkgd2FzIGV4cGVjdGluZyB0byBzZWUgYG1kaW8tbW9ja3VwYCBpbiB0aGUgc3lzdGVtLCBidXQgaXQmIzM5O3Mgbm90IHByZXNlbnQuIFRoYXQmIzM5O3Mgb2RkLiBMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhlIHVzdWFsIHN1c3BlY3RzLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUmIzM5O3MgYSBtb2NrdXAgb3IgZHVtbXkgUEhZIGRyaXZlciBoaWRpbmcgaW4gYGRyaXZlcnMvbmV0L3BoeS9gLiBJdCYjMzk7cyBwb3NzaWJsZSBpdCYjMzk7cyBnb3QgYSBzbGlnaHRseSBkaWZmZXJlbnQgbmFtaW5nIGNvbnZlbnRpb24uIFRpbWUgdG8gZ28gc3BlbHVua2luZyBpbiB0aGUgY29kZSBiYXNlIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7YWRpbi5jJiMzNDssCiAgICAmIzM0O2FkaW4xMTAwLmMmIzM0OywKICAgICYjMzQ7YWlyX2FuODgwMS5jJiMzNDssCiAgICAmIzM0O2Fpcl9lbjg4MTFoLmMmIzM0OywKICAgICYjMzQ7YWlyX3BoeV9saWIuYyYjMzQ7LAogICAgJiMzNDthaXJfcGh5X2xpYi5oJiMzNDssCiAgICAmIzM0O2FtZC5jJiMzNDssCiAgICAmIzM0O2FzMjF4eHguYyYjMzQ7LAogICAgJiMzNDtheDg4Nzk2Yi5jJiMzNDssCiAgICAmIzM0O2F4ODg3OTZiX3J1c3QucnMmIzM0OywKICAgICYjMzQ7YmNtLWN5Z251cy5jJiMzNDssCiAgICAmIzM0O2JjbS1waHktbGliLmMmIzM0OywKICAgICYjMzQ7YmNtLXBoeS1saWIuaCYjMzQ7LAogICAgJiMzNDtiY20tcGh5LXB0cC5jJiMzNDssCiAgICAmIzM0O2JjbTU0MTQwLmMmIzM0OywKICAgICYjMzQ7YmNtNjN4eC5jJiMzNDssCiAgICAmIzM0O2JjbTd4eHguYyYjMzQ7LAogICAgJiMzNDtiY204NDg4MS5jJiMzNDssCiAgICAmIzM0O2JjbTg3eHguYyYjMzQ7LAogICAgJiMzNDticm9hZGNvbS5jJiMzNDssCiAgICAmIzM0O2NpY2FkYS5jJiMzNDssCiAgICAmIzM0O2NvcnRpbmEuYyYjMzQ7LAogICAgJiMzNDtkYXA4MjExci5jJiMzNDssCiAgICAmIzM0O2Rhdmljb20uYyYjMzQ7LAogICAgJiMzNDtkcDgzNjQwLmMmIzM0OywKICAgICYjMzQ7ZHA4MzY0MF9yZWcuaCYjMzQ7LAogICAgJiMzNDtkcDgzODIyLmMmIzM0OywKICAgICYjMzQ7ZHA4Mzg0OC5jJiMzNDssCiAgICAmIzM0O2RwODM4NjcuYyYjMzQ7LAogICAgJiMzNDtkcDgzODY5LmMmIzM0OywKICAgICYjMzQ7ZHA4M3RjODExLmMmIzM0OywKICAgICYjMzQ7ZHA4M3RkNTEwLmMmIzM0OywKICAgICYjMzQ7ZHA4M3RnNzIwLmMmIzM0OywKICAgICYjMzQ7ZXQxMDExYy5jJiMzNDssCiAgICAmIzM0O2ZpeGVkX3BoeS5jJiMzNDssCiAgICAmIzM0O2ljcGx1cy5jJiMzNDssCiAgICAmIzM0O2ludGVsLXh3YXkuYyYjMzQ7LAogICAgJiMzNDtsaW5rbW9kZS5jJiMzNDssCiAgICAmIzM0O2x4dC5jJiMzNDssCiAgICAmIzM0O21hcnZlbGwtODhxMnh4eC5jJiMzNDssCiAgICAmIzM0O21hcnZlbGwtODh4MjIyMi5jJiMzNDssCiAgICAmIzM0O21hcnZlbGwuYyYjMzQ7LAogICAgJiMzNDttYXJ2ZWxsMTBnLmMmIzM0OywKICAgICYjMzQ7bWRpby1vcGVuLWFsbGlhbmNlLmgmIzM0OywKICAgICYjMzQ7bWRpb19idXMuYyYjMzQ7LAogICAgJiMzNDttZGlvX2J1c19wcm92aWRlci5jJiMzNDssCiAgICAmIzM0O21kaW9fZGV2aWNlLmMmIzM0OywKICAgICYjMzQ7bWRpb19kZXZyZXMuYyYjMzQ7LAogICAgJiMzNDttZXNvbi1neGwuYyYjMzQ7LAogICAgJiMzNDttaWNyZWwuYyYjMzQ7LAogICAgJiMzNDttaWNyb2NoaXAuYyYjMzQ7LAogICAgJiMzNDttaWNyb2NoaXBfcmRzX3B0cC5jJiMzNDssCiAgICAmIzM0O21pY3JvY2hpcF9yZHNfcHRwLmgmIzM0OywKICAgICYjMzQ7bWljcm9jaGlwX3QxLmMmIzM0OywKICAgICYjMzQ7bWljcm9jaGlwX3Qxcy5jJiMzNDssCiAgICAmIzM0O21paV90aW1lc3RhbXBlci5jJiMzNDssCiAgICAmIzM0O21vdG9yY29tbS5jJiMzNDssCiAgICAmIzM0O214bC04NjExMC5jJiMzNDssCiAgICAmIzM0O214bC1ncHkuYyYjMzQ7LAogICAgJiMzNDtuYXRpb25hbC5jJiMzNDssCiAgICAmIzM0O25jbjI2MDAwLmMmIzM0OywKICAgICYjMzQ7bnhwLWM0NS10amExMXh4LW1hY3NlYy5jJiMzNDssCiAgICAmIzM0O254cC1jNDUtdGphMTF4eC5jJiMzNDssCiAgICAmIzM0O254cC1jNDUtdGphMTF4eC5oJiMzNDssCiAgICAmIzM0O254cC1jYnR4LmMmIzM0OywKICAgICYjMzQ7bnhwLXRqYTExeHguYyYjMzQ7LAogICAgJiMzNDtvcGVuX2FsbGlhbmNlX2hlbHBlcnMuYyYjMzQ7LAogICAgJiMzNDtvcGVuX2FsbGlhbmNlX2hlbHBlcnMuaCYjMzQ7LAogICAgJiMzNDtwaHktYzQ1LmMmIzM0OywKICAgICYjMzQ7cGh5LWNhcHMuaCYjMzQ7LAogICAgJiMzNDtwaHktY29yZS5jJiMzNDssCiAgICAmIzM0O3BoeS5jJiMzNDssCiAgICAmIzM0O3BoeV9jYXBzLmMmIzM0OywKICAgICYjMzQ7cGh5X2RldmljZS5jJiMzNDssCiAgICAmIzM0O3BoeV9sZWRfdHJpZ2dlcnMuYyYjMzQ7LAogICAgJiMzNDtwaHlfbGlua190b3BvbG9neS5jJiMzNDssCiAgICAmIzM0O3BoeV9wYWNrYWdlLmMmIzM0OywKICAgICYjMzQ7cGh5X3BvcnQuYyYjMzQ7LAogICAgJiMzNDtwaHlsaWItaW50ZXJuYWwuaCYjMzQ7LAogICAgJiMzNDtwaHlsaWIuaCYjMzQ7LAogICAgJiMzNDtwaHlsaW5rLmMmIzM0OywKICAgICYjMzQ7cXNlbWkuYyYjMzQ7LAogICAgJiMzNDtxdDIwMjUucnMmIzM0OywKICAgICYjMzQ7cm9ja2NoaXAuYyYjMzQ7LAogICAgJiMzNDtzZnAtYnVzLmMmIzM0OywKICAgICYjMzQ7c2ZwLmMmIzM0OywKICAgICYjMzQ7c2ZwLmgmIzM0OywKICAgICYjMzQ7c21zYy5jJiMzNDssCiAgICAmIzM0O3N0ZTEwWHAuYyYjMzQ7LAogICAgJiMzNDtzdHVicy5jJiMzNDssCiAgICAmIzM0O3N3cGh5LmMmIzM0OywKICAgICYjMzQ7c3dwaHkuaCYjMzQ7LAogICAgJiMzNDt0ZXJhbmV0aWNzLmMmIzM0OywKICAgICYjMzQ7dVBENjA2MjAuYyYjMzQ7LAogICAgJiMzNDt2aXRlc3NlLmMmIzM0OywKICAgICYjMzQ7eGlsaW54X2dtaWkycmdtaWkuYyYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogWwogICAgJiMzNDthcXVhbnRpYSYjMzQ7LAogICAgJiMzNDttZWRpYXRlayYjMzQ7LAogICAgJiMzNDttc2NjJiMzNDssCiAgICAmIzM0O3Fjb20mIzM0OywKICAgICYjMzQ7cmVhbHRlayYjMzQ7CiAgXQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDg3CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMzM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEN1cnJlbnQgQW5hbHlzaXMgb2YgdGhlIFBIWSBEZXZpY2UgSW5qZWN0aW9uIENoYWxsZW5nZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgZmlsZXM6IGBmaXhlZF9waHkuY2AsIGBtZGlvX2J1cy5jYCwgYG1kaW9fZGV2aWNlLmNgLCBhbmQgYHBoeV9kZXZpY2UuY2AuIFRoZSBjb3JlIGlzc3VlIGlzIHRyeWluZyB0byBnZXQgc3l6a2FsbGVyIHRvIGludGVyYWN0IHdpdGggYSBzcGVjaWZpYyBQSFkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYGRhcDgyMTFyX2NvbmZpZ19pbml0YC4gVGhlIGltbWVkaWF0ZSBwcm9ibGVtIGlzIHRoYXQgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IHNlZW0gdG8gaGF2ZSBhIHN0cmFpZ2h0Zm9yd2FyZCB3YXkgdG8gaW5qZWN0IGEgUEhZIGRldmljZSB3aXRoIGFuIGFyYml0cmFyeSBJRC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRvIGZvcmNlIHRoYXQgZHJpdmVyIHRvIGJpbmQuCgpUaGUgb2J2aW91cyByb3V0ZXMgYXJlIGVpdGhlciB0aHJvdWdoIGEgc29mdHdhcmUgTURJTyBidXMgdGhhdCB1c2Vyc3BhY2UgY2FuIGNvbnRyb2wgdG8gcmVnaXN0ZXIgUEhZcywgb3Igc29tZSBjbGV2ZXIgdXNlIG9mIG5ldGxpbmsuIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgc3l6a2FsbGVyICpjYW4qIGV2ZW4gcmVhY2ggYGRhcDgyMTFyX2NvbmZpZ19pbml0YCBkaXJlY3RseS4gVGhlIGRyaXZlciBiaW5kcyBpdHNlbGYgdmlhIGBtb2R1bGVfcGh5X2RyaXZlcihkYXA4MjExcl9kcml2ZXIpYC4gSXQgc2VlbXMgaXQgbG9va3MgZm9yIGEgUEhZIHdpdGggdGhlIElEIGAweDAwMDgwMTFCYC4gU28sIHRoZSBtaWxsaW9uLWRvbGxhciBxdWVzdGlvbjogY2FuIEkgY3JlYXRlIGEgUEhZIGRldmljZSAqd2l0aCogdGhhdCBJRCB1c2luZyBzeXprYWxsZXI/CgpgZml4ZWRfcGh5X3JlZ2lzdGVyYCBpcyBhIHBvc3NpYmlsaXR5IGZvciByZWdpc3RlcmluZyBhIGZpeGVkIFBIWSwgYnV0IGl0JiMzOTtzIHR5cGljYWxseSB1c2VkIGludGVybmFsbHkgYnkgb3RoZXIgZHJpdmVycy4gSSBuZWVkIHRvIGZpbmQgYSB1c2Vyc3BhY2UgaW50ZXJmYWNlIHRoYXQgY2FuIGNyZWF0ZSBNRElPIGRldmljZXMgb3IgUEhZcyBkaXJlY3RseS4gTGV0JiMzOTtzIHNlZS4uLiBjYW4gYFNJT0NTTUlJUkVHYCBkbyB0aGUgdHJpY2s/IE5vLCB0aGF0IGp1c3Qgd3JpdGVzIHRvIGEgcmVnaXN0ZXIsIGFuZCB0aGUgUEhZIElEIGlzIGNoZWNrZWQgZHVyaW5nIE1ESU8gYnVzIHNjYW5uaW5nLCBzbyBpdCB3b24mIzM5O3QgaGVscC4KCkkga25vdyBzeXprYWxsZXIgY2FuIHVzZSB2aXJ0dWFsIG5ldHdvcmsgZGV2aWNlcyBsaWtlIGB0dW5gIG9yIGB0YXBgLCBidXQgdGhvc2UgZG9uJiMzOTt0IGhhdmUgYW4gTURJTyBidXMuIFdoYXQgYWJvdXQgb3RoZXIgdmlydHVhbCBkZXZpY2VzPyBgbWFjc2VjYCwgYHZldGhgLCBgZHVtbXlgLCBgbWFjdmxhbmAuLi4gbm9wZSwgbm9uZSBvZiB0aG9zZSBoYXZlIGFuIE1ESU8gYnVzIGVpdGhlci4gSXMgdGhlcmUgYW55IGNoYW5jZSB0aGF0IGBuZXRkZXZzaW1gIG1pZ2h0IG9mZmVyIHNvbWV0aGluZz8gSXQmIzM5O3MgdGhlIG9ubHkgb3RoZXIgbmV0d29yayBkZXZpY2UgdGhhdCYjMzk7cyBldmVuIHJlbW90ZWx5IGluIHRoZSBiYWxscGFyayBoZXJlLiBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gaW52ZXN0aWdhdGUgdGhhdCBmdXJ0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA5MjIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRlbHZpbmcgaW50byBgZHNhX2xvb3BgIGFuZCBNRElPIEltcGxpY2F0aW9ucyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLi4uSSYjMzk7bSBtdWxsaW5nIG92ZXIgcG90ZW50aWFsIGNvbXBvbmVudHMgYW5kIGNvbmZpZ3VyYXRpb25zLiBUaGF0IGBkc2FfbG9vcGAgY29uc3RydWN0Li4uIGhtbSwgYSBtb2NrIERTQSBzd2l0Y2gsIHlvdSBzYXk/IFRoZSAmIzM0O21vY2smIzM0OyBhc3BlY3QgaXMgaW50ZXJlc3RpbmcuIEl0IGltbWVkaWF0ZWx5IHRyaWdnZXJzIHRob3VnaHRzIGFib3V0IHRoZSBpbnRlbmRlZCBwdXJwb3NlIOKAkyBwZXJoYXBzIHRlc3RpbmcsIHNpbXVsYXRpb24sIG9yIHByb3ZpZGluZyBhIGNvbnRyb2xsZWQgZW52aXJvbm1lbnQgZm9yIERTQSBpbnRlcmFjdGlvbnMuCgpOb3csIHRoZSBjb25uZWN0aW9uIHRoYXQgcmVhbGx5IHNwYXJrcyBteSBjdXJpb3NpdHkgaXMgdGhlIHBvdGVudGlhbCBmb3IgYW4gTURJTyBidXMgd2l0aGluIHRoYXQgYGRzYV9sb29wYCBzZXR1cC4gSWYgaXQgKmRvZXMqIGVtcGxveSBhbiBNRElPIGJ1cywgdGhhdCBvcGVucyB1cCBhIHdob2xlIHNldCBvZiBwb3NzaWJpbGl0aWVzLCBhbmQgcXVlc3Rpb25zLiBJcyBpdCBlbXVsYXRlZD8gSXMgdGhlcmUgYSBzb2Z0d2FyZS1kZWZpbmVkIE1ESU8gYWNjZXNzIGxheWVyLCBvciBpcyBpdCBhIGRpcmVjdCBoYXJkd2FyZSBpbnRlcmZhY2U/IFVuZGVyc3RhbmRpbmcgaG93IHRoZSBNRElPIG9wZXJhdGlvbnMgYXJlIGhhbmRsZWQgd2l0aGluIHRoaXMgbW9jayBlbnZpcm9ubWVudCBpcyBjcnVjaWFsLiBJdCBjaGFuZ2VzIGhvdyBJIHdvdWxkIGFwcHJvYWNoIGRlYnVnZ2luZywgZHJpdmVyIGRldmVsb3BtZW50LCBvciBhbnkgYW5hbHlzaXMgaW52b2x2aW5nIHRoaXMgY29tcG9uZW50LiBJJiMzOTttIHdvbmRlcmluZyBpZiB0aGlzIG9mZmVycyBhbiBhdmVudWUgZm9yIHZhbGlkYXRpbmcgb3IgZGV2ZWxvcGluZyBEU0Etc3BlY2lmaWMgTURJTyBpbnRlcmFjdGlvbnMgaW4gaXNvbGF0aW9uLCB3aXRob3V0IGRlcGVuZGluZyBvbiB0aGUgY2hhcmFjdGVyaXN0aWNzIG9mIGEgcmVhbCBoYXJkd2FyZSBzd2l0Y2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz03ND1zdGF0aWMgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldnNbUEhZX01BWF9BRERSXTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjc1OnN0YXRpYyBzdHJ1Y3QgbWRpb19kZXZpY2UgKnN3aXRjaF9tZGlvZGV2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzYtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9MTg0PXN0YXRpYyBpbnQgZHNhX2xvb3BfcGh5X3JlYWQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHJlZ251bSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODktXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxOTA6XHRyZXQgPSBtZGlvYnVzX3JlYWRfbmVzdGVkKGJ1cywgcHMtXHUwMDNlcG9ydF9iYXNlICYjNDM7IHBvcnQsIHJlZ251bSk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xOTEtXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTE5OT1zdGF0aWMgaW50IGRzYV9sb29wX3BoeV93cml0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwNS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIwNjpcdHJldCA9IG1kaW9idXNfd3JpdGVfbmVzdGVkKGJ1cywgcHMtXHUwMDNlcG9ydF9iYXNlICYjNDM7IHBvcnQsIHJlZ251bSwgdmFsdWUpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjA3LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz0yNTA9c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fYWRkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjYzLVx0LyogSnVzdCBkbyBhIHNsZWVwaW5nIG9wZXJhdGlvbiB0byBtYWtlIGxvY2tkZXAgY2hlY2tzIGVmZmVjdGl2ZSAqL1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjY0Olx0bWRpb2J1c19yZWFkKGJ1cywgcHMtXHUwMDNlcG9ydF9iYXNlICYjNDM7IHBvcnQsIE1JSV9CTVNSKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI2NS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz0yODM9c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjkyLVx0LyogSnVzdCBkbyBhIHNsZWVwaW5nIG9wZXJhdGlvbiB0byBtYWtlIGxvY2tkZXAgY2hlY2tzIGVmZmVjdGl2ZSAqL1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjkzOlx0bWRpb2J1c19yZWFkKGJ1cywgcHMtXHUwMDNlcG9ydF9iYXNlICYjNDM7IHBvcnQsIE1JSV9CTVNSKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5NC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz0zMzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBkc2FfbG9vcF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU1OnN0YXRpYyBpbnQgZHNhX2xvb3BfZHJ2X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1Ni17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTc6XHRzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgKnBkYXRhID0gbWRpb2Rldi1cdTAwM2VkZXYucGxhdGZvcm1fZGF0YTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1OC1cdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcztcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNjQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNjU6XHRkcyA9IGRldm1fa3phbGxvYyhcdTAwMjZtZGlvZGV2LVx1MDAzZWRldiwgc2l6ZW9mKCpkcyksIEdGUF9LRVJORUwpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzY2LVx0aWYgKCFkcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNjgtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNjk6XHRkcy1cdTAwM2VkZXYgPSBcdTAwMjZtZGlvZGV2LVx1MDAzZWRldjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM3MC1cdGRzLVx1MDAzZW51bV9wb3J0cyA9IERTQV9MT09QX05VTV9QT1JUUztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM3MS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM3MjpcdHBzID0gZGV2bV9remFsbG9jKFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2LCBzaXplb2YoKnBzKSwgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNzMtXHRpZiAoIXBzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4MS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM4MjpcdGRzLVx1MDAzZWRldiA9IFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzgzLVx0ZHMtXHUwMDNlb3BzID0gXHUwMDI2ZHNhX2xvb3BfZHJpdmVyO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzg0LVx0ZHMtXHUwMDNlcHJpdiA9IHBzO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Mzg1Olx0cHMtXHUwMDNlYnVzID0gbWRpb2Rldi1cdTAwM2VidXM7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zODYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozODc6XHRkZXZfc2V0X2RydmRhdGEoXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXYsIGRzKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4OC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTAtXHRpZiAoIXJldClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM5MTpcdFx0ZGV2X2luZm8oXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXYsIFwmIzM0OyVzOiAweCUweFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5Mi1cdFx0XHQgcGRhdGEtXHUwMDNlbmFtZSwgcGRhdGEtXHUwMDNlZW5hYmxlZF9wb3J0cyk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Mzk3OnN0YXRpYyB2b2lkIGRzYV9sb29wX2Rydl9yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk4LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM5OTpcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZtZGlvZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MDAtXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDEwLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDExOnN0YXRpYyB2b2lkIGRzYV9sb29wX2Rydl9zaHV0ZG93bihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MTIte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDEzOlx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxNC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MTktXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MjA6XHRkZXZfc2V0X2RydmRhdGEoXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXYsIE5VTEwpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDIxLX1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyMi1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyMzpzdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIGRzYV9sb29wX2RydiA9IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyNDpcdC5tZGlvZHJ2LmRyaXZlclx0PSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjUtXHRcdC5uYW1lXHQ9IFwmIzM0O2RzYS1sb29wXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTQzMj1zdGF0aWMgaW50IGRzYV9sb29wX2J1c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM0LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzNTpcdHJldHVybiBkcnYgPT0gXHUwMDI2ZHNhX2xvb3BfZHJ2Lm1kaW9kcnYuZHJpdmVyO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM2LX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz00Mzg9c3RhdGljIHZvaWQgZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ1LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ2OnN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2Rldih2b2lkKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ3LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NjItXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NjM6XHRidXMgPSBtZGlvX2ZpbmRfYnVzKFwmIzM0O2ZpeGVkLTBcJiMzNDspO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDY0LVx0aWYgKFdBUk5fT04oIWJ1cykpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDY2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDY3Olx0c3dpdGNoX21kaW9kZXYgPSBtZGlvX2RldmljZV9jcmVhdGUoYnVzLCAzMSk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Njg6XHRpZiAoSVNfRVJSKHN3aXRjaF9tZGlvZGV2KSlcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ2OS1cdFx0Z290byBvdXQ7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzE6XHRzd2l0Y2hfbWRpb2Rldi1cdTAwM2VidXNfbWF0Y2ggPSBkc2FfbG9vcF9idXNfbWF0Y2g7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzI6XHRzd2l0Y2hfbWRpb2Rldi1cdTAwM2VkZXYucGxhdGZvcm1fZGF0YSA9IFx1MDAyNmRzYV9sb29wX3BkYXRhO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDczLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDc0Olx0cmV0ID0gbWRpb19kZXZpY2VfcmVnaXN0ZXIoc3dpdGNoX21kaW9kZXYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDc1LVx0aWYgKHJldClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ3NjpcdFx0bWRpb19kZXZpY2VfZnJlZShzd2l0Y2hfbWRpb2Rldik7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00Nzctb3V0OlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTQ4Mj1zdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDg2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDg3Olx0cmV0ID0gZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5My1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5NDpcdHJldCA9IG1kaW9fZHJpdmVyX3JlZ2lzdGVyKFx1MDAyNmRzYV9sb29wX2Rydik7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTUtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTYtXHRcdGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3RlcigpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk3Olx0XHRtZGlvX2RldmljZV9yZW1vdmUoc3dpdGNoX21kaW9kZXYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk4Olx0XHRtZGlvX2RldmljZV9mcmVlKHN3aXRjaF9tZGlvZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5OS1cdH1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz01MDU9c3RhdGljIHZvaWQgX19leGl0IGRzYV9sb29wX2V4aXQodm9pZClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwNi17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDc6XHRtZGlvX2RyaXZlcl91bnJlZ2lzdGVyKFx1MDAyNmRzYV9sb29wX2Rydik7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDgtXHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwOTpcdG1kaW9fZGV2aWNlX3JlbW92ZShzd2l0Y2hfbWRpb2Rldik7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MTA6XHRtZGlvX2RldmljZV9mcmVlKHN3aXRjaF9tZGlvZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxMS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MzAzCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBGaXhlZCBQSFkgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2YCBmdW5jdGlvbiBhbmQgaW1tZWRpYXRlbHkgbXkgcmFkYXIgcGluZ3Mgb24gdGhlIHVzZSBvZiBgbWRpb19maW5kX2J1cygmIzM0O2ZpeGVkLTAmIzM0OylgLiBJbnRlcmVzdGluZy4uLiBJIG5lZWQgdG8gY29uc2lkZXIgYSBzY2VuYXJpbyB3aGVyZSBJIHdhbnQgbW9yZSBmbGV4aWJpbGl0eS4gVGhlIHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMsIGNhbiBJIGNyZWF0ZSBhIGZpeGVkIFBIWSB3aXRoIGEgc3BlY2lmaWMsIGFyYml0cmFyeSBQSFkgSUQsIGluc3RlYWQgb2YgYmVpbmcgbGltaXRlZCB0byB3aGF0ZXZlciAmIzM0O2ZpeGVkLTAmIzM0OyByZXNvbHZlcyB0bz8KClRvIGZpZ3VyZSB0aGlzIG91dCwgSSBzaG91bGQgdGFrZSBhIGxvb2sgYXQgdGhlIGZ1bmN0aW9uIGBmaXhlZF9waHlfcmVnaXN0ZXJgLiBUaGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBzdGFydCBkaWdnaW5nIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgbWVjaGFuaXNtIGZvciBtb3JlIGZpbmUtZ3JhaW5lZCBjb250cm9sIG92ZXIgZml4ZWQgUEhZIGRldmljZSBjcmVhdGlvbiBhbmQgY29uZmlndXJhdGlvbi4gSXQmIzM5O3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgbG9va2luZyBmb3IgdGhlIGhvb2tzIEkmIzM5O2QgbmVlZCB0byBhY2hpZXZlIHRoYXQgZmxleGliaWxpdHkuIEkgd2FudCB0byBzZWUgaG93IHRoZSByZWdpc3RyYXRpb24gcHJvY2VzcyBoYW5kbGVzIFBIWSBJRHMgYW5kIGJ1cyBhc3NpZ25tZW50LiBUaGlzIGZlZWxzIGxpa2UgYSBwb3RlbnRpYWwgYXJlYSBmb3IgY3VzdG9taXphdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zml4ZWRfcGh5X3JlZ2lzdGVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTQ4Mj1zdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDkxLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTlVNX0ZJWEVEX1BIWVM7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDkyOlx0XHRwaHlkZXZzW2ldID0gZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM9MjIzND1zdGF0aWMgaW50IGI0NF9yZWdpc3Rlcl9waHlfb25lKHN0cnVjdCBiNDQgKmJwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYzoyMjczOlx0XHRwaHlkZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNzQtXHRcdGlmICghSVNfRVJSKHBoeWRldikpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYz0xNDM5PWludCBiZ21hY19waHlfY29ubmVjdF9kaXJlY3Qoc3RydWN0IGJnbWFjICpiZ21hYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jLTE0NDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jOjE0NDk6XHRwaHlfZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFx1MDAyNmZwaHlfc3RhdHVzLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmMtMTQ1MC1cdGlmIChJU19FUlIocGh5X2RldikpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jPTE4NDg9c3RhdGljIGludCBmdGdtYWMxMDBfcHJvYmVfbmNzaShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTg2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM6MTg2NzpcdHBoeWRldiA9IGZpeGVkX3BoeV9yZWdpc3RlcihcdTAwMjZuY3NpX3BoeV9zdGF0dXMsIG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTg2OC1cdGlmIChJU19FUlIocGh5ZGV2KSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTI5ODE9c3RhdGljIGludCBmZWNfZW5ldF9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzAwMi1cdFx0XHRuZXRkZXZfaW5mbyhuZGV2LCBcJiMzNDtubyBQSFksIGFzc3VtaW5nIGRpcmVjdCBjb25uZWN0aW9uIHRvIHN3aXRjaFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzozMDAzOlx0XHRcdHBoeV9kZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTMwMDQtXHRcdFx0aWYgKElTX0VSUihwaHlfZGV2KSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmM9MjM4PXN0YXRpYyBpbnQgaGJnX2ZpeGVkX3BoeV9pbml0KHN0cnVjdCBoYmdfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jLTI1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmM6MjUxOlx0cGh5ZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFx1MDAyNmhiZ19maXhlZF9waHlfc3RhdHVzLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmMtMjUyLVx0aWYgKElTX0VSUihwaHlkZXYpKSB7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9NDEyPWludCBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQ1OS1yZWdpc3Rlcl9waHk6XG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzo0NjA6XHRyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKGZpeGVkX3BoeV9yZWdpc3RlcihcdTAwMjZzdGF0dXMsIG5wKSk7XG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy00NjEtfVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYz0xMTg9c3RhdGljIGludCBmaXhlZF9waHlfZ2V0X2ZyZWVfYWRkcih2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xMzAtXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM6MTMxOnN0cnVjdCBwaHlfZGV2aWNlICpmaXhlZF9waHlfcmVnaXN0ZXIoY29uc3Qgc3RydWN0IGZpeGVkX3BoeV9zdGF0dXMgKnN0YXR1cyxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xMzItXHRcdFx0XHQgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xNzItfVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjE3MzpFWFBPUlRfU1lNQk9MX0dQTChmaXhlZF9waHlfcmVnaXN0ZXIpO1xuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE3NC1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoxNzU6c3RydWN0IHBoeV9kZXZpY2UgKmZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCh2b2lkKVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE3Ni17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE4MS1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoxODI6XHRyZXR1cm4gZml4ZWRfcGh5X3JlZ2lzdGVyKFx1MDAyNnN0YXR1cywgTlVMTCk7XG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTgzLX1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoxODQ6RVhQT1JUX1NZTUJPTF9HUEwoZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKTtcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xODUtXG4tLVxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaD0xOT1leHRlcm4gaW50IGZpeGVkX3BoeV9jaGFuZ2VfY2FycmllcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sIG5ld19jYXJyaWVyKTtcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmg6MjA6c3RydWN0IHBoeV9kZXZpY2UgKmZpeGVkX3BoeV9yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgZml4ZWRfcGh5X3N0YXR1cyAqc3RhdHVzLFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaC0yMS1cdFx0XHRcdCAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApO1xuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaDoyMjpzdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKHZvaWQpO1xuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaC0yMy1cbi0tXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oPTI5PXN0YXRpYyBpbmxpbmUgc3RydWN0IHBoeV9kZXZpY2UgKlxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaDozMDpmaXhlZF9waHlfcmVnaXN0ZXIoY29uc3Qgc3RydWN0IGZpeGVkX3BoeV9zdGF0dXMgKnN0YXR1cyxcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmgtMzEtXHRcdCAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXG4tLVxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaC0zNS1cbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmg6MzY6c3RhdGljIGlubGluZSBzdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKHZvaWQpXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oLTM3LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYyMzgKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAyMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSHlwb3RoZXNpcyBvbiBTeXprYWxsZXIgYW5kIEZpeGVkIFBIWSBEZXZpY2VzKioKCk9rYXksIGxldCYjMzk7cyB0aGluayB0aGlzIHRocm91Z2guIFRoZSBgZml4ZWRfcGh5X3JlZ2lzdGVyYCBmdW5jdGlvbiwgcmlnaHQ/IFRoYXQmIzM5O3MgY3JlYXRpbmcgYSBQSFkgZGV2aWNlLCB1c3VhbGx5IHdpdGggYSBmaXhlZCBQSFkgSUQsIGxpa2UgYDB4MDAwMDAwMDBgIG9yIHNpbWlsYXIuIE5vdGhpbmcgdG9vIGV4Y2l0aW5nIG9uIGl0cyBvd24uIEJ1dCwgaG9sZCBvbiBhIHNlY29uZC4uLlN5emthbGxlciwgdGhlIGZ1enplciwgY2FuIGluamVjdCBkZXZpY2UgdHJlZSBvdmVybGF5cyEgVGhpcyBpcyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nLgoKSWYgU3l6a2FsbGVyIGNyYWZ0cyBhIGRldmljZSB0cmVlIG92ZXJsYXkgd2l0aCBhIG5vZGUgdGhhdCAqbWF0Y2hlcyogdGhpcyBmaXhlZCBQSFksIGNvdWxkIHdlIGdldCBpdCBwcm9iZWQ/IFllcywgdGhhdCBjb3VsZCB3b3JrISBTeXprYWxsZXIgKmRvZXMqIGhhdmUgc3VwcG9ydCBmb3IgZGV2aWNlIHRyZWUgb3ZlcmxheXMuIEkga25vdyB0aGF0IG11Y2guIFRoZSBrZXkgcXVlc3Rpb24gaXMsICpob3cqIGRvZXMgaXQgZG8gaXQ/IE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBpdCB1c2VzIGBzeXpfbW91bnRfaW1hZ2VgIG9yIHNpbWlsYXIsIGJ1dCB3YWl0LCBpdCBjYW4gYWxzbyBpbmplY3QgdGhlbSB2aWEgYHN5c2ZzYCBpZiBgQ09ORklHX09GX09WRVJMQVlgIGlzIGVuYWJsZWQsIG9yIG1heWJlIG90aGVyIG1lYW5zLiBEb2VzIFN5emthbGxlciAqYWN0dWFsbHkqIGV4cGxvaXQgdGhpcyBtZWNoYW5pc20/IEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQgcGFydC4KCkkga25vdyBTeXprYWxsZXIgaGFzIHBzZXVkby1zeXNjYWxscyBsaWtlIGBzeXpfaW5pdF9uZXRfc29ja2V0YC4gRG9lcyBpdCBoYXZlIGEgY29ycmVzcG9uZGluZyBgc3l6X2R0X292ZXJsYXlgIGZ1bmN0aW9uPyBJZiBpdCBkb2VzLCB0aGF0JiMzOTtzIHBvdGVudGlhbGx5IHRoZSBicmVha3Rocm91Z2ggSSYjMzk7bSBsb29raW5nIGZvci4gVGhpcyBuZWVkcyB0byBiZSBpbnZlc3RpZ2F0ZWQgZnVydGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzeXpfLipvdmVybGF5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY3OTAKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA1NDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ3VycmVudCBJbnZlc3RpZ2F0aW9uIGludG8gUEhZIERyaXZlciBUcmlnZ2VyaW5nKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0byB0cmlnZ2VyIHRoZSBgZGFwODIxMXIuY2AgUEhZIGRyaXZlciB3aXRoaW4gdGhlIGNvbnRleHQgb2Ygc3l6a2FsbGVyLiBGaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byByZW1lbWJlciB0aGF0IHRoZSBwc2V1ZG8tc3lzY2FsbHMgc3l6a2FsbGVyIHVzZXMgYXJlbiYjMzk7dCAqaW4qIHRoZSBrZXJuZWwgc291cmNlIHRyZWUsIHNvIGdyZXBwaW5nIHRoZXJlIGlzIGEgZGVhZCBlbmQuIFJpZ2h0LCBpdCYjMzk7cyBhYm91dCBmaW5kaW5nIHRoZSBwYXRod2F5LgoKSWYgdGhlIFBIWSBkcml2ZXIgaXMgYSBtb2R1bGUsIHdoaWNoIEkgYmVsaWV2ZSBpdCBtaWdodCBiZSwgdGhlbiBpdCBuZWVkcyB0byBiZSBsb2FkZWQsIEkgaGF2ZSBjb25maXJtZWQgdGhhdC4gQnV0LCBob3cgZG8gSSBhY3R1YWxseSAqcmVhY2gqIHRoZSBjb2RlIHdpdGhpbiBgZGFwODIxMXIuY2AsIHNwZWNpZmljYWxseSBgZGFwODIxMXJfY29uZmlnX2luaXRgPyBJdCBsb29rcyBsaWtlIGEgUEhZIGRldmljZSBuZWVkcyB0byBiZSBjcmVhdGVkIGFuZCBib3VuZCB0byB0aGUgZHJpdmVyLgoKQ2FuIEkgY3JlYXRlIGEgUEhZIGRldmljZSBmcm9tIHVzZXJzcGFjZT8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGxvb2sgZm9yIHBsYXRmb3JtIGRldmljZXMsIGxpa2UgYG1kaW8tYmNtLXVuaW1hYy5jYCBvciBgbWRpby1ncGlvYC4gQnV0IHN5emthbGxlciBjYW4mIzM5O3QgKmFyYml0cmFyaWx5KiBjcmVhdGUgcGxhdGZvcm0gZGV2aWNlcywgbm90IHdpdGhvdXQgc29tZSBleHBvc2VkIEFQSS4gSSYjMzk7dmUgbG9va2VkIGZvciBhIGBzeXpfcGxhdGZvcm1fZGV2aWNlX2FkZGAgY2FsbCBhbmQgZm91bmQgbm90aGluZy4gSSBoYXZlIHRvIGxldmVyYWdlIHdoYXQmIzM5O3MgKnRoZXJlKi4KCkkga25vdyBzeXprYWxsZXIgaGFzIGB2aGNpYCBmb3IgVVNCLCBgbWFjODAyMTFfaHdzaW1gIGZvciB3aWZpLCBgdWlucHV0YCBmb3IgaW5wdXQsIGBzbmQtYWxvb3BgIGZvciBzb3VuZCwgYW5kIGBuZXRkZXZzaW1gIGZvciBuZXRkZXZzLiBOb25lIG9mIHRoZXNlIHNlZW0gdG8gaGF2ZSBNRElPIHN1cHBvcnQsIGFuZCBzbyBjYW4mIzM5O3QgYmUgdXNlZCB0byBtb2NrIGEgUEhZIGRldmljZS4KCkhvdyBhYm91dCBgZHNhX2xvb3BgPyBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBiZWNhdXNlIGl0ICpkb2VzKiBjcmVhdGUgZml4ZWQgUEhZcy4gSG93ZXZlciwgdGhlIFBIWSBJRCBpcyBmaXhlZCB0byBgMGAgYW5kIHRoZXJlZm9yZSBpcyBub3QgdXNlZnVsIGZvciBteSB0ZXN0aW5nLiBJcyB0aGVyZSBhIHdheSB0byB3cml0ZSBkaXJlY3RseSB0byBNRElPIGJ1cyByZWdpc3RlcnMgZnJvbSB1c2Vyc3BhY2UsIGV2ZW4gaWYgaXQgZG9lc24mIzM5O3QgY3JlYXRlIGEgUEhZIGRldmljZSBkaXJlY3RseT8gQWgsIHllcywgYGlvY3RsKFNJT0NTTUlJUkVHKWAuIEJ1dCB0aGF0IGRvZXNuJiMzOTt0ICpjcmVhdGUqIGEgUEhZIGRldmljZSwgaXQganVzdCBsZXRzIG1lIGludGVyYWN0IHdpdGggb25lIHRoYXQgYWxyZWFkeSBleGlzdHMuCgpUbyBjcmVhdGUgdGhlIGRldmljZSBpdHNlbGYsIHRoZSBNRElPIGJ1cyBuZWVkcyB0byBzY2FuIGZvciBhIFBIWSBJRC4gU28sIGlmIHRoZXJlIGlzIGEgc29mdHdhcmUgTURJTyBidXMsIGRvZXMgaXQgc2Nhbj8gQW5kIHRoZW4gdGhlcmUmIzM5O3MgdGhlIGBmaXhlZF9tZGlvX3JlYWRgIGZ1bmN0aW9uLiBUaGF0IHJldHVybnMgYSAqZml4ZWQqIFBIWSBJRCwgc28gdGhhdCBkb2VzbiYjMzk7dCBoZWxwIG1lIGluIG15IHB1cnN1aXQuCgpNeSB0aG91Z2h0cyBhcmUgdHVybmluZyB0b3dhcmQgc29tZSBraW5kIG9mIG1vY2t1cDogSXMgdGhlcmUgYW55IHdheSB0byBtb2NrIGFuIE1ESU8gYnVzIHdoZXJlIHVzZXJzcGFjZSBjb250cm9scyB0aGUgcmVhZC93cml0ZSBiZWhhdmlvcj8gTm93LCBsZXQmIzM5O3Mgc2VlLCBpcyB0aGVyZSBhbiBgbWRpby1tb2NrdXBgIGRyaXZlcj8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvLiptb2NrdXAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzk0OQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ29uc2lkZXJpbmcgQWx0ZXJuYXRpdmVzIHRvIGBtZGlvLW1vY2t1cGAqKgoKT2theSwgc28gdGhlcmUmIzM5O3Mgbm8gYG1kaW8tbW9ja3VwYC4uLiBUaGF0JiMzOTtzIGEgYml0IG9mIGEgc2V0YmFjay4gSSBuZWVkIGEgcXVpY2sgYW5kIGRpcnR5IHdheSB0byBzaW11bGF0ZSBhbiBNRElPIGludGVyZmFjZSBmb3IgdGVzdGluZywgYW5kIHRoYXQgd291bGQgaGF2ZSBiZWVuIGlkZWFsLiBXaGF0IG90aGVyIG9wdGlvbnMgYXJlIHRoZXJlIHRoYXQgYXJlIGFscmVhZHkgaW4gdGhlIGV0aGVyPyBXaGF0IGFib3V0IHNvbWV0aGluZyBhIGJpdCBtb3JlIGdlbmVyaWMsIHlldCBzdGlsbCBmdW5jdGlvbmFsPyBMZXQmIzM5O3Mgc2VlLi4uIGNvdWxkIGEgcGxhaW4gYG1kaW8tZHVtbXlgIGFjdHVhbGx5IGZpdCB0aGUgYmlsbD8gSXQgd291bGQgbmVlZCB0byBiZSBzaW1wbGUgYnV0IHJvYnVzdC4gSSB3b25kZXIgaWYgdGhlcmUgaXMgYW4gZXhpc3RpbmcgcGFja2FnZT8gSXQgd291bGQgbmVlZCB0byBiZSBzdWl0YWJsZSBmb3IgaW50ZWdyYXRpb24gaW50byBteSB0b29sY2hhaW4uIFRoaXMgcmVxdWlyZXMgYSBiaXQgbW9yZSBpbnZlc3RpZ2F0aW9uLiBUaGUgbmFtZSBpcyBhIHBsYWNlaG9sZGVyIGZvciBub3csIG9mIGNvdXJzZSwgYnV0IGl0IGdpdmVzIG1lIGEgd29ya2luZyBmcmFtZXdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWRpby4qZHVtbXkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODE3OAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIFBIWSBEcml2ZXIgVGVzdGluZyBpbiBRRU1VKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIHRlc3QgdGhlc2UgUEhZIGRyaXZlcnMuIFdoYXQgYWJvdXQgYG1kaW8tZ3Bpb2A/IFRoYXQmIzM5O3MgYSBwb3NzaWJpbGl0eSwgc2luY2UgaXQgdXNlcyBHUElPcy4gSSB3b25kZXIgaWYgdGhlcmUmIzM5O3MgYW55IHdheSB0byB0ZXN0IFBIWSBkcml2ZXJzIGVmZmVjdGl2ZWx5IHdpdGhpbiBRRU1VLiBJdCBzZWVtcyBsaWtlIGl0IHdvdWxkIGJlIGEgaHVnZSBhZHZhbnRhZ2UuCgpXYWl0LCBRRU1VICpkb2VzKiBlbXVsYXRlIGEgYnVuY2ggb2YgbmV0d29yayBjYXJkcywgcmlnaHQ/IExpa2UsIEkga25vdyBhYm91dCBgZTEwMDBgLCBgcnRsODEzOWAsIGBwY25ldGAsIGBuZTJrX3BjaWAsIGFuZCBgdmlydGlvLW5ldGAuIEJ1dCBkbyBhbnkgb2YgdGhvc2UgYWN0dWFsbHkgKmV4cG9zZSogYW4gTURJTyBidXMgdG8gdGhlIGtlcm5lbD8gVGhhdCYjMzk7cyB0aGUga2V5LgoKVGhlIGBlMTAwMGAgaGFzIGFuIGludGVybmFsIFBIWSwgYnV0IHRoZSBgZTEwMDBgIGRyaXZlciBtYW5hZ2VzIGl0IGRpcmVjdGx5LCBub3QgdGhyb3VnaCB0aGUgc3RhbmRhcmQgUEhZIGxheWVyLCBzbyB0aGF0JiMzOTtzIG5vdCBoZWxwZnVsLiBUaGUgYGZlY2AgKEZyZWVzY2FsZSBGYXN0IEV0aGVybmV0IENvbnRyb2xsZXIpIGlzIGVtdWxhdGVkIGluIFFFTVUgZm9yIHNvbWUgQVJNIGJvYXJkcywgYW5kICp0aGF0KiB1c2VzIHRoZSBnZW5lcmljIFBIWSBsYXllci4gQnV0IEkgbmVlZCBzb21ldGhpbmcgdGhhdCBydW5zIGluIHg4Nl82NCwgd2hpY2ggaXMgd2hhdCBJJiMzOTttIGZvY3VzZWQgb24gZm9yIHN5emthbGxlci4KClNvLCBvbiB4ODZfNjQsIGRvZXMgUUVNVSBlbXVsYXRlICphbnkqIE5JQyB0aGF0IHVzZXMgdGhlIGdlbmVyaWMgUEhZIGxheWVyPyBUaW1lIHRvIGludmVzdGlnYXRlLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9gIGFuZCBsb29rIGZvciBkcml2ZXJzIHRoYXQgY2FsbCBgcGh5X2Nvbm5lY3RgIG9yIGBtZGlvYnVzX3JlZ2lzdGVyYCwgYW5kIG1ha2Ugc3VyZSB0aGV5JiMzOTtyZSBlbXVsYXRlZCBieSBRRU1VLgoKQWgsIGxvb2tzIGxpa2UgYHRnM2AgKEJyb2FkY29tIFRpZ29uMykgaXMgZW11bGF0ZWQgYnkgUUVNVS4gRG9lcyBpdCB1c2UgdGhlIGdlbmVyaWMgUEhZIGxheWVyPyBUaGF0JiMzOTtzIHRoZSBuZXh0IHN0ZXAgaW4gbXkgc2VhcmNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfY29ubmVjdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTIwODQ9c3RhdGljIGludCB0ZzNfcGh5X2luaXQoc3RydWN0IHRnMyAqdHApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMjA5Ni1cdC8qIEF0dGFjaCB0aGUgTUFDIHRvIHRoZSBQSFkuICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzoyMDk3Olx0cGh5ZGV2ID0gcGh5X2Nvbm5lY3QodHAtXHUwMDNlZGV2LCBwaHlkZXZfbmFtZShwaHlkZXYpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMjA5OC1cdFx0XHQgICAgIHRnM19hZGp1c3RfbGluaywgcGh5ZGV2LVx1MDAzZWludGVyZmFjZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MDE2CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSB0ZzMgRHJpdmVyIGFuZCBNRElPIEludGVyYWN0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGB0ZzNgIGRyaXZlciwgYW5kIGl0JiMzOTtzIHF1aWNrbHkgYmVjb21pbmcgY2xlYXIgdGhhdCBpdCBsZXZlcmFnZXMgYHBoeV9jb25uZWN0YC4gTWFrZXMgc2Vuc2U7IHRoYXQmIzM5O3MgdGhlIHN0YW5kYXJkIGFwcHJvYWNoIGZvciBQSFkgaW50ZXJhY3Rpb24sIGVzcGVjaWFsbHkgd2l0aCBhIG5ldHdvcmsgZHJpdmVyLiBHb29kIHRvIHNlZSB0aGF0IGltcGxlbWVudGVkIGNvcnJlY3RseS4KCkJ1dCBob2xkIG9uIGEgc2Vjb25kLi4uIGlzIHRoZSBkcml2ZXIgKmFsc28qIHJlZ2lzdGVyaW5nIGFuIE1ESU8gYnVzPyBOb3csIHRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhcmNoaXRlY3R1cmUgaGVyZS4gSXMgYHBoeV9jb25uZWN0YCBoYW5kbGluZyB0aGUgcHJpbWFyeSBNRElPIGNvbW11bmljYXRpb24sIGFuZCB0aGUgc2VwYXJhdGUgTURJTyBidXMgcmVnaXN0cmF0aW9uIGlzIGZvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gUGVyaGFwcyBmb3IgbW9uaXRvcmluZyBvciBzb21lIHNwZWNpYWxpemVkLCB2ZW5kb3Itc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSB0aGF0JiMzOTtzIGxheWVyZWQgb24gdG9wIG9mIHRoZSBzdGFuZGFyZCBQSFkgaW50ZXJmYWNlPyBDb3VsZCBpdCBiZSB1c2luZyBhIGRpZmZlcmVudCBNRElPIGJ1cyBmb3IgYWNjZXNzaW5nIGFkZGl0aW9uYWwgcmVnaXN0ZXJzIG9yIGRldmljZXMgYmV5b25kIHRoZSBzdGFuZGFyZCBQSFk/IE9yIG1heWJlIHRoZXJlJiMzOTtzIHNvbWUgbGVnYWN5IHN1cHBvcnQgbHVya2luZyBpbiB0aGUgY29kZT8gVGhpcyB3YXJyYW50cyBmdXJ0aGVyIGludmVzdGlnYXRpb24gaW50byBob3cgdGhlc2UgdHdvIG1lY2hhbmlzbXMgaW50ZXJhY3QuIFRpbWUgdG8gZGl2ZSBkZWVwZXIgaW50byB0aGUgY29kZSBhbmQgc2VlIHdoYXQmIzM5O3MgYWN0dWFsbHkgZ29pbmcgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW9idXNfcmVnaXN0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYz0xNTA1PXN0YXRpYyBpbnQgdGczX21kaW9faW5pdChzdHJ1Y3QgdGczICp0cClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNTU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6MTU1ODpcdGkgPSBtZGlvYnVzX3JlZ2lzdGVyKHRwLVx1MDAzZW1kaW9fYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE1NTktXHRpZiAoaSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTQ0NwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDMwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDdXJyZW50IEludmVzdGlnYXRpb24gaW50byBgdGczYCBhbmQgUEhZIElEIE1hbmlwdWxhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCB0aGUgYHRnM2AgZHJpdmVyICpkb2VzKiBwcm9wZXJseSByZWdpc3RlciBhbiBNRElPIGJ1cy4gVGhhdCYjMzk7cyBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50LiBOb3csIHdoZW4gaXQgcmVnaXN0ZXJzIHRoZSBidXMsIGl0IG5hdHVyYWxseSBnb2VzIG9uIHRvIHNjYW4gZm9yIFBIWXMuIFRoZSB0cmlja3kgcGFydCBpcyB0aGF0IHRoZSBQSFkgSUQgaXQmIzM5O3MgcmVhZGluZyBpcyBlc3NlbnRpYWxseSB3aGF0ZXZlciBRRU1VIGlzIGVtdWxhdGluZyBmb3IgdGhlIGB0ZzNgIGRldmljZSwgYW5kIHRoYXQmIzM5O3MgZ2VuZXJhbGx5IGEgQnJvYWRjb20gUEhZLiBUaGUgY29yZSBxdWVzdGlvbiBpczogY2FuIEkgbWFuaXB1bGF0ZSB0aGF0IGV4cG9zZWQgUEhZIElELCBlc3BlY2lhbGx5IHZpYSBzeXprYWxsZXI/CgpEaXJlY3RseSBhbHRlcmluZyB3aGF0IFFFTVUgcHJlc2VudHMgc2VlbXMgdW5saWtlbHkuIFNvLCB0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gdHJ5IGFuZCB3cml0ZSB0byB0aGUgUEhZIElEIHJlZ2lzdGVycyBkaXJlY3RseSB1c2luZyBgU0lPQ1NNSUlSRUdgLiBJIHJlY2FsbCB0aG9zZSBQSFkgSUQgcmVnaXN0ZXJzIGFyZSB1c3VhbGx5IGF0IG9mZnNldHMgMiBhbmQgMy4gTXkgaHVuY2ggaXMsIGlmIHN5emthbGxlciBjb3VsZCBleGVjdXRlIGBTSU9DU01JSVJFR2AgdG8gY2hhbmdlIHRob3NlIHJlZ2lzdGVycywgdGhlbiBpdCBjb3VsZCwgaW4gZWZmZWN0LCBjaGFuZ2UgdGhlIGVtdWxhdGVkIFBIWSBJRC4KCkJ1dCwgYSBzaWduaWZpY2FudCBwcm9ibGVtIGFyaXNlczogdGhlIE1ESU8gYnVzIHNjYW5uaW5nIGFuZCBQSFkgcHJvYmUgaGFwcGVucyAqZHVyaW5nKiB0aGUgZHJpdmVyJiMzOTtzIHByb2JlIHNlcXVlbmNlLiBUaGF0JiMzOTtzICpiZWZvcmUqIHN5emthbGxlciBnZXRzIGl0cyBjaGFuY2UgdG8gcGxheSB3aXRoIGBpb2N0bGAuIERhbW4uCgpXYWl0LCBpcyB0aGVyZSBhIHdheSB0byBmb3JjZSBhIHJlc2NhbiBvZiB0aGUgTURJTyBidXMgZnJvbSB1c2Vyc3BhY2U/IFVzZXJzcGFjZSAqY2FuKiB3cml0ZSB0byB0aGUgYC9zeXMvYnVzL21kaW9fYnVzL2RldmljZXMvLi4uL3VldmVudGAgZmlsZSwgb3IgYmluZC91bmJpbmQgZHJpdmVycywgYnV0IHRoYXQgd29uJiMzOTt0IGhlbHAgaWYgdGhlIFBIWSBkZXZpY2UgaXMgYWxyZWFkeSBjcmVhdGVkIHdpdGggdGhlIG9sZCBJRC4KCkNhbiBJIHNvbWVob3cgZGVsZXRlIHRoZSBleGlzdGluZyBQSFkgZGV2aWNlIGFuZCAqZm9yY2UqIGEgcmVzY2FuPyBUaGVyZSYjMzk7cyBubyBgL3N5cy9idXMvbWRpb19idXMvcmVzY2FuYCBhbmFsb2cgbGlrZSB3ZSBoYXZlIHdpdGggUENJLiBUaGF0JiMzOTtzIGEgZGVhZCBlbmQuCgpPa2F5LCBsZXQmIzM5O3MgdGhpbmsgYmlnZ2VyLiBXaGF0IGlmLCBpbnN0ZWFkIG9mIHRyeWluZyB0byByZXNjYW4gdGhlIGV4aXN0aW5nIGJ1cywgdXNlcnNwYWNlIGNvdWxkIHNvbWVob3cgKmNyZWF0ZSogYSBuZXcgUEhZIGRldmljZSB0aHJvdWdoIHN5c2ZzPyBJcyB0aGVyZSBldmVuIGEgd2F5IHRvIGluc3RhbnRpYXRlIGEgUEhZIGRldmljZSBmcm9tIHVzZXJzcGFjZT8gVGhhdCYjMzk7cyB3aGF0IEkgcmVhbGx5IG5lZWQgdG8gZmlndXJlIG91dC4gSSBzdXBwb3NlIEkgc2hvdWxkIG5vdyBsb29rIGF0IGBkcml2ZXJzL25ldC9waHkvbWRpb19idXMuY2AuIFRoYXQgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBuZXh0IHN0ZXAgdG8gdW5jb3ZlciB0aGF0IHBvc3NpYmlsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0b3JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDI3MgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipJbnZlc3RpZ2F0aW5nIE1ESU8gQnVzIFN5c2ZzIEF0dHJpYnV0ZXMqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3Qgd2F5IHRvIGludGVyYWN0IHdpdGggYW4gTURJTyBidXMuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZGlnIGludG8gdGhlIHN5c2ZzIGZpbGVzeXN0ZW0uIEl0JiMzOTtzIHVzdWFsbHkgdGhlIGdvLXRvIGZvciBwcm9iaW5nIGFuZCBjb250cm9sbGluZyBoYXJkd2FyZSBpbiBhIHN0cnVjdHVyZWQsIHN0YW5kYXJkaXplZCB3YXkgaW4gTGludXguIFNvLCBsZXQmIzM5O3Mgc3RhcnQgdGhlcmUuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzeXNmcyBhdHRyaWJ1dGVzIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZSBgbWRpb19idXNgIGRyaXZlciBvciBmdW5jdGlvbmFsaXR5LiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJhc2UgdG8gdGhlbiB1bmRlcnN0YW5kIGlmIEkgY2FuIHJlYWQsIHdyaXRlLCBhbmQgY29udHJvbCB0aGUgTURJTyBidXMgdGhyb3VnaCB0aGlzIGludGVyZmFjZS4gV2hhdCBzcGVjaWZpYyBhdHRyaWJ1dGVzIGFyZSBhdmFpbGFibGUgd2lsbCBsZWFkIG1lIHRvIHRoZSBzcGVjaWZpY3Mgb2YgaG93IHRvIGdvIGZvcndhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7REVWSUNFX0FUVFImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvbWRpb19idXMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNDk0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkluaXRpYWwgSW5xdWlyeSBvbiBQSFkgRHJpdmVyIEltcGxlbWVudGF0aW9uKioKCk15IGluaXRpYWwgdGhvdWdodCwgd2hlbiBlbmNvdW50ZXJpbmcgYSBuZXR3b3JraW5nIGRldmljZSBpbnRlcmFjdGlvbiBhdCBhIGxvdyBsZXZlbCwgaW52YXJpYWJseSBsZWFkcyBtZSB0byB0aGUgcGh5c2ljYWwgbGF5ZXIuIFRoZSBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzLCAmIzM0O1doYXQmIzM5O3MgZ29pbmcgb24gd2l0aGluIGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYD8mIzM0OyBUaGF0JiMzOTtzIG9mdGVuIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIHNvIHRvIHNwZWFrLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGxvdy1sZXZlbCBtYW5hZ2VtZW50IG9mIHRoZSBQaHlzaWNhbCBMYXllciBUcmFuc2NlaXZlciAoUEhZKS4gSSYjMzk7bSBsaWtlbHkgaW50ZXJlc3RlZCBpbiBpdHMgY2FwYWJpbGl0aWVzIGFuZCBjb25maWd1cmF0aW9uLiBJcyB0aGlzIHdoZXJlIEkgc2hvdWxkIGdvPwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtERVZJQ0VfQVRUUiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz01NjE9cGh5X2lkX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNTY2LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6NTY3OnN0YXRpYyBERVZJQ0VfQVRUUl9STyhwaHlfaWQpO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy01NjgtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz01NzA9cGh5X2ludGVyZmFjZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1Zilcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTU4MS19XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjU4MjpzdGF0aWMgREVWSUNFX0FUVFJfUk8ocGh5X2ludGVyZmFjZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTU4My1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTU4NT1waHlfaGFzX2ZpeHVwc19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy01OTEtfVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzo1OTI6c3RhdGljIERFVklDRV9BVFRSX1JPKHBoeV9oYXNfZml4dXBzKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNTkzLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz01OTQ9c3RhdGljIHNzaXplX3QgcGh5X2Rldl9mbGFnc19zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTYwMS19XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjYwMjpzdGF0aWMgREVWSUNFX0FUVFJfUk8ocGh5X2Rldl9mbGFncyk7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTYwMy1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTYxNz1zdGF0aWMgc3NpemVfdCBtbWQjI24jI19kZXZpY2VfaWRfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIFxcXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy02MjMtfSBcXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzo2MjQ6c3RhdGljIERFVklDRV9BVFRSX1JPKG1tZCMjbiMjX2RldmljZV9pZClcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNjI1LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTQ3MD1waHlfc3RhbmRhbG9uZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xNDc2LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTQ3NzpzdGF0aWMgREVWSUNFX0FUVFJfUk8ocGh5X3N0YW5kYWxvbmUpO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xNDc4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTMzMQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDQzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBMaW5lIG9mIFJlYXNvbmluZyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgc3l6a2FsbGVyIHRlc3RzIFBIWSBkcml2ZXJzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGVyZSBhcmVuJiMzOTt0IGFueSBlYXNpbHkgd3JpdGVhYmxlIGF0dHJpYnV0ZXMgdG8ganVzdCAqY3JlYXRlKiBQSFlzIGRpcmVjdGx5LiBCdXQgd2FpdCwgZG9lc24mIzM5O3Qgc3l6a2FsbGVyIGhhdmUgc29tZSBraW5kIG9mIHBzZXVkby1kZXZpY2UgZm9yIE1ESU8/IEkgc2hvdWxkIGNoZWNrIGlmIHRoZXJlJiMzOTtzIGEgYHN5el9tZGlvYCBvciBzb21ldGhpbmcgc2ltaWxhciBkaXJlY3RseSB3aXRoaW4gdGhlIHN5emthbGxlciBjb2RlIGl0c2VsZi4gVW5mb3J0dW5hdGVseSwgSSBjYW4mIzM5O3QgZGlyZWN0bHkgKmNoZWNrKiB0aGUgc3l6a2FsbGVyIGNvZGUgaW4gdGhpcyBjb250ZXh0LCBzbywgbGV0JiMzOTtzIGxvb2sgZm9yIHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucyBlbmFibGVkIGZvciBzeXprYWxsZXIgd2hlbiB0ZXN0aW5nIFBIWXMuCgpPa2F5LCBJIHJlY2FsbCBgZHNhX2xvb3BgICpkb2VzKiBjcmVhdGUgZml4ZWQgUEhZcy4gVGhhdCYjMzk7cyBhIHBvc3NpYmlsaXR5LCBidXQgaXMgdGhhdCB0aGUgb25seSB3YXk/IEFyZSB0aGVyZSBhbnkgb3RoZXIgcG90ZW50aWFsIHJvdXRlcz8gTWF5YmUgdGhyb3VnaCBgbmV0bGlua2A/IENhbiBhIFBIWSBiZSBjcmVhdGVkIHRoYXQgd2F5PyBObywgUEhZcyB0eXBpY2FsbHkgY29tZSBvbmxpbmUgdGhyb3VnaCBNRElPIGJ1cyBzY2FubmluZyBvciBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9ucywgdXN1YWxseS4KCkhhbmcgb24uLi4gc3l6a2FsbGVyICpkb2VzKiBoYXZlIGEgd2F5IHRvIHRlc3QgUEhZIGRyaXZlcnMsIEkga25vdyB0aGF0LiBIb3csIHRob3VnaD8gTWF5YmUgYGRzYV9sb29wYCBpcyBpbnZvbHZlZCwgYnV0IGNhbiBJIHNvbWVob3cgbWFuaXB1bGF0ZSB0aGUgUEhZIElEPyBObywgdGhhdCYjMzk7cyBub3QgaXQuIGBkc2FfbG9vcGAgdXNlcyBgZml4ZWRfcGh5YCwgd2hpY2ggZG9lc24mIzM5O3QgaW50ZXJmYWNlIHdpdGggaGFyZHdhcmU7IGl0IGp1c3QgcmV0dXJucyBhIGZpeGVkIHN0YXR1cy4KCk9rYXksIGxldCYjMzk7cyBleHBsb3JlIG90aGVyIG5ldHdvcmtpbmcgZGV2aWNlIG9wdGlvbnMgd2l0aGluIHN5emthbGxlciYjMzk7cyBwdXJ2aWV3LiBEb2VzIHN5emthbGxlciBtYWtlIHVzZSBvZiBgdHVuYCBvciBgdGFwYD8gTm9wZSwgdGhleSBkb24mIzM5O3QgaGF2ZSBNRElPLiBXaGF0IGFib3V0IGBtYWNtYWNgIG9yIGB2ZXRoYD8gU3RpbGwgbm8uCgpIbW0uLi4gd2hhdCBhYm91dCBgbWRpby1iY20tdW5pbWFjYD8gVGhhdCYjMzk7cyBhIHBsYXRmb3JtIGRyaXZlciwgdGhvdWdoLiBTeXprYWxsZXIgcHJvYmFibHkgY2FuJiMzOTt0IGluc3RhbnRpYXRlIGl0IGRpcmVjdGx5LCB1bmxlc3MgaXQmIzM5O3MgcHJlc2VudCBpbiB0aGUgZGV2aWNlIHRyZWUuCgpBaGEhIERldmljZSB0cmVlISBXYWl0Li4uIGRvZXNuJiMzOTt0IHN5emthbGxlciAqaW5qZWN0KiBkZXZpY2UgdHJlZSBvdmVybGF5cz8gQmluZ28hIEl0JiMzOTtzIGxpa2VseSB1c2luZyB0aGF0LiBJIHJlbWVtYmVyIGBzeXpfbW91bnRfaW1hZ2VgIGNhbiBtb3VudCBhIGZpbGVzeXN0ZW0sIGJ1dCBpdCBhbHNvIGhhcyBgc3l6X2luaXRfbmV0X3NvY2tldGAgYW5kIHNpbWlsYXIgZmFjaWxpdGllcy4KCkRvZXMgc3l6a2FsbGVyIHRydWx5IHV0aWxpemUgRFQgb3ZlcmxheXM/IFllcyEgSSBrbm93IGl0IGRvZXMhIFRoZXJlIGFyZSBmdW5jdGlvbnMgbGlrZSBgc3l6X2RldmxpbmtgIGFuZCBgc3l6X3VzYl9jb25uZWN0YC4KCkFjdHVhbGx5LCBkaWRuJiMzOTt0IEkgcmVhZCBzb21ldGhpbmcgYWJvdXQgcmVjZW50IHN5emthbGxlciBhZGRpdGlvbnMgY29uY2VybmluZyB0ZXN0aW5nIFBIWSBkcml2ZXJzIHVzaW5nIGEgbW9jayBNRElPIGJ1cyBvciBzb21ldGhpbmcgc2ltaWxhcj8KCkFscmlnaHQsIGxldCYjMzk7cyBkaWcgaW50byB0aGUga2VybmVsIHNvdXJjZS4gSSYjMzk7bGwgc2VhcmNoIGZvciBgbWRpb2Agd2l0aGluIGBuZXQvYCBhbmQgYGRyaXZlcnMvbmV0L2AgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGEgbW9jayBkcml2ZXIgdGhhdCYjMzk7cyBiZWVuIHJlY2VudGx5IGFkZGVkLiBUaGlzIGZlZWxzIGxpa2UgdGhlIHJpZ2h0IGRpcmVjdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvLiptb2NrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIzNzQKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRob3NlIHRob3VnaHRzIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlLCB1c2luZyBhIGZpcnN0LXBlcnNvbiBwZXJzcGVjdGl2ZToKCioqTURJTyBhbmQgYG5ldGRldnNpbWAgLSBMZXQmIzM5O3MgRGlnIEluKioKCkFscmlnaHQsIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgbmV0d29yayBkZXZpY2Ugc2ltdWxhdGlvbiBhZ2Fpbi4gSXQmIzM5O3MgYSBrZXkgcGFydCBvZiBteSB3b3JrZmxvdyBmb3IgdGVzdGluZyBhbmQgcHJvdG90eXBpbmcsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggaGFyZHdhcmUtbGV2ZWwgaW50ZXJhY3Rpb25zLiBNeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGBuZXRkZXZzaW1gLiBUaGF0JiMzOTtzIGEgc29saWQgdG9vbCwgYnV0IHRoZSByZWFsIHF1ZXN0aW9uIGlzOiBkb2VzIGl0IHN1cHBvcnQgdGhlIE1lZGlhIEluZGVwZW5kZW50IEludGVyZmFjZSAoTURJTyk/IEkga25vdyBpdCBoYW5kbGVzIHRoZSBnZW5lcmFsIEV0aGVybmV0IGRldmljZSBlbXVsYXRpb24gd2VsbCwgYnV0IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiBJIGNhbiB1c2UgaXQgdG8gc2ltdWxhdGUgdGhlIFBIWSBtYW5hZ2VtZW50IGZlYXR1cmVzIEkmIzM5O20gd29ya2luZyB3aXRoLiBUaGUgcHJlc2VuY2Ugb3IgYWJzZW5jZSBvZiBNRElPIHN1cHBvcnQgZnVuZGFtZW50YWxseSBzaGFwZXMgaXRzIHVzZWZ1bG5lc3MgZm9yIHRoaXMgY3VycmVudCBwcm9qZWN0LiBUaW1lIHRvIGNoZWNrIHRoZSBkb2N1bWVudGF0aW9uLCBvciBiZXR0ZXIgeWV0LCBtYXliZSBJIHNob3VsZCBqdXN0IHNwaW4gaXQgdXAgYW5kIHRha2UgYSBsb29rIG15c2VsZi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNjIwCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQXNzZXNzaW5nIFN5emthbGxlciYjMzk7cyBDb3ZlcmFnZSBQb3RlbnRpYWwqKgoKT2theSwgaW5pdGlhbGx5LCBteSBpbnN0aW5jdCB3YXMgYSBmaXJtICYjMzQ7bm8sJiMzNDsgdGhhdCBzeXprYWxsZXIgY291bGRuJiMzOTt0IHBvc3NpYmx5IGJlIHJlbGV2YW50IGhlcmUuIEJ1dCBob2xkIG9uLCBJIG5lZWQgdG8gYmUgbW9yZSByaWdvcm91cy4gVGhlIGNvcmUgcXVlc3Rpb24gaXM6IGhvdyAqY291bGQqIHN5emthbGxlciBhY3R1YWxseSB0b3VjaCB0aGlzIGRyaXZlcj8gSWYgZGlyZWN0IGFjY2VzcyBpcyBpbXBvc3NpYmxlLCB0aGVuIGltbWVkaWF0ZWx5IHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYCB3b3VsZCBiZSB0aGUgbG9naWNhbCBuZXh0IHN0ZXAuIEhvd2V2ZXIsIGl0JiMzOTtzIHRvbyBlYXJseSB0byBqdW1wIHRvIGNvbmNsdXNpb25zLiBJcyB0aGVyZSBhbnkgaW5kaXJlY3QgcGF0aHdheT8gQ291bGQgYSBnZW5lcmljIFBIWSB0ZXN0aW5nIGZyYW1ld29yayBwb3RlbnRpYWxseSBleHBvc2UgdGhpcyBkcml2ZXIgdG8gZnV6emluZz8gSSBuZWVkIHRvIGV4cGxvcmUgdGhhdCBwb3NzaWJpbGl0eS4gTXkgbmV4dCBtb3ZlIGlzIGNsZWFyOiBJIG5lZWQgdG8gZXhwbGljaXRseSBjaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiBhbnkgc3l6a2FsbGVyIHRlc3QgbW9kdWxlcyByZWxhdGVkIHRvICYjMzQ7cGh5LiYjMzQ7IFRoYXQgc2VhcmNoIHdpbGwgYmUgdGhlIGRldGVybWluYW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHkuKnRlc3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jPTY1ND1zdGF0aWMgaW50IF9fYmNtX3BoeV9lbmFibGVfbGVnYWN5X2FjY2VzcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTY1OS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjY2MDpzdGF0aWMgaW50IF9iY21fcGh5X2NhYmxlX3Rlc3Rfc3RhcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCBpc19yZGIpXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy02NjEte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTY5NS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjY5NjpzdGF0aWMgaW50IGJjbV9waHlfY2FibGVfdGVzdF9yZXBvcnRfdHJhbnMoaW50IHJlc3VsdClcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTY5Ny17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM9NzI1PXN0YXRpYyBpbnQgYmNtX3BoeV9yZXBvcnRfbGVuZ3RoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBwYWlyKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTc0MS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjc0MjpzdGF0aWMgaW50IF9iY21fcGh5X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtNzQzLVx0XHRcdFx0XHQgIGJvb2wgKmZpbmlzaGVkLCBib29sIGlzX3JkYilcbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy03NzUtXHRldGhubF9jYWJsZV90ZXN0X3Jlc3VsdChwaHlkZXYsIEVUSFRPT0xfQV9DQUJMRV9QQUlSX0EsXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo3NzY6XHRcdFx0XHRiY21fcGh5X2NhYmxlX3Rlc3RfcmVwb3J0X3RyYW5zKHBhaXJfYSkpO1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtNzc3LVx0ZXRobmxfY2FibGVfdGVzdF9yZXN1bHQocGh5ZGV2LCBFVEhUT09MX0FfQ0FCTEVfUEFJUl9CLFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6Nzc4Olx0XHRcdFx0YmNtX3BoeV9jYWJsZV90ZXN0X3JlcG9ydF90cmFucyhwYWlyX2IpKTtcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTc3OS1cdGV0aG5sX2NhYmxlX3Rlc3RfcmVzdWx0KHBoeWRldiwgRVRIVE9PTF9BX0NBQkxFX1BBSVJfQyxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjc4MDpcdFx0XHRcdGJjbV9waHlfY2FibGVfdGVzdF9yZXBvcnRfdHJhbnMocGFpcl9jKSk7XG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy03ODEtXHRldGhubF9jYWJsZV90ZXN0X3Jlc3VsdChwaHlkZXYsIEVUSFRPT0xfQV9DQUJMRV9QQUlSX0QsXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo3ODI6XHRcdFx0XHRiY21fcGh5X2NhYmxlX3Rlc3RfcmVwb3J0X3RyYW5zKHBhaXJfZCkpO1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtNzgzLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jPTgzMD1zdGF0aWMgdTMyIGJjbV9saW5rbW9kZV9hZHZfdG9fbHJlX2Fkdl90KHVuc2lnbmVkIGxvbmcgKmFkdmVydGlzaW5nKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTg0Ny1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjg0ODppbnQgYmNtX3BoeV9jYWJsZV90ZXN0X3N0YXJ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy04NDkte1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6ODUwOlx0cmV0dXJuIF9iY21fcGh5X2NhYmxlX3Rlc3Rfc3RhcnQocGh5ZGV2LCBmYWxzZSk7XG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy04NTEtfVxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6ODUyOkVYUE9SVF9TWU1CT0xfR1BMKGJjbV9waHlfY2FibGVfdGVzdF9zdGFydCk7XG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy04NTMtXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo4NTQ6aW50IGJjbV9waHlfY2FibGVfdGVzdF9nZXRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgKmZpbmlzaGVkKVxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtODU1LXtcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjg1NjpcdHJldHVybiBfYmNtX3BoeV9jYWJsZV90ZXN0X2dldF9zdGF0dXMocGh5ZGV2LCBmaW5pc2hlZCwgZmFsc2UpO1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtODU3LX1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjg1ODpFWFBPUlRfU1lNQk9MX0dQTChiY21fcGh5X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyk7XG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy04NTktXG4tLVxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtODYzLSAqL1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6ODY0OmludCBiY21fcGh5X2NhYmxlX3Rlc3Rfc3RhcnRfcmRiKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy04NjUte1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6ODY2Olx0cmV0dXJuIF9iY21fcGh5X2NhYmxlX3Rlc3Rfc3RhcnQocGh5ZGV2LCB0cnVlKTtcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTg2Ny19XG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo4Njg6RVhQT1JUX1NZTUJPTF9HUEwoYmNtX3BoeV9jYWJsZV90ZXN0X3N0YXJ0X3JkYik7XG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy04NjktXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo4NzA6aW50IGJjbV9waHlfY2FibGVfdGVzdF9nZXRfc3RhdHVzX3JkYihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtODcxLVx0XHRcdFx0ICAgICAgYm9vbCAqZmluaXNoZWQpXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy04NzIte1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6ODczOlx0cmV0dXJuIF9iY21fcGh5X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyhwaHlkZXYsIGZpbmlzaGVkLCB0cnVlKTtcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTg3NC19XG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo4NzU6RVhQT1JUX1NZTUJPTF9HUEwoYmNtX3BoeV9jYWJsZV90ZXN0X2dldF9zdGF0dXNfcmRiKTtcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTg3Ni1cbi0tXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuaD05MT1pbnQgYmNtX3BoeV9lbmFibGVfanVtYm8oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuaC05Mi1cbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5oOjkzOmludCBiY21fcGh5X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1c19yZGIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5oLTk0LVx0XHRcdFx0ICAgICAgYm9vbCAqZmluaXNoZWQpO1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmg6OTU6aW50IGJjbV9waHlfY2FibGVfdGVzdF9zdGFydF9yZGIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuaDo5NjppbnQgYmNtX3BoeV9jYWJsZV90ZXN0X3N0YXJ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmg6OTc6aW50IGJjbV9waHlfY2FibGVfdGVzdF9nZXRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgKmZpbmlzaGVkKTtcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5oLTk4LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY201NDE0MC5jPTg2NT1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgYmNtNTQxNDBfZHJpdmVyc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9iY201NDE0MC5jLTg4MC1cdFx0LnNldF90dW5hYmxlXHQ9IGJjbTU0MTQwX3NldF90dW5hYmxlLFxuZHJpdmVycy9uZXQvcGh5L2JjbTU0MTQwLmM6ODgxOlx0XHQuY2FibGVfdGVzdF9zdGFydCA9IGJjbV9waHlfY2FibGVfdGVzdF9zdGFydF9yZGIsXG5kcml2ZXJzL25ldC9waHkvYmNtNTQxNDAuYzo4ODI6XHRcdC5jYWJsZV90ZXN0X2dldF9zdGF0dXMgPSBiY21fcGh5X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1c19yZGIsXG5kcml2ZXJzL25ldC9waHkvYmNtNTQxNDAuYy04ODMtXHR9LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jPTg3Nz1zdGF0aWMgaW50IGJyY21fZmV0X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtOTY5LVx0LyogRGlzYWJsZSBzaGFkb3cgcmVnaXN0ZXIgYWNjZXNzICovXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYzo5NzA6XHRlcnIyID0gX19waHlfd3JpdGUocGh5ZGV2LCBNSUlfQlJDTV9GRVRfQlJDTVRFU1QsIGJyY210ZXN0KTtcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTk3MS1cdGlmICghZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jPTEwMzY9c3RhdGljIGludCBicmNtX2ZldF9zdXNwZW5kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTA3MS1cdC8qIERpc2FibGUgc2hhZG93IHJlZ2lzdGVyIGFjY2VzcyAqL1xuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmM6MTA3MjpcdGVycjIgPSBfX3BoeV93cml0ZShwaHlkZXYsIE1JSV9CUkNNX0ZFVF9CUkNNVEVTVCwgYnJjbXRlc3QpO1xuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTA3My1cdGlmICghZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmM9MjIxOT1zdGF0aWMgaW50IG1hcnZlbGxfdmN0NV93YWl0X2NvbXBsZXRlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYy0yMjMyLVxuZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYzoyMjMzOlx0cGh5ZGV2X2VycihwaHlkZXYsIFwmIzM0O1RpbWVvdXQgd2hpbGUgd2FpdGluZyBmb3IgY2FibGUgdGVzdCB0byBmaW5pc2hcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYy0yMjM0LVx0cmV0dXJuIC1FVElNRURPVVQ7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jPTgxMz1zdGF0aWMgaW50IGxhbjg3eHhfY2FibGVfdGVzdF9zdGFydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy04ODctXHRcdH0gZWxzZSB7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6ODg4Olx0XHRcdHJjID0gYWNjZXNzX2VyZWcocGh5ZGV2LCBjYWJsZV90ZXN0W2ldLm1vZGUsXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMtODg5LVx0XHRcdFx0XHQgY2FibGVfdGVzdFtpXS5iYW5rLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM9NTM3PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtaWNyb2NoaXBfdDFzX2RyaXZlcltdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtNTc1LVx0XHQuZ2V0X3BsY2Ffc3RhdHVzICAgID0gZ2VucGh5X2M0NV9wbGNhX2dldF9zdGF0dXMsXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjU3NjpcdFx0LmNhYmxlX3Rlc3Rfc3RhcnQgICA9IGdlbnBoeV9jNDVfb2F0YzE0X2NhYmxlX3Rlc3Rfc3RhcnQsXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjU3NzpcdFx0LmNhYmxlX3Rlc3RfZ2V0X3N0YXR1cyA9IGdlbnBoeV9jNDVfb2F0YzE0X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtNTc4LVx0XHQuZ2V0X3NxaSAgICAgICAgICAgID0gZ2VucGh5X2M0NV9vYXRjMTRfZ2V0X3NxaSxcbi0tXG5kcml2ZXJzL25ldC9waHkvbnhwLWM0NS10amExMXh4LmM9MTMyNj1zdGF0aWMgaW50IG54cF9jNDVfY2FibGVfdGVzdF9zdGFydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYy0xMzMxLVx0XHRcdCBWRU5EMV9QT1JUX0ZVTkNfRU5BQkxFUywgUEhZX1RFU1RfRU5BQkxFKTtcbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYzoxMzMyOlx0cmV0dXJuIHBoeV9zZXRfYml0c19tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgcmVnbWFwLVx1MDAzZWNhYmxlX3Rlc3QsXG5kcml2ZXJzL25ldC9waHkvbnhwLWM0NS10amExMXh4LmMtMTMzMy1cdFx0XHRcdENBQkxFX1RFU1RfRU5BQkxFIHwgQ0FCTEVfVEVTVF9TVEFSVCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jPTEzMzY9c3RhdGljIGludCBueHBfYzQ1X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYy0xMzQyLVxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jOjEzNDM6XHRyZXQgPSBueHBfYzQ1X3JlYWRfcmVnX2ZpZWxkKHBoeWRldiwgXHUwMDI2cmVnbWFwLVx1MDAzZWNhYmxlX3Rlc3RfdmFsaWQpO1xuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jLTEzNDQtXHRpZiAoIXJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYy0xMzcwLVxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jOjEzNzE6XHRwaHlfY2xlYXJfYml0c19tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgcmVnbWFwLVx1MDAzZWNhYmxlX3Rlc3QsXG5kcml2ZXJzL25ldC9waHkvbnhwLWM0NS10amExMXh4LmMtMTM3Mi1cdFx0XHQgICBDQUJMRV9URVNUX0VOQUJMRSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmM9MjExPXN0YXRpYyBpbnQgdGphMTF4eF9jb25maWdfYW5lZ19jYWJsZV90ZXN0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmMtMjE4LVxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmM6MjE5Olx0aWYgKCFwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZWNhYmxlX3Rlc3Rfc3RhcnQgfHxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jOjIyMDpcdCAgICAhcGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VjYWJsZV90ZXN0X2dldF9zdGF0dXMpXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYy0yMjEtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jLTIyNi1cbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jOjIyNzpcdHJldCA9IHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlY2FibGVfdGVzdF9zdGFydChwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmMtMjI4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYy0yMzMtXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYzoyMzQ6XHRyZXQgPSBwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZWNhYmxlX3Rlc3RfZ2V0X3N0YXR1cyhwaHlkZXYsIFx1MDAyNmZpbmlzaGVkKTtcbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jLTIzNS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYz0xNjAyPXN0YXRpYyBpbnQgb2F0YzE0X2NhYmxlX3Rlc3RfZ2V0X3Jlc3VsdF9jb2RlKGVudW0gb2F0YzE0X2hkZF9zdGF0dXMgc3RhdHVzKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTYxNy0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmM6MTYxODogKiBnZW5waHlfYzQ1X29hdGMxNF9jYWJsZV90ZXN0X2dldF9zdGF0dXMgLSBHZXQgc3RhdHVzIG9mIE9BVEMxNCAxMEJhc2UtVDFTXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTE2MTktICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEhZIGNhYmxlIHRlc3QuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy0xNjMzLSAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYzoxNjM0OmludCBnZW5waHlfYzQ1X29hdGMxNF9jYWJsZV90ZXN0X2dldF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTYzNS1cdFx0XHRcdFx0ICAgIGJvb2wgKmZpbmlzaGVkKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTY2MC19XG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jOjE2NjE6RVhQT1JUX1NZTUJPTChnZW5waHlfYzQ1X29hdGMxNF9jYWJsZV90ZXN0X2dldF9zdGF0dXMpO1xuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy0xNjYyLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy0xNjYzLS8qKlxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYzoxNjY0OiAqIGdlbnBoeV9jNDVfb2F0YzE0X2NhYmxlX3Rlc3Rfc3RhcnQgLSBTdGFydCBhIGNhYmxlIHRlc3Qgb24gYW4gT0FUQzE0XG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTE2NjUtICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwQmFzZS1UMVMgUEhZLlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTY4MS0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmM6MTY4MjppbnQgZ2VucGh5X2M0NV9vYXRjMTRfY2FibGVfdGVzdF9zdGFydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy0xNjgzLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTE3MDQtfVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYzoxNzA1OkVYUE9SVF9TWU1CT0woZ2VucGh5X2M0NV9vYXRjMTRfY2FibGVfdGVzdF9zdGFydCk7XG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTE3MDYtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM9MzIyPXZvaWQgcGh5X3Jlc29sdmVfYW5lZ19wYXVzZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTMyNC1cdGlmIChwaHlkZXYtXHUwMDNlZHVwbGV4ID09IERVUExFWF9GVUxMKSB7XG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYzozMjU6XHRcdHBoeWRldi1cdTAwM2VwYXVzZSA9IGxpbmttb2RlX3Rlc3RfYml0KEVUSFRPT0xfTElOS19NT0RFX1BhdXNlX0JJVCxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTMyNi1cdFx0XHRcdFx0XHQgIHBoeWRldi1cdTAwM2VscF9hZHZlcnRpc2luZyk7XG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYzozMjc6XHRcdHBoeWRldi1cdTAwM2Vhc3ltX3BhdXNlID0gbGlua21vZGVfdGVzdF9iaXQoXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy0zMjgtXHRcdFx0RVRIVE9PTF9MSU5LX01PREVfQXN5bV9QYXVzZV9CSVQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jPTQ0Nj1FWFBPUlRfU1lNQk9MKHBoeV9kb19pb2N0bCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTQ0OC0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHkuYzo0NDk6ICogcGh5X2RvX2lvY3RsX3J1bm5pbmcgLSBnZW5lcmljIG5kb19ldGhfaW9jdGwgaW1wbGVtZW50YXRpb24gYnV0IHRlc3QgZmlyc3RcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy00NTAtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LmM9NTMwPUVYUE9SVF9TWU1CT0wocGh5X3RyaWdnZXJfbWFjaGluZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5LmMtNTMxLVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjUzMjpzdGF0aWMgdm9pZCBwaHlfYWJvcnRfY2FibGVfdGVzdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTUzMy17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTUzOS1cdGlmIChlcnIpXG5kcml2ZXJzL25ldC9waHkvcGh5LmM6NTQwOlx0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCYjMzQ7RXJyb3Igd2hpbGUgYWJvcnRpbmcgY2FibGUgdGVzdFwmIzM0Oyk7XG5kcml2ZXJzL25ldC9waHkvcGh5LmMtNTQxLX1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LmM9ODIxPWludCBwaHlfZXRodG9vbF9nZXRfcGxjYV9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtODQ0LS8qKlxuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjg0NTogKiBwaHlfc3RhcnRfY2FibGVfdGVzdCAtIFN0YXJ0IGEgY2FibGUgdGVzdFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTg0Ni0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHkuYy04NDktICovXG5kcml2ZXJzL25ldC9waHkvcGh5LmM6ODUwOmludCBwaHlfc3RhcnRfY2FibGVfdGVzdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTg1MS1cdFx0XHQgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHkuYy04NTYtXHRpZiAoIShwaHlkZXYtXHUwMDNlZHJ2IFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjg1NzpcdCAgICAgIHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlY2FibGVfdGVzdF9zdGFydCBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3BoeS9waHkuYzo4NTg6XHQgICAgICBwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZWNhYmxlX3Rlc3RfZ2V0X3N0YXR1cykpIHtcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy04NTktXHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjayxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtODg3LVx0bmV0aWZfdGVzdGluZ19vbihkZXYpO1xuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjg4ODpcdGVyciA9IHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlY2FibGVfdGVzdF9zdGFydChwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTg4OS1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtOTEwLX1cbmRyaXZlcnMvbmV0L3BoeS9waHkuYzo5MTE6RVhQT1JUX1NZTUJPTChwaHlfc3RhcnRfY2FibGVfdGVzdCk7XG5kcml2ZXJzL25ldC9waHkvcGh5LmMtOTEyLVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTkxMy0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHkuYzo5MTQ6ICogcGh5X3N0YXJ0X2NhYmxlX3Rlc3RfdGRyIC0gU3RhcnQgYSByYXcgVERSIGNhYmxlIHRlc3RcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy05MTUtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtOTE5LSAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjkyMDppbnQgcGh5X3N0YXJ0X2NhYmxlX3Rlc3RfdGRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtOTIxLVx0XHRcdCAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHkuYy05MjctXHRpZiAoIShwaHlkZXYtXHUwMDNlZHJ2IFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjkyODpcdCAgICAgIHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlY2FibGVfdGVzdF90ZHJfc3RhcnQgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9waHkvcGh5LmM6OTI5Olx0ICAgICAgcGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VjYWJsZV90ZXN0X2dldF9zdGF0dXMpKSB7XG5kcml2ZXJzL25ldC9waHkvcGh5LmMtOTMwLVx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTk1OC1cdG5ldGlmX3Rlc3Rpbmdfb24oZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9waHkuYzo5NTk6XHRlcnIgPSBwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZWNhYmxlX3Rlc3RfdGRyX3N0YXJ0KHBoeWRldiwgY29uZmlnKTtcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy05NjAtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTk4MS19XG5kcml2ZXJzL25ldC9waHkvcGh5LmM6OTgyOkVYUE9SVF9TWU1CT0wocGh5X3N0YXJ0X2NhYmxlX3Rlc3RfdGRyKTtcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy05ODMtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jPTE1Mzg9c3RhdGljIGVudW0gcGh5X3N0YXRlX3dvcmsgX3BoeV9zdGF0ZV9tYWNoaW5lKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTE1NjItXHRjYXNlIFBIWV9DQUJMRVRFU1Q6XG5kcml2ZXJzL25ldC9waHkvcGh5LmM6MTU2MzpcdFx0ZXJyID0gcGh5ZGV2LVx1MDAzZWRydi1cdTAwM2VjYWJsZV90ZXN0X2dldF9zdGF0dXMocGh5ZGV2LCBcdTAwMjZmaW5pc2hlZCk7XG5kcml2ZXJzL25ldC9waHkvcGh5LmMtMTU2NC1cdFx0aWYgKGVycikge1xuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjE1NjU6XHRcdFx0cGh5X2Fib3J0X2NhYmxlX3Rlc3QocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0xNTY2LVx0XHRcdG5ldGlmX3Rlc3Rpbmdfb2ZmKGRldik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS5jPTE2NjI9dm9pZCBwaHlfc3RvcChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0xNjc4LVx0aWYgKHBoeWRldi1cdTAwM2VzdGF0ZSA9PSBQSFlfQ0FCTEVURVNUKSB7XG5kcml2ZXJzL25ldC9waHkvcGh5LmM6MTY3OTpcdFx0cGh5X2Fib3J0X2NhYmxlX3Rlc3QocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0xNjgwLVx0XHRuZXRpZl90ZXN0aW5nX29mZihkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jPTEyMj1zaXplX3QgcGh5X2NhcHNfc3BlZWRzKHVuc2lnbmVkIGludCAqc3BlZWRzLCBzaXplX3Qgc2l6ZSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0xNDAtLyoqXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYzoxNDE6ICogcGh5X2NhcHNfbG9va3VwX2J5X2xpbmttb2RlKCkgLSBMb29rdXAgdGhlIGZhc3Rlc3QgbWF0Y2hpbmcgbGlua19jYXBhYmlsaXRpZXNcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jLTE0Mi0gKiBAbGlua21vZGVzOiBMaW5rbW9kZXMgdG8gbWF0Y2ggYWdhaW5zdFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MjYyPXN0YXRpYyB2b2lkIHBoeV9saW5rX2NoYW5nZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sIHVwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMjc1LS8qKlxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoyNzY6ICogcGh5X3VzZXNfc3RhdGVfbWFjaGluZSAtIHRlc3Qgd2hldGhlciBjb25zdW1lciBkcml2ZXIgdXNlcyBQQUwgc3RhdGUgbWFjaGluZVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0yNzctICogQHBoeWRldjogdGhlIHRhcmdldCBQSFkgZGV2aWNlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MzkyNT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfcGh5X29wcyBwaHlfZXRodG9vbF9waHlfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzkzMS1cdC5nZXRfcGxjYV9zdGF0dXNcdD0gcGh5X2V0aHRvb2xfZ2V0X3BsY2Ffc3RhdHVzLFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzozOTMyOlx0LnN0YXJ0X2NhYmxlX3Rlc3RcdD0gcGh5X3N0YXJ0X2NhYmxlX3Rlc3QsXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjM5MzM6XHQuc3RhcnRfY2FibGVfdGVzdF90ZHJcdD0gcGh5X3N0YXJ0X2NhYmxlX3Rlc3RfdGRyLFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zOTM0LX07XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTkxPWludCBwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0oc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzIwMi1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzIwMzpcdGlmICghcGh5bGlua190ZXN0KHBsLVx1MDAzZXN1cHBvcnRlZCwgUGF1c2UpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMjA0Olx0ICAgICFwaHlsaW5rX3Rlc3QocGwtXHUwMDNlc3VwcG9ydGVkLCBBc3ltX1BhdXNlKSlcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzIwNS1cdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMjA2LVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMjA3Olx0aWYgKCFwaHlsaW5rX3Rlc3QocGwtXHUwMDNlc3VwcG9ydGVkLCBBc3ltX1BhdXNlKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzIwOC1cdCAgICBwYXVzZS1cdTAwM2VyeF9wYXVzZSAhPSBwYXVzZS1cdTAwM2V0eF9wYXVzZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jPTM0MD1waHlfaW50ZXJmYWNlX3Qgc2ZwX3NlbGVjdF9pbnRlcmZhY2Uoc3RydWN0IHNmcF9idXMgKmJ1cyxcbi0tXG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jLTM0Mi17XG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jOjM0MzpcdGlmIChwaHlsaW5rX3Rlc3QobGlua19tb2RlcywgMjUwMDBiYXNlQ1JfRnVsbCkgfHxcbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmM6MzQ0Olx0ICAgIHBoeWxpbmtfdGVzdChsaW5rX21vZGVzLCAyNTAwMGJhc2VLUl9GdWxsKSB8fFxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYzozNDU6XHQgICAgcGh5bGlua190ZXN0KGxpbmtfbW9kZXMsIDI1MDAwYmFzZVNSX0Z1bGwpKVxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYy0zNDYtXHRcdHJldHVybiBQSFlfSU5URVJGQUNFX01PREVfMjVHQkFTRVI7XG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jLTM0Ny1cbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmM6MzQ4Olx0aWYgKHBoeWxpbmtfdGVzdChsaW5rX21vZGVzLCAxMDAwMGJhc2VDUl9GdWxsKSB8fFxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYzozNDk6XHQgICAgcGh5bGlua190ZXN0KGxpbmtfbW9kZXMsIDEwMDAwYmFzZVNSX0Z1bGwpIHx8XG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jOjM1MDpcdCAgICBwaHlsaW5rX3Rlc3QobGlua19tb2RlcywgMTAwMDBiYXNlTFJfRnVsbCkgfHxcbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmM6MzUxOlx0ICAgIHBoeWxpbmtfdGVzdChsaW5rX21vZGVzLCAxMDAwMGJhc2VMUk1fRnVsbCkgfHxcbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmM6MzUyOlx0ICAgIHBoeWxpbmtfdGVzdChsaW5rX21vZGVzLCAxMDAwMGJhc2VFUl9GdWxsKSB8fFxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYzozNTM6XHQgICAgcGh5bGlua190ZXN0KGxpbmtfbW9kZXMsIDEwMDAwYmFzZVRfRnVsbCkpXG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jLTM1NC1cdFx0cmV0dXJuIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUjtcbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmMtMzU1LVxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYzozNTY6XHRpZiAocGh5bGlua190ZXN0KGxpbmtfbW9kZXMsIDUwMDBiYXNlVF9GdWxsKSlcbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmMtMzU3LVx0XHRyZXR1cm4gUEhZX0lOVEVSRkFDRV9NT0RFXzVHQkFTRVI7XG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jLTM1OC1cbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmM6MzU5Olx0aWYgKHBoeWxpbmtfdGVzdChsaW5rX21vZGVzLCAyNTAwYmFzZVhfRnVsbCkgfHxcbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmM6MzYwOlx0ICAgIHBoeWxpbmtfdGVzdChsaW5rX21vZGVzLCAyNTAwYmFzZVRfRnVsbCkpXG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jLTM2MS1cdFx0cmV0dXJuIFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVg7XG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jLTM2Mi1cbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmM6MzYzOlx0aWYgKHBoeWxpbmtfdGVzdChsaW5rX21vZGVzLCAxMDAwYmFzZVRfSGFsZikgfHxcbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmM6MzY0Olx0ICAgIHBoeWxpbmtfdGVzdChsaW5rX21vZGVzLCAxMDAwYmFzZVRfRnVsbCkpXG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jLTM2NS1cdFx0cmV0dXJuIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTtcbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmMtMzY2LVxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYzozNjc6XHRpZiAocGh5bGlua190ZXN0KGxpbmtfbW9kZXMsIDEwMDBiYXNlWF9GdWxsKSlcbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmMtMzY4LVx0XHRyZXR1cm4gUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWDtcbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmMtMzY5LVxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYzozNzA6XHRpZiAocGh5bGlua190ZXN0KGxpbmtfbW9kZXMsIDEwMGJhc2VGWF9GdWxsKSlcbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmMtMzcxLVx0XHRyZXR1cm4gUEhZX0lOVEVSRkFDRV9NT0RFXzEwMEJBU0VYO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDQzMwoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDE5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIFBIWSBEcml2ZXIgSW5zdGFudGlhdGlvbiBhbmQgVGVzdGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb25zLCBgcGh5X3N0YXJ0X2NhYmxlX3Rlc3RgLCBgcGh5X3N0YXJ0X2NhYmxlX3Rlc3RfdGRyYCwgYW5kIHRoZSBsaWtlLCBidXQgSSYjMzk7bSBub3Qgc2VlaW5nIGEgZ2VuZXJpYyB3YXkgdG8gbW9jayBhIFBIWSBkcml2ZXIgb3IgYSBjbGVhbiBtZWNoYW5pc20gdG8gaW5zdGFudGlhdGUgYSBQSFkgZHJpdmVyIGRpcmVjdGx5IGZyb20gdXNlcnNwYWNlLiBUaGF0JiMzOTtzIGEgYml0IG9mIGEgcmVkIGZsYWcuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGVzZSBhcmUgZ2V0dGluZyBzZXQgdXAsIGVzcGVjaWFsbHkgaW4gYSB0ZXN0aW5nIGNvbnRleHQuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayBpZiBTeXprYWxsZXIgb2ZmZXJzIGFueSBkZWRpY2F0ZWQgbWV0aG9kcyBmb3IgdGVzdGluZyBQSFkgZHJpdmVycywgYmVjYXVzZSBpZiBpdCBkb2VzLCBpdCAqaGFzKiB0byBiZSBpbnN0YW50aWF0aW5nIHRoZW0gc29tZWhvdy4gU28sIHRoZSBxdWVzdGlvbiBiZWNvbWVzLCBob3cgYXJlIFBIWSBkcml2ZXJzIHR5cGljYWxseSBicm91Z2h0IHRvIGxpZmU/IEkga25vdyB0aGUgY29tbW9uIHBhdHRlcm46IGBtZGlvYnVzX3JlZ2lzdGVyYCBzY2FucyB0aGUgTURJTyBidXMsIHJlYWRzIHRoZSBQSFkgSUQsIGFuZCB0aGVuIGluc3RhbnRpYXRlcyB0aGUgYHBoeV9kZXZpY2VgIHN0cnVjdHVyZS4gU2ltcGxlIGVub3VnaCBpbiBhIHJlYWwtd29ybGQgc2NlbmFyaW8uCgpUaGUgcHJvYmxlbSBoZXJlLCBvZiBjb3Vyc2UsIGlzIHRoYXQgd2l0aG91dCBhY3R1YWwgaGFyZHdhcmUsIGBtZGlvYnVzX3JlZ2lzdGVyYCB3b24mIzM5O3QgZmluZCBhbnl0aGluZy4gVGhhdCBwb2ludHMgbWUgdG8gdGhlIGlkZWEgdGhhdCB0aGVyZSBoYXMgdG8gYmUgc29tZSBzb3J0IG9mIHNvZnR3YXJlLWVtdWxhdGVkIE1ESU8gYnVzIHRoYXQgdXNlcnNwYWNlIGNhbiBpbnRlcmFjdCB3aXRoLiBTbywgSSBuZWVkIHRvIGZpbmQgdGhlIGltcGxlbWVudGF0aW9uIG9mIHN1Y2ggYSBidXMuIExldCYjMzk7cyBzdGFydCB3aXRoIGEgcXVpY2sgc2VhcmNoLCBwZXJoYXBzIHNvbWV0aGluZyBsaWtlIGBkcml2ZXJzL25ldC9waHkvbWRpby1tb2NrdXAuY2Agb3Igc29tZXRoaW5nIGFuYWxvZ291cy4gTm9wZSwgbm90aGluZyB0aGVyZS4gT2theSwgbGV0JiMzOTtzIHdpZGVuIHRoZSBzZWFyY2ggc2xpZ2h0bHkgYW5kIHNlZSB3aGF0JiMzOTtzIGluIGBkcml2ZXJzL25ldC9tZGlvL2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21kaW8vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7YWNwaV9tZGlvLmMmIzM0OywKICAgICYjMzQ7Zndub2RlX21kaW8uYyYjMzQ7LAogICAgJiMzNDttZGlvLWFpcm9oYS5jJiMzNDssCiAgICAmIzM0O21kaW8tYXNwZWVkLmMmIzM0OywKICAgICYjMzQ7bWRpby1iY20taXByb2MuYyYjMzQ7LAogICAgJiMzNDttZGlvLWJjbS11bmltYWMuYyYjMzQ7LAogICAgJiMzNDttZGlvLWJpdGJhbmcuYyYjMzQ7LAogICAgJiMzNDttZGlvLWNhdml1bS5jJiMzNDssCiAgICAmIzM0O21kaW8tY2F2aXVtLmgmIzM0OywKICAgICYjMzQ7bWRpby1ncGlvLmMmIzM0OywKICAgICYjMzQ7bWRpby1oaXNpLWZlbWFjLmMmIzM0OywKICAgICYjMzQ7bWRpby1pMmMuYyYjMzQ7LAogICAgJiMzNDttZGlvLWlwcTQwMTkuYyYjMzQ7LAogICAgJiMzNDttZGlvLWlwcTgwNjQuYyYjMzQ7LAogICAgJiMzNDttZGlvLW1veGFydC5jJiMzNDssCiAgICAmIzM0O21kaW8tbXNjYy1taWltLmMmIzM0OywKICAgICYjMzQ7bWRpby1tdXgtYmNtLWlwcm9jLmMmIzM0OywKICAgICYjMzQ7bWRpby1tdXgtYmNtNjM2OC5jJiMzNDssCiAgICAmIzM0O21kaW8tbXV4LWdwaW8uYyYjMzQ7LAogICAgJiMzNDttZGlvLW11eC1tZXNvbi1nMTJhLmMmIzM0OywKICAgICYjMzQ7bWRpby1tdXgtbWVzb24tZ3hsLmMmIzM0OywKICAgICYjMzQ7bWRpby1tdXgtbW1pb3JlZy5jJiMzNDssCiAgICAmIzM0O21kaW8tbXV4LW11bHRpcGxleGVyLmMmIzM0OywKICAgICYjMzQ7bWRpby1tdXguYyYjMzQ7LAogICAgJiMzNDttZGlvLW12dXNiLmMmIzM0OywKICAgICYjMzQ7bWRpby1vY3Rlb24uYyYjMzQ7LAogICAgJiMzNDttZGlvLXBpYzY0aHBzYy5jJiMzNDssCiAgICAmIzM0O21kaW8tcmVhbHRlay1ydGw5MzAwLmMmIzM0OywKICAgICYjMzQ7bWRpby1yZWdtYXAuYyYjMzQ7LAogICAgJiMzNDttZGlvLXN1bjRpLmMmIzM0OywKICAgICYjMzQ7bWRpby10aHVuZGVyLmMmIzM0OywKICAgICYjMzQ7bWRpby14Z2VuZS5jJiMzNDssCiAgICAmIzM0O29mX21kaW8uYyYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMzgzCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk1ESU8gRHJpdmVyIEV4cGxvcmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gTURJTyBkcml2ZXJzLCBhbmQgaXQgc2VlbXMgdGhlcmUmIzM5O3MgYSByYW5nZSBvZiBpbXBsZW1lbnRhdGlvbnMgaGVyZTogYG1kaW8tZ3Bpby5jYCwgYG1kaW8tYml0YmFuZy5jYCwgYG1kaW8taTJjLmNgLCBgbWRpby1yZWdtYXAuY2AsIGFuZCBgbWRpby1tdXgtZ3Bpby5jYC4gTm9uZSBvZiB0aGVzZSBpbW1lZGlhdGVseSBqdW1wIG91dCBhcyBiZWluZyBtb2NrIGRyaXZlcnMsIHdoaWNoIGlzIHdoYXQgSSYjMzk7bSBsb29raW5nIGZvciBpbiB0aGUgY29udGV4dCBvZiBmdXp6aW5nLiBIbW0uLi4gd2FpdCBhIG1pbnV0ZS4uLiAqbWRpby1tdnVzYi5jKi4uLiBhIFVTQiBNRElPIGJ1cz8hIFRoYXQmIzM5O3MgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcuCgpJZiBzeXprYWxsZXIgY2FuIGVtdWxhdGUgVVNCIGRldmljZXMsIHdoaWNoIEkgKmtub3cqIGl0IGNhbiB2aWEgYHZoY2lgLCB0aGVuIHRoZW9yZXRpY2FsbHksIGl0IHNob3VsZCBiZSBhYmxlIHRvIGVtdWxhdGUgYSBNYXJ2ZWxsIFVTQiBNRElPIGRldmljZSEgVGhhdCBvcGVucyB1cCBzb21lIGV4Y2l0aW5nIHBvc3NpYmlsaXRpZXMgZm9yIGZ1enppbmcgdGhpcyBzcGVjaWZpYyBpbnRlcmZhY2UuIExldCYjMzk7cyBkaWcgaW50byBgbWRpby1tdnVzYi5jYCBhbmQgc2VlIHdoYXQgd2UmIzM5O3JlIHdvcmtpbmcgd2l0aCBoZXJlLiBUaGlzIGNvdWxkIGJlIGEgc29saWQgdGFyZ2V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW8tbXZ1c2ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tZGlvL21kaW8tbXZ1c2IuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxNzcwCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBgbWRpby1tdnVzYi5jYCoqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljcyBvZiBob3cgdGhlIE1hcnZlbGwgVVNCIE1ESU8gZHJpdmVyLCBgbWRpby1tdnVzYi5jYCwgaXMgaW1wbGVtZW50ZWQuIEkgbmVlZCB0byBxdWlja2x5IHJlY2FsbCB0aGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSBNRElPIGludGVyZmFjZSwgYW5kIGhvdyBhIFVTQiB0cmFuc3BvcnQgbWlnaHQgaW50ZXJhY3Qgd2l0aCBpdC4gV2hhdCBhcmUgdGhlIGtleSBkYXRhIHN0cnVjdHVyZXM/IEhvdyBpcyB0aGUgTURJTyB0cmFuc2FjdGlvbiBwcm90b2NvbCBtYXBwZWQgb250byBVU0IgdHJhbnNmZXJzPyBBcmUgdGhleSB1c2luZyBidWxrLCBpbnRlcnJ1cHQsIG9yIGNvbnRyb2wgZW5kcG9pbnRzPyBNb3JlIGltcG9ydGFudGx5LCB3aGVyZSBkb2VzIHRoZSBjb2RlIHJlc2lkZT8gVGhpcyBjaGVjayBpcyBsaWtlbHkgcmVsYXRlZCB0byBpc3N1ZXMgZnJvbSByZWNlbnQgbG9ncyBhbmQgSSBuZWVkIHRvIGFzc2VzcyBob3cgdGhlIGRyaXZlciBoYW5kbGVzIGRpZmZlcmVudCBQSFkgc3RhdGVzLCBlcnJvciBjb25kaXRpb25zLCBhbmQgaW50ZXJydXB0IHNlcnZpY2luZy4gTGV0JiMzOTtzIHNlZSBob3cgbXVjaCBvZiB0aGlzIGlzIGRvbmUgaW4gaGFyZHdhcmUgYW5kIGZpcm13YXJlLiBXaGF0IGFyZSB0aGUgdHlwaWNhbCByYWNlIGNvbmRpdGlvbnMgdG8gbG9vayBvdXQgZm9yLCB3aXRoIHVzYiBhbmQgTURJTz8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tZGlvL21kaW8tbXZ1c2IuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdFxuICAgMzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4gICA0Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAgIDU6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9tZGlvLmhcdTAwM2VcbiAgIDY6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZVxuICAgNzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3VzYi5oXHUwMDNlXG4gICA4Olx0XG4gICA5Olx0I2RlZmluZSBVU0JfTUFSVkVMTF9WSURcdDB4MTI4NlxuICAxMDpcdFxuICAxMTpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBtdnVzYl9tZGlvX3RhYmxlW10gPSB7XG4gIDEyOlx0XHR7IFVTQl9ERVZJQ0UoVVNCX01BUlZFTExfVklELCAweDFmYTQpIH0sXG4gIDEzOlx0XG4gIDE0Olx0XHR7fVxuICAxNTpcdH07XG4gIDE2Olx0TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIG12dXNiX21kaW9fdGFibGUpO1xuICAxNzpcdFxuICAxODpcdGVudW0ge1xuICAxOTpcdFx0TVZVU0JfQ01EX1BSRUFNQkxFMCxcbiAgMjA6XHRcdE1WVVNCX0NNRF9QUkVBTUJMRTEsXG4gIDIxOlx0XHRNVlVTQl9DTURfQUREUixcbiAgMjI6XHRcdE1WVVNCX0NNRF9WQUwsXG4gIDIzOlx0fTtcbiAgMjQ6XHRcbiAgMjU6XHRzdHJ1Y3QgbXZ1c2JfbWRpbyB7XG4gIDI2Olx0XHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldjtcbiAgMjc6XHRcdHN0cnVjdCBtaWlfYnVzICptZGlvO1xuICAyODpcdFxuICAyOTpcdFx0X19sZTE2IGJ1Zls0XTtcbiAgMzA6XHR9O1xuICAzMTpcdFxuICAzMjpcdHN0YXRpYyBpbnQgbXZ1c2JfbWRpb19yZWFkKHN0cnVjdCBtaWlfYnVzICptZGlvLCBpbnQgZGV2LCBpbnQgcmVnKVxuICAzMzpcdHtcbiAgMzQ6XHRcdHN0cnVjdCBtdnVzYl9tZGlvICptdnVzYiA9IG1kaW8tXHUwMDNlcHJpdjtcbiAgMzU6XHRcdGludCBlcnIsIGFsZW47XG4gIDM2Olx0XG4gIDM3Olx0XHRtdnVzYi1cdTAwM2VidWZbTVZVU0JfQ01EX0FERFJdID0gY3B1X3RvX2xlMTYoMHhhNDAwIHwgKGRldiBcdTAwM2NcdTAwM2MgNSkgfCByZWcpO1xuICAzODpcdFxuICAzOTpcdFx0ZXJyID0gdXNiX2J1bGtfbXNnKG12dXNiLVx1MDAzZXVkZXYsIHVzYl9zbmRidWxrcGlwZShtdnVzYi1cdTAwM2V1ZGV2LCAyKSxcbiAgNDA6XHRcdFx0XHQgICBtdnVzYi1cdTAwM2VidWYsIDYsIFx1MDAyNmFsZW4sIDEwMCk7XG4gIDQxOlx0XHRpZiAoZXJyKVxuICA0MjpcdFx0XHRyZXR1cm4gZXJyO1xuICA0MzpcdFxuICA0NDpcdFx0ZXJyID0gdXNiX2J1bGtfbXNnKG12dXNiLVx1MDAzZXVkZXYsIHVzYl9yY3ZidWxrcGlwZShtdnVzYi1cdTAwM2V1ZGV2LCA2KSxcbiAgNDU6XHRcdFx0XHQgICBcdTAwMjZtdnVzYi1cdTAwM2VidWZbTVZVU0JfQ01EX1ZBTF0sIDIsIFx1MDAyNmFsZW4sIDEwMCk7XG4gIDQ2Olx0XHRpZiAoZXJyKVxuICA0NzpcdFx0XHRyZXR1cm4gZXJyO1xuICA0ODpcdFxuICA0OTpcdFx0cmV0dXJuIGxlMTZfdG9fY3B1KG12dXNiLVx1MDAzZWJ1ZltNVlVTQl9DTURfVkFMXSk7XG4gIDUwOlx0fVxuICA1MTpcdFxuICA1MjpcdHN0YXRpYyBpbnQgbXZ1c2JfbWRpb193cml0ZShzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgaW50IGRldiwgaW50IHJlZywgdTE2IHZhbClcbiAgNTM6XHR7XG4gIDU0Olx0XHRzdHJ1Y3QgbXZ1c2JfbWRpbyAqbXZ1c2IgPSBtZGlvLVx1MDAzZXByaXY7XG4gIDU1Olx0XHRpbnQgYWxlbjtcbiAgNTY6XHRcbiAgNTc6XHRcdG12dXNiLVx1MDAzZWJ1ZltNVlVTQl9DTURfQUREUl0gPSBjcHVfdG9fbGUxNigweDgwMDAgfCAoZGV2IFx1MDAzY1x1MDAzYyA1KSB8IHJlZyk7XG4gIDU4Olx0XHRtdnVzYi1cdTAwM2VidWZbTVZVU0JfQ01EX1ZBTF0gID0gY3B1X3RvX2xlMTYodmFsKTtcbiAgNTk6XHRcbiAgNjA6XHRcdHJldHVybiB1c2JfYnVsa19tc2cobXZ1c2ItXHUwMDNldWRldiwgdXNiX3NuZGJ1bGtwaXBlKG12dXNiLVx1MDAzZXVkZXYsIDIpLFxuICA2MTpcdFx0XHRcdCAgICBtdnVzYi1cdTAwM2VidWYsIDgsIFx1MDAyNmFsZW4sIDEwMCk7XG4gIDYyOlx0fVxuICA2MzpcdFxuICA2NDpcdHN0YXRpYyBpbnQgbXZ1c2JfbWRpb19wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxuICA2NTpcdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4gIDY2Olx0e1xuICA2NzpcdFx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2aW50ZXJmYWNlLVx1MDAzZWRldjtcbiAgNjg6XHRcdHN0cnVjdCBtdnVzYl9tZGlvICptdnVzYjtcbiAgNjk6XHRcdHN0cnVjdCBtaWlfYnVzICptZGlvO1xuICA3MDpcdFxuICA3MTpcdFx0bWRpbyA9IGRldm1fbWRpb2J1c19hbGxvY19zaXplKGRldiwgc2l6ZW9mKCptdnVzYikpO1xuICA3MjpcdFx0aWYgKCFtZGlvKVxuICA3MzpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAgNzQ6XHRcbiAgNzU6XHRcdG12dXNiID0gbWRpby1cdTAwM2Vwcml2O1xuICA3NjpcdFx0bXZ1c2ItXHUwMDNlbWRpbyA9IG1kaW87XG4gIDc3Olx0XHRtdnVzYi1cdTAwM2V1ZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRlcmZhY2UpO1xuICA3ODpcdFxuICA3OTpcdFx0LyogUmV2ZXJzZWQgZnJvbSBVU0IgUENBUHMsIG5vIGlkZWEgd2hhdCB0aGVzZSBtZWFuLiAqL1xuICA4MDpcdFx0bXZ1c2ItXHUwMDNlYnVmW01WVVNCX0NNRF9QUkVBTUJMRTBdID0gY3B1X3RvX2xlMTYoMHhlODAwKTtcbiAgODE6XHRcdG12dXNiLVx1MDAzZWJ1ZltNVlVTQl9DTURfUFJFQU1CTEUxXSA9IGNwdV90b19sZTE2KDB4MDAwMSk7XG4gIDgyOlx0XG4gIDgzOlx0XHRzbnByaW50ZihtZGlvLVx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsIFwmIzM0O212dXNiLSVzXCYjMzQ7LCBkZXZfbmFtZShkZXYpKTtcbiAgODQ6XHRcdG1kaW8tXHUwMDNlbmFtZSA9IG1kaW8tXHUwMDNlaWQ7XG4gIDg1Olx0XHRtZGlvLVx1MDAzZXBhcmVudCA9IGRldjtcbiAgODY6XHRcdG1kaW8tXHUwMDNlcmVhZCA9IG12dXNiX21kaW9fcmVhZDtcbiAgODc6XHRcdG1kaW8tXHUwMDNld3JpdGUgPSBtdnVzYl9tZGlvX3dyaXRlO1xuICA4ODpcdFxuICA4OTpcdFx0dXNiX3NldF9pbnRmZGF0YShpbnRlcmZhY2UsIG12dXNiKTtcbiAgOTA6XHRcbiAgOTE6XHRcdHJldHVybiBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIGRldi1cdTAwM2VvZl9ub2RlKTtcbiAgOTI6XHR9XG4gIDkzOlx0XG4gIDk0Olx0c3RhdGljIHZvaWQgbXZ1c2JfbWRpb19kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UpXG4gIDk1Olx0e1xuICA5NjpcdFx0c3RydWN0IG12dXNiX21kaW8gKm12dXNiID0gdXNiX2dldF9pbnRmZGF0YShpbnRlcmZhY2UpO1xuICA5NzpcdFxuICA5ODpcdFx0bWRpb2J1c191bnJlZ2lzdGVyKG12dXNiLVx1MDAzZW1kaW8pO1xuICA5OTpcdFx0dXNiX3NldF9pbnRmZGF0YShpbnRlcmZhY2UsIE5VTEwpO1xuIDEwMDpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM1NTcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA0MTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgU3l6a2FsbGVyJiMzOTtzIFBvdGVudGlhbCBmb3IgVGVzdGluZyB0aGUgYGRhcDgyMTFyYCBQSFkgRHJpdmVyKioKCk9rYXksIHRoaXMgaXMgZXhjaXRpbmchIEkgc2VlIHRoYXQgYG1kaW8tbXZ1c2JgIGlzIGEgVVNCIE1ESU8gYnVzIGRyaXZlciwgYW5kIFN5emthbGxlciBjYW4gZW11bGF0ZSBhIFVTQiBkZXZpY2UgdXNpbmcgYHZoY2lgLiBUaGUgYmVhdXR5IG9mIHRoaXMgaXMgdGhhdCB3aGVuIFN5emthbGxlciBwcmVzZW50cyBhIFVTQiBkZXZpY2Ugd2l0aCBgaWRWZW5kb3I9MHgxMjg2YCBhbmQgYGlkUHJvZHVjdD0weDFmYTRgLCB0aGUgYG1kaW8tbXZ1c2JgIGRyaXZlciB3aWxsIHByb2JlLiBJdCB0aGVuIGFsbG9jYXRlcyBhbmQgcmVnaXN0ZXJzIGFuIE1ESU8gYnVzLiBDcnVjaWFsbHksIHRoaXMgTURJTyBidXMgd2lsbCBzdWJzZXF1ZW50bHkgc2NhbiBmb3IgUEhZcyBieSByZWFkaW5nIHJlZ2lzdGVycyAyIGFuZCAzIOKAkyB0aGUgUEhZIElEIOKAkyB2aWEgdGhlIGBtdnVzYl9tZGlvX3JlYWRgIGZ1bmN0aW9uLgoKTm93LCBoZXJlJiMzOTtzIHdoZXJlIFN5emthbGxlciBnZXRzIHRvIHNoaW5lLiBgbXZ1c2JfbWRpb19yZWFkYCBzZW5kcyBhIFVTQiBidWxrIG1lc3NhZ2UgdG8gdGhlIGVtdWxhdGVkIGRldmljZSwgd2hpY2ggbWVhbnMgU3l6a2FsbGVyIGNhbiBpbmplY3QgKndoYXRldmVyKiBkYXRhIGl0IGxpa2VzIGluIHJlc3BvbnNlISBUaGUgc3lzdGVtIGlzIHNldCB1cCB0byBhbGxvdyBTeXprYWxsZXIgdG8gY29udHJvbCB0aGUgUEhZIElELiBJIGNhbiBjcmFmdCB0aGUgcmVzcG9uc2UgdG8gYG12dXNiX21kaW9fcmVhZGAgdG8gZ2l2ZSB1cyBgMHgwMDA4YCBhbmQgYDB4MDExQmAgZm9yIHJlZ2lzdGVycyAyIGFuZCAzISBCaW5nby4KClRoZSBNRElPIGJ1cyB3aWxsIHRoZW4gY3JlYXRlIGEgUEhZIGRldmljZSB3aXRoIFBIWSBJRCBgMHgwMDA4MDExQmAsIGFuZCAqdGhhdCogd2lsbCBjYXVzZSB0aGUgYGRhcDgyMTFyYCBQSFkgZHJpdmVyIHRvIGJpbmQgdG8gaXQhIFRoaXMsIGluIHR1cm4sIHdpbGwgdHJpZ2dlciBhIGNhbGwgdG8gYGRhcDgyMTFyX2NvbmZpZ19pbml0YC4gQnJpbGxpYW50ISBTeXprYWxsZXIgaGFzIGEgY2xlYXIgcGF0aCB0byBnZXQgdG8gdGhpcyBjcml0aWNhbCBmdW5jdGlvbi4gVGhpcyBpcyBhYnNvbHV0ZWx5IGFuIGF2ZW51ZSBmb3IgdGVzdGluZyB0aGUgYGRhcDgyMTFyYCBQSFkgZHJpdmVyIQoKSG93ZXZlciwgYSBxdWVzdGlvbiBhcmlzZXMuIGBkYXA4MjExcl9jb25maWdfaW5pdGAgY2hlY2tzIGBwaHlfaW50ZXJmYWNlX2lzX3JnbWlpKHBoeWRldilgLiBCdXQgaG93IGlzIHRoZSBQSFkgaW50ZXJmYWNlIG1vZGUgc2V0PyBOb3JtYWxseSwgdGhpcyBpcyBkb25lIGJ5IHRoZSBNQUMgZHJpdmVyIHdoZW4gaXQgY2FsbHMgYHBoeV9jb25uZWN0YCBvciBgcGh5X2F0dGFjaGAuIEJ1dCBoZXJlJiMzOTtzIHRoZSBjYXRjaDogdGhlIFBIWSBpcyBiZWluZyBjcmVhdGVkIGRpcmVjdGx5IG9uIHRoZSBNRElPIGJ1cy4gSXQmIzM5O3MgKm5vdCogYXR0YWNoZWQgdG8gYW55IE1BQyB5ZXQuIElzIGBkYXA4MjExcl9jb25maWdfaW5pdGAgYWN0dWFsbHkgY2FsbGVkIGR1cmluZyBwcm9iZT8gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgIHRvIHNlZSBwcmVjaXNlbHkgd2hlbiBgY29uZmlnX2luaXRgIGlzIGludm9rZWQuIEl0IGNvdWxkIGJlIHBhcnQgb2YgdGhlIGluaXRpYWwgcHJvYmUgcHJvY2Vzcywgd2hpY2ggd291bGQgYmUgaWRlYWwuIEkgbmVlZCB0byBrbm93IHRoZSBzdGF0ZSBvZiB0aGUgUEhZIHdoZW4gYGNvbmZpZ19pbml0YCBpcyBjYWxsZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBpbnRlcmZhY2UgY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZ19pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTEzNDE9aW50IHBoeV9pbml0X2h3KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMzY1LVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMzY2Olx0aWYgKHBoeWRldi1cdTAwM2VkcnYtXHUwMDNlY29uZmlnX2luaXQpIHtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTM2NzpcdFx0cmV0ID0gcGh5ZGV2LVx1MDAzZWRydi1cdTAwM2Vjb25maWdfaW5pdChwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMzY4LVx0XHRpZiAocmV0IFx1MDAzYyAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDczNAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJiMzOTttIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDoKCioqVW5kZXJzdGFuZGluZyB0aGUgVGltaW5nIG9mIGBwaHlfaW5pdF9od2AqKgoKUmlnaHQsIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYHBoeV9pbml0X2h3YC4gVGhlIGNydWNpYWwgcXVlc3Rpb24gSSYjMzk7bSBncmFwcGxpbmcgd2l0aCBpcyAqd2hlbiogaXMgdGhpcyBmdW5jdGlvbiBhY3R1YWxseSBpbnZva2VkIHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0gaW5pdGlhbGl6YXRpb24gZmxvdz8gSSYjMzk7bSB0cnlpbmcgdG8gcGluIGRvd24gdGhlIGV4YWN0IHNlcXVlbmNlIG9mIGV2ZW50cy4gSXMgaXQgY2FsbGVkIGVhcmx5LCBtYXliZSBkdXJpbmcgdGhlIGRldmljZSBkcml2ZXImIzM5O3MgcHJvYmUgcm91dGluZT8gT3IgcGVyaGFwcyBpdCYjMzk7cyBkZWZlcnJlZCB0byBhIGxhdGVyIHN0YWdlLCBsaWtlIGR1cmluZyBuZXR3b3JrIGludGVyZmFjZSBicmluZy11cD8gS25vd2luZyB0aGlzIGlzIGZ1bmRhbWVudGFsIGZvciBkZWJ1Z2dpbmcgYW5kIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGludm9sdmVkIGluIGluaXRpYWxpemluZyB0aGUgcGh5c2ljYWwgbGF5ZXIuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIHRocm91Z2ggdGhlIGRyaXZlciBjb2RlIGFuZCB0aGUgcGxhdGZvcm0gaW5pdGlhbGl6YXRpb24gc2NyaXB0cyB0byB0cmFjZSB0aGUgY2FsbGluZyBwYXRoLiBBbmQsIG9mIGNvdXJzZSwgSSYjMzk7bSBhc3N1bWluZyBpdCYjMzk7cyBoYXJkd2FyZS1zcGVjaWZpYywgcmVxdWlyaW5nIG1lIHRvIGxvb2sgYXQgdGhlIHJlbGV2YW50IGRhdGEgc2hlZXRzIGFuZCByZWZlcmVuY2UgbWFudWFscy4gVWx0aW1hdGVseSwgZGV0ZXJtaW5pbmcgdGhlIHRpbWluZyBpcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBoYXJkd2FyZSBpcyBpbml0aWFsaXplZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5X2luaXRfaHcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9Mzc4PXN0YXRpYyBfX21heWJlX3VudXNlZCBpbnQgbWRpb19idXNfcGh5X3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zOTgtXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjM5OTpcdHJldCA9IHBoeV9pbml0X2h3KHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTQwMC1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xMzA1PUVYUE9SVF9TWU1CT0wocGh5X2Rpc2Nvbm5lY3QpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTMyMS0gKiAgIGVmZm9ydCB0byBzdXBwb3J0IHN1Y2ggYnJva2VuIFBIWXMsIHRoaXMgZnVuY3Rpb24gaXMgc2VwYXJhdGUgZnJvbSB0aGVcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTMyMjogKiAgIHN0YW5kYXJkIHBoeV9pbml0X2h3KCkgd2hpY2ggd2lsbCB6ZXJvIGFsbCB0aGUgb3RoZXIgYml0cyBpbiB0aGUgQk1DUlxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMzIzLSAqICAgYW5kIHJlYXBwbHkgYWxsIGRyaXZlci1zcGVjaWZpYyBhbmQgYm9hcmQtc3BlY2lmaWMgZml4dXBzLlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTMyNT1zdGF0aWMgaW50IHBoeV9wb2xsX3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMzQwLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMzQxOmludCBwaHlfaW5pdF9odyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMzQyLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEzODctfVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMzg4OkVYUE9SVF9TWU1CT0wocGh5X2luaXRfaHcpO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMzg5LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTc1Mj1pbnQgcGh5X2F0dGFjaF9kaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE4NzQtXHQgKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTg3NTpcdGVyciA9IHBoeV9pbml0X2h3KHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE4NzYtXHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTU1MgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlLCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipUcmFjaW5nIHRoZSBQSFkgSW5pdGlhbGl6YXRpb24gUGF0aCoqCgpSaWdodCwgbGV0IG1lIHNlZS4uLiBgcGh5X2luaXRfaHdgIGlzIGRlZmluaXRlbHkgdHJpZ2dlcmVkIHdpdGhpbiB0aGUgYHBoeV9hdHRhY2hfZGlyZWN0YCBmdW5jdGlvbi4gQW5kIEkga25vdyB0aGF0IGBwaHlfYXR0YWNoX2RpcmVjdGAgaXMgY2FsbGVkIHdoZW4gYSBNQUMgZHJpdmVyLCByaWdodCBpbiBpdHMgYGNvbm5lY3RgIGNhbGxiYWNrLCBsaW5rcyB1cCB3aXRoIHRoZSBQSFkuIFNvIGZhciwgc28gZ29vZC4gVGhhdCYjMzk7cyB0aGUgbm9ybWFsIGRhdGEgcGF0aC4KCkJ1dCB0aGUgcmVhbCBxdWVzdGlvbiBJIG5lZWQgdG8gYXNrIG15c2VsZiBoZXJlIGlzIHdoZXRoZXIgYHBoeV9pbml0X2h3YCBpcyBhbHNvIGdldHRpbmcgY2FsbGVkIGR1cmluZyB0aGF0IGluaXRpYWwgUEhZICpwcm9iZSogcGhhc2UuIEkgbmVlZCB0byBiZSBzdXJlIHRoZSBoYXJkd2FyZSBpcyBiZWluZyBpbml0aWFsaXplZCBpbiB0aGUgcHJvcGVyIG9yZGVyLiBUaGF0IHN0YXJ0dXAgc2VxdWVuY2UgaXMgd2hlcmUgdGhpbmdzIHRlbmQgdG8gZ28gc2lkZXdheXMgaWYgeW91JiMzOTtyZSBub3QgY2FyZWZ1bC4gVGhpcyBpcyBjcnVjaWFsIGZvciBkZXRlcm1pbmluZyBob3cgdG8gZGVidWcgYW55IHBvdGVudGlhbCBQSFktcmVsYXRlZCBpc3N1ZXMgbGF0ZXIgb24uIExldCBtZSBrZWVwIGRpZ2dpbmcuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5X2luaXRfaHcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9Mzc4PXN0YXRpYyBfX21heWJlX3VudXNlZCBpbnQgbWRpb19idXNfcGh5X3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zOTgtXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjM5OTpcdHJldCA9IHBoeV9pbml0X2h3KHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTQwMC1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xMzA1PUVYUE9SVF9TWU1CT0wocGh5X2Rpc2Nvbm5lY3QpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTMyMS0gKiAgIGVmZm9ydCB0byBzdXBwb3J0IHN1Y2ggYnJva2VuIFBIWXMsIHRoaXMgZnVuY3Rpb24gaXMgc2VwYXJhdGUgZnJvbSB0aGVcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTMyMjogKiAgIHN0YW5kYXJkIHBoeV9pbml0X2h3KCkgd2hpY2ggd2lsbCB6ZXJvIGFsbCB0aGUgb3RoZXIgYml0cyBpbiB0aGUgQk1DUlxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMzIzLSAqICAgYW5kIHJlYXBwbHkgYWxsIGRyaXZlci1zcGVjaWZpYyBhbmQgYm9hcmQtc3BlY2lmaWMgZml4dXBzLlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTMyNT1zdGF0aWMgaW50IHBoeV9wb2xsX3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMzQwLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMzQxOmludCBwaHlfaW5pdF9odyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMzQyLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEzODctfVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMzg4OkVYUE9SVF9TWU1CT0wocGh5X2luaXRfaHcpO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMzg5LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTc1Mj1pbnQgcGh5X2F0dGFjaF9kaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE4NzQtXHQgKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTg3NTpcdGVyciA9IHBoeV9pbml0X2h3KHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE4NzYtXHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjM3MwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipIbW0sIFRoYXQmIzM5O3MgVW5leHBlY3RlZC4qKgoKV2FpdCBhIG1pbnV0ZS4uLiBJJiMzOTttIGxvb2tpbmcgYXQgYHBoeV9wcm9iZWAgaW4gYHBoeV9kZXZpY2UuY2AgYW5kIHNvbWV0aGluZyBqdXN0IGRvZXNuJiMzOTt0IHNpdCByaWdodC4gSSYjMzk7ZCAqYXNzdW1lZCogdGhhdCB0aGUgcHJvYmluZyBwcm9jZXNzIHdvdWxkIGluaGVyZW50bHkgaW5jbHVkZSBhbiBpbml0aWFsaXphdGlvbiBzdGVwLCBwYXJ0aWN1bGFybHkgc29tZXRoaW5nIGxpa2UgYHBoeV9pbml0X2h3YC4gSXQmIzM5O3MgYWxtb3N0IGF4aW9tYXRpYyB0aGF0IHlvdSYjMzk7ZCBuZWVkIHRvIGluaXRpYWxpemUgdGhlIGhhcmR3YXJlIHRvIGFjdHVhbGx5ICpwcm9iZSogaXQgZWZmZWN0aXZlbHksIHJpZ2h0PyBPdGhlcndpc2UsIHdoYXQgYXJlIHlvdSBldmVuIGxvb2tpbmcgZm9yPyBZb3UgY2FuJiMzOTt0IGp1c3QgZXhwZWN0IGl0IHRvIG1hZ2ljYWxseSB3b3JrIHdpdGhvdXQgcHV0dGluZyBpdCBpbiBhIGtub3duLCBiYXNlbGluZSBzdGF0ZS4gVGhpcyBjYWxscyBmb3IgYSBjbG9zZXIgaW5zcGVjdGlvbiBvZiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgdGhlIGludGVuZGVkIGFyY2hpdGVjdHVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgKmJlZm9yZSogYHBoeV9wcm9iZWAsIGFuZCBpZiB0aGUgaW5pdGlhbGl6YXRpb24gaXMgYmVpbmcgZGVmZXJyZWQsIG9yIHBlcmhhcHMgaGFuZGxlZCBpbiBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IHdheSB0aGFuIEkmIzM5O2QgZXhwZWN0LiBJcyB0aGVyZSBhIHNlcGFyYXRlLCBleHBsaWNpdCBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBjYWxsZWQgZWFybGllciwgcGVyaGFwcyB0aHJvdWdoIGEgZGV2aWNlIHRyZWUgb3IgcGxhdGZvcm0tc3BlY2lmaWMgZHJpdmVyIHNldHVwPyBPciBhbSBJIG1pc3Npbmcgc29tZXRoaW5nIGFsdG9nZXRoZXI/IFRoZXJlIG1pZ2h0IGJlIGFuIGludGVyZXN0aW5nIGRlc2lnbiBjaG9pY2UgaGVyZSBhbmQgSSB3YW50IHRvIHVuZGVyc3RhbmQgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeV9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0zNjUyPUVYUE9SVF9TWU1CT0xfR1BMKGZ3bm9kZV9nZXRfcGh5X25vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzY1NC0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MzY1NTogKiBwaHlfcHJvYmUgLSBwcm9iZSBhbmQgaW5pdCBhIFBIWSBkZXZpY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzY1Ni0gKiBAZGV2OiBkZXZpY2UgdG8gcHJvYmUgYW5kIGluaXRcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM2NTktICovXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjM2NjA6c3RhdGljIGludCBwaHlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNjYxLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTM4Mzk9c3RhdGljIGludCBwaHlfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBwaHlfZHJpdmVyICpuZXdfZHJpdmVyLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzg2NS1cdG5ld19kcml2ZXItXHUwMDNlbWRpb2Rydi5kcml2ZXIuYnVzID0gXHUwMDI2bWRpb19idXNfdHlwZTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6Mzg2NjpcdG5ld19kcml2ZXItXHUwMDNlbWRpb2Rydi5kcml2ZXIucHJvYmUgPSBwaHlfcHJvYmU7XG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM4NjctXHRuZXdfZHJpdmVyLVx1MDAzZW1kaW9kcnYuZHJpdmVyLnJlbW92ZSA9IHBoeV9yZW1vdmU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MDE1CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIGBwaHlfcHJvYmVgIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBgcGh5X3Byb2JlYCBpbXBsZW1lbnRhdGlvbi4gSSBuZWVkIHRvIGdldCBhIHNvbGlkIGdyYXNwIG9mIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGhhbmRsaW5nIFBIWSBkZXRlY3Rpb24gYW5kIGNvbmZpZ3VyYXRpb24uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBhbmQgdmVyaWZ5IHRoZSBzcGVjaWZpYyBtZXRob2RzIHVzZWQuIElzIGl0IHVzaW5nIGF1dG9uZWdvdGlhdGlvbj8gQXJlIHRoZXJlIHNwZWNpZmljIHJlZ2lzdGVyIHJlYWRzIGFuZCB3cml0ZXMgaW52b2x2ZWQ/IFdoYXQgYXJlIHRoZSBwb3RlbnRpYWwgZmFpbHVyZSBwb2ludHM/IEkgbmVlZCB0byBsb29rIGNsb3NlbHkgYXQgdGhlIGVycm9yIGhhbmRsaW5nLCBlc3BlY2lhbGx5IGNvbmNlcm5pbmcgd2hpY2ggUEhZIHR5cGVzIGl0JiMzOTtzIGF0dGVtcHRpbmcgdG8gZGV0ZWN0IGFuZCBzdXBwb3J0LiBJIGFsc28gbmVlZCB0byBzZWUgaWYgaXQgZ3JhY2VmdWxseSBoYW5kbGVzIHNpdHVhdGlvbnMgd2hlcmUgdGhlIFBIWSBtaWdodCBub3QgYmUgaW1tZWRpYXRlbHkgcmVzcG9uc2l2ZS4gSSB3YW50IHRvIGNoZWNrIGZvciByYWNlIGNvbmRpdGlvbnMsIGVzcGVjaWFsbHkgaWYgdGhlcmUmIzM5O3MgYW55IGludGVycnVwdC1kcml2ZW4gbG9naWMgaW52b2x2ZWQgaW4gdGhlIGRldGVjdGlvbiBwcm9jZXNzLiBBcmUgdGhlcmUgYW55IGFzc3VtcHRpb25zIGJlaW5nIG1hZGUgYWJvdXQgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgb3IgZHJpdmVyIGVudmlyb25tZW50IHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBJIHNob3VsZCBpZGVudGlmeSByaWdodCBub3c/IFRoaXMgaXMgYWxsIGFib3V0IHZlcmlmeWluZyB0aGUgcm9idXN0bmVzcyBhbmQgZWZmaWNpZW5jeSBvZiB0aGUgcHJvYmUgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzY1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzY1MDpcdFx0cmV0dXJuIGZ3bm9kZV9maW5kX3JlZmVyZW5jZShmd25vZGUsIFwmIzM0O3BoeS1kZXZpY2VcJiMzNDssIDApO1xuMzY1MTpcdH1cbjM2NTI6XHRFWFBPUlRfU1lNQk9MX0dQTChmd25vZGVfZ2V0X3BoeV9ub2RlKTtcbjM2NTM6XHRcbjM2NTQ6XHQvKipcbjM2NTU6XHQgKiBwaHlfcHJvYmUgLSBwcm9iZSBhbmQgaW5pdCBhIFBIWSBkZXZpY2VcbjM2NTY6XHQgKiBAZGV2OiBkZXZpY2UgdG8gcHJvYmUgYW5kIGluaXRcbjM2NTc6XHQgKlxuMzY1ODpcdCAqIFRha2UgY2FyZSBvZiBzZXR0aW5nIHVwIHRoZSBwaHlfZGV2aWNlIHN0cnVjdHVyZSwgc2V0IHRoZSBzdGF0ZSB0byBSRUFEWS5cbjM2NTk6XHQgKi9cbjM2NjA6XHRzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4zNjYxOlx0e1xuMzY2MjpcdFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHRvX3BoeV9kZXZpY2UoZGV2KTtcbjM2NjM6XHRcdHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYgPSBwaHlkZXYtXHUwMDNlbWRpby5kZXYuZHJpdmVyO1xuMzY2NDpcdFx0c3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydiA9IHRvX3BoeV9kcml2ZXIoZHJ2KTtcbjM2NjU6XHRcdGludCBlcnIgPSAwO1xuMzY2NjpcdFxuMzY2NzpcdFx0cGh5ZGV2LVx1MDAzZWRydiA9IHBoeWRydjtcbjM2Njg6XHRcbjM2Njk6XHRcdC8qIERpc2FibGUgdGhlIGludGVycnVwdCBpZiB0aGUgUEhZIGRvZXNuJiMzOTt0IHN1cHBvcnQgaXRcbjM2NzA6XHRcdCAqIGJ1dCB0aGUgaW50ZXJydXB0IGlzIHN0aWxsIGEgdmFsaWQgb25lXG4zNjcxOlx0XHQgKi9cbjM2NzI6XHRcdGlmICghcGh5X2Rydl9zdXBwb3J0c19pcnEocGh5ZHJ2KSBcdTAwMjZcdTAwMjYgcGh5X2ludGVycnVwdF9pc192YWxpZChwaHlkZXYpKVxuMzY3MzpcdFx0XHRwaHlkZXYtXHUwMDNlaXJxID0gUEhZX1BPTEw7XG4zNjc0Olx0XG4zNjc1Olx0XHRpZiAocGh5ZHJ2LVx1MDAzZWZsYWdzIFx1MDAyNiBQSFlfSVNfSU5URVJOQUwpXG4zNjc2Olx0XHRcdHBoeWRldi1cdTAwM2Vpc19pbnRlcm5hbCA9IHRydWU7XG4zNjc3Olx0XG4zNjc4Olx0XHQvKiBEZWFzc2VydCB0aGUgcmVzZXQgc2lnbmFsICovXG4zNjc5Olx0XHRwaHlfZGV2aWNlX3Jlc2V0KHBoeWRldiwgMCk7XG4zNjgwOlx0XG4zNjgxOlx0XHRpZiAocGh5ZGV2LVx1MDAzZWRydi1cdTAwM2Vwcm9iZSkge1xuMzY4MjpcdFx0XHRlcnIgPSBwaHlkZXYtXHUwMDNlZHJ2LVx1MDAzZXByb2JlKHBoeWRldik7XG4zNjgzOlx0XHRcdGlmIChlcnIpXG4zNjg0Olx0XHRcdFx0Z290byBvdXQ7XG4zNjg1Olx0XHR9XG4zNjg2Olx0XG4zNjg3Olx0XHRwaHlfZGlzYWJsZV9pbnRlcnJ1cHRzKHBoeWRldik7XG4zNjg4Olx0XG4zNjg5Olx0XHQvKiBTdGFydCBvdXQgc3VwcG9ydGluZyBldmVyeXRoaW5nLiBFdmVudHVhbGx5LFxuMzY5MDpcdFx0ICogYSBjb250cm9sbGVyIHdpbGwgYXR0YWNoLCBhbmQgbWF5IG1vZGlmeSBvbmVcbjM2OTE6XHRcdCAqIG9yIGJvdGggb2YgdGhlc2UgdmFsdWVzXG4zNjkyOlx0XHQgKi9cbjM2OTM6XHRcdGlmIChwaHlkcnYtXHUwMDNlZmVhdHVyZXMpIHtcbjM2OTQ6XHRcdFx0bGlua21vZGVfY29weShwaHlkZXYtXHUwMDNlc3VwcG9ydGVkLCBwaHlkcnYtXHUwMDNlZmVhdHVyZXMpO1xuMzY5NTpcdFx0XHRnZW5waHlfYzQ1X3JlYWRfZWVlX2FiaWxpdGllcyhwaHlkZXYpO1xuMzY5NjpcdFx0fVxuMzY5NzpcdFx0ZWxzZSBpZiAocGh5ZHJ2LVx1MDAzZWdldF9mZWF0dXJlcylcbjM2OTg6XHRcdFx0ZXJyID0gcGh5ZHJ2LVx1MDAzZWdldF9mZWF0dXJlcyhwaHlkZXYpO1xuMzY5OTpcdFx0ZWxzZSBpZiAocGh5ZGV2LVx1MDAzZWlzX2M0NSlcbjM3MDA6XHRcdFx0ZXJyID0gZ2VucGh5X2M0NV9wbWFfcmVhZF9hYmlsaXRpZXMocGh5ZGV2KTtcbjM3MDE6XHRcdGVsc2VcbjM3MDI6XHRcdFx0ZXJyID0gZ2VucGh5X3JlYWRfYWJpbGl0aWVzKHBoeWRldik7XG4zNzAzOlx0XG4zNzA0Olx0XHRpZiAoZXJyKVxuMzcwNTpcdFx0XHRnb3RvIG91dDtcbjM3MDY6XHRcbjM3MDc6XHRcdGlmICghbGlua21vZGVfdGVzdF9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXV0b25lZ19CSVQsXG4zNzA4Olx0XHRcdFx0ICAgICAgIHBoeWRldi1cdTAwM2VzdXBwb3J0ZWQpKVxuMzcwOTpcdFx0XHRwaHlkZXYtXHUwMDNlYXV0b25lZyA9IDA7XG4zNzEwOlx0XG4zNzExOlx0XHRpZiAobGlua21vZGVfdGVzdF9iaXQoRVRIVE9PTF9MSU5LX01PREVfMTAwMGJhc2VUX0hhbGZfQklULFxuMzcxMjpcdFx0XHRcdCAgICAgIHBoeWRldi1cdTAwM2VzdXBwb3J0ZWQpKVxuMzcxMzpcdFx0XHRwaHlkZXYtXHUwMDNlaXNfZ2lnYWJpdF9jYXBhYmxlID0gMTtcbjM3MTQ6XHRcdGlmIChsaW5rbW9kZV90ZXN0X2JpdChFVEhUT09MX0xJTktfTU9ERV8xMDAwYmFzZVRfRnVsbF9CSVQsXG4zNzE1Olx0XHRcdFx0ICAgICAgcGh5ZGV2LVx1MDAzZXN1cHBvcnRlZCkpXG4zNzE2Olx0XHRcdHBoeWRldi1cdTAwM2Vpc19naWdhYml0X2NhcGFibGUgPSAxO1xuMzcxNzpcdFxuMzcxODpcdFx0b2Zfc2V0X3BoeV9zdXBwb3J0ZWQocGh5ZGV2KTtcbjM3MTk6XHRcbjM3MjA6XHRcdGVyciA9IHBoeV9zZXR1cF9wb3J0cyhwaHlkZXYpO1xuMzcyMTpcdFx0aWYgKGVycilcbjM3MjI6XHRcdFx0Z290byBvdXQ7XG4zNzIzOlx0XG4zNzI0Olx0XHRwaHlfYWR2ZXJ0aXNlX3N1cHBvcnRlZChwaHlkZXYpO1xuMzcyNTpcdFxuMzcyNjpcdFx0LyogR2V0IFBIWSBkZWZhdWx0IEVFRSBhZHZlcnRpc2luZyBtb2RlcyBhbmQgaGFuZGxlIHRoZW0gYXMgcG90ZW50aWFsbHlcbjM3Mjc6XHRcdCAqIHNhZmUgaW5pdGlhbCBjb25maWd1cmF0aW9uLlxuMzcyODpcdFx0ICovXG4zNzI5Olx0XHRlcnIgPSBnZW5waHlfYzQ1X3JlYWRfZWVlX2FkdihwaHlkZXYsIHBoeWRldi1cdTAwM2VhZHZlcnRpc2luZ19lZWUpO1xuMzczMDpcdFx0aWYgKGVycilcbjM3MzE6XHRcdFx0Z290byBvdXQ7XG4zNzMyOlx0XG4zNzMzOlx0XHQvKiBHZXQgdGhlIEVFRSBtb2RlcyB3ZSB3YW50IHRvIHByb2hpYml0LiAqL1xuMzczNDpcdFx0b2Zfc2V0X3BoeV9lZWVfYnJva2VuKHBoeWRldik7XG4zNzM1Olx0XG4zNzM2Olx0XHQvKiBTb21lIFBIWXMgbWF5IGFkdmVydGlzZSwgYnkgZGVmYXVsdCwgbm90IHN1cHBvcnQgRUVFIG1vZGVzLiBTbyxcbjM3Mzc6XHRcdCAqIHdlIG5lZWQgdG8gY2xlYW4gdGhlbS4gSW4gYWRkaXRpb24gcmVtb3ZlIGFsbCBkaXNhYmxlZCBFRUUgbW9kZXMuXG4zNzM4Olx0XHQgKi9cbjM3Mzk6XHRcdGxpbmttb2RlX2FuZChwaHlkZXYtXHUwMDNlYWR2ZXJ0aXNpbmdfZWVlLCBwaHlkZXYtXHUwMDNlc3VwcG9ydGVkX2VlZSxcbjM3NDA6XHRcdFx0ICAgICBwaHlkZXYtXHUwMDNlYWR2ZXJ0aXNpbmdfZWVlKTtcbjM3NDE6XHRcdGxpbmttb2RlX2FuZG5vdChwaHlkZXYtXHUwMDNlYWR2ZXJ0aXNpbmdfZWVlLCBwaHlkZXYtXHUwMDNlYWR2ZXJ0aXNpbmdfZWVlLFxuMzc0MjpcdFx0XHRcdHBoeWRldi1cdTAwM2VlZWVfZGlzYWJsZWRfbW9kZXMpO1xuMzc0MzpcdFxuMzc0NDpcdFx0LyogVGhlcmUgaXMgbm8gXCYjMzQ7ZW5hYmxlZFwmIzM0OyBmbGFnLiBJZiBQSFkgaXMgYWR2ZXJ0aXNpbmcsIGFzc3VtZSBpdCBpc1xuMzc0NTpcdFx0ICoga2luZCBvZiBlbmFibGVkLlxuMzc0NjpcdFx0ICovXG4zNzQ3Olx0XHRwaHlkZXYtXHUwMDNlZWVlX2NmZy5lZWVfZW5hYmxlZCA9ICFsaW5rbW9kZV9lbXB0eShwaHlkZXYtXHUwMDNlYWR2ZXJ0aXNpbmdfZWVlKTtcbjM3NDg6XHRcbjM3NDk6XHRcdC8qIEdldCBtYXN0ZXIvc2xhdmUgc3RyYXAgb3ZlcnJpZGVzICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4ODI1CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMjM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgUEhZIERyaXZlciBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IGhvdyBgZGFwODIxMXJfY29uZmlnX2luaXRgIGFjdHVhbGx5IGdldHMgY2FsbGVkLiBUaGUgY3J1Y2lhbCByZWFsaXphdGlvbiBpcyB0aGF0IGBwaHlfcHJvYmVgICpkb2VzbiYjMzk7dCogaW5pdGlhdGUgYGNvbmZpZ19pbml0YC4gVGhhdCBtZWFucyBgZGFwODIxMXJfY29uZmlnX2luaXRgIHdpbGwgb25seSBydW4gaWYgYSBNQUMgZHJpdmVyIHN1Y2Nlc3NmdWxseSBhdHRhY2hlcyB0byB0aGUgUEhZLiBUaGF0JiMzOTtzIHRoZSBrZXkuIE5vdywgY2FuIHN5emthbGxlciBhY2hpZXZlIHRoYXQgYXR0YWNobWVudD8KCklmIHN5emthbGxlciBjcmVhdGVzIGEgUEhZIGRldmljZSB1c2luZyB0aGUgYG1kaW8tbXZ1c2JgIGRyaXZlciwgYXMgSSBzdXNwZWN0IGl0IG1pZ2h0LCB0aGF0IFBIWSBpcyBqdXN0IGdvaW5nIHRvIGJlIHNpdHRpbmcgdGhlcmUgb24gdGhlIE1ESU8gYnVzLiBObyBNQUMgZHJpdmVyIHdpbGwgYXV0b21hdGljYWxseSBsaW5rIHVwIHdpdGggaXQganVzdCBieSBleGlzdGluZy4gSSBuZWVkIHRvIGZvcmNlIHRoZSBhc3NvY2lhdGlvbi4KClJpZ2h0LCBgZHNhX2xvb3BgICpkb2VzKiBhdHRhY2ggdG8gZml4ZWQgUEhZcywgd2hpY2ggZ2l2ZXMgbWUgYW4gaWRlYS4gQnV0IGlzIHRoZXJlIGEgbWV0aG9kIHRvIGNvbm5lY3QgYSBNQUMgdG8gYW4gYXJiaXRyYXJ5IFBIWT8gSSBjb3VsZCBsb29rIGF0IGBTSU9DU01JSVJFR2AsIGJ1dCB0aGF0JiMzOTtzIGp1c3QgZm9yIHJlZ2lzdGVyIGFjY2Vzcywgbm90IGF0dGFjaG1lbnQuIGBuZXRkZXZzaW1gIGlzIGEgZGVhZCBlbmQ7IG5vIFBIWSB1c2FnZSB0aGVyZS4gQW5kIGBtYWNtYWNgPyBOb3BlLgoKQWhhISBDb3VsZCBzeXprYWxsZXIgbGV2ZXJhZ2UgYHN5el9nZW5ldGxpbmtfZ2V0X2ZhbWlseWAgb3Igc2ltaWxhciBtZWNoYW5pc21zPyBDYW4gSSBtYW5pcHVsYXRlIHRoZSBrZXJuZWwgc3RhdGUgc29tZWhvdyB0byB0cmlnZ2VyIGBwaHlfYXR0YWNoX2RpcmVjdGAgb3IgYHBoeV9jb25uZWN0YCBmcm9tIHVzZXJzcGFjZT8gVGhhdCYjMzk7cyB0aGUgaW1wb3J0YW50IHBpZWNlLiBMZXQgbWUgY2hlY2sgd2hlcmUgYHBoeV9hdHRhY2hfZGlyZWN0YCBpcyB1c2VkIGFuZCBzZWUgaWYgSSBjYW4gZmluZCBhIHVzZXItc3BhY2UgY29udHJvbGxhYmxlIHBhdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5X2F0dGFjaF9kaXJlY3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk0MzEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqTmV0d29yayBEcml2ZXIgRGVidWdnaW5nIC0gV2hlcmUgdG8gQmVnaW4qKgoKT2theSwgc28gSSYjMzk7bSB0cm91Ymxlc2hvb3RpbmcgYSBuZXR3b3JrIGRyaXZlciBpc3N1ZSwgYW5kIEkmIzM5O3ZlIGdvdCBhIGh1bmNoIGl0JiMzOTtzIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSBQSFkgKFBoeXNpY2FsIExheWVyKS4gVGltZSB0byBkaXZlIGluLiBNeSBmaXJzdCBpbnN0aW5jdCwgYW5kIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQsIGlzIHRoZSBgZHJpdmVycy9uZXQvYCBkaXJlY3RvcnkuIFRoYXQmIzM5O3MgdGhlIGdvLXRvIGxvY2F0aW9uIGZvciBuZXR3b3JrIGRyaXZlciBjb2RlLCBvYnZpb3VzbHkuIE5vdywgd2hhdCBhbSBJIGxvb2tpbmcgZm9yIHdpdGhpbiB0aGF0IG1hc3NpdmUgY29kZWJhc2U/IFdlbGwsIEkgbmVlZCB0byBjaGVjayB0aGUgcG90ZW50aWFsIGNvbm5lY3Rpb24gcG9pbnRzIG9mIHRoZSBQSFkuIEkgYW0gZ29pbmcgdG8gc2VhcmNoIGZvciBgcGh5X2F0dGFjaF9kaXJlY3RgIG9yIGBwaHlfY29ubmVjdGAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcHJldHR5IHN0YW5kYXJkIGZvciBlc3RhYmxpc2hpbmcgYSBkaXJlY3Qgb3Igc3RhbmRhcmQgY29ubmVjdGlvbiB0byBhIFBIWSwgYW5kIGFyZSBsaWtlbHkgZW50cnkgcG9pbnRzIHRvIHRoZSBjb2RlIEkgYW0gaW50ZXJlc3RlZCBpbi4gVGhpcyB3aWxsIGdpdmUgbWUgYSBwb2ludCBvZiBkZXBhcnR1cmUgdG8gaW52ZXN0aWdhdGUgdGhlIFBIWSBjb25uZWN0aW9uIGxvZ2ljLCBlcnJvciBoYW5kbGluZywgYW5kIHJlc291cmNlIGFsbG9jYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeV9jb25uZWN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jPTYwNz1zdGF0aWMgaW50IGJjbV9zZjJfbWRpb19yZWdpc3RlcihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy02NTYtXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjY1NzpcdC8qIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgb2ZfcGh5X2Nvbm5lY3QoKSB3aWxsIG5vdCB3b3JrIGJ5XG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTY1OC1cdCAqIHJlbW92aW5nIHRoZSAmIzM5O3BoYW5kbGUmIzM5OyBhbmQgJiMzOTtsaW51eCxwaGFuZGxlJiMzOTsgcHJvcGVydGllcyBhbmRcbi0tXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYz05Njg9c3RhdGljIGJvb2wgbmV0Y19wb3J0X2lzX2VtZGlvX2NvbnN1bWVyKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy05ODQtXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzo5ODU6LyogQ3VycmVudGx5LCBwaHlsaW5rX29mX3BoeV9jb25uZWN0KCkgaXMgY2FsbGVkIGJ5IGRzYV91c2VyX2NyZWF0ZSgpLFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtOTg2LSAqIHNvIGlmIHRoZSBzd2l0Y2ggdXNlcyB0aGUgZXh0ZXJuYWwgTURJTyBjb250cm9sbGVyIChsaWtlIHRoZSBFTURJT1xuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtOTg3LSAqIGZ1bmN0aW9uKSB0byBtYW5hZ2UgdGhlIGV4dGVybmFsIFBIWXMuIFRoZSBNRElPIGJ1cyBtYXkgbm90IGJlXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzo5ODg6ICogY3JlYXRlZCB3aGVuIHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QoKSBpcyBjYWxsZWQsIHNvIGl0IHdpbGwgcmV0dXJuXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy05ODktICogYW4gZXJyb3IgYW5kIGNhdXNlIHRoZSBzd2l0Y2ggZHJpdmVyIHRvIGZhaWwgdG8gcHJvYmUuXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzo5OTA6ICogVGhpcyB3b3JrYXJvdW5kIGNhbiBiZSByZW1vdmVkIHdoZW4gRFNBIHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QoKVxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtOTkxLSAqIGNhbGxzIGFyZSBtb3ZlZCBmcm9tIHByb2JlKCkgdG8gbmRvX29wZW4oKS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAxNzUKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgYSBDb25uZWN0aW9uIFNjZW5hcmlvKioKCkFscmlnaHQsIEkmIzM5O20gdHJ5aW5nIHRvIHdyYXAgbXkgaGVhZCBhcm91bmQgdGhpcyBzeXN0ZW0sIGFuZCBteSBmaXJzdCB0aG91Z2h0IGltbWVkaWF0ZWx5IGp1bXBzIHRvIGBkc2FfdXNlcl9waHlfY29ubmVjdGAuIFRoYXQgZnVuY3Rpb24gbmFtZSBoYXMgYSB2ZXJ5IHNwZWNpZmljIGNvbm5vdGF0aW9uLCBkb2VzbiYjMzk7dCBpdD8gSXQgc3VnZ2VzdHMgYSBkaXJlY3QgcGh5c2ljYWwgY29ubmVjdGlvbiBvciBpbnRlcmFjdGlvbiBhdCB0aGUgdXNlciBsZXZlbCwgd2l0aGluIHRoZSBEb21haW4gU3BlY2lmaWMgQXJjaGl0ZWN0dXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgc3BlY2lmaWNhbGx5ICpkb2VzKiBhbmQgd2hhdCBpdCAqbWVhbnMqIGluIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50IHByb2JsZW0uIElzIHRoaXMgYSBkcml2ZXIgY2FsbD8gQSBuZXR3b3JrIHNldHVwIGZ1bmN0aW9uPyBJcyB0aGlzIHJlbGF0ZWQgdG8gc29tZSBmb3JtIG9mIGhhcmR3YXJlIGhhbmQtb2ZmPyBJIG5lZWQgbW9yZSBjb250ZXh0IHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBjYWxsaW5nIHRoaXMgcm91dGluZS4gV2hhdCBwcm90b2NvbHMgb3IgaW50ZXJmYWNlcyBhcmUgYmVpbmcgdXNlZCBoZXJlPwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkc2FfdXNlcl9waHlfY29ubmVjdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvZHNhL3VzZXIuYz0yNjI0PXN0YXRpYyB2b2lkIGRzYV91c2VyX3BoeWxpbmtfZml4ZWRfc3RhdGUoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG4tLVxubmV0L2RzYS91c2VyLmMtMjYzNi0vKiB1c2VyIGRldmljZSBzZXR1cCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xubmV0L2RzYS91c2VyLmM6MjYzNzpzdGF0aWMgaW50IGRzYV91c2VyX3BoeV9jb25uZWN0KHN0cnVjdCBuZXRfZGV2aWNlICp1c2VyX2RldiwgaW50IGFkZHIsXG5uZXQvZHNhL3VzZXIuYy0yNjM4LVx0XHRcdFx0dTMyIGZsYWdzKVxuLS1cbm5ldC9kc2EvdXNlci5jPTI2NTQ9c3RhdGljIGludCBkc2FfdXNlcl9waHlfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKnVzZXJfZGV2KVxuLS1cbm5ldC9kc2EvdXNlci5jLTI2ODUtXHRcdCAqL1xubmV0L2RzYS91c2VyLmM6MjY4NjpcdFx0cmV0ID0gZHNhX3VzZXJfcGh5X2Nvbm5lY3QodXNlcl9kZXYsIGRwLVx1MDAzZWluZGV4LCBwaHlfZmxhZ3MpO1xubmV0L2RzYS91c2VyLmMtMjY4Ny1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA2MjkKCQkJCQkJCW91dHB1dDogMTMyCgkJCQkJCQl0aG91Z2h0czogMjAwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgREFQODIxMVIgUEhZIERyaXZlciBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyB0aGUgYGRzYV91c2VyX3BoeV9zZXR1cGAgZnVuY3Rpb24gaXMga2V5IGhlcmUuIEl0IGxvb2tzIGxpa2Ugd2hlbiBhIERTQSB1c2VyIGRldmljZSBpcyBjcmVhdGVkLCBhbmQgaWYgc3l6a2FsbGVyIGNvbnN0cnVjdHMgYSBEU0Egc3dpdGNoIHVzaW5nIGEgZGV2aWNlIHRyZWUgb3ZlcmxheSwgYSBQSFkgbm9kZSBjYW4gYmUgc3BlY2lmaWVkLiBUaGlzIHNldHVwIHRoZW4gY2FsbHMgZWl0aGVyIGBwaHlsaW5rX29mX3BoeV9jb25uZWN0YCBvciBgZHNhX3VzZXJfcGh5X2Nvbm5lY3RgLCB3aGljaCB1bHRpbWF0ZWx5IGF0dGFjaGVzIHRoZSBQSFkuIFRoZSBjcml0aWNhbCBwb2ludCBpcyB0aGF0IHN5emthbGxlciAqY2FuKiBpbmplY3QgdGhlc2UgZGV2aWNlIHRyZWUgb3ZlcmxheXMuCgpJZiBzeXprYWxsZXIgY3JhZnRzIGEgRFQgb3ZlcmxheSB3aXRoIGEgRFNBIHN3aXRjaCBhbmQgYSBQSFkgbm9kZSB0aGF0IHNwZWNpZmllcyB0aGUgYGV0aGVybmV0LXBoeS1pZDAwMDguMDExYmAgY29tcGF0aWJsZSBzdHJpbmcsIHRoZW4gdGhlIGBkYXA4MjExcl9jb25maWdfaW5pdGAgZnVuY3Rpb24gKnNob3VsZCogYmUgY2FsbGVkLiBUaGUgcXVlc3Rpb24gaXMsIGRvZXMgc3l6a2FsbGVyICphY3R1YWxseSogZG8gdGhpcz8gSSBjYW4mIzM5O3QgY2hlY2sgdGhlIHN5emthbGxlciBzb3VyY2UgZGlyZWN0bHksIGJ1dCB0aGUgYXNzdW1wdGlvbiBpcyB0aGF0IGlmIGl0JiMzOTtzIHJlYWNoYWJsZSB2aWEgRFQgb3ZlcmxheSwgaXQgaXMsIGluIHRoZW9yeSwgcmVhY2hhYmxlIGZvciBmdXp6aW5nLgoKTm93LCBsb29raW5nIGF0IGBkYXA4MjExcl9jb25maWdfaW5pdGAsIGl0JiMzOTtzIGEgdmVyeSBzdHJhaWdodGZvcndhcmQgZnVuY3Rpb24uIEl0IHJlYWRzIGByeC1pbnRlcm5hbC1kZWxheS1wc2AgYW5kIGB0eC1pbnRlcm5hbC1kZWxheS1wc2AgcHJvcGVydGllcyBmcm9tIHRoZSBkZXZpY2UgdHJlZSwgZG9lcyBzb21lIGJpdCBtYW5pcHVsYXRpb24sIGFuZCB3cml0ZXMgdG8gTURJTyByZWdpc3RlcnMuIEl0JiMzOTtzIHJlYWxseSBqdXN0IGluaXRpYWxpemluZyB0aGUgUEhZLiBEb2VzIHRoaXMgcXVhbGlmeSBhcyAmIzM0O2NvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzJiMzNDsgdGhhdCBzaG91bGQgYmUgZnV6emVkPwoKVGhpcyBkcml2ZXIgaXMgaGFyZHdhcmUtc3BlY2lmaWMgYW5kIG9ubHkgd3JpdGVzIHRvIHJlZ2lzdGVycywgd2l0aCBtaW5pbWFsIGludGVyYWN0aW9uIHdpdGggdXNlcnNwYWNlLiBUaGlzIGlzbiYjMzk7dCBpbmhlcmVudGx5IGV4Y2l0aW5nIGZvciBmdXp6aW5nLCBidXQgaXQgKmlzKiBmdW5jdGlvbmFsIGNvZGUuIE5vdywgdGhlIHByb21wdCBnaXZlcyBjcml0ZXJpYSBmb3IgKm5vdCogZnV6emluZywgYW5kIGl0IHNwZWNpZmljYWxseSBtZW50aW9ucyB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyBmb3IgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFVzIHRoYXQgcmVxdWlyZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBQSFkgZHJpdmVyLiBJdCByZXF1aXJlcyBhIHBoeXNpY2FsIERBUDgyMTFSIGNoaXAuIElzIGl0IGVtdWxhdGVkIGluIFFFTVU/IE5vLgoKVGhlb3JldGljYWxseSwgaWYgc3l6a2FsbGVyIHVzZXMgc29tZXRoaW5nIGxpa2UgYG1kaW8tbXZ1c2JgIGFuZCBhIHZpcnR1YWwgaGFyZHdhcmUgY29udGV4dCwgaXQgY291bGQgKnJlYWNoKiB0aGlzIGRyaXZlci4gQnV0IGV2ZW4gaWYgaXQgY2FuLCBkb2VzIGl0ICpkbyogYW55dGhpbmcgbWVhbmluZ2Z1bD8gIElmIHRoZXJlJiMzOTtzIG5vIHJlYWwgaGFyZHdhcmUsIHRoZSBNRElPIHJlYWRzIHJldHVybiBnYXJiYWdlIChsaWtlIGFsbCB6ZXJvcykuIFRoZSBgcmVhZF9wb2xsX3RpbWVvdXRgIHdhaXRzIGZvciB0aGUgcmVzZXQgYml0IHRvIGNsZWFyLCBzbyBpZiBpdCByZWFkcyB6ZXJvZXMgZnJvbSBhIG1vY2sgYnVzLCBpdCB3aWxsIHRpbWUgb3V0IGFuZCBmYWlsLiBTbywgdGhpcyBjb2RlIHBhdGggd2lsbCBsaWtlbHkgZXJyb3Igb3V0LgoKVGhlbiBJIHJlYWQgdGhlIHByb21wdCBhZ2Fpbi4gSXQgZXhwbGljaXRseSBzYXlzLCAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSYjMzQ7LiBUaGlzIHNwZWNpZmljIFBIWSBjaGlwIGlzIGNvbnNpZGVyZWQgJiMzNDtpbXBvc3NpYmxlIHRvIHJlYWNoJiMzNDsuCgpUaGUgcHJvbXB0IHN0YXRlcyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgZm9yIHZlbmRvcnNwZWNpZmljIGRyaXZlcnMgZm9yIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBRRU1VLiAgVGhpcyBkcml2ZXIgZml0cyB0aGF0IGRlc2NyaXB0aW9uLiBUaGUgJiMzNDtQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSYjMzQ7IGV4YW1wbGVzIGFyZSBqdXN0IGV4YW1wbGVzOyB0aGUgKnByaW5jaXBsZSogaXMgd2hhdCBtYXR0ZXJzIOKAkyBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzIGZvciB1bmVtdWxhdGVkIGhhcmR3YXJlLgoKU28sIGxldCYjMzk7cyBzYXkgc3l6a2FsbGVyICpjYW4qIGluamVjdCByZXNwb25zZXMgYW5kIHBhc3MgdGhlIGByZWFkX3BvbGxfdGltZW91dGAuLi4gd2hhdCYjMzk7cyBsZWZ0PyBJdCYjMzk7cyBqdXN0IGEgc2luZ2xlIGBkYXA4MjExcl9tb2RpZnlfZXh0YCBjYWxsIGFmdGVyIHRoZSB3YWl0IGxvb3AuIFRoZXJlJiMzOTtzIG5vIGNvbXBsZXggbG9naWMsIG5vIG1lbW9yeSBhbGxvY2F0aW9uLCBhbmQgbm8gaW50ZXJhY3Rpb24gd2l0aCB0aGUgdXNlcnNwYWNlLiBKdXN0IHJlZ2lzdGVyIHdyaXRlcy4gIElzIHRoYXQgd29ydGggZnV6emluZz8KClRoZSBjb25jbHVzaW9uIGlzIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGJlY2F1c2UgaXQmIzM5O3MgYSB2ZW5kb3Itc3BlY2lmaWMgUEhZIGRyaXZlciBmb3IgdW5lbXVsYXRlZCBoYXJkd2FyZS4gSXQgY29udGFpbnMgb25seSB0cml2aWFsIHJlZ2lzdGVyIGluaXRpYWxpemF0aW9uIGxvZ2ljLgpMZXQmIzM5O3MganVzdCBkb3VibGUgY2hlY2ssIHRoYXQgYGRhcDgyMTFyX2NvbmZpZ19pbml0YCBpcyB0aGUgb25seSBjdXN0b20gZnVuY3Rpb24uIENoZWNraW5nIHRoZSBgZGFwODIxMXJfZHJpdmVyYCwgdGhhdCBpcyBjb3JyZWN0LiBJdCBpcyBqdXN0IGBkYXA4MjExcl9jb25maWdfaW5pdGAgYW5kIGFsbCBvdGhlciBmdW5jdGlvbnMgYXJlIGdlbmVyaWMgUEhZIGZ1bmN0aW9ucy4KCkZpbmFsIGRlY2lzaW9uOiBgV29ydGhGdXp6aW5nPWZhbHNlYAoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSB2ZW5kb3Itc3BlY2lmaWMgUEhZIGRyaXZlciBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWS4gVGhlIGRyaXZlciBvbmx5IGNvbnRhaW5zIHRyaXZpYWwgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gbG9naWMgKHJlYWRpbmcgZGV2aWNlIHRyZWUgcHJvcGVydGllcyBhbmQgd3JpdGluZyB0byBNRElPIHJlZ2lzdGVycykgYW5kIHJlbGllcyBvbiBnZW5lcmljIFBIWSBmdW5jdGlvbnMgZm9yIGFsbCBvdGhlciBvcGVyYXRpb25zLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCBhbmQgZXZlbiBpZiByZWFjaGVkIHZpYSBhIG1vY2sgTURJTyBidXMsIHRoZSBjb2RlIGxhY2tzIGNvbXBsZXggbG9naWMsIG1lbW9yeSBtYW5hZ2VtZW50LCBvciB1c2Vyc3BhY2UgaW50ZXJmYWNlcyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHZlbmRvci1zcGVjaWZpYyBQSFkgZHJpdmVyIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZLiBUaGUgZHJpdmVyIG9ubHkgY29udGFpbnMgdHJpdmlhbCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBsb2dpYyAocmVhZGluZyBkZXZpY2UgdHJlZSBwcm9wZXJ0aWVzIGFuZCB3cml0aW5nIHRvIE1ESU8gcmVnaXN0ZXJzKSBhbmQgcmVsaWVzIG9uIGdlbmVyaWMgUEhZIGZ1bmN0aW9ucyBmb3IgYWxsIG90aGVyIG9wZXJhdGlvbnMuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIGFuZCBldmVuIGlmIHJlYWNoZWQgdmlhIGEgbW9jayBNRElPIGJ1cywgdGhlIGNvZGUgbGFja3MgY29tcGxleCBsb2dpYywgbWVtb3J5IG1hbmFnZW1lbnQsIG9yIHVzZXJzcGFjZSBpbnRlcmZhY2VzIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6MzY6MDAuNjI3ODE0MDFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTI0MzQ2MTk1OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSB2ZW5kb3Itc3BlY2lmaWMgUEhZIGRyaXZlciBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWS4gVGhlIGRyaXZlciBvbmx5IGNvbnRhaW5zIHRyaXZpYWwgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gbG9naWMgKHJlYWRpbmcgZGV2aWNlIHRyZWUgcHJvcGVydGllcyBhbmQgd3JpdGluZyB0byBNRElPIHJlZ2lzdGVycykgYW5kIHJlbGllcyBvbiBnZW5lcmljIFBIWSBmdW5jdGlvbnMgZm9yIGFsbCBvdGhlciBvcGVyYXRpb25zLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCBhbmQgZXZlbiBpZiByZWFjaGVkIHZpYSBhIG1vY2sgTURJTyBidXMsIHRoZSBjb2RlIGxhY2tzIGNvbXBsZXggbG9naWMsIG1lbW9yeSBtYW5hZ2VtZW50LCBvciB1c2Vyc3BhY2UgaW50ZXJmYWNlcyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6MzY6MDAuNjI3ODIzMTVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzNTg0NTA5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU2MTdhZDM0OGE5NzJiNjI2ZTdmYTcxZGRiNjI4NGVlYThhYzc1YTdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdWwgMjcgMTk6MzU6NTggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kYXB1LGRhcDgyMTFyLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RhcHUsZGFwODIxMXIueWFtbFxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmJhOWIzMDFlYTFmNTEzXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZGFwdSxkYXA4MjExci55YW1sXFxuQEAgLTAsMCArMSw2MyBAQFxcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiAoR1BMLTIuMC1vbmx5IE9SIEJTRC0yLUNsYXVzZSlcXG4rJVlBTUwgMS4yXFxuKy0tLVxcbiskaWQ6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9zY2hlbWFzL25ldC9kYXB1LGRhcDgyMTFyLnlhbWwjXFxuKyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xcbitcXG4rdGl0bGU6IERBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWVxcbitcXG4rbWFpbnRhaW5lcnM6XFxuKyAgLSBBcnRlbSBTaGlta28gXFx1MDAzY2Euc2hpbWtvLmRldkBnbWFpbC5jb21cXHUwMDNlXFxuK1xcbitkZXNjcmlwdGlvbjogfFxcbisgIFRoZSBEQVA4MjExUihJKSBpcyBhIEdpZ2FiaXQgRXRoZXJuZXQgUEhZIHdpdGggUkdNSUkgaW50ZXJmYWNlLFxcbisgIHN1cHBvcnRpbmcgSUVFRSA4MDIuM2F6IEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQsIElFRUUgMTU4OCBTeW5jRSxcXG4rICBhbmQgYW4gaW50ZXJuYWwgcGFja2V0IGdlbmVyYXRvciBmb3IgZGlhZ25vc3RpY3MuXFxuK1xcbisgIFNwZWNpZmljYXRpb25zOlxcbisgICAgLSAxMEJBU0UtVGUsIDEwMEJBU0UtVFgsIDEwMDBCQVNFLVRcXG4rICAgIC0gUkdNSUkgd2l0aCBjb25maWd1cmFibGUgVFgvUlggY2xvY2sgZGVsYXlzICgxNTAgcHMgc3RlcHMsIDAtMjI1MCBwcylcXG4rICAgIC0gSUVFRSA4MDIuM2F6LTIwMTAgRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldFxcbisgICAgLSBJRUVFIDE1ODggU3luY0Ugc3VwcG9ydFxcbisgICAgLSBJbnRlcm5hbCBwYWNrZXQgZ2VuZXJhdG9yIGFuZCBjaGVja2VyIGZvciBsaW5rIGRpYWdub3N0aWNzXFxuK1xcbithbGxPZjpcXG4rICAtICRyZWY6IGV0aGVybmV0LXBoeS55YW1sI1xcbitcXG4rcHJvcGVydGllczpcXG4rICBjb21wYXRpYmxlOlxcbisgICAgY29uc3Q6IGV0aGVybmV0LXBoeS1pZDAwMDguMDExYlxcbitcXG4rICByZWc6XFxuKyAgICBtYXhJdGVtczogMVxcbitcXG4rICByeC1pbnRlcm5hbC1kZWxheS1wczpcXG4rICAgIGRlc2NyaXB0aW9uOlxcbisgICAgICBSR01JSSBSWCBjbG9jayBkZWxheSBpbiBwaWNvc2Vjb25kcyAoMCB0byBtYXhpbXVtKS5cXG4rICAgIG11bHRpcGxlT2Y6IDE1MFxcbisgICAgbWF4aW11bTogMjI1MFxcbisgICAgZGVmYXVsdDogMTk1MFxcbitcXG4rICB0eC1pbnRlcm5hbC1kZWxheS1wczpcXG4rICAgIGRlc2NyaXB0aW9uOlxcbisgICAgICBSR01JSSBUWCBjbG9jayBkZWxheSBpbiBwaWNvc2Vjb25kcyAoMCB0byBtYXhpbXVtKS5cXG4rICAgIG11bHRpcGxlT2Y6IDE1MFxcbisgICAgbWF4aW11bTogMjI1MFxcbisgICAgZGVmYXVsdDogMTk1MFxcbitcXG4rdW5ldmFsdWF0ZWRQcm9wZXJ0aWVzOiBmYWxzZVxcbitcXG4rZXhhbXBsZXM6XFxuKyAgLSB8XFxuKyAgICBtZGlvIHtcXG4rICAgICAgICAjYWRkcmVzcy1jZWxscyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4rICAgICAgICAjc2l6ZS1jZWxscyA9IFxcdTAwM2MwXFx1MDAzZTtcXG4rXFxuKyAgICAgICAgZXRoZXJuZXQtcGh5QDEge1xcbisgICAgICAgICAgICBjb21wYXRpYmxlID0gXFxcImV0aGVybmV0LXBoeS1pZDAwMDguMDExYlxcXCI7XFxuKyAgICAgICAgICAgIHJlZyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4rICAgICAgICAgICAgcngtaW50ZXJuYWwtZGVsYXktcHMgPSBcXHUwMDNjMjEwMFxcdTAwM2U7XFxuKyAgICAgICAgICAgIHR4LWludGVybmFsLWRlbGF5LXBzID0gXFx1MDAzYzIxMDBcXHUwMDNlO1xcbisgICAgICAgIH07XFxuKyAgICB9O1xcbitcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L0tjb25maWcgYi9kcml2ZXJzL25ldC9waHkvS2NvbmZpZ1xcbmluZGV4IDA5OWYyNWRjZWFiYmM3Li40NTc2ZjcwN2FjOTQ0NSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvS2NvbmZpZ1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnXFxuQEAgLTIzNyw2ICsyMzcsMTYgQEAgY29uZmlnIERBVklDT01fUEhZXFxuIFxcdGhlbHBcXG4gXFx0ICBDdXJyZW50bHkgc3VwcG9ydHMgZG05MTYxZSBhbmQgZG05MTMxXFxuIFxcbitjb25maWcgREFQODIxMVJfUEhZXFxuK1xcdHRyaXN0YXRlIFxcXCJEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFlcXFwiXFxuK1xcdGRlcGVuZHMgb24gT0ZcXG4rXFx0aGVscFxcbitcXHQgIFN1cHBvcnQgZm9yIHRoZSBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFkuXFxuK1xcdCAgVGhpcyBQSFkgaXMgZGVzaWduZWQgZm9yIGVudGVycHJpc2UgYW5kIGluZHVzdHJpYWwgbmV0d29ya2luZ1xcbitcXHQgIGFwcGxpY2F0aW9ucywgc3VwcG9ydGluZyAxMC8xMDAvMTAwMCBNYnBzIG9wZXJhdGlvbi5cXG4rXFx0ICBSR01JSSB3aXRoOiBjb25maWd1cmFibGUgVFgvUlggY2xvY2sgZGVsYXlzLCBvcHRpb25hbCBmbGFnIHRvIGVuYWJsZVxcbitcXHQgIDE4MC1kZWdyZWUgVFggY2xvY2sgcGhhc2Ugc2hpZnQgYW5kIGludGVybmFsIHBhY2tldCBnZW5lcmF0b3IuXFxuK1xcbiBjb25maWcgSUNQTFVTX1BIWVxcbiBcXHR0cmlzdGF0ZSBcXFwiSUNQbHVzIFBIWXNcXFwiXFxuIFxcdGhlbHBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlIGIvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXFxuaW5kZXggZGU2NjBhZTk0OTQ1M2QuLmFkMzU3MzNlYjRiYjYxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZVxcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZVxcbkBAIC01Myw2ICs1Myw3IEBAIG9iai0kKENPTkZJR19CUk9BRENPTV9QSFkpXFx0Kz0gYnJvYWRjb20ub1xcbiBvYmotJChDT05GSUdfQ0lDQURBX1BIWSlcXHQrPSBjaWNhZGEub1xcbiBvYmotJChDT05GSUdfQ09SVElOQV9QSFkpXFx0Kz0gY29ydGluYS5vXFxuIG9iai0kKENPTkZJR19EQVZJQ09NX1BIWSlcXHQrPSBkYXZpY29tLm9cXG4rb2JqLSQoQ09ORklHX0RBUDgyMTFSX1BIWSlcXHQrPSBkYXA4MjExci5vXFxuIG9iai0kKENPTkZJR19EUDgzNjQwX1BIWSlcXHQrPSBkcDgzNjQwLm9cXG4gb2JqLSQoQ09ORklHX0RQODM4MjJfUEhZKVxcdCs9IGRwODM4MjIub1xcbiBvYmotJChDT05GSUdfRFA4Mzg0OF9QSFkpXFx0Kz0gZHA4Mzg0OC5vXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jIGIvZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi42NWQ2ZmVmODZmMjZiN1xcbi0tLSAvZGV2L251bGxcXG4rKysgYi9kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuY1xcbkBAIC0wLDAgKzEsMjA2IEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUExcXG4rLypcXG4rICogRHJpdmVyIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZLlxcbisgKlxcbisgKiBTcGVjaWZpY2F0aW9uczpcXG4rICogICAtIElFRUUgODAyLjMgMTBCQVNFLVRlLCAxMDBCQVNFLVRYLCAxMDAwQkFTRS1UXFxuKyAqICAgLSBJRUVFIDgwMi4zYXotMjAxMCBFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0XFxuKyAqICAgLSBJRUVFIDE1ODggU3luY0Ugc3VwcG9ydFxcbisgKiAgIC0gUkdNSUlcXG4rICpcXG4rICogQXV0aG9yOiBBcnRlbSBTaGlta28gXFx1MDAzY2Euc2hpbWtvLmRldkBnbWFpbC5jb21cXHUwMDNlXFxuKyAqL1xcbitcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2JpdGZpZWxkLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9lcnJuby5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvZXRodG9vbC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgva2VybmVsLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9pb3BvbGwuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21paS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9uZXRkZXZpY2UuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9waHkuaFxcdTAwM2VcXG4rXFxuKyNkZWZpbmUgREFQODIxMVJfUEhZX0lEXFx0XFx0XFx0MHgwMDA4MDExQlxcbisjZGVmaW5lIERBUDgyMTFSX1BIWV9JRF9NQVNLXFx0XFx0MHhGRkZGRkZGRlxcbitcXG4rI2RlZmluZSBEQVA4MjExUl9FWFRfQUREXFx0XFx0MHgxRVxcbisjZGVmaW5lIERBUDgyMTFSX0VYVF9EQVRBXFx0XFx0MHgxRlxcbitcXG4rI2RlZmluZSBEQVA4MjExUl9QSFlfQ09OXFx0XFx0MHhBMDAxXFxuKyNkZWZpbmUgREFQODIxMVJfUEhZX1NXX1JTVFxcdFxcdEJJVCgxNSlcXG4rXFxuKyNkZWZpbmUgREFQODIxMVJfUkdNSUlfQ09OXFx0XFx0MHhBMDAzXFxuKyNkZWZpbmUgREFQODIxMVJfUkdNSUlfVFhfREVMX01BU0tcXHRHRU5NQVNLKDMsIDApXFxuKyNkZWZpbmUgREFQODIxMVJfUkdNSUlfUlhfREVMX01BU0tcXHRHRU5NQVNLKDEzLCAxMClcXG4rXFxuKyNkZWZpbmUgREFQODIxMVJfUkdNSUlfQ09ORklHX01BU0tcXHQoREFQODIxMVJfUkdNSUlfUlhfREVMX01BU0sgfCBEQVA4MjExUl9SR01JSV9UWF9ERUxfTUFTSylcXG4rXFxuKy8qIERlZmF1bHQgUkdNSUkgZGVsYXk6IDEzICogMTUwID09IDEuOTVucyAqL1xcbisjZGVmaW5lIERBUDgyMTFSX0RFRkFVTFRfREVMX1NFTFxcdDB4RFxcbitcXG4rc3RhdGljIGNvbnN0IGludCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheVtdID0gezAsIDE1MCwgMzAwLCA0NTAsIDYwMCwgNzUwLCA5MDAsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgIDEwNTAsIDEyMDAsIDEzNTAsIDE1MDAsIDE2NTAsIDE4MDAsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgIDE5NTAsIDIxMDAsIDIyNTB9O1xcbitcXG4rI2RlZmluZSBEQVA4MjExUl9ERUxBWV9TSVpFXFx0QVJSQVlfU0laRShkYXA4MjExcl9pbnRlcm5hbF9kZWxheSlcXG4rXFxuKy8qKlxcbisgKiBkYXA4MjExcl9yZWFkX2V4dCgpIC0gUmVhZCBleHRlbmRlZCByZWdpc3RlclxcbisgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHN0cnVjdHVyZVxcbisgKiBAcmVnOiBFeHRlbmRlZCByZWdpc3RlciBhZGRyZXNzXFxuKyAqXFxuKyAqIFJlYWRzIGEgUEhZIGV4dGVuZGVkIHJlZ2lzdGVyIHVzaW5nIHRoZSBpbmRpcmVjdCBhY2Nlc3MgbWV0aG9kLlxcbisgKiBUaGUgY2FsbGVyIG11c3QgaG9sZCB0aGUgTURJTyBidXMgbG9jay5cXG4rICpcXG4rICogUmV0dXJuOiBSZWdpc3RlciB2YWx1ZSBvbiBzdWNjZXNzLCBvciBuZWdhdGl2ZSBlcnJvciBjb2RlXFxuKyAqL1xcbitzdGF0aWMgaW50IGRhcDgyMTFyX3JlYWRfZXh0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiByZWcpXFxuK3tcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuK1xcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgREFQODIxMVJfRVhUX0FERCwgcmVnKTtcXG4rXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXG4rXFx0cmV0ID0gX19waHlfcmVhZChwaHlkZXYsIERBUDgyMTFSX0VYVF9EQVRBKTtcXG4rb3V0OlxcbitcXHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuKy8qKlxcbisgKiBkYXA4MjExcl9tb2RpZnlfZXh0KCkgLSBNb2RpZnkgZXh0ZW5kZWQgcmVnaXN0ZXIgYml0c1xcbisgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHN0cnVjdHVyZVxcbisgKiBAcmVnOiBFeHRlbmRlZCByZWdpc3RlciBhZGRyZXNzXFxuKyAqIEBtYXNrOiBCaXQgbWFzayBvZiBiaXRzIHRvIGNsZWFyXFxuKyAqIEBzZXQ6IEJpdCBtYXNrIG9mIGJpdHMgdG8gc2V0XFxuKyAqXFxuKyAqIE1vZGlmaWVzIGEgUEhZIGV4dGVuZGVkIHJlZ2lzdGVyIHVzaW5nIHRoZSBpbmRpcmVjdCBhY2Nlc3MgbWV0aG9kLlxcbisgKiBOZXcgdmFsdWUgPSAob2xkIHZhbHVlIFxcdTAwMjYgfm1hc2spIHwgc2V0LlxcbisgKiBUaGUgY2FsbGVyIG11c3QgaG9sZCB0aGUgTURJTyBidXMgbG9jay5cXG4rICpcXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGVcXG4rICovXFxuK3N0YXRpYyBpbnQgZGFwODIxMXJfbW9kaWZ5X2V4dChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnLCB1MTYgbWFzaywgdTE2IHNldClcXG4re1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcXG4rXFx0cmV0ID0gX19waHlfd3JpdGUocGh5ZGV2LCBEQVA4MjExUl9FWFRfQURELCByZWcpO1xcbitcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcbitcXHRyZXQgPSBfX3BoeV9tb2RpZnkocGh5ZGV2LCBEQVA4MjExUl9FWFRfREFUQSwgbWFzaywgc2V0KTtcXG4rb3V0OlxcbitcXHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuKy8qKlxcbisgKiBkYXA4MjExcl9jb25maWdfaW5pdCgpIC0gSW5pdGlhbGl6ZSBQSFlcXG4rICogQHBoeWRldjogUEhZIGRldmljZSBzdHJ1Y3R1cmVcXG4rICpcXG4rICogQ29uZmlndXJlcyB0aGUgUEhZIGR1cmluZyBpbml0aWFsaXphdGlvbjpcXG4rICogLSBSR01JSSBkZWxheXMgYmFzZWQgb24gaW50ZXJmYWNlIG1vZGVcXG4rICogLSBTb2Z0d2FyZSByZXNldCB0byBhcHBseSBzZXR0aW5ncyAobG93IGFjdGl2ZSwgc2VsZiBjbGVhcilcXG4rICpcXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGVcXG4rICovXFxuK3N0YXRpYyBpbnQgZGFwODIxMXJfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHR1MTYgc2V0ID0gMDtcXG4rXFx0aW50IHJldCwgdmFsO1xcbitcXHRzMzIgcnhfaW50ZXJuYWxfZGVsYXk7XFxuK1xcdHMzMiB0eF9pbnRlcm5hbF9kZWxheTtcXG4rXFxuK1xcdGlmICghcGh5X2ludGVyZmFjZV9pc19yZ21paShwaHlkZXYpKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdHJ4X2ludGVybmFsX2RlbGF5ID0gcGh5X2dldF9pbnRlcm5hbF9kZWxheShwaHlkZXYsIGRhcDgyMTFyX2ludGVybmFsX2RlbGF5LFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICBEQVA4MjExUl9ERUxBWV9TSVpFLCB0cnVlKTtcXG4rXFx0dHhfaW50ZXJuYWxfZGVsYXkgPSBwaHlfZ2V0X2ludGVybmFsX2RlbGF5KHBoeWRldiwgZGFwODIxMXJfaW50ZXJuYWxfZGVsYXksXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgIERBUDgyMTFSX0RFTEFZX1NJWkUsIGZhbHNlKTtcXG4rXFxuK1xcdHN3aXRjaCAocGh5ZGV2LVxcdTAwM2VpbnRlcmZhY2UpIHtcXG4rXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6XFxuK1xcdFxcdGlmIChyeF9pbnRlcm5hbF9kZWxheSBcXHUwMDNjIDApXFxuK1xcdFxcdFxcdHJ4X2ludGVybmFsX2RlbGF5ID0gMDtcXG4rXFxuK1xcdFxcdGlmICh0eF9pbnRlcm5hbF9kZWxheSBcXHUwMDNjIDApXFxuK1xcdFxcdFxcdHR4X2ludGVybmFsX2RlbGF5ID0gMDtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1JYSUQ6XFxuK1xcdFxcdGlmIChyeF9pbnRlcm5hbF9kZWxheSBcXHUwMDNjIDApXFxuK1xcdFxcdFxcdHJ4X2ludGVybmFsX2RlbGF5ID0gREFQODIxMVJfREVGQVVMVF9ERUxfU0VMO1xcbitcXG4rXFx0XFx0dHhfaW50ZXJuYWxfZGVsYXkgPSAwO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfSUQ6XFxuK1xcdFxcdGlmIChyeF9pbnRlcm5hbF9kZWxheSBcXHUwMDNjIDApXFxuK1xcdFxcdFxcdHJ4X2ludGVybmFsX2RlbGF5ID0gREFQODIxMVJfREVGQVVMVF9ERUxfU0VMO1xcbitcXHRcXHRpZiAodHhfaW50ZXJuYWxfZGVsYXkgXFx1MDAzYyAwKVxcbitcXHRcXHRcXHR0eF9pbnRlcm5hbF9kZWxheSA9IERBUDgyMTFSX0RFRkFVTFRfREVMX1NFTDtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1RYSUQ6XFxuK1xcdFxcdGlmICh0eF9pbnRlcm5hbF9kZWxheSBcXHUwMDNjIDApXFxuK1xcdFxcdFxcdHR4X2ludGVybmFsX2RlbGF5ID0gREFQODIxMVJfREVGQVVMVF9ERUxfU0VMO1xcbitcXG4rXFx0XFx0cnhfaW50ZXJuYWxfZGVsYXkgPSAwO1xcbitcXHRcXHRicmVhaztcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0cGh5ZGV2X2VycihwaHlkZXYsIFxcXCJVbnN1cHBvcnRlZCBpbnRlcmZhY2U6ICVkXFxcXG5cXFwiLFxcbitcXHRcXHRcXHQgICBwaHlkZXYtXFx1MDAzZWludGVyZmFjZSk7XFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuK1xcbitcXHRzZXQgfD0gRklFTERfUFJFUChEQVA4MjExUl9SR01JSV9SWF9ERUxfTUFTSywgcnhfaW50ZXJuYWxfZGVsYXkpO1xcbitcXHRzZXQgfD0gRklFTERfUFJFUChEQVA4MjExUl9SR01JSV9UWF9ERUxfTUFTSywgdHhfaW50ZXJuYWxfZGVsYXkpO1xcbitcXG4rXFx0cmV0ID0gZGFwODIxMXJfbW9kaWZ5X2V4dChwaHlkZXYsIERBUDgyMTFSX1BIWV9DT04sIERBUDgyMTFSX1BIWV9TV19SU1QsIDApO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0LyogV2FpdCBmb3IgcmVzZXQgc2VsZi1jbGVhciAoZnJvbSBsb3cgYWN0aXZlIHRvIGhpZ2gpICovXFxuK1xcdHJldCA9IHJlYWRfcG9sbF90aW1lb3V0KGRhcDgyMTFyX3JlYWRfZXh0LCB2YWwsXFxuK1xcdFxcdFxcdFxcdCh2YWwgXFx1MDAyNiBEQVA4MjExUl9QSFlfU1dfUlNUKSxcXG4rXFx0XFx0XFx0XFx0MjAsIDIwMCwgZmFsc2UsIHBoeWRldiwgREFQODIxMVJfUEhZX0NPTik7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcdGlmICh2YWwgXFx1MDAzYyAwKVxcbitcXHRcXHRyZXR1cm4gdmFsO1xcbitcXG4rXFx0cmV0ID0gZGFwODIxMXJfbW9kaWZ5X2V4dChwaHlkZXYsIERBUDgyMTFSX1JHTUlJX0NPTiwgREFQODIxMVJfUkdNSUlfQ09ORklHX01BU0ssIHNldCk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGRhcDgyMTFyX2RyaXZlcltdID0ge1xcbitcXHR7XFxuK1xcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVChEQVA4MjExUl9QSFlfSUQpLFxcbitcXHRcXHQubmFtZVxcdFxcdD0gXFxcIkRBUDgyMTFSIEdpZ2FiaXQgRXRoZXJuZXRcXFwiLFxcbitcXHRcXHQuc29mdF9yZXNldFxcdD0gZ2VucGh5X3NvZnRfcmVzZXQsXFxuK1xcdFxcdC5jb25maWdfaW5pdFxcdD0gZGFwODIxMXJfY29uZmlnX2luaXQsXFxuK1xcdFxcdC5yZWFkX3N0YXR1c1xcdD0gZ2VucGh5X3JlYWRfc3RhdHVzLFxcbitcXHRcXHQuc2V0X2xvb3BiYWNrXFx0PSBnZW5waHlfbG9vcGJhY2ssXFxuK1xcdFxcdC5jb25maWdfYW5lZ1xcdD0gZ2VucGh5X2NvbmZpZ19hbmVnLFxcbitcXHRcXHQuc3VzcGVuZFxcdD0gZ2VucGh5X3N1c3BlbmQsXFxuK1xcdFxcdC5yZXN1bWVcXHRcXHQ9IGdlbnBoeV9yZXN1bWUsXFxuK1xcdH0sXFxuK307XFxuK21vZHVsZV9waHlfZHJpdmVyKGRhcDgyMTFyX2RyaXZlcik7XFxuK1xcbitNT0RVTEVfREVTQ1JJUFRJT04oXFxcIkRBUDgyMTFSIEdpZ2FiaXQgRXRoZXJuZXQgUEhZIGRyaXZlclxcXCIpO1xcbitNT0RVTEVfQVVUSE9SKFxcXCJBcnRlbSBTaGlta28gXFx1MDAzY2Euc2hpbWtvLmRldkBnbWFpbC5jb21cXHUwMDNlXFxcIik7XFxuK01PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG4rXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgZGFwODIxMXJfdGJbXSA9IHtcXG4rXFx0eyBEQVA4MjExUl9QSFlfSUQsIERBUDgyMTFSX1BIWV9JRF9NQVNLIH0sXFxuK1xcdHsgLyogc2VudGluZWwgKi8gfVxcbit9O1xcbitNT0RVTEVfREVWSUNFX1RBQkxFKG1kaW8sIGRhcDgyMTFyX3RiKTtcXG4rXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM2OjAxLjQ2NDcyMDk5MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjMxMTU5NzcwMTY0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHZlbmRvci1zcGVjaWZpYyBQSFkgZHJpdmVyIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZLiBUaGUgZHJpdmVyIG9ubHkgY29udGFpbnMgdHJpdmlhbCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBsb2dpYyAocmVhZGluZyBkZXZpY2UgdHJlZSBwcm9wZXJ0aWVzIGFuZCB3cml0aW5nIHRvIE1ESU8gcmVnaXN0ZXJzKSBhbmQgcmVsaWVzIG9uIGdlbmVyaWMgUEhZIGZ1bmN0aW9ucyBmb3IgYWxsIG90aGVyIG9wZXJhdGlvbnMuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIGFuZCBldmVuIGlmIHJlYWNoZWQgdmlhIGEgbW9jayBNRElPIGJ1cywgdGhlIGNvZGUgbGFja3MgY29tcGxleCBsb2dpYywgbWVtb3J5IG1hbmFnZW1lbnQsIG9yIHVzZXJzcGFjZSBpbnRlcmZhY2VzIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1NjE3YWQzNDhhOTcyYjYyNmU3ZmE3MWRkYjYyODRlZWE4YWM3NWE3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMjcgMTk6MzU6NTggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RhcHUsZGFwODIxMXIueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZGFwdSxkYXA4MjExci55YW1sXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmJhOWIzMDFlYTFmNTEzXG4tLS0gL2Rldi9udWxsXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RhcHUsZGFwODIxMXIueWFtbFxuQEAgLTAsMCArMSw2MyBAQFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IChHUEwtMi4wLW9ubHkgT1IgQlNELTItQ2xhdXNlKVxuKyVZQU1MIDEuMlxuKy0tLVxuKyRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L2RhcHUsZGFwODIxMXIueWFtbCNcbiskc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcbitcbit0aXRsZTogREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZXG4rXG4rbWFpbnRhaW5lcnM6XG4rICAtIEFydGVtIFNoaW1rbyBcdTAwM2NhLnNoaW1rby5kZXZAZ21haWwuY29tXHUwMDNlXG4rXG4rZGVzY3JpcHRpb246IHxcbisgIFRoZSBEQVA4MjExUihJKSBpcyBhIEdpZ2FiaXQgRXRoZXJuZXQgUEhZIHdpdGggUkdNSUkgaW50ZXJmYWNlLFxuKyAgc3VwcG9ydGluZyBJRUVFIDgwMi4zYXogRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCwgSUVFRSAxNTg4IFN5bmNFLFxuKyAgYW5kIGFuIGludGVybmFsIHBhY2tldCBnZW5lcmF0b3IgZm9yIGRpYWdub3N0aWNzLlxuK1xuKyAgU3BlY2lmaWNhdGlvbnM6XG4rICAgIC0gMTBCQVNFLVRlLCAxMDBCQVNFLVRYLCAxMDAwQkFTRS1UXG4rICAgIC0gUkdNSUkgd2l0aCBjb25maWd1cmFibGUgVFgvUlggY2xvY2sgZGVsYXlzICgxNTAgcHMgc3RlcHMsIDAtMjI1MCBwcylcbisgICAgLSBJRUVFIDgwMi4zYXotMjAxMCBFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0XG4rICAgIC0gSUVFRSAxNTg4IFN5bmNFIHN1cHBvcnRcbisgICAgLSBJbnRlcm5hbCBwYWNrZXQgZ2VuZXJhdG9yIGFuZCBjaGVja2VyIGZvciBsaW5rIGRpYWdub3N0aWNzXG4rXG4rYWxsT2Y6XG4rICAtICRyZWY6IGV0aGVybmV0LXBoeS55YW1sI1xuK1xuK3Byb3BlcnRpZXM6XG4rICBjb21wYXRpYmxlOlxuKyAgICBjb25zdDogZXRoZXJuZXQtcGh5LWlkMDAwOC4wMTFiXG4rXG4rICByZWc6XG4rICAgIG1heEl0ZW1zOiAxXG4rXG4rICByeC1pbnRlcm5hbC1kZWxheS1wczpcbisgICAgZGVzY3JpcHRpb246XG4rICAgICAgUkdNSUkgUlggY2xvY2sgZGVsYXkgaW4gcGljb3NlY29uZHMgKDAgdG8gbWF4aW11bSkuXG4rICAgIG11bHRpcGxlT2Y6IDE1MFxuKyAgICBtYXhpbXVtOiAyMjUwXG4rICAgIGRlZmF1bHQ6IDE5NTBcbitcbisgIHR4LWludGVybmFsLWRlbGF5LXBzOlxuKyAgICBkZXNjcmlwdGlvbjpcbisgICAgICBSR01JSSBUWCBjbG9jayBkZWxheSBpbiBwaWNvc2Vjb25kcyAoMCB0byBtYXhpbXVtKS5cbisgICAgbXVsdGlwbGVPZjogMTUwXG4rICAgIG1heGltdW06IDIyNTBcbisgICAgZGVmYXVsdDogMTk1MFxuK1xuK3VuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2VcbitcbitleGFtcGxlczpcbisgIC0gfFxuKyAgICBtZGlvIHtcbisgICAgICAgICNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbisgICAgICAgICNzaXplLWNlbGxzID0gXHUwMDNjMFx1MDAzZTtcbitcbisgICAgICAgIGV0aGVybmV0LXBoeUAxIHtcbisgICAgICAgICAgICBjb21wYXRpYmxlID0gXCJldGhlcm5ldC1waHktaWQwMDA4LjAxMWJcIjtcbisgICAgICAgICAgICByZWcgPSBcdTAwM2MxXHUwMDNlO1xuKyAgICAgICAgICAgIHJ4LWludGVybmFsLWRlbGF5LXBzID0gXHUwMDNjMjEwMFx1MDAzZTtcbisgICAgICAgICAgICB0eC1pbnRlcm5hbC1kZWxheS1wcyA9IFx1MDAzYzIxMDBcdTAwM2U7XG4rICAgICAgICB9O1xuKyAgICB9O1xuK1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnIGIvZHJpdmVycy9uZXQvcGh5L0tjb25maWdcbmluZGV4IDA5OWYyNWRjZWFiYmM3Li40NTc2ZjcwN2FjOTQ0NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnXG4rKysgYi9kcml2ZXJzL25ldC9waHkvS2NvbmZpZ1xuQEAgLTIzNyw2ICsyMzcsMTYgQEAgY29uZmlnIERBVklDT01fUEhZXG4gXHRoZWxwXG4gXHQgIEN1cnJlbnRseSBzdXBwb3J0cyBkbTkxNjFlIGFuZCBkbTkxMzFcbiBcbitjb25maWcgREFQODIxMVJfUEhZXG4rXHR0cmlzdGF0ZSBcIkRBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWVwiXG4rXHRkZXBlbmRzIG9uIE9GXG4rXHRoZWxwXG4rXHQgIFN1cHBvcnQgZm9yIHRoZSBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFkuXG4rXHQgIFRoaXMgUEhZIGlzIGRlc2lnbmVkIGZvciBlbnRlcnByaXNlIGFuZCBpbmR1c3RyaWFsIG5ldHdvcmtpbmdcbitcdCAgYXBwbGljYXRpb25zLCBzdXBwb3J0aW5nIDEwLzEwMC8xMDAwIE1icHMgb3BlcmF0aW9uLlxuK1x0ICBSR01JSSB3aXRoOiBjb25maWd1cmFibGUgVFgvUlggY2xvY2sgZGVsYXlzLCBvcHRpb25hbCBmbGFnIHRvIGVuYWJsZVxuK1x0ICAxODAtZGVncmVlIFRYIGNsb2NrIHBoYXNlIHNoaWZ0IGFuZCBpbnRlcm5hbCBwYWNrZXQgZ2VuZXJhdG9yLlxuK1xuIGNvbmZpZyBJQ1BMVVNfUEhZXG4gXHR0cmlzdGF0ZSBcIklDUGx1cyBQSFlzXCJcbiBcdGhlbHBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGVcbmluZGV4IGRlNjYwYWU5NDk0NTNkLi5hZDM1NzMzZWI0YmI2MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZVxuKysrIGIvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXG5AQCAtNTMsNiArNTMsNyBAQCBvYmotJChDT05GSUdfQlJPQURDT01fUEhZKVx0Kz0gYnJvYWRjb20ub1xuIG9iai0kKENPTkZJR19DSUNBREFfUEhZKVx0Kz0gY2ljYWRhLm9cbiBvYmotJChDT05GSUdfQ09SVElOQV9QSFkpXHQrPSBjb3J0aW5hLm9cbiBvYmotJChDT05GSUdfREFWSUNPTV9QSFkpXHQrPSBkYXZpY29tLm9cbitvYmotJChDT05GSUdfREFQODIxMVJfUEhZKVx0Kz0gZGFwODIxMXIub1xuIG9iai0kKENPTkZJR19EUDgzNjQwX1BIWSlcdCs9IGRwODM2NDAub1xuIG9iai0kKENPTkZJR19EUDgzODIyX1BIWSlcdCs9IGRwODM4MjIub1xuIG9iai0kKENPTkZJR19EUDgzODQ4X1BIWSlcdCs9IGRwODM4NDgub1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jIGIvZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uNjVkNmZlZjg2ZjI2Yjdcbi0tLSAvZGV2L251bGxcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jXG5AQCAtMCwwICsxLDIwNiBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUExcbisvKlxuKyAqIERyaXZlciBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWS5cbisgKlxuKyAqIFNwZWNpZmljYXRpb25zOlxuKyAqICAgLSBJRUVFIDgwMi4zIDEwQkFTRS1UZSwgMTAwQkFTRS1UWCwgMTAwMEJBU0UtVFxuKyAqICAgLSBJRUVFIDgwMi4zYXotMjAxMCBFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0XG4rICogICAtIElFRUUgMTU4OCBTeW5jRSBzdXBwb3J0XG4rICogICAtIFJHTUlJXG4rICpcbisgKiBBdXRob3I6IEFydGVtIFNoaW1rbyBcdTAwM2NhLnNoaW1rby5kZXZAZ21haWwuY29tXHUwMDNlXG4rICovXG4rXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvYml0ZmllbGQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vycm5vLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGh0b29sLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9rZXJuZWwuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2lvcG9sbC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbWlpLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGRldmljZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeS5oXHUwMDNlXG4rXG4rI2RlZmluZSBEQVA4MjExUl9QSFlfSURcdFx0XHQweDAwMDgwMTFCXG4rI2RlZmluZSBEQVA4MjExUl9QSFlfSURfTUFTS1x0XHQweEZGRkZGRkZGXG4rXG4rI2RlZmluZSBEQVA4MjExUl9FWFRfQUREXHRcdDB4MUVcbisjZGVmaW5lIERBUDgyMTFSX0VYVF9EQVRBXHRcdDB4MUZcbitcbisjZGVmaW5lIERBUDgyMTFSX1BIWV9DT05cdFx0MHhBMDAxXG4rI2RlZmluZSBEQVA4MjExUl9QSFlfU1dfUlNUXHRcdEJJVCgxNSlcbitcbisjZGVmaW5lIERBUDgyMTFSX1JHTUlJX0NPTlx0XHQweEEwMDNcbisjZGVmaW5lIERBUDgyMTFSX1JHTUlJX1RYX0RFTF9NQVNLXHRHRU5NQVNLKDMsIDApXG4rI2RlZmluZSBEQVA4MjExUl9SR01JSV9SWF9ERUxfTUFTS1x0R0VOTUFTSygxMywgMTApXG4rXG4rI2RlZmluZSBEQVA4MjExUl9SR01JSV9DT05GSUdfTUFTS1x0KERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLIHwgREFQODIxMVJfUkdNSUlfVFhfREVMX01BU0spXG4rXG4rLyogRGVmYXVsdCBSR01JSSBkZWxheTogMTMgKiAxNTAgPT0gMS45NW5zICovXG4rI2RlZmluZSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUxcdDB4RFxuK1xuK3N0YXRpYyBjb25zdCBpbnQgZGFwODIxMXJfaW50ZXJuYWxfZGVsYXlbXSA9IHswLCAxNTAsIDMwMCwgNDUwLCA2MDAsIDc1MCwgOTAwLFxuK1x0XHRcdFx0XHQgICAgICAxMDUwLCAxMjAwLCAxMzUwLCAxNTAwLCAxNjUwLCAxODAwLFxuK1x0XHRcdFx0XHQgICAgICAxOTUwLCAyMTAwLCAyMjUwfTtcbitcbisjZGVmaW5lIERBUDgyMTFSX0RFTEFZX1NJWkVcdEFSUkFZX1NJWkUoZGFwODIxMXJfaW50ZXJuYWxfZGVsYXkpXG4rXG4rLyoqXG4rICogZGFwODIxMXJfcmVhZF9leHQoKSAtIFJlYWQgZXh0ZW5kZWQgcmVnaXN0ZXJcbisgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHN0cnVjdHVyZVxuKyAqIEByZWc6IEV4dGVuZGVkIHJlZ2lzdGVyIGFkZHJlc3NcbisgKlxuKyAqIFJlYWRzIGEgUEhZIGV4dGVuZGVkIHJlZ2lzdGVyIHVzaW5nIHRoZSBpbmRpcmVjdCBhY2Nlc3MgbWV0aG9kLlxuKyAqIFRoZSBjYWxsZXIgbXVzdCBob2xkIHRoZSBNRElPIGJ1cyBsb2NrLlxuKyAqXG4rICogUmV0dXJuOiBSZWdpc3RlciB2YWx1ZSBvbiBzdWNjZXNzLCBvciBuZWdhdGl2ZSBlcnJvciBjb2RlXG4rICovXG4rc3RhdGljIGludCBkYXA4MjExcl9yZWFkX2V4dChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnKVxuK3tcbitcdGludCByZXQ7XG4rXG4rXHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuK1x0cmV0ID0gX19waHlfd3JpdGUocGh5ZGV2LCBEQVA4MjExUl9FWFRfQURELCByZWcpO1xuK1x0aWYgKHJldCBcdTAwM2MgMClcbitcdFx0Z290byBvdXQ7XG4rXG4rXHRyZXQgPSBfX3BoeV9yZWFkKHBoeWRldiwgREFQODIxMVJfRVhUX0RBVEEpO1xuK291dDpcbitcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuKy8qKlxuKyAqIGRhcDgyMTFyX21vZGlmeV9leHQoKSAtIE1vZGlmeSBleHRlbmRlZCByZWdpc3RlciBiaXRzXG4rICogQHBoeWRldjogUEhZIGRldmljZSBzdHJ1Y3R1cmVcbisgKiBAcmVnOiBFeHRlbmRlZCByZWdpc3RlciBhZGRyZXNzXG4rICogQG1hc2s6IEJpdCBtYXNrIG9mIGJpdHMgdG8gY2xlYXJcbisgKiBAc2V0OiBCaXQgbWFzayBvZiBiaXRzIHRvIHNldFxuKyAqXG4rICogTW9kaWZpZXMgYSBQSFkgZXh0ZW5kZWQgcmVnaXN0ZXIgdXNpbmcgdGhlIGluZGlyZWN0IGFjY2VzcyBtZXRob2QuXG4rICogTmV3IHZhbHVlID0gKG9sZCB2YWx1ZSBcdTAwMjYgfm1hc2spIHwgc2V0LlxuKyAqIFRoZSBjYWxsZXIgbXVzdCBob2xkIHRoZSBNRElPIGJ1cyBsb2NrLlxuKyAqXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGVcbisgKi9cbitzdGF0aWMgaW50IGRhcDgyMTFyX21vZGlmeV9leHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZywgdTE2IG1hc2ssIHUxNiBzZXQpXG4re1xuK1x0aW50IHJldDtcbitcbitcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XG4rXHRyZXQgPSBfX3BoeV93cml0ZShwaHlkZXYsIERBUDgyMTFSX0VYVF9BREQsIHJlZyk7XG4rXHRpZiAocmV0IFx1MDAzYyAwKVxuK1x0XHRnb3RvIG91dDtcbitcbitcdHJldCA9IF9fcGh5X21vZGlmeShwaHlkZXYsIERBUDgyMTFSX0VYVF9EQVRBLCBtYXNrLCBzZXQpO1xuK291dDpcbitcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuKy8qKlxuKyAqIGRhcDgyMTFyX2NvbmZpZ19pbml0KCkgLSBJbml0aWFsaXplIFBIWVxuKyAqIEBwaHlkZXY6IFBIWSBkZXZpY2Ugc3RydWN0dXJlXG4rICpcbisgKiBDb25maWd1cmVzIHRoZSBQSFkgZHVyaW5nIGluaXRpYWxpemF0aW9uOlxuKyAqIC0gUkdNSUkgZGVsYXlzIGJhc2VkIG9uIGludGVyZmFjZSBtb2RlXG4rICogLSBTb2Z0d2FyZSByZXNldCB0byBhcHBseSBzZXR0aW5ncyAobG93IGFjdGl2ZSwgc2VsZiBjbGVhcilcbisgKlxuKyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBvciBuZWdhdGl2ZSBlcnJvciBjb2RlXG4rICovXG4rc3RhdGljIGludCBkYXA4MjExcl9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3tcbitcdHUxNiBzZXQgPSAwO1xuK1x0aW50IHJldCwgdmFsO1xuK1x0czMyIHJ4X2ludGVybmFsX2RlbGF5O1xuK1x0czMyIHR4X2ludGVybmFsX2RlbGF5O1xuK1xuK1x0aWYgKCFwaHlfaW50ZXJmYWNlX2lzX3JnbWlpKHBoeWRldikpXG4rXHRcdHJldHVybiAwO1xuK1xuK1x0cnhfaW50ZXJuYWxfZGVsYXkgPSBwaHlfZ2V0X2ludGVybmFsX2RlbGF5KHBoeWRldiwgZGFwODIxMXJfaW50ZXJuYWxfZGVsYXksXG4rXHRcdFx0XHRcdFx0ICAgREFQODIxMVJfREVMQVlfU0laRSwgdHJ1ZSk7XG4rXHR0eF9pbnRlcm5hbF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheSxcbitcdFx0XHRcdFx0XHQgICBEQVA4MjExUl9ERUxBWV9TSVpFLCBmYWxzZSk7XG4rXG4rXHRzd2l0Y2ggKHBoeWRldi1cdTAwM2VpbnRlcmZhY2UpIHtcbitcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxuK1x0XHRpZiAocnhfaW50ZXJuYWxfZGVsYXkgXHUwMDNjIDApXG4rXHRcdFx0cnhfaW50ZXJuYWxfZGVsYXkgPSAwO1xuK1xuK1x0XHRpZiAodHhfaW50ZXJuYWxfZGVsYXkgXHUwMDNjIDApXG4rXHRcdFx0dHhfaW50ZXJuYWxfZGVsYXkgPSAwO1xuK1x0XHRicmVhaztcbitcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1JYSUQ6XG4rXHRcdGlmIChyeF9pbnRlcm5hbF9kZWxheSBcdTAwM2MgMClcbitcdFx0XHRyeF9pbnRlcm5hbF9kZWxheSA9IERBUDgyMTFSX0RFRkFVTFRfREVMX1NFTDtcbitcbitcdFx0dHhfaW50ZXJuYWxfZGVsYXkgPSAwO1xuK1x0XHRicmVhaztcbitcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX0lEOlxuK1x0XHRpZiAocnhfaW50ZXJuYWxfZGVsYXkgXHUwMDNjIDApXG4rXHRcdFx0cnhfaW50ZXJuYWxfZGVsYXkgPSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUw7XG4rXHRcdGlmICh0eF9pbnRlcm5hbF9kZWxheSBcdTAwM2MgMClcbitcdFx0XHR0eF9pbnRlcm5hbF9kZWxheSA9IERBUDgyMTFSX0RFRkFVTFRfREVMX1NFTDtcbitcdFx0YnJlYWs7XG4rXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9UWElEOlxuK1x0XHRpZiAodHhfaW50ZXJuYWxfZGVsYXkgXHUwMDNjIDApXG4rXHRcdFx0dHhfaW50ZXJuYWxfZGVsYXkgPSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUw7XG4rXG4rXHRcdHJ4X2ludGVybmFsX2RlbGF5ID0gMDtcbitcdFx0YnJlYWs7XG4rXHRkZWZhdWx0OlxuK1x0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCJVbnN1cHBvcnRlZCBpbnRlcmZhY2U6ICVkXFxuXCIsXG4rXHRcdFx0ICAgcGh5ZGV2LVx1MDAzZWludGVyZmFjZSk7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuK1xuK1x0c2V0IHw9IEZJRUxEX1BSRVAoREFQODIxMVJfUkdNSUlfUlhfREVMX01BU0ssIHJ4X2ludGVybmFsX2RlbGF5KTtcbitcdHNldCB8PSBGSUVMRF9QUkVQKERBUDgyMTFSX1JHTUlJX1RYX0RFTF9NQVNLLCB0eF9pbnRlcm5hbF9kZWxheSk7XG4rXG4rXHRyZXQgPSBkYXA4MjExcl9tb2RpZnlfZXh0KHBoeWRldiwgREFQODIxMVJfUEhZX0NPTiwgREFQODIxMVJfUEhZX1NXX1JTVCwgMCk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0LyogV2FpdCBmb3IgcmVzZXQgc2VsZi1jbGVhciAoZnJvbSBsb3cgYWN0aXZlIHRvIGhpZ2gpICovXG4rXHRyZXQgPSByZWFkX3BvbGxfdGltZW91dChkYXA4MjExcl9yZWFkX2V4dCwgdmFsLFxuK1x0XHRcdFx0KHZhbCBcdTAwMjYgREFQODIxMVJfUEhZX1NXX1JTVCksXG4rXHRcdFx0XHQyMCwgMjAwLCBmYWxzZSwgcGh5ZGV2LCBEQVA4MjExUl9QSFlfQ09OKTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4rXHRpZiAodmFsIFx1MDAzYyAwKVxuK1x0XHRyZXR1cm4gdmFsO1xuK1xuK1x0cmV0ID0gZGFwODIxMXJfbW9kaWZ5X2V4dChwaHlkZXYsIERBUDgyMTFSX1JHTUlJX0NPTiwgREFQODIxMVJfUkdNSUlfQ09ORklHX01BU0ssIHNldCk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkYXA4MjExcl9kcml2ZXJbXSA9IHtcbitcdHtcbitcdFx0UEhZX0lEX01BVENIX0VYQUNUKERBUDgyMTFSX1BIWV9JRCksXG4rXHRcdC5uYW1lXHRcdD0gXCJEQVA4MjExUiBHaWdhYml0IEV0aGVybmV0XCIsXG4rXHRcdC5zb2Z0X3Jlc2V0XHQ9IGdlbnBoeV9zb2Z0X3Jlc2V0LFxuK1x0XHQuY29uZmlnX2luaXRcdD0gZGFwODIxMXJfY29uZmlnX2luaXQsXG4rXHRcdC5yZWFkX3N0YXR1c1x0PSBnZW5waHlfcmVhZF9zdGF0dXMsXG4rXHRcdC5zZXRfbG9vcGJhY2tcdD0gZ2VucGh5X2xvb3BiYWNrLFxuK1x0XHQuY29uZmlnX2FuZWdcdD0gZ2VucGh5X2NvbmZpZ19hbmVnLFxuK1x0XHQuc3VzcGVuZFx0PSBnZW5waHlfc3VzcGVuZCxcbitcdFx0LnJlc3VtZVx0XHQ9IGdlbnBoeV9yZXN1bWUsXG4rXHR9LFxuK307XG4rbW9kdWxlX3BoeV9kcml2ZXIoZGFwODIxMXJfZHJpdmVyKTtcbitcbitNT0RVTEVfREVTQ1JJUFRJT04oXCJEQVA4MjExUiBHaWdhYml0IEV0aGVybmV0IFBIWSBkcml2ZXJcIik7XG4rTU9EVUxFX0FVVEhPUihcIkFydGVtIFNoaW1rbyBcdTAwM2NhLnNoaW1rby5kZXZAZ21haWwuY29tXHUwMDNlXCIpO1xuK01PRFVMRV9MSUNFTlNFKFwiR1BMXCIpO1xuK1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgZGFwODIxMXJfdGJbXSA9IHtcbitcdHsgREFQODIxMVJfUEhZX0lELCBEQVA4MjExUl9QSFlfSURfTUFTSyB9LFxuK1x0eyAvKiBzZW50aW5lbCAqLyB9XG4rfTtcbitNT0RVTEVfREVWSUNFX1RBQkxFKG1kaW8sIGRhcDgyMTFyX3RiKTtcbitcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM2OjAxLjQ2NDcyMjk1MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg4Mjk5MTY5NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEQVA4MjExUiBQSFkgRHJpdmVyIGZvciBUZXN0YWJpbGl0eSoqXG5cbk9rYXksIHNvIHdlJ3ZlIGdvdCBhIG5ldyBwYXRjaCBhZGRpbmcgYSBkcml2ZXIgZm9yIHRoZSBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFkuIEl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIGluY2x1ZGVzIHRoZSBuZWNlc3NhcnkgZG9jdW1lbnRhdGlvbiBiaW5kaW5nLCBLY29uZmlnIGFuZCBNYWtlZmlsZSBlbnRyaWVzLCBhbmQsIGNydWNpYWxseSwgdGhlIGRyaXZlciBjb2RlIGl0c2VsZiAoYGRhcDgyMTFyLmNgKS4gVGhlIGRyaXZlciBpbXBsZW1lbnRzIHRoZSB1c3VhbCBzdXNwZWN0czogYGRhcDgyMTFyX3JlYWRfZXh0YCwgYGRhcDgyMTFyX21vZGlmeV9leHRgLCBhbmQgYGRhcDgyMTFyX2NvbmZpZ19pbml0YC4gU3RhbmRhcmQgUEhZIGRyaXZlciBzdHVmZi5cblxuTXkgaW5pdGlhbCBjb25jZXJuLCBuYXR1cmFsbHksIGlzIGhvdyB3ZSBjYW4gYWN0dWFsbHkgKnJlYWNoKiB0aGlzIHRoaW5nIGluIGEgY29udHJvbGxlZCB0ZXN0aW5nIGVudmlyb25tZW50LCBlc3BlY2lhbGx5IGluIHNvbWV0aGluZyBsaWtlIFFFTVUuIFBIWSBkcml2ZXJzIGFyZSB0eXBpY2FsbHkgYWNjZXNzZWQgdGhyb3VnaCBhbiBNRElPIGJ1cy4gU28sIHRoZSBxdWVzdGlvbiBpcywgaG93IGRvIHdlIGdldCBhdCB0aGUgREFQODIxMVIgaW4gYSB2aXJ0dWFsaXplZCBjb250ZXh0PyBDYW4gd2UgaW5zdGFudGlhdGUgYSB2aXJ0dWFsIE1ESU8gYnVzPyBgbWRpby1tb2NrdXBgIHNlZW1zIGxpa2UgdGhlIG9idmlvdXMgc3RhcnRpbmcgcG9pbnQsIG9yIG1heWJlIGEgYGZpeGVkLXBoeWAgc2V0dXAgaWYgd2UgY2FuIHJlZ2lzdGVyIHRoZW0gc29tZWhvdy4gSSB3YXMgYWxzbyB3b25kZXJpbmcgaWYgbmV0bGluay9pb2N0bCBvbiBhIGR1bW15IGRldmljZSBjb3VsZCBiZSBhIHBvc3NpYmlsaXR5LCBidXQgTURJTyBpcyB0aGUgc3RhbmRhcmQgZm9yIHRoZXNlIHRoaW5ncy5cblxuVGhlbiwgSSBzdGFydGVkIHRoaW5raW5nIGFib3V0IHN5emthbGxlci4gRG9lcyBzeXprYWxsZXIgb2ZmZXIgYSB3YXkgaW4/IENvdWxkIHdlIGluamVjdCBNRElPIGRldmljZXMgZGlyZWN0bHkgdXNpbmcgYGlvY3RsKFNJT0NTTUlJUkVHKWAgb3Igc29tZXRoaW5nIHNpbWlsYXI/IEFjdHVhbGx5LCBubywgUEhZIGRldmljZXMgYXJlICpwcm9iZWQqIHZpYSB0aGUgTURJTyBidXMsIGFuZCBzeXprYWxsZXIncyBNRElPL25ldGRldiBzdXBwb3J0IHNlZW1zIGxpbWl0ZWQuIFdhaXQsIHdoYXQgYWJvdXQgbmV0bGluaz8gSSBrbm93IHN5emthbGxlciBoYXMgYHN5el9nZW5ldGxpbmtfZ2V0X2ZhbWlseWAsIHNvIGl0ICpjb3VsZCogaW50ZXJhY3Qgd2l0aCBQSFlzIHRoYXQgd2F5LiBPciwgY291bGQgd2UgZ28gdGhyb3VnaCB0dW4vdGFwP1xuXG5CdXQgaGFuZyBvbi4gVGhpcyAqaXMqIGEgaGFyZHdhcmUtc3BlY2lmaWMgUEhZLiBJdCdzIG5vdCBsaWtlbHkgdG8gYmUgZW11bGF0ZWQgaW4gUUVNVS4gU28sIHRoZSBrZXkgaXMgZGVmaW5pdGVseSBnb2luZyB0byBiZSB1c2luZyBzb2Z0d2FyZSBNRElPIGJ1cyBzaW11bGF0aW9uLiBJIHJlY2FsbCBgbWRpby1tb2NrdXBgLCBgZml4ZWQtcGh5YCwgdGhvc2UgdHlwZXMgb2Ygc29sdXRpb25zLi4uIGlmIHdlIGNhbiBqdXN0IGdldCB0aGVtIHJlZ2lzdGVyZWQuIFRoZSBjaGFsbGVuZ2Ugd2lsbCBiZSBpZiBzeXprYWxsZXIgaXMgc2V0IHVwIHRvIHNwZWNpZmljYWxseSBoYW5kbGUgcmVnaXN0ZXJpbmcgYSBkZXZpY2UgbGlrZSB0aGF0LlxuXG5XYWl0IGEgc2Vjb25kLi4uIGRvZXNuJ3Qgc3l6a2FsbGVyIGhhdmUgYHN5el9tZGlvXy4uLmAgY2FsbHM/IE1heWJlIGl0IGRvZXMhIEkgc2hvdWxkIGNoZWNrIHRoZSBzeXprYWxsZXIgZG9jdW1lbnRhdGlvbiBhbmQgbG9vayBzcGVjaWZpY2FsbHkgZm9yIHRob3NlLiBUaGF0IGNvdWxkIGJlIHRoZSBrZXkgdG8gdGVzdGluZyB0aGlzIGRyaXZlci4gTGV0J3MgbG9vayBpbnRvIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODU3LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDkwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6MzY6MTAuMjk0NjQ0NTgzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1NTQ2MjE5ODA0LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzeXpfbWRpb1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6Mzc6MzUuODQwODc1OTk4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ0MjgyNTU2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlIHdoYXQgSSBjYW4gY29tZSB1cCB3aXRoIGJhc2VkIG9uIHRoYXQgcHJvbXB0LiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCByZW5kZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCBrZWVwaW5nIGluIG1pbmQgSSdtIGRlYWxpbmcgd2l0aCBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBTeXprYWxsZXIncyBDb3ZlcmFnZSBvZiBNRElPL1BIWSoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHdvcmsuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBnbyBzdHJhaWdodCB0byBzeXprYWxsZXIuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHdlJ3ZlIGdvdCBhbnkgcHJlLWV4aXN0aW5nIGRlc2NyaXB0aW9ucyBvciB0ZXN0cyByZWxhdGVkIHRvIE1ESU8gb3IgUEhZIGludGVyYWN0aW9ucyB3aXRoaW4gdGhhdCBmdXp6aW5nIGZyYW1ld29yay4gSXQncyBhIGtleSBzdGFydGluZyBwb2ludDsgSSBkb24ndCB3YW50IHRvIHJlaW52ZW50IHRoZSB3aGVlbCBpZiB0aGVyZSdzIGFscmVhZHkgc29tZSBmb3VuZGF0aW9uYWwgd29yayB0aGVyZS4gQSBxdWljayBzZWFyY2ggd2l0aGluIHN5emthbGxlcidzIGNvZGViYXNlIHdvdWxkIGJlIG15IGltbWVkaWF0ZSB0YWN0aWMgLSBsaWtlbHkgZm9jdXNpbmcgb24ga2V5d29yZHMgbGlrZSBcIk1ESU8sXCIgXCJQSFksXCIgb3IgcGVyaGFwcyBtb3JlIGdlbmVyaWMgdGVybXMgcmVsYXRlZCB0byBuZXR3b3JrIGludGVyZmFjZSBjb250cm9sbGVycyAoTklDcykgb3IgcGh5c2ljYWwgbGF5ZXIgdHJhbnNjZWl2ZXJzLCBkZXBlbmRpbmcgb24gaG93IGl0IG1pZ2h0IGJlIGltcGxlbWVudGVkIHdpdGhpbiB0aGUga2VybmVsLiBUaGUgZ29hbCBpcyBlZmZpY2llbmN5LCBzbyBrbm93aW5nIGlmIHN5emthbGxlciBhbHJlYWR5IGhhcyBjb3ZlcmFnZSBpbiB0aGlzIGFyZWEgd291bGQgc2F2ZSB0aW1lIGFuZCBjb3VsZCBwcm92aWRlIGEgdXNlZnVsIGJhc2UgZm9yIGZ1cnRoZXIgZXhwbG9yYXRpb24uIEknbGwgbmVlZCB0byByZW1lbWJlciB0aGF0IHRoZXNlIHRvb2xzIGNhbiBzb21ldGltZXMgaGF2ZSBkaWZmZXJlbnQgbmFtaW5nIGNvbnZlbnRpb25zIG9yIGludGVybmFsIGltcGxlbWVudGF0aW9ucywgc28gSSdsbCBzdGF5IGZsZXhpYmxlIGFuZCBub3QgZ2V0IHRvbyBodW5nIHVwIG9uIHNwZWNpZmljIHRlcm1pbm9sb2d5IGlmIG5vdGhpbmcgcG9wcyByaWdodCBhd2F5LiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZCFcblxuXG4iLCJJbnB1dFRva2VucyI6NjkxOSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM3OjM5LjI4MzcwNDU2NFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjI1MDE4NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9kc2EvZHNhLmM9NjIxPXN0YXRpYyBpbnQgZHNhX3N3aXRjaF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuLS1cXG5uZXQvZHNhL2RzYS5jLTY1My1cXHRpZiAoIWRzLVxcdTAwM2V1c2VyX21paV9idXMgXFx1MDAyNlxcdTAwMjYgZHMtXFx1MDAzZW9wcy1cXHUwMDNlcGh5X3JlYWQpIHtcXG5uZXQvZHNhL2RzYS5jOjY1NDpcXHRcXHRkcy1cXHUwMDNldXNlcl9taWlfYnVzID0gbWRpb2J1c19hbGxvYygpO1xcbm5ldC9kc2EvZHNhLmMtNjU1LVxcdFxcdGlmICghZHMtXFx1MDAzZXVzZXJfbWlpX2J1cykge1xcbi0tXFxubmV0L2RzYS9kc2EuYy02NjEtXFxubmV0L2RzYS9kc2EuYzo2NjI6XFx0XFx0ZXJyID0gbWRpb2J1c19yZWdpc3Rlcihkcy1cXHUwMDNldXNlcl9taWlfYnVzKTtcXG5uZXQvZHNhL2RzYS5jLTY2My1cXHRcXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4tLVxcbm5ldC9kc2EvZHNhLmMtNjczLVxcdGlmIChkcy1cXHUwMDNldXNlcl9taWlfYnVzIFxcdTAwMjZcXHUwMDI2IGRzLVxcdTAwM2VvcHMtXFx1MDAzZXBoeV9yZWFkKVxcbm5ldC9kc2EvZHNhLmM6Njc0OlxcdFxcdG1kaW9idXNfZnJlZShkcy1cXHUwMDNldXNlcl9taWlfYnVzKTtcXG5uZXQvZHNhL2RzYS5jLTY3NS10ZWFyZG93bjpcXG4tLVxcbm5ldC9kc2EvZHNhLmM9Njg1PXN0YXRpYyB2b2lkIGRzYV9zd2l0Y2hfdGVhcmRvd24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxubmV0L2RzYS9kc2EuYy02OTItXFx0aWYgKGRzLVxcdTAwM2V1c2VyX21paV9idXMgXFx1MDAyNlxcdTAwMjYgZHMtXFx1MDAzZW9wcy1cXHUwMDNlcGh5X3JlYWQpIHtcXG5uZXQvZHNhL2RzYS5jOjY5MzpcXHRcXHRtZGlvYnVzX3VucmVnaXN0ZXIoZHMtXFx1MDAzZXVzZXJfbWlpX2J1cyk7XFxubmV0L2RzYS9kc2EuYzo2OTQ6XFx0XFx0bWRpb2J1c19mcmVlKGRzLVxcdTAwM2V1c2VyX21paV9idXMpO1xcbm5ldC9kc2EvZHNhLmMtNjk1LVxcdFxcdGRzLVxcdTAwM2V1c2VyX21paV9idXMgPSBOVUxMO1xcbi0tXFxubmV0L2RzYS9wb3J0LmMtMTEtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L25vdGlmaWVyLmhcXHUwMDNlXFxubmV0L2RzYS9wb3J0LmM6MTI6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mX21kaW8uaFxcdTAwM2VcXG5uZXQvZHNhL3BvcnQuYy0xMy0jaW5jbHVkZSBcXHUwMDNjbGludXgvb2ZfbmV0LmhcXHUwMDNlXFxuLS1cXG5uZXQvZHNhL3BvcnQuYz0xNzI2PXN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgZHNhX3N3aXRjaGVzX2FwcGx5X3dvcmthcm91bmRzW10gPSB7XFxuLS1cXG5uZXQvZHNhL3BvcnQuYy0xNzk2LSNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfRFNBX1NNU0NfTEFOOTMwM19NRElPKVxcbm5ldC9kc2EvcG9ydC5jOjE3OTc6XFx0XFxcInNtc2MsbGFuOTMwMy1tZGlvXFxcIixcXG5uZXQvZHNhL3BvcnQuYy0xNzk4LSNlbmRpZlxcbi0tXFxubmV0L2RzYS91c2VyLmMtMTMtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mX25ldC5oXFx1MDAzZVxcbm5ldC9kc2EvdXNlci5jOjE0OiNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZl9tZGlvLmhcXHUwMDNlXFxubmV0L2RzYS91c2VyLmM6MTU6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21kaW8uaFxcdTAwM2VcXG5uZXQvZHNhL3VzZXIuYy0xNi0jaW5jbHVkZSBcXHUwMDNjbmV0L3J0bmV0bGluay5oXFx1MDAzZVxcbi0tXFxubmV0L2RzYS91c2VyLmM9MjYzNz1zdGF0aWMgaW50IGRzYV91c2VyX3BoeV9jb25uZWN0KHN0cnVjdCBuZXRfZGV2aWNlICp1c2VyX2RldiwgaW50IGFkZHIsXFxuLS1cXG5uZXQvZHNhL3VzZXIuYy0yNjQyLVxcbm5ldC9kc2EvdXNlci5jOjI2NDM6XFx0dXNlcl9kZXYtXFx1MDAzZXBoeWRldiA9IG1kaW9idXNfZ2V0X3BoeShkcy1cXHUwMDNldXNlcl9taWlfYnVzLCBhZGRyKTtcXG5uZXQvZHNhL3VzZXIuYy0yNjQ0LVxcdGlmICghdXNlcl9kZXYtXFx1MDAzZXBoeWRldikge1xcbi0tXFxubmV0L2V0aHRvb2wvY29tbW9uLmM9NTg3PWNvbnZlcnRfbGVnYWN5X3NldHRpbmdzX3RvX2xpbmtfa3NldHRpbmdzKFxcbi0tXFxubmV0L2V0aHRvb2wvY29tbW9uLmMtNjIxLVxcdFxcdD0gbGVnYWN5X3NldHRpbmdzLVxcdTAwM2VhdXRvbmVnO1xcbm5ldC9ldGh0b29sL2NvbW1vbi5jOjYyMjpcXHRsaW5rX2tzZXR0aW5ncy1cXHUwMDNlYmFzZS5tZGlvX3N1cHBvcnRcXG5uZXQvZXRodG9vbC9jb21tb24uYzo2MjM6XFx0XFx0PSBsZWdhY3lfc2V0dGluZ3MtXFx1MDAzZW1kaW9fc3VwcG9ydDtcXG5uZXQvZXRodG9vbC9jb21tb24uYy02MjQtXFx0bGlua19rc2V0dGluZ3MtXFx1MDAzZWJhc2UuZXRoX3RwX21kaXhcXG4tLVxcbm5ldC9ldGh0b29sL2lvY3RsLmM9MzgyPWNvbnZlcnRfbGlua19rc2V0dGluZ3NfdG9fbGVnYWN5X3NldHRpbmdzKFxcbi0tXFxubmV0L2V0aHRvb2wvaW9jdGwuYy00MTItXFx0XFx0PSBsaW5rX2tzZXR0aW5ncy1cXHUwMDNlYmFzZS5hdXRvbmVnO1xcbm5ldC9ldGh0b29sL2lvY3RsLmM6NDEzOlxcdGxlZ2FjeV9zZXR0aW5ncy1cXHUwMDNlbWRpb19zdXBwb3J0XFxubmV0L2V0aHRvb2wvaW9jdGwuYzo0MTQ6XFx0XFx0PSBsaW5rX2tzZXR0aW5ncy1cXHUwMDNlYmFzZS5tZGlvX3N1cHBvcnQ7XFxubmV0L2V0aHRvb2wvaW9jdGwuYy00MTUtXFx0bGVnYWN5X3NldHRpbmdzLVxcdTAwM2VldGhfdHBfbWRpeFxcbi0tXFxubmV0L2V0aHRvb2wvcGh5LmM9NzA9c3RhdGljIGludCBwaHlfcHJlcGFyZV9kYXRhKGNvbnN0IHN0cnVjdCBldGhubF9yZXFfaW5mbyAqcmVxX2luZm8sXFxuLS1cXG5uZXQvZXRodG9vbC9waHkuYy05MS1cXG5uZXQvZXRodG9vbC9waHkuYzo5MjpcXHRyZXBfZGF0YS1cXHUwMDNlbmFtZSA9IGtzdHJkdXAoZGV2X25hbWUoXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXYpLCBHRlBfS0VSTkVMKTtcXG5uZXQvZXRodG9vbC9waHkuYy05My1cXHRpZiAoIXJlcF9kYXRhLVxcdTAwM2VuYW1lKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTozNzo0MC4xMDYyMTQyNzRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzY4NzMzMzMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFN5emthbGxlciBcdTAwMjYgUEhZIERyaXZlciBCcmFpbnN0b3JtKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyB3ZSBjYW4gbGV2ZXJhZ2Ugc3l6a2FsbGVyIHRvIHRlc3QgUEhZIGRyaXZlcnMsIHNwZWNpZmljYWxseSB0aGF0IGBkYXA4MjExcmAgb25lLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiB3ZSBhY3R1YWxseSAqZ2V0KiB0aGF0IGRyaXZlciBpbnN0YW50aWF0ZWQgaW4gUUVNVT8gU3l6a2FsbGVyJ3Mgc3RyZW5ndGggbGllcyBpbiB0ZXN0aW5nIGRyaXZlcnMsIGJ1dCBpdCdzIHRoZSBpbnN0YW50aWF0aW9uIHRoYXQncyB0aGUgaHVyZGxlIGhlcmUuXG5cblR5cGljYWxseSwgUEhZIGRyaXZlcnMgZ2V0IG1hdGNoZWQgYmFzZWQgb24gdGhlaXIgUEhZIElEIHJlYWQgZnJvbSB0aGUgTURJTyBidXMuIFdpdGhvdXQgdGhlIHBoeXNpY2FsIGhhcmR3YXJlIHJlcG9ydGluZyB0aGUgY29ycmVjdCBJRCAoYDB4MDAwODAxMUJgKSwgdGhlIGRyaXZlciBqdXN0IHdvbid0IHByb2JlLCByaWdodD8gVW5sZXNzLi4uIHdlIGNhbiB0cmljayBpdC4gRGV2aWNlIHRyZWUgZW50cmllcyBjYW4gZm9yY2UgaW5zdGFudGlhdGlvbiwgdGhhdCdzIG9uZSBhdmVudWUuIE9yLCBhbmQgdGhpcyBpcyB3aGVyZSBzeXprYWxsZXIgbWlnaHQgY29tZSBpbiwgY291bGQgaXQgcG9zc2libHkgc2ltdWxhdGUgYSBzb2Z0d2FyZSBNRElPIGJ1cyB0aGF0IGZha2VzIHRoZSBQSFkgSUQ/XG5cblRoZSBrZXkgaGVyZSBpcyB3aGV0aGVyIHN5emthbGxlciBoYXMgdGhlIGFiaWxpdHkgdG8gaW5qZWN0IG9yIHNwZWNpZnkgTURJTyBkZXZpY2VzLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIHN5emthbGxlciBkb2N1bWVudGF0aW9uIGFuZCBjb2RlIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBtZWNoYW5pc20gZm9yIGNyZWF0aW5nIHRoaXMga2luZCBvZiB2aXJ0dWFsIGhhcmR3YXJlIGVudmlyb25tZW50LiBJZiB3ZSBjYW4gaW5qZWN0IHRoYXQgTURJTyBkZXZpY2Ugd2l0aCB0aGUgY29ycmVjdCBQSFkgSUQsIHdlJ3JlIGdvbGRlbi4gVGhhdCdzIHRoZSBmaXJzdCB0aGluZyB0byBjaGVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQ5MiwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTozNzo0NC40NzQ5NTE0MTdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjgwMTE1MDE3OTcsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1kaW8tbW9ja3VwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTozODoxMi40ODY1NDMyMDRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjY4MjY4MDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6XG5cbioqRGVidWdnaW5nIHRoZSBQSFkgRHJpdmVyKipcblxuSG1tLCBzb21ldGhpbmcncyBub3QgcmlnaHQuIEkgd2FzIGV4cGVjdGluZyB0byBzZWUgYG1kaW8tbW9ja3VwYCBpbiB0aGUgc3lzdGVtLCBidXQgaXQncyBub3QgcHJlc2VudC4gVGhhdCdzIG9kZC4gTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoZSB1c3VhbCBzdXNwZWN0cy4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUncyBhIG1vY2t1cCBvciBkdW1teSBQSFkgZHJpdmVyIGhpZGluZyBpbiBgZHJpdmVycy9uZXQvcGh5L2AuIEl0J3MgcG9zc2libGUgaXQncyBnb3QgYSBzbGlnaHRseSBkaWZmZXJlbnQgbmFtaW5nIGNvbnZlbnRpb24uIFRpbWUgdG8gZ28gc3BlbHVua2luZyBpbiB0aGUgY29kZSBiYXNlIVxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTIzLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6Mzg6MTUuNzU0ODE0MzA0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIwODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvcGh5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJhZGluLmNcIixcbiAgICBcImFkaW4xMTAwLmNcIixcbiAgICBcImFpcl9hbjg4MDEuY1wiLFxuICAgIFwiYWlyX2VuODgxMWguY1wiLFxuICAgIFwiYWlyX3BoeV9saWIuY1wiLFxuICAgIFwiYWlyX3BoeV9saWIuaFwiLFxuICAgIFwiYW1kLmNcIixcbiAgICBcImFzMjF4eHguY1wiLFxuICAgIFwiYXg4ODc5NmIuY1wiLFxuICAgIFwiYXg4ODc5NmJfcnVzdC5yc1wiLFxuICAgIFwiYmNtLWN5Z251cy5jXCIsXG4gICAgXCJiY20tcGh5LWxpYi5jXCIsXG4gICAgXCJiY20tcGh5LWxpYi5oXCIsXG4gICAgXCJiY20tcGh5LXB0cC5jXCIsXG4gICAgXCJiY201NDE0MC5jXCIsXG4gICAgXCJiY202M3h4LmNcIixcbiAgICBcImJjbTd4eHguY1wiLFxuICAgIFwiYmNtODQ4ODEuY1wiLFxuICAgIFwiYmNtODd4eC5jXCIsXG4gICAgXCJicm9hZGNvbS5jXCIsXG4gICAgXCJjaWNhZGEuY1wiLFxuICAgIFwiY29ydGluYS5jXCIsXG4gICAgXCJkYXA4MjExci5jXCIsXG4gICAgXCJkYXZpY29tLmNcIixcbiAgICBcImRwODM2NDAuY1wiLFxuICAgIFwiZHA4MzY0MF9yZWcuaFwiLFxuICAgIFwiZHA4MzgyMi5jXCIsXG4gICAgXCJkcDgzODQ4LmNcIixcbiAgICBcImRwODM4NjcuY1wiLFxuICAgIFwiZHA4Mzg2OS5jXCIsXG4gICAgXCJkcDgzdGM4MTEuY1wiLFxuICAgIFwiZHA4M3RkNTEwLmNcIixcbiAgICBcImRwODN0ZzcyMC5jXCIsXG4gICAgXCJldDEwMTFjLmNcIixcbiAgICBcImZpeGVkX3BoeS5jXCIsXG4gICAgXCJpY3BsdXMuY1wiLFxuICAgIFwiaW50ZWwteHdheS5jXCIsXG4gICAgXCJsaW5rbW9kZS5jXCIsXG4gICAgXCJseHQuY1wiLFxuICAgIFwibWFydmVsbC04OHEyeHh4LmNcIixcbiAgICBcIm1hcnZlbGwtODh4MjIyMi5jXCIsXG4gICAgXCJtYXJ2ZWxsLmNcIixcbiAgICBcIm1hcnZlbGwxMGcuY1wiLFxuICAgIFwibWRpby1vcGVuLWFsbGlhbmNlLmhcIixcbiAgICBcIm1kaW9fYnVzLmNcIixcbiAgICBcIm1kaW9fYnVzX3Byb3ZpZGVyLmNcIixcbiAgICBcIm1kaW9fZGV2aWNlLmNcIixcbiAgICBcIm1kaW9fZGV2cmVzLmNcIixcbiAgICBcIm1lc29uLWd4bC5jXCIsXG4gICAgXCJtaWNyZWwuY1wiLFxuICAgIFwibWljcm9jaGlwLmNcIixcbiAgICBcIm1pY3JvY2hpcF9yZHNfcHRwLmNcIixcbiAgICBcIm1pY3JvY2hpcF9yZHNfcHRwLmhcIixcbiAgICBcIm1pY3JvY2hpcF90MS5jXCIsXG4gICAgXCJtaWNyb2NoaXBfdDFzLmNcIixcbiAgICBcIm1paV90aW1lc3RhbXBlci5jXCIsXG4gICAgXCJtb3RvcmNvbW0uY1wiLFxuICAgIFwibXhsLTg2MTEwLmNcIixcbiAgICBcIm14bC1ncHkuY1wiLFxuICAgIFwibmF0aW9uYWwuY1wiLFxuICAgIFwibmNuMjYwMDAuY1wiLFxuICAgIFwibnhwLWM0NS10amExMXh4LW1hY3NlYy5jXCIsXG4gICAgXCJueHAtYzQ1LXRqYTExeHguY1wiLFxuICAgIFwibnhwLWM0NS10amExMXh4LmhcIixcbiAgICBcIm54cC1jYnR4LmNcIixcbiAgICBcIm54cC10amExMXh4LmNcIixcbiAgICBcIm9wZW5fYWxsaWFuY2VfaGVscGVycy5jXCIsXG4gICAgXCJvcGVuX2FsbGlhbmNlX2hlbHBlcnMuaFwiLFxuICAgIFwicGh5LWM0NS5jXCIsXG4gICAgXCJwaHktY2Fwcy5oXCIsXG4gICAgXCJwaHktY29yZS5jXCIsXG4gICAgXCJwaHkuY1wiLFxuICAgIFwicGh5X2NhcHMuY1wiLFxuICAgIFwicGh5X2RldmljZS5jXCIsXG4gICAgXCJwaHlfbGVkX3RyaWdnZXJzLmNcIixcbiAgICBcInBoeV9saW5rX3RvcG9sb2d5LmNcIixcbiAgICBcInBoeV9wYWNrYWdlLmNcIixcbiAgICBcInBoeV9wb3J0LmNcIixcbiAgICBcInBoeWxpYi1pbnRlcm5hbC5oXCIsXG4gICAgXCJwaHlsaWIuaFwiLFxuICAgIFwicGh5bGluay5jXCIsXG4gICAgXCJxc2VtaS5jXCIsXG4gICAgXCJxdDIwMjUucnNcIixcbiAgICBcInJvY2tjaGlwLmNcIixcbiAgICBcInNmcC1idXMuY1wiLFxuICAgIFwic2ZwLmNcIixcbiAgICBcInNmcC5oXCIsXG4gICAgXCJzbXNjLmNcIixcbiAgICBcInN0ZTEwWHAuY1wiLFxuICAgIFwic3R1YnMuY1wiLFxuICAgIFwic3dwaHkuY1wiLFxuICAgIFwic3dwaHkuaFwiLFxuICAgIFwidGVyYW5ldGljcy5jXCIsXG4gICAgXCJ1UEQ2MDYyMC5jXCIsXG4gICAgXCJ2aXRlc3NlLmNcIixcbiAgICBcInhpbGlueF9nbWlpMnJnbWlpLmNcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogW1xuICAgIFwiYXF1YW50aWFcIixcbiAgICBcIm1lZGlhdGVrXCIsXG4gICAgXCJtc2NjXCIsXG4gICAgXCJxY29tXCIsXG4gICAgXCJyZWFsdGVrXCJcbiAgXVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6Mzg6MTUuNzU1MDM3NDk0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwNjIxMjEzMzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ3VycmVudCBBbmFseXNpcyBvZiB0aGUgUEhZIERldmljZSBJbmplY3Rpb24gQ2hhbGxlbmdlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgZmlsZXM6IGBmaXhlZF9waHkuY2AsIGBtZGlvX2J1cy5jYCwgYG1kaW9fZGV2aWNlLmNgLCBhbmQgYHBoeV9kZXZpY2UuY2AuIFRoZSBjb3JlIGlzc3VlIGlzIHRyeWluZyB0byBnZXQgc3l6a2FsbGVyIHRvIGludGVyYWN0IHdpdGggYSBzcGVjaWZpYyBQSFkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYGRhcDgyMTFyX2NvbmZpZ19pbml0YC4gVGhlIGltbWVkaWF0ZSBwcm9ibGVtIGlzIHRoYXQgc3l6a2FsbGVyIGRvZXNuJ3Qgc2VlbSB0byBoYXZlIGEgc3RyYWlnaHRmb3J3YXJkIHdheSB0byBpbmplY3QgYSBQSFkgZGV2aWNlIHdpdGggYW4gYXJiaXRyYXJ5IElELiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdG8gZm9yY2UgdGhhdCBkcml2ZXIgdG8gYmluZC5cblxuVGhlIG9idmlvdXMgcm91dGVzIGFyZSBlaXRoZXIgdGhyb3VnaCBhIHNvZnR3YXJlIE1ESU8gYnVzIHRoYXQgdXNlcnNwYWNlIGNhbiBjb250cm9sIHRvIHJlZ2lzdGVyIFBIWXMsIG9yIHNvbWUgY2xldmVyIHVzZSBvZiBuZXRsaW5rLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIHN5emthbGxlciAqY2FuKiBldmVuIHJlYWNoIGBkYXA4MjExcl9jb25maWdfaW5pdGAgZGlyZWN0bHkuIFRoZSBkcml2ZXIgYmluZHMgaXRzZWxmIHZpYSBgbW9kdWxlX3BoeV9kcml2ZXIoZGFwODIxMXJfZHJpdmVyKWAuIEl0IHNlZW1zIGl0IGxvb2tzIGZvciBhIFBIWSB3aXRoIHRoZSBJRCBgMHgwMDA4MDExQmAuIFNvLCB0aGUgbWlsbGlvbi1kb2xsYXIgcXVlc3Rpb246IGNhbiBJIGNyZWF0ZSBhIFBIWSBkZXZpY2UgKndpdGgqIHRoYXQgSUQgdXNpbmcgc3l6a2FsbGVyP1xuXG5gZml4ZWRfcGh5X3JlZ2lzdGVyYCBpcyBhIHBvc3NpYmlsaXR5IGZvciByZWdpc3RlcmluZyBhIGZpeGVkIFBIWSwgYnV0IGl0J3MgdHlwaWNhbGx5IHVzZWQgaW50ZXJuYWxseSBieSBvdGhlciBkcml2ZXJzLiBJIG5lZWQgdG8gZmluZCBhIHVzZXJzcGFjZSBpbnRlcmZhY2UgdGhhdCBjYW4gY3JlYXRlIE1ESU8gZGV2aWNlcyBvciBQSFlzIGRpcmVjdGx5LiBMZXQncyBzZWUuLi4gY2FuIGBTSU9DU01JSVJFR2AgZG8gdGhlIHRyaWNrPyBObywgdGhhdCBqdXN0IHdyaXRlcyB0byBhIHJlZ2lzdGVyLCBhbmQgdGhlIFBIWSBJRCBpcyBjaGVja2VkIGR1cmluZyBNRElPIGJ1cyBzY2FubmluZywgc28gaXQgd29uJ3QgaGVscC5cblxuSSBrbm93IHN5emthbGxlciBjYW4gdXNlIHZpcnR1YWwgbmV0d29yayBkZXZpY2VzIGxpa2UgYHR1bmAgb3IgYHRhcGAsIGJ1dCB0aG9zZSBkb24ndCBoYXZlIGFuIE1ESU8gYnVzLiBXaGF0IGFib3V0IG90aGVyIHZpcnR1YWwgZGV2aWNlcz8gYG1hY3NlY2AsIGB2ZXRoYCwgYGR1bW15YCwgYG1hY3ZsYW5gLi4uIG5vcGUsIG5vbmUgb2YgdGhvc2UgaGF2ZSBhbiBNRElPIGJ1cyBlaXRoZXIuIElzIHRoZXJlIGFueSBjaGFuY2UgdGhhdCBgbmV0ZGV2c2ltYCBtaWdodCBvZmZlciBzb21ldGhpbmc/IEl0J3MgdGhlIG9ubHkgb3RoZXIgbmV0d29yayBkZXZpY2UgdGhhdCdzIGV2ZW4gcmVtb3RlbHkgaW4gdGhlIGJhbGxwYXJrIGhlcmUuIEknbSBnb2luZyB0byBoYXZlIHRvIGludmVzdGlnYXRlIHRoYXQgZnVydGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwODcsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzcsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM4OjIyLjgxNzE2MzM0MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcxODMyNTczLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZGlvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM4OjIzLjA4OTAwNjE4NVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTE0MzQxNDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRlbHZpbmcgaW50byBgZHNhX2xvb3BgIGFuZCBNRElPIEltcGxpY2F0aW9ucyoqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4uLkknbSBtdWxsaW5nIG92ZXIgcG90ZW50aWFsIGNvbXBvbmVudHMgYW5kIGNvbmZpZ3VyYXRpb25zLiBUaGF0IGBkc2FfbG9vcGAgY29uc3RydWN0Li4uIGhtbSwgYSBtb2NrIERTQSBzd2l0Y2gsIHlvdSBzYXk/IFRoZSBcIm1vY2tcIiBhc3BlY3QgaXMgaW50ZXJlc3RpbmcuIEl0IGltbWVkaWF0ZWx5IHRyaWdnZXJzIHRob3VnaHRzIGFib3V0IHRoZSBpbnRlbmRlZCBwdXJwb3NlIOKAkyBwZXJoYXBzIHRlc3RpbmcsIHNpbXVsYXRpb24sIG9yIHByb3ZpZGluZyBhIGNvbnRyb2xsZWQgZW52aXJvbm1lbnQgZm9yIERTQSBpbnRlcmFjdGlvbnMuXG5cbk5vdywgdGhlIGNvbm5lY3Rpb24gdGhhdCByZWFsbHkgc3BhcmtzIG15IGN1cmlvc2l0eSBpcyB0aGUgcG90ZW50aWFsIGZvciBhbiBNRElPIGJ1cyB3aXRoaW4gdGhhdCBgZHNhX2xvb3BgIHNldHVwLiBJZiBpdCAqZG9lcyogZW1wbG95IGFuIE1ESU8gYnVzLCB0aGF0IG9wZW5zIHVwIGEgd2hvbGUgc2V0IG9mIHBvc3NpYmlsaXRpZXMsIGFuZCBxdWVzdGlvbnMuIElzIGl0IGVtdWxhdGVkPyBJcyB0aGVyZSBhIHNvZnR3YXJlLWRlZmluZWQgTURJTyBhY2Nlc3MgbGF5ZXIsIG9yIGlzIGl0IGEgZGlyZWN0IGhhcmR3YXJlIGludGVyZmFjZT8gVW5kZXJzdGFuZGluZyBob3cgdGhlIE1ESU8gb3BlcmF0aW9ucyBhcmUgaGFuZGxlZCB3aXRoaW4gdGhpcyBtb2NrIGVudmlyb25tZW50IGlzIGNydWNpYWwuIEl0IGNoYW5nZXMgaG93IEkgd291bGQgYXBwcm9hY2ggZGVidWdnaW5nLCBkcml2ZXIgZGV2ZWxvcG1lbnQsIG9yIGFueSBhbmFseXNpcyBpbnZvbHZpbmcgdGhpcyBjb21wb25lbnQuIEknbSB3b25kZXJpbmcgaWYgdGhpcyBvZmZlcnMgYW4gYXZlbnVlIGZvciB2YWxpZGF0aW5nIG9yIGRldmVsb3BpbmcgRFNBLXNwZWNpZmljIE1ESU8gaW50ZXJhY3Rpb25zIGluIGlzb2xhdGlvbiwgd2l0aG91dCBkZXBlbmRpbmcgb24gdGhlIGNoYXJhY3RlcmlzdGljcyBvZiBhIHJlYWwgaGFyZHdhcmUgc3dpdGNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDkyMiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM4OjI3LjYwMzM1MTUyNVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc5NTQ0MDE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1kaW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9NzQ9c3RhdGljIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXZzW1BIWV9NQVhfQUREUl07XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NzU6c3RhdGljIHN0cnVjdCBtZGlvX2RldmljZSAqc3dpdGNoX21kaW9kZXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzYtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz0xODQ9c3RhdGljIGludCBkc2FfbG9vcF9waHlfcmVhZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTg5LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE5MDpcXHRyZXQgPSBtZGlvYnVzX3JlYWRfbmVzdGVkKGJ1cywgcHMtXFx1MDAzZXBvcnRfYmFzZSArIHBvcnQsIHJlZ251bSk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTkxLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9MTk5PXN0YXRpYyBpbnQgZHNhX2xvb3BfcGh5X3dyaXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMDUtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjA2OlxcdHJldCA9IG1kaW9idXNfd3JpdGVfbmVzdGVkKGJ1cywgcHMtXFx1MDAzZXBvcnRfYmFzZSArIHBvcnQsIHJlZ251bSwgdmFsdWUpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwNy1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTI1MD1zdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfdmxhbl9hZGQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI2My1cXHQvKiBKdXN0IGRvIGEgc2xlZXBpbmcgb3BlcmF0aW9uIHRvIG1ha2UgbG9ja2RlcCBjaGVja3MgZWZmZWN0aXZlICovXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjY0OlxcdG1kaW9idXNfcmVhZChidXMsIHBzLVxcdTAwM2Vwb3J0X2Jhc2UgKyBwb3J0LCBNSUlfQk1TUik7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjY1LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9MjgzPXN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjkyLVxcdC8qIEp1c3QgZG8gYSBzbGVlcGluZyBvcGVyYXRpb24gdG8gbWFrZSBsb2NrZGVwIGNoZWNrcyBlZmZlY3RpdmUgKi9cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyOTM6XFx0bWRpb2J1c19yZWFkKGJ1cywgcHMtXFx1MDAzZXBvcnRfYmFzZSArIHBvcnQsIE1JSV9CTVNSKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yOTQtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz0zMzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBkc2FfbG9vcF9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU1OnN0YXRpYyBpbnQgZHNhX2xvb3BfZHJ2X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTYte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1NzpcXHRzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgKnBkYXRhID0gbWRpb2Rldi1cXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGE7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU4LVxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM2NC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNjU6XFx0ZHMgPSBkZXZtX2t6YWxsb2MoXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldiwgc2l6ZW9mKCpkcyksIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM2Ni1cXHRpZiAoIWRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzY4LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM2OTpcXHRkcy1cXHUwMDNlZGV2ID0gXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNzAtXFx0ZHMtXFx1MDAzZW51bV9wb3J0cyA9IERTQV9MT09QX05VTV9QT1JUUztcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNzEtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzcyOlxcdHBzID0gZGV2bV9remFsbG9jKFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXYsIHNpemVvZigqcHMpLCBHRlBfS0VSTkVMKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNzMtXFx0aWYgKCFwcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4MS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozODI6XFx0ZHMtXFx1MDAzZWRldiA9IFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzgzLVxcdGRzLVxcdTAwM2VvcHMgPSBcXHUwMDI2ZHNhX2xvb3BfZHJpdmVyO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4NC1cXHRkcy1cXHUwMDNlcHJpdiA9IHBzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM4NTpcXHRwcy1cXHUwMDNlYnVzID0gbWRpb2Rldi1cXHUwMDNlYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozODc6XFx0ZGV2X3NldF9kcnZkYXRhKFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXYsIGRzKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zODgtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTAtXFx0aWYgKCFyZXQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzkxOlxcdFxcdGRldl9pbmZvKFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXYsIFxcXCIlczogMHglMHhcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzkyLVxcdFxcdFxcdCBwZGF0YS1cXHUwMDNlbmFtZSwgcGRhdGEtXFx1MDAzZWVuYWJsZWRfcG9ydHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk2LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM5NzpzdGF0aWMgdm9pZCBkc2FfbG9vcF9kcnZfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTgte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM5OTpcXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBkZXZfZ2V0X2RydmRhdGEoXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDAwLVxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxMC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MTE6c3RhdGljIHZvaWQgZHNhX2xvb3BfZHJ2X3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MTIte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQxMzpcXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBkZXZfZ2V0X2RydmRhdGEoXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDE0LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDE5LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyMDpcXHRkZXZfc2V0X2RydmRhdGEoXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldiwgTlVMTCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDIxLX1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDIzOnN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgZHNhX2xvb3BfZHJ2ID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyNDpcXHQubWRpb2Rydi5kcml2ZXJcXHQ9IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjUtXFx0XFx0Lm5hbWVcXHQ9IFxcXCJkc2EtbG9vcFxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz00MzI9c3RhdGljIGludCBkc2FfbG9vcF9idXNfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM0LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MzU6XFx0cmV0dXJuIGRydiA9PSBcXHUwMDI2ZHNhX2xvb3BfZHJ2Lm1kaW9kcnYuZHJpdmVyO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzNi19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz00Mzg9c3RhdGljIHZvaWQgZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDUtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ2OnN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2Rldih2b2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NjItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDYzOlxcdGJ1cyA9IG1kaW9fZmluZF9idXMoXFxcImZpeGVkLTBcXFwiKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NjQtXFx0aWYgKFdBUk5fT04oIWJ1cykpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NjYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDY3OlxcdHN3aXRjaF9tZGlvZGV2ID0gbWRpb19kZXZpY2VfY3JlYXRlKGJ1cywgMzEpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ2ODpcXHRpZiAoSVNfRVJSKHN3aXRjaF9tZGlvZGV2KSlcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NjktXFx0XFx0Z290byBvdXQ7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDcwLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ3MTpcXHRzd2l0Y2hfbWRpb2Rldi1cXHUwMDNlYnVzX21hdGNoID0gZHNhX2xvb3BfYnVzX21hdGNoO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ3MjpcXHRzd2l0Y2hfbWRpb2Rldi1cXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGEgPSBcXHUwMDI2ZHNhX2xvb3BfcGRhdGE7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDczLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ3NDpcXHRyZXQgPSBtZGlvX2RldmljZV9yZWdpc3Rlcihzd2l0Y2hfbWRpb2Rldik7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDc1LVxcdGlmIChyZXQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDc2OlxcdFxcdG1kaW9fZGV2aWNlX2ZyZWUoc3dpdGNoX21kaW9kZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ3Ny1vdXQ6XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz00ODI9c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDg2LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ4NzpcXHRyZXQgPSBkc2FfbG9vcF9jcmVhdGVfc3dpdGNoX21kaW9kZXYoKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5My1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTQ6XFx0cmV0ID0gbWRpb19kcml2ZXJfcmVnaXN0ZXIoXFx1MDAyNmRzYV9sb29wX2Rydik7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDk1LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTYtXFx0XFx0ZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk3OlxcdFxcdG1kaW9fZGV2aWNlX3JlbW92ZShzd2l0Y2hfbWRpb2Rldik7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk4OlxcdFxcdG1kaW9fZGV2aWNlX2ZyZWUoc3dpdGNoX21kaW9kZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5OS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz01MDU9c3RhdGljIHZvaWQgX19leGl0IGRzYV9sb29wX2V4aXQodm9pZClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDYte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwNzpcXHRtZGlvX2RyaXZlcl91bnJlZ2lzdGVyKFxcdTAwMjZkc2FfbG9vcF9kcnYpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwOC1cXHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDk6XFx0bWRpb19kZXZpY2VfcmVtb3ZlKHN3aXRjaF9tZGlvZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MTA6XFx0bWRpb19kZXZpY2VfZnJlZShzd2l0Y2hfbWRpb2Rldik7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTExLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6Mzg6MjcuNzgyOTAyNzQxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMTYyMjU0MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBGaXhlZCBQSFkgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldmAgZnVuY3Rpb24gYW5kIGltbWVkaWF0ZWx5IG15IHJhZGFyIHBpbmdzIG9uIHRoZSB1c2Ugb2YgYG1kaW9fZmluZF9idXMoXCJmaXhlZC0wXCIpYC4gSW50ZXJlc3RpbmcuLi4gSSBuZWVkIHRvIGNvbnNpZGVyIGEgc2NlbmFyaW8gd2hlcmUgSSB3YW50IG1vcmUgZmxleGliaWxpdHkuIFRoZSBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzLCBjYW4gSSBjcmVhdGUgYSBmaXhlZCBQSFkgd2l0aCBhIHNwZWNpZmljLCBhcmJpdHJhcnkgUEhZIElELCBpbnN0ZWFkIG9mIGJlaW5nIGxpbWl0ZWQgdG8gd2hhdGV2ZXIgXCJmaXhlZC0wXCIgcmVzb2x2ZXMgdG8/XG5cblRvIGZpZ3VyZSB0aGlzIG91dCwgSSBzaG91bGQgdGFrZSBhIGxvb2sgYXQgdGhlIGZ1bmN0aW9uIGBmaXhlZF9waHlfcmVnaXN0ZXJgLiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0IGRpZ2dpbmcgdG8gc2VlIGlmIHRoZXJlJ3MgYW55IG1lY2hhbmlzbSBmb3IgbW9yZSBmaW5lLWdyYWluZWQgY29udHJvbCBvdmVyIGZpeGVkIFBIWSBkZXZpY2UgY3JlYXRpb24gYW5kIGNvbmZpZ3VyYXRpb24uIEl0J3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgbG9va2luZyBmb3IgdGhlIGhvb2tzIEknZCBuZWVkIHRvIGFjaGlldmUgdGhhdCBmbGV4aWJpbGl0eS4gSSB3YW50IHRvIHNlZSBob3cgdGhlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIGhhbmRsZXMgUEhZIElEcyBhbmQgYnVzIGFzc2lnbm1lbnQuIFRoaXMgZmVlbHMgbGlrZSBhIHBvdGVudGlhbCBhcmVhIGZvciBjdXN0b21pemF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDMwMywiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM4OjMxLjA5OTEzODg5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjY2NzUxODA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZpeGVkX3BoeV9yZWdpc3RlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz00ODI9c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDkxLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBOVU1fRklYRURfUEhZUzsgaSsrKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5MjpcXHRcXHRwaHlkZXZzW2ldID0gZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDkzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM9MjIzND1zdGF0aWMgaW50IGI0NF9yZWdpc3Rlcl9waHlfb25lKHN0cnVjdCBiNDQgKmJwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjI3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYzoyMjczOlxcdFxcdHBoeWRldiA9IGZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNzQtXFx0XFx0aWYgKCFJU19FUlIocGh5ZGV2KSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmM9MTQzOT1pbnQgYmdtYWNfcGh5X2Nvbm5lY3RfZGlyZWN0KHN0cnVjdCBiZ21hYyAqYmdtYWMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jLTE0NDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYzoxNDQ5OlxcdHBoeV9kZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXIoXFx1MDAyNmZwaHlfc3RhdHVzLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jLTE0NTAtXFx0aWYgKElTX0VSUihwaHlfZGV2KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYz0xODQ4PXN0YXRpYyBpbnQgZnRnbWFjMTAwX3Byb2JlX25jc2koc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTg2Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jOjE4Njc6XFx0cGh5ZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFxcdTAwMjZuY3NpX3BoeV9zdGF0dXMsIG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE4NjgtXFx0aWYgKElTX0VSUihwaHlkZXYpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz0yOTgxPXN0YXRpYyBpbnQgZmVjX2VuZXRfbWlpX3Byb2JlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzAwMi1cXHRcXHRcXHRuZXRkZXZfaW5mbyhuZGV2LCBcXFwibm8gUEhZLCBhc3N1bWluZyBkaXJlY3QgY29ubmVjdGlvbiB0byBzd2l0Y2hcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjMwMDM6XFx0XFx0XFx0cGh5X2RldiA9IGZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTMwMDQtXFx0XFx0XFx0aWYgKElTX0VSUihwaHlfZGV2KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYz0yMzg9c3RhdGljIGludCBoYmdfZml4ZWRfcGh5X2luaXQoc3RydWN0IGhiZ19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYy0yNTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYzoyNTE6XFx0cGh5ZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFxcdTAwMjZoYmdfZml4ZWRfcGh5X3N0YXR1cywgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYy0yNTItXFx0aWYgKElTX0VSUihwaHlkZXYpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYz00MTI9aW50IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy00NTktcmVnaXN0ZXJfcGh5OlxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjQ2MDpcXHRyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKGZpeGVkX3BoeV9yZWdpc3RlcihcXHUwMDI2c3RhdHVzLCBucCkpO1xcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQ2MS19XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM9MTE4PXN0YXRpYyBpbnQgZml4ZWRfcGh5X2dldF9mcmVlX2FkZHIodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xMzAtXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjEzMTpzdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzICpzdGF0dXMsXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTEzMi1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE3Mi19XFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjE3MzpFWFBPUlRfU1lNQk9MX0dQTChmaXhlZF9waHlfcmVnaXN0ZXIpO1xcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xNzQtXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjE3NTpzdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKHZvaWQpXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE3Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTgxLVxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoxODI6XFx0cmV0dXJuIGZpeGVkX3BoeV9yZWdpc3RlcihcXHUwMDI2c3RhdHVzLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTgzLX1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM6MTg0OkVYUE9SVF9TWU1CT0xfR1BMKGZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCk7XFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE4NS1cXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmg9MTk9ZXh0ZXJuIGludCBmaXhlZF9waHlfY2hhbmdlX2NhcnJpZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCBuZXdfY2Fycmllcik7XFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaDoyMDpzdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzICpzdGF0dXMsXFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaC0yMS1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKTtcXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oOjIyOnN0cnVjdCBwaHlfZGV2aWNlICpmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQodm9pZCk7XFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaC0yMy1cXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmg9Mjk9c3RhdGljIGlubGluZSBzdHJ1Y3QgcGh5X2RldmljZSAqXFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaDozMDpmaXhlZF9waHlfcmVnaXN0ZXIoY29uc3Qgc3RydWN0IGZpeGVkX3BoeV9zdGF0dXMgKnN0YXR1cyxcXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oLTMxLVxcdFxcdCAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oLTM1LVxcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmg6MzY6c3RhdGljIGlubGluZSBzdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKHZvaWQpXFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaC0zNy17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM4OjM1Ljc2NTg5ODkxNloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTc1MTM5MTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEh5cG90aGVzaXMgb24gU3l6a2FsbGVyIGFuZCBGaXhlZCBQSFkgRGV2aWNlcyoqXG5cbk9rYXksIGxldCdzIHRoaW5rIHRoaXMgdGhyb3VnaC4gVGhlIGBmaXhlZF9waHlfcmVnaXN0ZXJgIGZ1bmN0aW9uLCByaWdodD8gVGhhdCdzIGNyZWF0aW5nIGEgUEhZIGRldmljZSwgdXN1YWxseSB3aXRoIGEgZml4ZWQgUEhZIElELCBsaWtlIGAweDAwMDAwMDAwYCBvciBzaW1pbGFyLiBOb3RoaW5nIHRvbyBleGNpdGluZyBvbiBpdHMgb3duLiBCdXQsIGhvbGQgb24gYSBzZWNvbmQuLi5TeXprYWxsZXIsIHRoZSBmdXp6ZXIsIGNhbiBpbmplY3QgZGV2aWNlIHRyZWUgb3ZlcmxheXMhIFRoaXMgaXMgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZy5cblxuSWYgU3l6a2FsbGVyIGNyYWZ0cyBhIGRldmljZSB0cmVlIG92ZXJsYXkgd2l0aCBhIG5vZGUgdGhhdCAqbWF0Y2hlcyogdGhpcyBmaXhlZCBQSFksIGNvdWxkIHdlIGdldCBpdCBwcm9iZWQ/IFllcywgdGhhdCBjb3VsZCB3b3JrISBTeXprYWxsZXIgKmRvZXMqIGhhdmUgc3VwcG9ydCBmb3IgZGV2aWNlIHRyZWUgb3ZlcmxheXMuIEkga25vdyB0aGF0IG11Y2guIFRoZSBrZXkgcXVlc3Rpb24gaXMsICpob3cqIGRvZXMgaXQgZG8gaXQ/IE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBpdCB1c2VzIGBzeXpfbW91bnRfaW1hZ2VgIG9yIHNpbWlsYXIsIGJ1dCB3YWl0LCBpdCBjYW4gYWxzbyBpbmplY3QgdGhlbSB2aWEgYHN5c2ZzYCBpZiBgQ09ORklHX09GX09WRVJMQVlgIGlzIGVuYWJsZWQsIG9yIG1heWJlIG90aGVyIG1lYW5zLiBEb2VzIFN5emthbGxlciAqYWN0dWFsbHkqIGV4cGxvaXQgdGhpcyBtZWNoYW5pc20/IEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQgcGFydC5cblxuSSBrbm93IFN5emthbGxlciBoYXMgcHNldWRvLXN5c2NhbGxzIGxpa2UgYHN5el9pbml0X25ldF9zb2NrZXRgLiBEb2VzIGl0IGhhdmUgYSBjb3JyZXNwb25kaW5nIGBzeXpfZHRfb3ZlcmxheWAgZnVuY3Rpb24/IElmIGl0IGRvZXMsIHRoYXQncyBwb3RlbnRpYWxseSB0aGUgYnJlYWt0aHJvdWdoIEknbSBsb29raW5nIGZvci4gVGhpcyBuZWVkcyB0byBiZSBpbnZlc3RpZ2F0ZWQgZnVydGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYyMzgsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6Mzg6NDAuOTQxMDQxODJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMjc5ODY3NDMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN5el8uKm92ZXJsYXlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM4OjQ2Ljk2OTAzOTk5M1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MzA2OTIyOTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEN1cnJlbnQgSW52ZXN0aWdhdGlvbiBpbnRvIFBIWSBEcml2ZXIgVHJpZ2dlcmluZyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0byB0cmlnZ2VyIHRoZSBgZGFwODIxMXIuY2AgUEhZIGRyaXZlciB3aXRoaW4gdGhlIGNvbnRleHQgb2Ygc3l6a2FsbGVyLiBGaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byByZW1lbWJlciB0aGF0IHRoZSBwc2V1ZG8tc3lzY2FsbHMgc3l6a2FsbGVyIHVzZXMgYXJlbid0ICppbiogdGhlIGtlcm5lbCBzb3VyY2UgdHJlZSwgc28gZ3JlcHBpbmcgdGhlcmUgaXMgYSBkZWFkIGVuZC4gUmlnaHQsIGl0J3MgYWJvdXQgZmluZGluZyB0aGUgcGF0aHdheS5cblxuSWYgdGhlIFBIWSBkcml2ZXIgaXMgYSBtb2R1bGUsIHdoaWNoIEkgYmVsaWV2ZSBpdCBtaWdodCBiZSwgdGhlbiBpdCBuZWVkcyB0byBiZSBsb2FkZWQsIEkgaGF2ZSBjb25maXJtZWQgdGhhdC4gQnV0LCBob3cgZG8gSSBhY3R1YWxseSAqcmVhY2gqIHRoZSBjb2RlIHdpdGhpbiBgZGFwODIxMXIuY2AsIHNwZWNpZmljYWxseSBgZGFwODIxMXJfY29uZmlnX2luaXRgPyBJdCBsb29rcyBsaWtlIGEgUEhZIGRldmljZSBuZWVkcyB0byBiZSBjcmVhdGVkIGFuZCBib3VuZCB0byB0aGUgZHJpdmVyLlxuXG5DYW4gSSBjcmVhdGUgYSBQSFkgZGV2aWNlIGZyb20gdXNlcnNwYWNlPyBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbG9vayBmb3IgcGxhdGZvcm0gZGV2aWNlcywgbGlrZSBgbWRpby1iY20tdW5pbWFjLmNgIG9yIGBtZGlvLWdwaW9gLiBCdXQgc3l6a2FsbGVyIGNhbid0ICphcmJpdHJhcmlseSogY3JlYXRlIHBsYXRmb3JtIGRldmljZXMsIG5vdCB3aXRob3V0IHNvbWUgZXhwb3NlZCBBUEkuIEkndmUgbG9va2VkIGZvciBhIGBzeXpfcGxhdGZvcm1fZGV2aWNlX2FkZGAgY2FsbCBhbmQgZm91bmQgbm90aGluZy4gSSBoYXZlIHRvIGxldmVyYWdlIHdoYXQncyAqdGhlcmUqLlxuXG5JIGtub3cgc3l6a2FsbGVyIGhhcyBgdmhjaWAgZm9yIFVTQiwgYG1hYzgwMjExX2h3c2ltYCBmb3Igd2lmaSwgYHVpbnB1dGAgZm9yIGlucHV0LCBgc25kLWFsb29wYCBmb3Igc291bmQsIGFuZCBgbmV0ZGV2c2ltYCBmb3IgbmV0ZGV2cy4gTm9uZSBvZiB0aGVzZSBzZWVtIHRvIGhhdmUgTURJTyBzdXBwb3J0LCBhbmQgc28gY2FuJ3QgYmUgdXNlZCB0byBtb2NrIGEgUEhZIGRldmljZS5cblxuSG93IGFib3V0IGBkc2FfbG9vcGA/IFRoYXQncyBpbnRlcmVzdGluZywgYmVjYXVzZSBpdCAqZG9lcyogY3JlYXRlIGZpeGVkIFBIWXMuIEhvd2V2ZXIsIHRoZSBQSFkgSUQgaXMgZml4ZWQgdG8gYDBgIGFuZCB0aGVyZWZvcmUgaXMgbm90IHVzZWZ1bCBmb3IgbXkgdGVzdGluZy4gSXMgdGhlcmUgYSB3YXkgdG8gd3JpdGUgZGlyZWN0bHkgdG8gTURJTyBidXMgcmVnaXN0ZXJzIGZyb20gdXNlcnNwYWNlLCBldmVuIGlmIGl0IGRvZXNuJ3QgY3JlYXRlIGEgUEhZIGRldmljZSBkaXJlY3RseT8gQWgsIHllcywgYGlvY3RsKFNJT0NTTUlJUkVHKWAuIEJ1dCB0aGF0IGRvZXNuJ3QgKmNyZWF0ZSogYSBQSFkgZGV2aWNlLCBpdCBqdXN0IGxldHMgbWUgaW50ZXJhY3Qgd2l0aCBvbmUgdGhhdCBhbHJlYWR5IGV4aXN0cy5cblxuVG8gY3JlYXRlIHRoZSBkZXZpY2UgaXRzZWxmLCB0aGUgTURJTyBidXMgbmVlZHMgdG8gc2NhbiBmb3IgYSBQSFkgSUQuIFNvLCBpZiB0aGVyZSBpcyBhIHNvZnR3YXJlIE1ESU8gYnVzLCBkb2VzIGl0IHNjYW4/IEFuZCB0aGVuIHRoZXJlJ3MgdGhlIGBmaXhlZF9tZGlvX3JlYWRgIGZ1bmN0aW9uLiBUaGF0IHJldHVybnMgYSAqZml4ZWQqIFBIWSBJRCwgc28gdGhhdCBkb2Vzbid0IGhlbHAgbWUgaW4gbXkgcHVyc3VpdC5cblxuTXkgdGhvdWdodHMgYXJlIHR1cm5pbmcgdG93YXJkIHNvbWUga2luZCBvZiBtb2NrdXA6IElzIHRoZXJlIGFueSB3YXkgdG8gbW9jayBhbiBNRElPIGJ1cyB3aGVyZSB1c2Vyc3BhY2UgY29udHJvbHMgdGhlIHJlYWQvd3JpdGUgYmVoYXZpb3I/IE5vdywgbGV0J3Mgc2VlLCBpcyB0aGVyZSBhbiBgbWRpby1tb2NrdXBgIGRyaXZlcj9cblxuXG4iLCJJbnB1dFRva2VucyI6MTY3OTAsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6Mzg6NTYuMjc1OTY2NTI2WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjUzNjUzNzcyLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZGlvLiptb2NrdXBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM5OjAxLjUyOTYyOTEwOFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODU3Nzk2MTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNvbnNpZGVyaW5nIEFsdGVybmF0aXZlcyB0byBgbWRpby1tb2NrdXBgKipcblxuT2theSwgc28gdGhlcmUncyBubyBgbWRpby1tb2NrdXBgLi4uIFRoYXQncyBhIGJpdCBvZiBhIHNldGJhY2suIEkgbmVlZCBhIHF1aWNrIGFuZCBkaXJ0eSB3YXkgdG8gc2ltdWxhdGUgYW4gTURJTyBpbnRlcmZhY2UgZm9yIHRlc3RpbmcsIGFuZCB0aGF0IHdvdWxkIGhhdmUgYmVlbiBpZGVhbC4gV2hhdCBvdGhlciBvcHRpb25zIGFyZSB0aGVyZSB0aGF0IGFyZSBhbHJlYWR5IGluIHRoZSBldGhlcj8gV2hhdCBhYm91dCBzb21ldGhpbmcgYSBiaXQgbW9yZSBnZW5lcmljLCB5ZXQgc3RpbGwgZnVuY3Rpb25hbD8gTGV0J3Mgc2VlLi4uIGNvdWxkIGEgcGxhaW4gYG1kaW8tZHVtbXlgIGFjdHVhbGx5IGZpdCB0aGUgYmlsbD8gSXQgd291bGQgbmVlZCB0byBiZSBzaW1wbGUgYnV0IHJvYnVzdC4gSSB3b25kZXIgaWYgdGhlcmUgaXMgYW4gZXhpc3RpbmcgcGFja2FnZT8gSXQgd291bGQgbmVlZCB0byBiZSBzdWl0YWJsZSBmb3IgaW50ZWdyYXRpb24gaW50byBteSB0b29sY2hhaW4uIFRoaXMgcmVxdWlyZXMgYSBiaXQgbW9yZSBpbnZlc3RpZ2F0aW9uLiBUaGUgbmFtZSBpcyBhIHBsYWNlaG9sZGVyIGZvciBub3csIG9mIGNvdXJzZSwgYnV0IGl0IGdpdmVzIG1lIGEgd29ya2luZyBmcmFtZXdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3OTQ5LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6Mzk6MDQuMzg3NDI5NjY4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTgyMjYwOTY0LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZGlvLipkdW1teVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6Mzk6MDkuOTY5NzAzNjkyWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwMzU0NTE2NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBQSFkgRHJpdmVyIFRlc3RpbmcgaW4gUUVNVSoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgdG8gdGVzdCB0aGVzZSBQSFkgZHJpdmVycy4gV2hhdCBhYm91dCBgbWRpby1ncGlvYD8gVGhhdCdzIGEgcG9zc2liaWxpdHksIHNpbmNlIGl0IHVzZXMgR1BJT3MuIEkgd29uZGVyIGlmIHRoZXJlJ3MgYW55IHdheSB0byB0ZXN0IFBIWSBkcml2ZXJzIGVmZmVjdGl2ZWx5IHdpdGhpbiBRRU1VLiBJdCBzZWVtcyBsaWtlIGl0IHdvdWxkIGJlIGEgaHVnZSBhZHZhbnRhZ2UuXG5cbldhaXQsIFFFTVUgKmRvZXMqIGVtdWxhdGUgYSBidW5jaCBvZiBuZXR3b3JrIGNhcmRzLCByaWdodD8gTGlrZSwgSSBrbm93IGFib3V0IGBlMTAwMGAsIGBydGw4MTM5YCwgYHBjbmV0YCwgYG5lMmtfcGNpYCwgYW5kIGB2aXJ0aW8tbmV0YC4gQnV0IGRvIGFueSBvZiB0aG9zZSBhY3R1YWxseSAqZXhwb3NlKiBhbiBNRElPIGJ1cyB0byB0aGUga2VybmVsPyBUaGF0J3MgdGhlIGtleS5cblxuVGhlIGBlMTAwMGAgaGFzIGFuIGludGVybmFsIFBIWSwgYnV0IHRoZSBgZTEwMDBgIGRyaXZlciBtYW5hZ2VzIGl0IGRpcmVjdGx5LCBub3QgdGhyb3VnaCB0aGUgc3RhbmRhcmQgUEhZIGxheWVyLCBzbyB0aGF0J3Mgbm90IGhlbHBmdWwuIFRoZSBgZmVjYCAoRnJlZXNjYWxlIEZhc3QgRXRoZXJuZXQgQ29udHJvbGxlcikgaXMgZW11bGF0ZWQgaW4gUUVNVSBmb3Igc29tZSBBUk0gYm9hcmRzLCBhbmQgKnRoYXQqIHVzZXMgdGhlIGdlbmVyaWMgUEhZIGxheWVyLiBCdXQgSSBuZWVkIHNvbWV0aGluZyB0aGF0IHJ1bnMgaW4geDg2XzY0LCB3aGljaCBpcyB3aGF0IEknbSBmb2N1c2VkIG9uIGZvciBzeXprYWxsZXIuXG5cblNvLCBvbiB4ODZfNjQsIGRvZXMgUUVNVSBlbXVsYXRlICphbnkqIE5JQyB0aGF0IHVzZXMgdGhlIGdlbmVyaWMgUEhZIGxheWVyPyBUaW1lIHRvIGludmVzdGlnYXRlLiBJJ2xsIG5lZWQgdG8gY2hlY2sgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2AgYW5kIGxvb2sgZm9yIGRyaXZlcnMgdGhhdCBjYWxsIGBwaHlfY29ubmVjdGAgb3IgYG1kaW9idXNfcmVnaXN0ZXJgLCBhbmQgbWFrZSBzdXJlIHRoZXkncmUgZW11bGF0ZWQgYnkgUUVNVS5cblxuQWgsIGxvb2tzIGxpa2UgYHRnM2AgKEJyb2FkY29tIFRpZ29uMykgaXMgZW11bGF0ZWQgYnkgUUVNVS4gRG9lcyBpdCB1c2UgdGhlIGdlbmVyaWMgUEhZIGxheWVyPyBUaGF0J3MgdGhlIG5leHQgc3RlcCBpbiBteSBzZWFyY2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MTc4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM5OjE3LjAwNTE2MDI4MVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA2NDgyNzMyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeV9jb25uZWN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTIwODQ9c3RhdGljIGludCB0ZzNfcGh5X2luaXQoc3RydWN0IHRnMyAqdHApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0yMDk2LVxcdC8qIEF0dGFjaCB0aGUgTUFDIHRvIHRoZSBQSFkuICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6MjA5NzpcXHRwaHlkZXYgPSBwaHlfY29ubmVjdCh0cC1cXHUwMDNlZGV2LCBwaHlkZXZfbmFtZShwaHlkZXYpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTIwOTgtXFx0XFx0XFx0ICAgICB0ZzNfYWRqdXN0X2xpbmssIHBoeWRldi1cXHUwMDNlaW50ZXJmYWNlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6Mzk6MTcuMzExNjUxNjkzWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyOTE3MTQ0MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgdGczIERyaXZlciBhbmQgTURJTyBJbnRlcmFjdGlvbioqXG5cblJpZ2h0LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYHRnM2AgZHJpdmVyLCBhbmQgaXQncyBxdWlja2x5IGJlY29taW5nIGNsZWFyIHRoYXQgaXQgbGV2ZXJhZ2VzIGBwaHlfY29ubmVjdGAuIE1ha2VzIHNlbnNlOyB0aGF0J3MgdGhlIHN0YW5kYXJkIGFwcHJvYWNoIGZvciBQSFkgaW50ZXJhY3Rpb24sIGVzcGVjaWFsbHkgd2l0aCBhIG5ldHdvcmsgZHJpdmVyLiBHb29kIHRvIHNlZSB0aGF0IGltcGxlbWVudGVkIGNvcnJlY3RseS5cblxuQnV0IGhvbGQgb24gYSBzZWNvbmQuLi4gaXMgdGhlIGRyaXZlciAqYWxzbyogcmVnaXN0ZXJpbmcgYW4gTURJTyBidXM/IE5vdywgdGhhdCdzIGludGVyZXN0aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYXJjaGl0ZWN0dXJlIGhlcmUuIElzIGBwaHlfY29ubmVjdGAgaGFuZGxpbmcgdGhlIHByaW1hcnkgTURJTyBjb21tdW5pY2F0aW9uLCBhbmQgdGhlIHNlcGFyYXRlIE1ESU8gYnVzIHJlZ2lzdHJhdGlvbiBpcyBmb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFBlcmhhcHMgZm9yIG1vbml0b3Jpbmcgb3Igc29tZSBzcGVjaWFsaXplZCwgdmVuZG9yLXNwZWNpZmljIGZ1bmN0aW9uYWxpdHkgdGhhdCdzIGxheWVyZWQgb24gdG9wIG9mIHRoZSBzdGFuZGFyZCBQSFkgaW50ZXJmYWNlPyBDb3VsZCBpdCBiZSB1c2luZyBhIGRpZmZlcmVudCBNRElPIGJ1cyBmb3IgYWNjZXNzaW5nIGFkZGl0aW9uYWwgcmVnaXN0ZXJzIG9yIGRldmljZXMgYmV5b25kIHRoZSBzdGFuZGFyZCBQSFk/IE9yIG1heWJlIHRoZXJlJ3Mgc29tZSBsZWdhY3kgc3VwcG9ydCBsdXJraW5nIGluIHRoZSBjb2RlPyBUaGlzIHdhcnJhbnRzIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBpbnRvIGhvdyB0aGVzZSB0d28gbWVjaGFuaXNtcyBpbnRlcmFjdC4gVGltZSB0byBkaXZlIGRlZXBlciBpbnRvIHRoZSBjb2RlIGFuZCBzZWUgd2hhdCdzIGFjdHVhbGx5IGdvaW5nIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTAxNiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM5OjIwLjYwMzM2OTY2M1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE1MjM0Njg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1kaW9idXNfcmVnaXN0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM9MTUwNT1zdGF0aWMgaW50IHRnM19tZGlvX2luaXQoc3RydWN0IHRnMyAqdHApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNTU3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jOjE1NTg6XFx0aSA9IG1kaW9idXNfcmVnaXN0ZXIodHAtXFx1MDAzZW1kaW9fYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNTU5LVxcdGlmIChpKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM5OjIwLjgxODYxMDU1OFoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTc2MjU4MDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEN1cnJlbnQgSW52ZXN0aWdhdGlvbiBpbnRvIGB0ZzNgIGFuZCBQSFkgSUQgTWFuaXB1bGF0aW9uKipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgdGhhdCB0aGUgYHRnM2AgZHJpdmVyICpkb2VzKiBwcm9wZXJseSByZWdpc3RlciBhbiBNRElPIGJ1cy4gVGhhdCdzIGEgc29saWQgc3RhcnRpbmcgcG9pbnQuIE5vdywgd2hlbiBpdCByZWdpc3RlcnMgdGhlIGJ1cywgaXQgbmF0dXJhbGx5IGdvZXMgb24gdG8gc2NhbiBmb3IgUEhZcy4gVGhlIHRyaWNreSBwYXJ0IGlzIHRoYXQgdGhlIFBIWSBJRCBpdCdzIHJlYWRpbmcgaXMgZXNzZW50aWFsbHkgd2hhdGV2ZXIgUUVNVSBpcyBlbXVsYXRpbmcgZm9yIHRoZSBgdGczYCBkZXZpY2UsIGFuZCB0aGF0J3MgZ2VuZXJhbGx5IGEgQnJvYWRjb20gUEhZLiBUaGUgY29yZSBxdWVzdGlvbiBpczogY2FuIEkgbWFuaXB1bGF0ZSB0aGF0IGV4cG9zZWQgUEhZIElELCBlc3BlY2lhbGx5IHZpYSBzeXprYWxsZXI/XG5cbkRpcmVjdGx5IGFsdGVyaW5nIHdoYXQgUUVNVSBwcmVzZW50cyBzZWVtcyB1bmxpa2VseS4gU28sIHRoZSBhbHRlcm5hdGl2ZSBpcyB0byB0cnkgYW5kIHdyaXRlIHRvIHRoZSBQSFkgSUQgcmVnaXN0ZXJzIGRpcmVjdGx5IHVzaW5nIGBTSU9DU01JSVJFR2AuIEkgcmVjYWxsIHRob3NlIFBIWSBJRCByZWdpc3RlcnMgYXJlIHVzdWFsbHkgYXQgb2Zmc2V0cyAyIGFuZCAzLiBNeSBodW5jaCBpcywgaWYgc3l6a2FsbGVyIGNvdWxkIGV4ZWN1dGUgYFNJT0NTTUlJUkVHYCB0byBjaGFuZ2UgdGhvc2UgcmVnaXN0ZXJzLCB0aGVuIGl0IGNvdWxkLCBpbiBlZmZlY3QsIGNoYW5nZSB0aGUgZW11bGF0ZWQgUEhZIElELlxuXG5CdXQsIGEgc2lnbmlmaWNhbnQgcHJvYmxlbSBhcmlzZXM6IHRoZSBNRElPIGJ1cyBzY2FubmluZyBhbmQgUEhZIHByb2JlIGhhcHBlbnMgKmR1cmluZyogdGhlIGRyaXZlcidzIHByb2JlIHNlcXVlbmNlLiBUaGF0J3MgKmJlZm9yZSogc3l6a2FsbGVyIGdldHMgaXRzIGNoYW5jZSB0byBwbGF5IHdpdGggYGlvY3RsYC4gRGFtbi5cblxuV2FpdCwgaXMgdGhlcmUgYSB3YXkgdG8gZm9yY2UgYSByZXNjYW4gb2YgdGhlIE1ESU8gYnVzIGZyb20gdXNlcnNwYWNlPyBVc2Vyc3BhY2UgKmNhbiogd3JpdGUgdG8gdGhlIGAvc3lzL2J1cy9tZGlvX2J1cy9kZXZpY2VzLy4uLi91ZXZlbnRgIGZpbGUsIG9yIGJpbmQvdW5iaW5kIGRyaXZlcnMsIGJ1dCB0aGF0IHdvbid0IGhlbHAgaWYgdGhlIFBIWSBkZXZpY2UgaXMgYWxyZWFkeSBjcmVhdGVkIHdpdGggdGhlIG9sZCBJRC5cblxuQ2FuIEkgc29tZWhvdyBkZWxldGUgdGhlIGV4aXN0aW5nIFBIWSBkZXZpY2UgYW5kICpmb3JjZSogYSByZXNjYW4/IFRoZXJlJ3Mgbm8gYC9zeXMvYnVzL21kaW9fYnVzL3Jlc2NhbmAgYW5hbG9nIGxpa2Ugd2UgaGF2ZSB3aXRoIFBDSS4gVGhhdCdzIGEgZGVhZCBlbmQuXG5cbk9rYXksIGxldCdzIHRoaW5rIGJpZ2dlci4gV2hhdCBpZiwgaW5zdGVhZCBvZiB0cnlpbmcgdG8gcmVzY2FuIHRoZSBleGlzdGluZyBidXMsIHVzZXJzcGFjZSBjb3VsZCBzb21laG93ICpjcmVhdGUqIGEgbmV3IFBIWSBkZXZpY2UgdGhyb3VnaCBzeXNmcz8gSXMgdGhlcmUgZXZlbiBhIHdheSB0byBpbnN0YW50aWF0ZSBhIFBIWSBkZXZpY2UgZnJvbSB1c2Vyc3BhY2U/IFRoYXQncyB3aGF0IEkgcmVhbGx5IG5lZWQgdG8gZmlndXJlIG91dC4gSSBzdXBwb3NlIEkgc2hvdWxkIG5vdyBsb29rIGF0IGBkcml2ZXJzL25ldC9waHkvbWRpb19idXMuY2AuIFRoYXQgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBuZXh0IHN0ZXAgdG8gdW5jb3ZlciB0aGF0IHBvc3NpYmlsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTQ0NywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTozOToyNy4zOTQ4NzI0MzhaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0NDIzNzI3MiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RvcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM5OjI3LjczOTExOTUzOVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDU4ODI5NDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqSW52ZXN0aWdhdGluZyBNRElPIEJ1cyBTeXNmcyBBdHRyaWJ1dGVzKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3Qgd2F5IHRvIGludGVyYWN0IHdpdGggYW4gTURJTyBidXMuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZGlnIGludG8gdGhlIHN5c2ZzIGZpbGVzeXN0ZW0uIEl0J3MgdXN1YWxseSB0aGUgZ28tdG8gZm9yIHByb2JpbmcgYW5kIGNvbnRyb2xsaW5nIGhhcmR3YXJlIGluIGEgc3RydWN0dXJlZCwgc3RhbmRhcmRpemVkIHdheSBpbiBMaW51eC4gU28sIGxldCdzIHN0YXJ0IHRoZXJlLiBJJ2xsIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzeXNmcyBhdHRyaWJ1dGVzIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZSBgbWRpb19idXNgIGRyaXZlciBvciBmdW5jdGlvbmFsaXR5LiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJhc2UgdG8gdGhlbiB1bmRlcnN0YW5kIGlmIEkgY2FuIHJlYWQsIHdyaXRlLCBhbmQgY29udHJvbCB0aGUgTURJTyBidXMgdGhyb3VnaCB0aGlzIGludGVyZmFjZS4gV2hhdCBzcGVjaWZpYyBhdHRyaWJ1dGVzIGFyZSBhdmFpbGFibGUgd2lsbCBsZWFkIG1lIHRvIHRoZSBzcGVjaWZpY3Mgb2YgaG93IHRvIGdvIGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMjcyLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6Mzk6MzAuNzk3OTUyOTY0WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzQwMzk2NTQsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkRFVklDRV9BVFRSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1cy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTozOTozMS4wNzIwMDIyNDhaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkyMDExMjkwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkluaXRpYWwgSW5xdWlyeSBvbiBQSFkgRHJpdmVyIEltcGxlbWVudGF0aW9uKipcblxuTXkgaW5pdGlhbCB0aG91Z2h0LCB3aGVuIGVuY291bnRlcmluZyBhIG5ldHdvcmtpbmcgZGV2aWNlIGludGVyYWN0aW9uIGF0IGEgbG93IGxldmVsLCBpbnZhcmlhYmx5IGxlYWRzIG1lIHRvIHRoZSBwaHlzaWNhbCBsYXllci4gVGhlIHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMsIFwiV2hhdCdzIGdvaW5nIG9uIHdpdGhpbiBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2A/XCIgVGhhdCdzIG9mdGVuIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIHNvIHRvIHNwZWFrLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCB0aGUgbG93LWxldmVsIG1hbmFnZW1lbnQgb2YgdGhlIFBoeXNpY2FsIExheWVyIFRyYW5zY2VpdmVyIChQSFkpLiBJJ20gbGlrZWx5IGludGVyZXN0ZWQgaW4gaXRzIGNhcGFiaWxpdGllcyBhbmQgY29uZmlndXJhdGlvbi4gSXMgdGhpcyB3aGVyZSBJIHNob3VsZCBnbz9cblxuXG4iLCJJbnB1dFRva2VucyI6MjA0OTQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTozOTozMy45OTIxMjE0MzdaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MTU0OTg5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJERVZJQ0VfQVRUUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9NTYxPXBoeV9pZF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNTY2LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjU2NzpzdGF0aWMgREVWSUNFX0FUVFJfUk8ocGh5X2lkKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTU2OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9NTcwPXBoeV9pbnRlcmZhY2Vfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTU4MS19XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzo1ODI6c3RhdGljIERFVklDRV9BVFRSX1JPKHBoeV9pbnRlcmZhY2UpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNTgzLVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz01ODU9cGh5X2hhc19maXh1cHNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy01OTEtfVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6NTkyOnN0YXRpYyBERVZJQ0VfQVRUUl9STyhwaHlfaGFzX2ZpeHVwcyk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy01OTMtXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz01OTQ9c3RhdGljIHNzaXplX3QgcGh5X2Rldl9mbGFnc19zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNjAxLX1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjYwMjpzdGF0aWMgREVWSUNFX0FUVFJfUk8ocGh5X2Rldl9mbGFncyk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy02MDMtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTYxNz1zdGF0aWMgc3NpemVfdCBtbWQjI24jI19kZXZpY2VfaWRfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtNjIzLX0gXFxcXFxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6NjI0OnN0YXRpYyBERVZJQ0VfQVRUUl9STyhtbWQjI24jI19kZXZpY2VfaWQpXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy02MjUtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTE0NzA9cGh5X3N0YW5kYWxvbmVfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xNDc2LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE0Nzc6c3RhdGljIERFVklDRV9BVFRSX1JPKHBoeV9zdGFuZGFsb25lKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE0NzgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM5OjM0LjE4MzY3OTA1MloiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4Nzg4NDg2MDI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IExpbmUgb2YgUmVhc29uaW5nKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHN5emthbGxlciB0ZXN0cyBQSFkgZHJpdmVycy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhlcmUgYXJlbid0IGFueSBlYXNpbHkgd3JpdGVhYmxlIGF0dHJpYnV0ZXMgdG8ganVzdCAqY3JlYXRlKiBQSFlzIGRpcmVjdGx5LiBCdXQgd2FpdCwgZG9lc24ndCBzeXprYWxsZXIgaGF2ZSBzb21lIGtpbmQgb2YgcHNldWRvLWRldmljZSBmb3IgTURJTz8gSSBzaG91bGQgY2hlY2sgaWYgdGhlcmUncyBhIGBzeXpfbWRpb2Agb3Igc29tZXRoaW5nIHNpbWlsYXIgZGlyZWN0bHkgd2l0aGluIHRoZSBzeXprYWxsZXIgY29kZSBpdHNlbGYuIFVuZm9ydHVuYXRlbHksIEkgY2FuJ3QgZGlyZWN0bHkgKmNoZWNrKiB0aGUgc3l6a2FsbGVyIGNvZGUgaW4gdGhpcyBjb250ZXh0LCBzbywgbGV0J3MgbG9vayBmb3Igc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIGVuYWJsZWQgZm9yIHN5emthbGxlciB3aGVuIHRlc3RpbmcgUEhZcy5cblxuT2theSwgSSByZWNhbGwgYGRzYV9sb29wYCAqZG9lcyogY3JlYXRlIGZpeGVkIFBIWXMuIFRoYXQncyBhIHBvc3NpYmlsaXR5LCBidXQgaXMgdGhhdCB0aGUgb25seSB3YXk/IEFyZSB0aGVyZSBhbnkgb3RoZXIgcG90ZW50aWFsIHJvdXRlcz8gTWF5YmUgdGhyb3VnaCBgbmV0bGlua2A/IENhbiBhIFBIWSBiZSBjcmVhdGVkIHRoYXQgd2F5PyBObywgUEhZcyB0eXBpY2FsbHkgY29tZSBvbmxpbmUgdGhyb3VnaCBNRElPIGJ1cyBzY2FubmluZyBvciBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9ucywgdXN1YWxseS5cblxuSGFuZyBvbi4uLiBzeXprYWxsZXIgKmRvZXMqIGhhdmUgYSB3YXkgdG8gdGVzdCBQSFkgZHJpdmVycywgSSBrbm93IHRoYXQuIEhvdywgdGhvdWdoPyBNYXliZSBgZHNhX2xvb3BgIGlzIGludm9sdmVkLCBidXQgY2FuIEkgc29tZWhvdyBtYW5pcHVsYXRlIHRoZSBQSFkgSUQ/IE5vLCB0aGF0J3Mgbm90IGl0LiBgZHNhX2xvb3BgIHVzZXMgYGZpeGVkX3BoeWAsIHdoaWNoIGRvZXNuJ3QgaW50ZXJmYWNlIHdpdGggaGFyZHdhcmU7IGl0IGp1c3QgcmV0dXJucyBhIGZpeGVkIHN0YXR1cy5cblxuT2theSwgbGV0J3MgZXhwbG9yZSBvdGhlciBuZXR3b3JraW5nIGRldmljZSBvcHRpb25zIHdpdGhpbiBzeXprYWxsZXIncyBwdXJ2aWV3LiBEb2VzIHN5emthbGxlciBtYWtlIHVzZSBvZiBgdHVuYCBvciBgdGFwYD8gTm9wZSwgdGhleSBkb24ndCBoYXZlIE1ESU8uIFdoYXQgYWJvdXQgYG1hY21hY2Agb3IgYHZldGhgPyBTdGlsbCBuby5cblxuSG1tLi4uIHdoYXQgYWJvdXQgYG1kaW8tYmNtLXVuaW1hY2A/IFRoYXQncyBhIHBsYXRmb3JtIGRyaXZlciwgdGhvdWdoLiBTeXprYWxsZXIgcHJvYmFibHkgY2FuJ3QgaW5zdGFudGlhdGUgaXQgZGlyZWN0bHksIHVubGVzcyBpdCdzIHByZXNlbnQgaW4gdGhlIGRldmljZSB0cmVlLlxuXG5BaGEhIERldmljZSB0cmVlISBXYWl0Li4uIGRvZXNuJ3Qgc3l6a2FsbGVyICppbmplY3QqIGRldmljZSB0cmVlIG92ZXJsYXlzPyBCaW5nbyEgSXQncyBsaWtlbHkgdXNpbmcgdGhhdC4gSSByZW1lbWJlciBgc3l6X21vdW50X2ltYWdlYCBjYW4gbW91bnQgYSBmaWxlc3lzdGVtLCBidXQgaXQgYWxzbyBoYXMgYHN5el9pbml0X25ldF9zb2NrZXRgIGFuZCBzaW1pbGFyIGZhY2lsaXRpZXMuXG5cbkRvZXMgc3l6a2FsbGVyIHRydWx5IHV0aWxpemUgRFQgb3ZlcmxheXM/IFllcyEgSSBrbm93IGl0IGRvZXMhIFRoZXJlIGFyZSBmdW5jdGlvbnMgbGlrZSBgc3l6X2RldmxpbmtgIGFuZCBgc3l6X3VzYl9jb25uZWN0YC5cblxuQWN0dWFsbHksIGRpZG4ndCBJIHJlYWQgc29tZXRoaW5nIGFib3V0IHJlY2VudCBzeXprYWxsZXIgYWRkaXRpb25zIGNvbmNlcm5pbmcgdGVzdGluZyBQSFkgZHJpdmVycyB1c2luZyBhIG1vY2sgTURJTyBidXMgb3Igc29tZXRoaW5nIHNpbWlsYXI/XG5cbkFscmlnaHQsIGxldCdzIGRpZyBpbnRvIHRoZSBrZXJuZWwgc291cmNlLiBJJ2xsIHNlYXJjaCBmb3IgYG1kaW9gIHdpdGhpbiBgbmV0L2AgYW5kIGBkcml2ZXJzL25ldC9gIHRvIHNlZSBpZiB0aGVyZSdzIGEgbW9jayBkcml2ZXIgdGhhdCdzIGJlZW4gcmVjZW50bHkgYWRkZWQuIFRoaXMgZmVlbHMgbGlrZSB0aGUgcmlnaHQgZGlyZWN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTMzMSwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTozOTo0Mi45NzIxNjk0OThaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MDA0NzkxNTgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1kaW8uKm1vY2tcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM5OjQ4LjM3MjY2NDQ2NloiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzU0MTQ4MDM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aG9zZSB0aG91Z2h0cyBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlLCB1c2luZyBhIGZpcnN0LXBlcnNvbiBwZXJzcGVjdGl2ZTpcblxuKipNRElPIGFuZCBgbmV0ZGV2c2ltYCAtIExldCdzIERpZyBJbioqXG5cbkFscmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCBuZXR3b3JrIGRldmljZSBzaW11bGF0aW9uIGFnYWluLiBJdCdzIGEga2V5IHBhcnQgb2YgbXkgd29ya2Zsb3cgZm9yIHRlc3RpbmcgYW5kIHByb3RvdHlwaW5nLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGhhcmR3YXJlLWxldmVsIGludGVyYWN0aW9ucy4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBgbmV0ZGV2c2ltYC4gVGhhdCdzIGEgc29saWQgdG9vbCwgYnV0IHRoZSByZWFsIHF1ZXN0aW9uIGlzOiBkb2VzIGl0IHN1cHBvcnQgdGhlIE1lZGlhIEluZGVwZW5kZW50IEludGVyZmFjZSAoTURJTyk/IEkga25vdyBpdCBoYW5kbGVzIHRoZSBnZW5lcmFsIEV0aGVybmV0IGRldmljZSBlbXVsYXRpb24gd2VsbCwgYnV0IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiBJIGNhbiB1c2UgaXQgdG8gc2ltdWxhdGUgdGhlIFBIWSBtYW5hZ2VtZW50IGZlYXR1cmVzIEknbSB3b3JraW5nIHdpdGguIFRoZSBwcmVzZW5jZSBvciBhYnNlbmNlIG9mIE1ESU8gc3VwcG9ydCBmdW5kYW1lbnRhbGx5IHNoYXBlcyBpdHMgdXNlZnVsbmVzcyBmb3IgdGhpcyBjdXJyZW50IHByb2plY3QuIFRpbWUgdG8gY2hlY2sgdGhlIGRvY3VtZW50YXRpb24sIG9yIGJldHRlciB5ZXQsIG1heWJlIEkgc2hvdWxkIGp1c3Qgc3BpbiBpdCB1cCBhbmQgdGFrZSBhIGxvb2sgbXlzZWxmLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjM3NCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM5OjUyLjEyNjgxODQ1NFoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM5MDk0MTI1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZGlvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM5OjUyLjM2NTkyMTczOFoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDI5NTQwODQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFzc2Vzc2luZyBTeXprYWxsZXIncyBDb3ZlcmFnZSBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBpbml0aWFsbHksIG15IGluc3RpbmN0IHdhcyBhIGZpcm0gXCJubyxcIiB0aGF0IHN5emthbGxlciBjb3VsZG4ndCBwb3NzaWJseSBiZSByZWxldmFudCBoZXJlLiBCdXQgaG9sZCBvbiwgSSBuZWVkIHRvIGJlIG1vcmUgcmlnb3JvdXMuIFRoZSBjb3JlIHF1ZXN0aW9uIGlzOiBob3cgKmNvdWxkKiBzeXprYWxsZXIgYWN0dWFsbHkgdG91Y2ggdGhpcyBkcml2ZXI/IElmIGRpcmVjdCBhY2Nlc3MgaXMgaW1wb3NzaWJsZSwgdGhlbiBpbW1lZGlhdGVseSByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAgd291bGQgYmUgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwLiBIb3dldmVyLCBpdCdzIHRvbyBlYXJseSB0byBqdW1wIHRvIGNvbmNsdXNpb25zLiBJcyB0aGVyZSBhbnkgaW5kaXJlY3QgcGF0aHdheT8gQ291bGQgYSBnZW5lcmljIFBIWSB0ZXN0aW5nIGZyYW1ld29yayBwb3RlbnRpYWxseSBleHBvc2UgdGhpcyBkcml2ZXIgdG8gZnV6emluZz8gSSBuZWVkIHRvIGV4cGxvcmUgdGhhdCBwb3NzaWJpbGl0eS4gTXkgbmV4dCBtb3ZlIGlzIGNsZWFyOiBJIG5lZWQgdG8gZXhwbGljaXRseSBjaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiBhbnkgc3l6a2FsbGVyIHRlc3QgbW9kdWxlcyByZWxhdGVkIHRvIFwicGh5LlwiIFRoYXQgc2VhcmNoIHdpbGwgYmUgdGhlIGRldGVybWluYW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjYyMCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjczLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjM5OjU3LjM5NTQ2NjYyNloiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcxMTg0NjEzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeS4qdGVzdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jPTY1ND1zdGF0aWMgaW50IF9fYmNtX3BoeV9lbmFibGVfbGVnYWN5X2FjY2VzcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtNjU5LVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjY2MDpzdGF0aWMgaW50IF9iY21fcGh5X2NhYmxlX3Rlc3Rfc3RhcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCBpc19yZGIpXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtNjYxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTY5NS1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo2OTY6c3RhdGljIGludCBiY21fcGh5X2NhYmxlX3Rlc3RfcmVwb3J0X3RyYW5zKGludCByZXN1bHQpXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtNjk3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jPTcyNT1zdGF0aWMgaW50IGJjbV9waHlfcmVwb3J0X2xlbmd0aChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgcGFpcilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTc0MS1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo3NDI6c3RhdGljIGludCBfYmNtX3BoeV9jYWJsZV90ZXN0X2dldF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy03NDMtXFx0XFx0XFx0XFx0XFx0ICBib29sICpmaW5pc2hlZCwgYm9vbCBpc19yZGIpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy03NzUtXFx0ZXRobmxfY2FibGVfdGVzdF9yZXN1bHQocGh5ZGV2LCBFVEhUT09MX0FfQ0FCTEVfUEFJUl9BLFxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjc3NjpcXHRcXHRcXHRcXHRiY21fcGh5X2NhYmxlX3Rlc3RfcmVwb3J0X3RyYW5zKHBhaXJfYSkpO1xcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTc3Ny1cXHRldGhubF9jYWJsZV90ZXN0X3Jlc3VsdChwaHlkZXYsIEVUSFRPT0xfQV9DQUJMRV9QQUlSX0IsXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6Nzc4OlxcdFxcdFxcdFxcdGJjbV9waHlfY2FibGVfdGVzdF9yZXBvcnRfdHJhbnMocGFpcl9iKSk7XFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtNzc5LVxcdGV0aG5sX2NhYmxlX3Rlc3RfcmVzdWx0KHBoeWRldiwgRVRIVE9PTF9BX0NBQkxFX1BBSVJfQyxcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo3ODA6XFx0XFx0XFx0XFx0YmNtX3BoeV9jYWJsZV90ZXN0X3JlcG9ydF90cmFucyhwYWlyX2MpKTtcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy03ODEtXFx0ZXRobmxfY2FibGVfdGVzdF9yZXN1bHQocGh5ZGV2LCBFVEhUT09MX0FfQ0FCTEVfUEFJUl9ELFxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjc4MjpcXHRcXHRcXHRcXHRiY21fcGh5X2NhYmxlX3Rlc3RfcmVwb3J0X3RyYW5zKHBhaXJfZCkpO1xcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTc4My1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jPTgzMD1zdGF0aWMgdTMyIGJjbV9saW5rbW9kZV9hZHZfdG9fbHJlX2Fkdl90KHVuc2lnbmVkIGxvbmcgKmFkdmVydGlzaW5nKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtODQ3LVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjg0ODppbnQgYmNtX3BoeV9jYWJsZV90ZXN0X3N0YXJ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtODQ5LXtcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo4NTA6XFx0cmV0dXJuIF9iY21fcGh5X2NhYmxlX3Rlc3Rfc3RhcnQocGh5ZGV2LCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtODUxLX1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo4NTI6RVhQT1JUX1NZTUJPTF9HUEwoYmNtX3BoeV9jYWJsZV90ZXN0X3N0YXJ0KTtcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy04NTMtXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6ODU0OmludCBiY21fcGh5X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sICpmaW5pc2hlZClcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy04NTUte1xcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjg1NjpcXHRyZXR1cm4gX2JjbV9waHlfY2FibGVfdGVzdF9nZXRfc3RhdHVzKHBoeWRldiwgZmluaXNoZWQsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy04NTctfVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjg1ODpFWFBPUlRfU1lNQk9MX0dQTChiY21fcGh5X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyk7XFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtODU5LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtODYzLSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjg2NDppbnQgYmNtX3BoeV9jYWJsZV90ZXN0X3N0YXJ0X3JkYihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTg2NS17XFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6ODY2OlxcdHJldHVybiBfYmNtX3BoeV9jYWJsZV90ZXN0X3N0YXJ0KHBoeWRldiwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtODY3LX1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo4Njg6RVhQT1JUX1NZTUJPTF9HUEwoYmNtX3BoeV9jYWJsZV90ZXN0X3N0YXJ0X3JkYik7XFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtODY5LVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jOjg3MDppbnQgYmNtX3BoeV9jYWJsZV90ZXN0X2dldF9zdGF0dXNfcmRiKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtODcxLVxcdFxcdFxcdFxcdCAgICAgIGJvb2wgKmZpbmlzaGVkKVxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5jLTg3Mi17XFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmM6ODczOlxcdHJldHVybiBfYmNtX3BoeV9jYWJsZV90ZXN0X2dldF9zdGF0dXMocGh5ZGV2LCBmaW5pc2hlZCwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmMtODc0LX1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYzo4NzU6RVhQT1JUX1NZTUJPTF9HUEwoYmNtX3BoeV9jYWJsZV90ZXN0X2dldF9zdGF0dXNfcmRiKTtcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuYy04NzYtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuaD05MT1pbnQgYmNtX3BoeV9lbmFibGVfanVtYm8oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmgtOTItXFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmg6OTM6aW50IGJjbV9waHlfY2FibGVfdGVzdF9nZXRfc3RhdHVzX3JkYihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5oLTk0LVxcdFxcdFxcdFxcdCAgICAgIGJvb2wgKmZpbmlzaGVkKTtcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuaDo5NTppbnQgYmNtX3BoeV9jYWJsZV90ZXN0X3N0YXJ0X3JkYihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvYmNtLXBoeS1saWIuaDo5NjppbnQgYmNtX3BoeV9jYWJsZV90ZXN0X3N0YXJ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9iY20tcGh5LWxpYi5oOjk3OmludCBiY21fcGh5X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sICpmaW5pc2hlZCk7XFxuZHJpdmVycy9uZXQvcGh5L2JjbS1waHktbGliLmgtOTgtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYmNtNTQxNDAuYz04NjU9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGJjbTU0MTQwX2RyaXZlcnNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9iY201NDE0MC5jLTg4MC1cXHRcXHQuc2V0X3R1bmFibGVcXHQ9IGJjbTU0MTQwX3NldF90dW5hYmxlLFxcbmRyaXZlcnMvbmV0L3BoeS9iY201NDE0MC5jOjg4MTpcXHRcXHQuY2FibGVfdGVzdF9zdGFydCA9IGJjbV9waHlfY2FibGVfdGVzdF9zdGFydF9yZGIsXFxuZHJpdmVycy9uZXQvcGh5L2JjbTU0MTQwLmM6ODgyOlxcdFxcdC5jYWJsZV90ZXN0X2dldF9zdGF0dXMgPSBiY21fcGh5X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1c19yZGIsXFxuZHJpdmVycy9uZXQvcGh5L2JjbTU0MTQwLmMtODgzLVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYz04Nzc9c3RhdGljIGludCBicmNtX2ZldF9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtOTY5LVxcdC8qIERpc2FibGUgc2hhZG93IHJlZ2lzdGVyIGFjY2VzcyAqL1xcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jOjk3MDpcXHRlcnIyID0gX19waHlfd3JpdGUocGh5ZGV2LCBNSUlfQlJDTV9GRVRfQlJDTVRFU1QsIGJyY210ZXN0KTtcXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYy05NzEtXFx0aWYgKCFlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYz0xMDM2PXN0YXRpYyBpbnQgYnJjbV9mZXRfc3VzcGVuZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMtMTA3MS1cXHQvKiBEaXNhYmxlIHNoYWRvdyByZWdpc3RlciBhY2Nlc3MgKi9cXG5kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYzoxMDcyOlxcdGVycjIgPSBfX3BoeV93cml0ZShwaHlkZXYsIE1JSV9CUkNNX0ZFVF9CUkNNVEVTVCwgYnJjbXRlc3QpO1xcbmRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jLTEwNzMtXFx0aWYgKCFlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWFydmVsbC5jPTIyMTk9c3RhdGljIGludCBtYXJ2ZWxsX3ZjdDVfd2FpdF9jb21wbGV0ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21hcnZlbGwuYy0yMjMyLVxcbmRyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmM6MjIzMzpcXHRwaHlkZXZfZXJyKHBoeWRldiwgXFxcIlRpbWVvdXQgd2hpbGUgd2FpdGluZyBmb3IgY2FibGUgdGVzdCB0byBmaW5pc2hcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3BoeS9tYXJ2ZWxsLmMtMjIzNC1cXHRyZXR1cm4gLUVUSU1FRE9VVDtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYz04MTM9c3RhdGljIGludCBsYW44N3h4X2NhYmxlX3Rlc3Rfc3RhcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDEuYy04ODctXFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmM6ODg4OlxcdFxcdFxcdHJjID0gYWNjZXNzX2VyZWcocGh5ZGV2LCBjYWJsZV90ZXN0W2ldLm1vZGUsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MS5jLTg4OS1cXHRcXHRcXHRcXHRcXHQgY2FibGVfdGVzdFtpXS5iYW5rLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYz01Mzc9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MXNfZHJpdmVyW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTU3NS1cXHRcXHQuZ2V0X3BsY2Ffc3RhdHVzICAgID0gZ2VucGh5X2M0NV9wbGNhX2dldF9zdGF0dXMsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo1NzY6XFx0XFx0LmNhYmxlX3Rlc3Rfc3RhcnQgICA9IGdlbnBoeV9jNDVfb2F0YzE0X2NhYmxlX3Rlc3Rfc3RhcnQsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo1Nzc6XFx0XFx0LmNhYmxlX3Rlc3RfZ2V0X3N0YXR1cyA9IGdlbnBoeV9jNDVfb2F0YzE0X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTU3OC1cXHRcXHQuZ2V0X3NxaSAgICAgICAgICAgID0gZ2VucGh5X2M0NV9vYXRjMTRfZ2V0X3NxaSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYz0xMzI2PXN0YXRpYyBpbnQgbnhwX2M0NV9jYWJsZV90ZXN0X3N0YXJ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbnhwLWM0NS10amExMXh4LmMtMTMzMS1cXHRcXHRcXHQgVkVORDFfUE9SVF9GVU5DX0VOQUJMRVMsIFBIWV9URVNUX0VOQUJMRSk7XFxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jOjEzMzI6XFx0cmV0dXJuIHBoeV9zZXRfYml0c19tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgcmVnbWFwLVxcdTAwM2VjYWJsZV90ZXN0LFxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYy0xMzMzLVxcdFxcdFxcdFxcdENBQkxFX1RFU1RfRU5BQkxFIHwgQ0FCTEVfVEVTVF9TVEFSVCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbnhwLWM0NS10amExMXh4LmM9MTMzNj1zdGF0aWMgaW50IG54cF9jNDVfY2FibGVfdGVzdF9nZXRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbnhwLWM0NS10amExMXh4LmMtMTM0Mi1cXG5kcml2ZXJzL25ldC9waHkvbnhwLWM0NS10amExMXh4LmM6MTM0MzpcXHRyZXQgPSBueHBfYzQ1X3JlYWRfcmVnX2ZpZWxkKHBoeWRldiwgXFx1MDAyNnJlZ21hcC1cXHUwMDNlY2FibGVfdGVzdF92YWxpZCk7XFxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jLTEzNDQtXFx0aWYgKCFyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYy0xMzcwLVxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtYzQ1LXRqYTExeHguYzoxMzcxOlxcdHBoeV9jbGVhcl9iaXRzX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCByZWdtYXAtXFx1MDAzZWNhYmxlX3Rlc3QsXFxuZHJpdmVycy9uZXQvcGh5L254cC1jNDUtdGphMTF4eC5jLTEzNzItXFx0XFx0XFx0ICAgQ0FCTEVfVEVTVF9FTkFCTEUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmM9MjExPXN0YXRpYyBpbnQgdGphMTF4eF9jb25maWdfYW5lZ19jYWJsZV90ZXN0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYy0yMTgtXFxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmM6MjE5OlxcdGlmICghcGh5ZGV2LVxcdTAwM2VkcnYtXFx1MDAzZWNhYmxlX3Rlc3Rfc3RhcnQgfHxcXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYzoyMjA6XFx0ICAgICFwaHlkZXYtXFx1MDAzZWRydi1cXHUwMDNlY2FibGVfdGVzdF9nZXRfc3RhdHVzKVxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jLTIyMS1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jLTIyNi1cXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYzoyMjc6XFx0cmV0ID0gcGh5ZGV2LVxcdTAwM2VkcnYtXFx1MDAzZWNhYmxlX3Rlc3Rfc3RhcnQocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYy0yMjgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9ueHAtdGphMTF4eC5jLTIzMy1cXG5kcml2ZXJzL25ldC9waHkvbnhwLXRqYTExeHguYzoyMzQ6XFx0cmV0ID0gcGh5ZGV2LVxcdTAwM2VkcnYtXFx1MDAzZWNhYmxlX3Rlc3RfZ2V0X3N0YXR1cyhwaHlkZXYsIFxcdTAwMjZmaW5pc2hlZCk7XFxuZHJpdmVycy9uZXQvcGh5L254cC10amExMXh4LmMtMjM1LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jPTE2MDI9c3RhdGljIGludCBvYXRjMTRfY2FibGVfdGVzdF9nZXRfcmVzdWx0X2NvZGUoZW51bSBvYXRjMTRfaGRkX3N0YXR1cyBzdGF0dXMpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTE2MTctLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYzoxNjE4OiAqIGdlbnBoeV9jNDVfb2F0YzE0X2NhYmxlX3Rlc3RfZ2V0X3N0YXR1cyAtIEdldCBzdGF0dXMgb2YgT0FUQzE0IDEwQmFzZS1UMVNcXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTE2MTktICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEhZIGNhYmxlIHRlc3QuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTE2MzMtICovXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYzoxNjM0OmludCBnZW5waHlfYzQ1X29hdGMxNF9jYWJsZV90ZXN0X2dldF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTE2MzUtXFx0XFx0XFx0XFx0XFx0ICAgIGJvb2wgKmZpbmlzaGVkKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy0xNjYwLX1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jOjE2NjE6RVhQT1JUX1NZTUJPTChnZW5waHlfYzQ1X29hdGMxNF9jYWJsZV90ZXN0X2dldF9zdGF0dXMpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTY2Mi1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTE2NjMtLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYzoxNjY0OiAqIGdlbnBoeV9jNDVfb2F0YzE0X2NhYmxlX3Rlc3Rfc3RhcnQgLSBTdGFydCBhIGNhYmxlIHRlc3Qgb24gYW4gT0FUQzE0XFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy0xNjY1LSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMEJhc2UtVDFTIFBIWS5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHktYzQ1LmMtMTY4MS0gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jOjE2ODI6aW50IGdlbnBoeV9jNDVfb2F0YzE0X2NhYmxlX3Rlc3Rfc3RhcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTE2ODMte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jNDUuYy0xNzA0LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jOjE3MDU6RVhQT1JUX1NZTUJPTChnZW5waHlfYzQ1X29hdGMxNF9jYWJsZV90ZXN0X3N0YXJ0KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5LWM0NS5jLTE3MDYtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYz0zMjI9dm9pZCBwaHlfcmVzb2x2ZV9hbmVnX3BhdXNlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy0zMjQtXFx0aWYgKHBoeWRldi1cXHUwMDNlZHVwbGV4ID09IERVUExFWF9GVUxMKSB7XFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM6MzI1OlxcdFxcdHBoeWRldi1cXHUwMDNlcGF1c2UgPSBsaW5rbW9kZV90ZXN0X2JpdChFVEhUT09MX0xJTktfTU9ERV9QYXVzZV9CSVQsXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmMtMzI2LVxcdFxcdFxcdFxcdFxcdFxcdCAgcGh5ZGV2LVxcdTAwM2VscF9hZHZlcnRpc2luZyk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM6MzI3OlxcdFxcdHBoeWRldi1cXHUwMDNlYXN5bV9wYXVzZSA9IGxpbmttb2RlX3Rlc3RfYml0KFxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTMyOC1cXHRcXHRcXHRFVEhUT09MX0xJTktfTU9ERV9Bc3ltX1BhdXNlX0JJVCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYz00NDY9RVhQT1JUX1NZTUJPTChwaHlfZG9faW9jdGwpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTQ0OC0vKipcXG5kcml2ZXJzL25ldC9waHkvcGh5LmM6NDQ5OiAqIHBoeV9kb19pb2N0bF9ydW5uaW5nIC0gZ2VuZXJpYyBuZG9fZXRoX2lvY3RsIGltcGxlbWVudGF0aW9uIGJ1dCB0ZXN0IGZpcnN0XFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTQ1MC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jPTUzMD1FWFBPUlRfU1lNQk9MKHBoeV90cmlnZ2VyX21hY2hpbmUpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy01MzEtXFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjUzMjpzdGF0aWMgdm9pZCBwaHlfYWJvcnRfY2FibGVfdGVzdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy01MzMte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTUzOS1cXHRpZiAoZXJyKVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYzo1NDA6XFx0XFx0cGh5ZGV2X2VycihwaHlkZXYsIFxcXCJFcnJvciB3aGlsZSBhYm9ydGluZyBjYWJsZSB0ZXN0XFxcIik7XFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTU0MS19XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmM9ODIxPWludCBwaHlfZXRodG9vbF9nZXRfcGxjYV9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy04NDQtLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjg0NTogKiBwaHlfc3RhcnRfY2FibGVfdGVzdCAtIFN0YXJ0IGEgY2FibGUgdGVzdFxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy04NDYtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy04NDktICovXFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjg1MDppbnQgcGh5X3N0YXJ0X2NhYmxlX3Rlc3Qoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtODUxLVxcdFxcdFxcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtODU2LVxcdGlmICghKHBoeWRldi1cXHUwMDNlZHJ2IFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjg1NzpcXHQgICAgICBwaHlkZXYtXFx1MDAzZWRydi1cXHUwMDNlY2FibGVfdGVzdF9zdGFydCBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYzo4NTg6XFx0ICAgICAgcGh5ZGV2LVxcdTAwM2VkcnYtXFx1MDAzZWNhYmxlX3Rlc3RfZ2V0X3N0YXR1cykpIHtcXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtODU5LVxcdFxcdE5MX1NFVF9FUlJfTVNHKGV4dGFjayxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy04ODctXFx0bmV0aWZfdGVzdGluZ19vbihkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHkuYzo4ODg6XFx0ZXJyID0gcGh5ZGV2LVxcdTAwM2VkcnYtXFx1MDAzZWNhYmxlX3Rlc3Rfc3RhcnQocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtODg5LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy05MTAtfVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYzo5MTE6RVhQT1JUX1NZTUJPTChwaHlfc3RhcnRfY2FibGVfdGVzdCk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTkxMi1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtOTEzLS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYzo5MTQ6ICogcGh5X3N0YXJ0X2NhYmxlX3Rlc3RfdGRyIC0gU3RhcnQgYSByYXcgVERSIGNhYmxlIHRlc3RcXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtOTE1LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtOTE5LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHkuYzo5MjA6aW50IHBoeV9zdGFydF9jYWJsZV90ZXN0X3RkcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy05MjEtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2ssXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtOTI3LVxcdGlmICghKHBoeWRldi1cXHUwMDNlZHJ2IFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjkyODpcXHQgICAgICBwaHlkZXYtXFx1MDAzZWRydi1cXHUwMDNlY2FibGVfdGVzdF90ZHJfc3RhcnQgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9waHkvcGh5LmM6OTI5OlxcdCAgICAgIHBoeWRldi1cXHUwMDNlZHJ2LVxcdTAwM2VjYWJsZV90ZXN0X2dldF9zdGF0dXMpKSB7XFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTkzMC1cXHRcXHROTF9TRVRfRVJSX01TRyhleHRhY2ssXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtOTU4LVxcdG5ldGlmX3Rlc3Rpbmdfb24oZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5LmM6OTU5OlxcdGVyciA9IHBoeWRldi1cXHUwMDNlZHJ2LVxcdTAwM2VjYWJsZV90ZXN0X3Rkcl9zdGFydChwaHlkZXYsIGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTk2MC1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtOTgxLX1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmM6OTgyOkVYUE9SVF9TWU1CT0wocGh5X3N0YXJ0X2NhYmxlX3Rlc3RfdGRyKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtOTgzLVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jPTE1Mzg9c3RhdGljIGVudW0gcGh5X3N0YXRlX3dvcmsgX3BoeV9zdGF0ZV9tYWNoaW5lKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtMTU2Mi1cXHRjYXNlIFBIWV9DQUJMRVRFU1Q6XFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jOjE1NjM6XFx0XFx0ZXJyID0gcGh5ZGV2LVxcdTAwM2VkcnYtXFx1MDAzZWNhYmxlX3Rlc3RfZ2V0X3N0YXR1cyhwaHlkZXYsIFxcdTAwMjZmaW5pc2hlZCk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTE1NjQtXFx0XFx0aWYgKGVycikge1xcbmRyaXZlcnMvbmV0L3BoeS9waHkuYzoxNTY1OlxcdFxcdFxcdHBoeV9hYm9ydF9jYWJsZV90ZXN0KHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTE1NjYtXFx0XFx0XFx0bmV0aWZfdGVzdGluZ19vZmYoZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYz0xNjYyPXZvaWQgcGh5X3N0b3Aoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0xNjc4LVxcdGlmIChwaHlkZXYtXFx1MDAzZXN0YXRlID09IFBIWV9DQUJMRVRFU1QpIHtcXG5kcml2ZXJzL25ldC9waHkvcGh5LmM6MTY3OTpcXHRcXHRwaHlfYWJvcnRfY2FibGVfdGVzdChwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0xNjgwLVxcdFxcdG5ldGlmX3Rlc3Rpbmdfb2ZmKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYz0xMjI9c2l6ZV90IHBoeV9jYXBzX3NwZWVkcyh1bnNpZ25lZCBpbnQgKnNwZWVkcywgc2l6ZV90IHNpemUsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0xNDAtLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM6MTQxOiAqIHBoeV9jYXBzX2xvb2t1cF9ieV9saW5rbW9kZSgpIC0gTG9va3VwIHRoZSBmYXN0ZXN0IG1hdGNoaW5nIGxpbmtfY2FwYWJpbGl0aWVzXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmMtMTQyLSAqIEBsaW5rbW9kZXM6IExpbmttb2RlcyB0byBtYXRjaCBhZ2FpbnN0XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTI2Mj1zdGF0aWMgdm9pZCBwaHlfbGlua19jaGFuZ2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCB1cClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMjc1LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6Mjc2OiAqIHBoeV91c2VzX3N0YXRlX21hY2hpbmUgLSB0ZXN0IHdoZXRoZXIgY29uc3VtZXIgZHJpdmVyIHVzZXMgUEFMIHN0YXRlIG1hY2hpbmVcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTI3Ny0gKiBAcGh5ZGV2OiB0aGUgdGFyZ2V0IFBIWSBkZXZpY2Ugc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTM5MjU9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX3BoeV9vcHMgcGh5X2V0aHRvb2xfcGh5X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzkzMS1cXHQuZ2V0X3BsY2Ffc3RhdHVzXFx0PSBwaHlfZXRodG9vbF9nZXRfcGxjYV9zdGF0dXMsXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzozOTMyOlxcdC5zdGFydF9jYWJsZV90ZXN0XFx0PSBwaHlfc3RhcnRfY2FibGVfdGVzdCxcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjM5MzM6XFx0LnN0YXJ0X2NhYmxlX3Rlc3RfdGRyXFx0PSBwaHlfc3RhcnRfY2FibGVfdGVzdF90ZHIsXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zOTM0LX07XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMxOTE9aW50IHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbShzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyMDItXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMjAzOlxcdGlmICghcGh5bGlua190ZXN0KHBsLVxcdTAwM2VzdXBwb3J0ZWQsIFBhdXNlKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzIwNDpcXHQgICAgIXBoeWxpbmtfdGVzdChwbC1cXHUwMDNlc3VwcG9ydGVkLCBBc3ltX1BhdXNlKSlcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyMDUtXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzIwNi1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMyMDc6XFx0aWYgKCFwaHlsaW5rX3Rlc3QocGwtXFx1MDAzZXN1cHBvcnRlZCwgQXN5bV9QYXVzZSkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyMDgtXFx0ICAgIHBhdXNlLVxcdTAwM2VyeF9wYXVzZSAhPSBwYXVzZS1cXHUwMDNldHhfcGF1c2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jPTM0MD1waHlfaW50ZXJmYWNlX3Qgc2ZwX3NlbGVjdF9pbnRlcmZhY2Uoc3RydWN0IHNmcF9idXMgKmJ1cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmMtMzQyLXtcXG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jOjM0MzpcXHRpZiAocGh5bGlua190ZXN0KGxpbmtfbW9kZXMsIDI1MDAwYmFzZUNSX0Z1bGwpIHx8XFxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYzozNDQ6XFx0ICAgIHBoeWxpbmtfdGVzdChsaW5rX21vZGVzLCAyNTAwMGJhc2VLUl9GdWxsKSB8fFxcbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmM6MzQ1OlxcdCAgICBwaHlsaW5rX3Rlc3QobGlua19tb2RlcywgMjUwMDBiYXNlU1JfRnVsbCkpXFxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYy0zNDYtXFx0XFx0cmV0dXJuIFBIWV9JTlRFUkZBQ0VfTU9ERV8yNUdCQVNFUjtcXG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jLTM0Ny1cXG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jOjM0ODpcXHRpZiAocGh5bGlua190ZXN0KGxpbmtfbW9kZXMsIDEwMDAwYmFzZUNSX0Z1bGwpIHx8XFxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYzozNDk6XFx0ICAgIHBoeWxpbmtfdGVzdChsaW5rX21vZGVzLCAxMDAwMGJhc2VTUl9GdWxsKSB8fFxcbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmM6MzUwOlxcdCAgICBwaHlsaW5rX3Rlc3QobGlua19tb2RlcywgMTAwMDBiYXNlTFJfRnVsbCkgfHxcXG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jOjM1MTpcXHQgICAgcGh5bGlua190ZXN0KGxpbmtfbW9kZXMsIDEwMDAwYmFzZUxSTV9GdWxsKSB8fFxcbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmM6MzUyOlxcdCAgICBwaHlsaW5rX3Rlc3QobGlua19tb2RlcywgMTAwMDBiYXNlRVJfRnVsbCkgfHxcXG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jOjM1MzpcXHQgICAgcGh5bGlua190ZXN0KGxpbmtfbW9kZXMsIDEwMDAwYmFzZVRfRnVsbCkpXFxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYy0zNTQtXFx0XFx0cmV0dXJuIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUjtcXG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jLTM1NS1cXG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jOjM1NjpcXHRpZiAocGh5bGlua190ZXN0KGxpbmtfbW9kZXMsIDUwMDBiYXNlVF9GdWxsKSlcXG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jLTM1Ny1cXHRcXHRyZXR1cm4gUEhZX0lOVEVSRkFDRV9NT0RFXzVHQkFTRVI7XFxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYy0zNTgtXFxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYzozNTk6XFx0aWYgKHBoeWxpbmtfdGVzdChsaW5rX21vZGVzLCAyNTAwYmFzZVhfRnVsbCkgfHxcXG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jOjM2MDpcXHQgICAgcGh5bGlua190ZXN0KGxpbmtfbW9kZXMsIDI1MDBiYXNlVF9GdWxsKSlcXG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jLTM2MS1cXHRcXHRyZXR1cm4gUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWDtcXG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jLTM2Mi1cXG5kcml2ZXJzL25ldC9waHkvc2ZwLWJ1cy5jOjM2MzpcXHRpZiAocGh5bGlua190ZXN0KGxpbmtfbW9kZXMsIDEwMDBiYXNlVF9IYWxmKSB8fFxcbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmM6MzY0OlxcdCAgICBwaHlsaW5rX3Rlc3QobGlua19tb2RlcywgMTAwMGJhc2VUX0Z1bGwpKVxcbmRyaXZlcnMvbmV0L3BoeS9zZnAtYnVzLmMtMzY1LVxcdFxcdHJldHVybiBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk7XFxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYy0zNjYtXFxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYzozNjc6XFx0aWYgKHBoeWxpbmtfdGVzdChsaW5rX21vZGVzLCAxMDAwYmFzZVhfRnVsbCkpXFxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYy0zNjgtXFx0XFx0cmV0dXJuIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVg7XFxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYy0zNjktXFxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYzozNzA6XFx0aWYgKHBoeWxpbmtfdGVzdChsaW5rX21vZGVzLCAxMDBiYXNlRlhfRnVsbCkpXFxuZHJpdmVycy9uZXQvcGh5L3NmcC1idXMuYy0zNzEtXFx0XFx0cmV0dXJuIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDBCQVNFWDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6Mzk6NTcuNjY2NjU3NTY5WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzNTQ0NzE5MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBQSFkgRHJpdmVyIEluc3RhbnRpYXRpb24gYW5kIFRlc3RpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBmdW5jdGlvbnMsIGBwaHlfc3RhcnRfY2FibGVfdGVzdGAsIGBwaHlfc3RhcnRfY2FibGVfdGVzdF90ZHJgLCBhbmQgdGhlIGxpa2UsIGJ1dCBJJ20gbm90IHNlZWluZyBhIGdlbmVyaWMgd2F5IHRvIG1vY2sgYSBQSFkgZHJpdmVyIG9yIGEgY2xlYW4gbWVjaGFuaXNtIHRvIGluc3RhbnRpYXRlIGEgUEhZIGRyaXZlciBkaXJlY3RseSBmcm9tIHVzZXJzcGFjZS4gVGhhdCdzIGEgYml0IG9mIGEgcmVkIGZsYWcuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGVzZSBhcmUgZ2V0dGluZyBzZXQgdXAsIGVzcGVjaWFsbHkgaW4gYSB0ZXN0aW5nIGNvbnRleHQuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIGlmIFN5emthbGxlciBvZmZlcnMgYW55IGRlZGljYXRlZCBtZXRob2RzIGZvciB0ZXN0aW5nIFBIWSBkcml2ZXJzLCBiZWNhdXNlIGlmIGl0IGRvZXMsIGl0ICpoYXMqIHRvIGJlIGluc3RhbnRpYXRpbmcgdGhlbSBzb21laG93LiBTbywgdGhlIHF1ZXN0aW9uIGJlY29tZXMsIGhvdyBhcmUgUEhZIGRyaXZlcnMgdHlwaWNhbGx5IGJyb3VnaHQgdG8gbGlmZT8gSSBrbm93IHRoZSBjb21tb24gcGF0dGVybjogYG1kaW9idXNfcmVnaXN0ZXJgIHNjYW5zIHRoZSBNRElPIGJ1cywgcmVhZHMgdGhlIFBIWSBJRCwgYW5kIHRoZW4gaW5zdGFudGlhdGVzIHRoZSBgcGh5X2RldmljZWAgc3RydWN0dXJlLiBTaW1wbGUgZW5vdWdoIGluIGEgcmVhbC13b3JsZCBzY2VuYXJpby5cblxuVGhlIHByb2JsZW0gaGVyZSwgb2YgY291cnNlLCBpcyB0aGF0IHdpdGhvdXQgYWN0dWFsIGhhcmR3YXJlLCBgbWRpb2J1c19yZWdpc3RlcmAgd29uJ3QgZmluZCBhbnl0aGluZy4gVGhhdCBwb2ludHMgbWUgdG8gdGhlIGlkZWEgdGhhdCB0aGVyZSBoYXMgdG8gYmUgc29tZSBzb3J0IG9mIHNvZnR3YXJlLWVtdWxhdGVkIE1ESU8gYnVzIHRoYXQgdXNlcnNwYWNlIGNhbiBpbnRlcmFjdCB3aXRoLiBTbywgSSBuZWVkIHRvIGZpbmQgdGhlIGltcGxlbWVudGF0aW9uIG9mIHN1Y2ggYSBidXMuIExldCdzIHN0YXJ0IHdpdGggYSBxdWljayBzZWFyY2gsIHBlcmhhcHMgc29tZXRoaW5nIGxpa2UgYGRyaXZlcnMvbmV0L3BoeS9tZGlvLW1vY2t1cC5jYCBvciBzb21ldGhpbmcgYW5hbG9nb3VzLiBOb3BlLCBub3RoaW5nIHRoZXJlLiBPa2F5LCBsZXQncyB3aWRlbiB0aGUgc2VhcmNoIHNsaWdodGx5IGFuZCBzZWUgd2hhdCdzIGluIGBkcml2ZXJzL25ldC9tZGlvL2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNDMzLCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjQwOjAzLjAyMTEzMzQxOVoiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MTQ0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L21kaW8vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImFjcGlfbWRpby5jXCIsXG4gICAgXCJmd25vZGVfbWRpby5jXCIsXG4gICAgXCJtZGlvLWFpcm9oYS5jXCIsXG4gICAgXCJtZGlvLWFzcGVlZC5jXCIsXG4gICAgXCJtZGlvLWJjbS1pcHJvYy5jXCIsXG4gICAgXCJtZGlvLWJjbS11bmltYWMuY1wiLFxuICAgIFwibWRpby1iaXRiYW5nLmNcIixcbiAgICBcIm1kaW8tY2F2aXVtLmNcIixcbiAgICBcIm1kaW8tY2F2aXVtLmhcIixcbiAgICBcIm1kaW8tZ3Bpby5jXCIsXG4gICAgXCJtZGlvLWhpc2ktZmVtYWMuY1wiLFxuICAgIFwibWRpby1pMmMuY1wiLFxuICAgIFwibWRpby1pcHE0MDE5LmNcIixcbiAgICBcIm1kaW8taXBxODA2NC5jXCIsXG4gICAgXCJtZGlvLW1veGFydC5jXCIsXG4gICAgXCJtZGlvLW1zY2MtbWlpbS5jXCIsXG4gICAgXCJtZGlvLW11eC1iY20taXByb2MuY1wiLFxuICAgIFwibWRpby1tdXgtYmNtNjM2OC5jXCIsXG4gICAgXCJtZGlvLW11eC1ncGlvLmNcIixcbiAgICBcIm1kaW8tbXV4LW1lc29uLWcxMmEuY1wiLFxuICAgIFwibWRpby1tdXgtbWVzb24tZ3hsLmNcIixcbiAgICBcIm1kaW8tbXV4LW1taW9yZWcuY1wiLFxuICAgIFwibWRpby1tdXgtbXVsdGlwbGV4ZXIuY1wiLFxuICAgIFwibWRpby1tdXguY1wiLFxuICAgIFwibWRpby1tdnVzYi5jXCIsXG4gICAgXCJtZGlvLW9jdGVvbi5jXCIsXG4gICAgXCJtZGlvLXBpYzY0aHBzYy5jXCIsXG4gICAgXCJtZGlvLXJlYWx0ZWstcnRsOTMwMC5jXCIsXG4gICAgXCJtZGlvLXJlZ21hcC5jXCIsXG4gICAgXCJtZGlvLXN1bjRpLmNcIixcbiAgICBcIm1kaW8tdGh1bmRlci5jXCIsXG4gICAgXCJtZGlvLXhnZW5lLmNcIixcbiAgICBcIm9mX21kaW8uY1wiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBudWxsXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTo0MDowMy4wMjEyNzY4NTlaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI5MjY3MzQyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNRElPIERyaXZlciBFeHBsb3JhdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byBNRElPIGRyaXZlcnMsIGFuZCBpdCBzZWVtcyB0aGVyZSdzIGEgcmFuZ2Ugb2YgaW1wbGVtZW50YXRpb25zIGhlcmU6IGBtZGlvLWdwaW8uY2AsIGBtZGlvLWJpdGJhbmcuY2AsIGBtZGlvLWkyYy5jYCwgYG1kaW8tcmVnbWFwLmNgLCBhbmQgYG1kaW8tbXV4LWdwaW8uY2AuIE5vbmUgb2YgdGhlc2UgaW1tZWRpYXRlbHkganVtcCBvdXQgYXMgYmVpbmcgbW9jayBkcml2ZXJzLCB3aGljaCBpcyB3aGF0IEknbSBsb29raW5nIGZvciBpbiB0aGUgY29udGV4dCBvZiBmdXp6aW5nLiBIbW0uLi4gd2FpdCBhIG1pbnV0ZS4uLiAqbWRpby1tdnVzYi5jKi4uLiBhIFVTQiBNRElPIGJ1cz8hIFRoYXQncyBwb3RlbnRpYWxseSBpbnRlcmVzdGluZy5cblxuSWYgc3l6a2FsbGVyIGNhbiBlbXVsYXRlIFVTQiBkZXZpY2VzLCB3aGljaCBJICprbm93KiBpdCBjYW4gdmlhIGB2aGNpYCwgdGhlbiB0aGVvcmV0aWNhbGx5LCBpdCBzaG91bGQgYmUgYWJsZSB0byBlbXVsYXRlIGEgTWFydmVsbCBVU0IgTURJTyBkZXZpY2UhIFRoYXQgb3BlbnMgdXAgc29tZSBleGNpdGluZyBwb3NzaWJpbGl0aWVzIGZvciBmdXp6aW5nIHRoaXMgc3BlY2lmaWMgaW50ZXJmYWNlLiBMZXQncyBkaWcgaW50byBgbWRpby1tdnVzYi5jYCBhbmQgc2VlIHdoYXQgd2UncmUgd29ya2luZyB3aXRoIGhlcmUuIFRoaXMgY291bGQgYmUgYSBzb2xpZCB0YXJnZXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMzgzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE4LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTo0MDowNy4zMTM5NTQ2NDRaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NDc4NDgzNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpby1tdnVzYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9tZGlvL21kaW8tbXZ1c2IuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6NDA6MDcuNTA4NzQ4MloiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjYxNDAwMjUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIGBtZGlvLW12dXNiLmNgKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2YgaG93IHRoZSBNYXJ2ZWxsIFVTQiBNRElPIGRyaXZlciwgYG1kaW8tbXZ1c2IuY2AsIGlzIGltcGxlbWVudGVkLiBJIG5lZWQgdG8gcXVpY2tseSByZWNhbGwgdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgTURJTyBpbnRlcmZhY2UsIGFuZCBob3cgYSBVU0IgdHJhbnNwb3J0IG1pZ2h0IGludGVyYWN0IHdpdGggaXQuIFdoYXQgYXJlIHRoZSBrZXkgZGF0YSBzdHJ1Y3R1cmVzPyBIb3cgaXMgdGhlIE1ESU8gdHJhbnNhY3Rpb24gcHJvdG9jb2wgbWFwcGVkIG9udG8gVVNCIHRyYW5zZmVycz8gQXJlIHRoZXkgdXNpbmcgYnVsaywgaW50ZXJydXB0LCBvciBjb250cm9sIGVuZHBvaW50cz8gTW9yZSBpbXBvcnRhbnRseSwgd2hlcmUgZG9lcyB0aGUgY29kZSByZXNpZGU/IFRoaXMgY2hlY2sgaXMgbGlrZWx5IHJlbGF0ZWQgdG8gaXNzdWVzIGZyb20gcmVjZW50IGxvZ3MgYW5kIEkgbmVlZCB0byBhc3Nlc3MgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBkaWZmZXJlbnQgUEhZIHN0YXRlcywgZXJyb3IgY29uZGl0aW9ucywgYW5kIGludGVycnVwdCBzZXJ2aWNpbmcuIExldCdzIHNlZSBob3cgbXVjaCBvZiB0aGlzIGlzIGRvbmUgaW4gaGFyZHdhcmUgYW5kIGZpcm13YXJlLiBXaGF0IGFyZSB0aGUgdHlwaWNhbCByYWNlIGNvbmRpdGlvbnMgdG8gbG9vayBvdXQgZm9yLCB3aXRoIHVzYiBhbmQgTURJTz9cblxuXG4iLCJJbnB1dFRva2VucyI6MzE3NzAsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTo0MDoxMC43NzAxNTM3NloiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzYzMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvbWRpby9tZGlvLW12dXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdFxcbiAgIDM6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2tlcm5lbC5oXFx1MDAzZVxcbiAgIDQ6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbiAgIDU6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mX21kaW8uaFxcdTAwM2VcXG4gICA2OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9waHkuaFxcdTAwM2VcXG4gICA3OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC91c2IuaFxcdTAwM2VcXG4gICA4OlxcdFxcbiAgIDk6XFx0I2RlZmluZSBVU0JfTUFSVkVMTF9WSURcXHQweDEyODZcXG4gIDEwOlxcdFxcbiAgMTE6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIG12dXNiX21kaW9fdGFibGVbXSA9IHtcXG4gIDEyOlxcdFxcdHsgVVNCX0RFVklDRShVU0JfTUFSVkVMTF9WSUQsIDB4MWZhNCkgfSxcXG4gIDEzOlxcdFxcbiAgMTQ6XFx0XFx0e31cXG4gIDE1OlxcdH07XFxuICAxNjpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgbXZ1c2JfbWRpb190YWJsZSk7XFxuICAxNzpcXHRcXG4gIDE4OlxcdGVudW0ge1xcbiAgMTk6XFx0XFx0TVZVU0JfQ01EX1BSRUFNQkxFMCxcXG4gIDIwOlxcdFxcdE1WVVNCX0NNRF9QUkVBTUJMRTEsXFxuICAyMTpcXHRcXHRNVlVTQl9DTURfQUREUixcXG4gIDIyOlxcdFxcdE1WVVNCX0NNRF9WQUwsXFxuICAyMzpcXHR9O1xcbiAgMjQ6XFx0XFxuICAyNTpcXHRzdHJ1Y3QgbXZ1c2JfbWRpbyB7XFxuICAyNjpcXHRcXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldjtcXG4gIDI3OlxcdFxcdHN0cnVjdCBtaWlfYnVzICptZGlvO1xcbiAgMjg6XFx0XFxuICAyOTpcXHRcXHRfX2xlMTYgYnVmWzRdO1xcbiAgMzA6XFx0fTtcXG4gIDMxOlxcdFxcbiAgMzI6XFx0c3RhdGljIGludCBtdnVzYl9tZGlvX3JlYWQoc3RydWN0IG1paV9idXMgKm1kaW8sIGludCBkZXYsIGludCByZWcpXFxuICAzMzpcXHR7XFxuICAzNDpcXHRcXHRzdHJ1Y3QgbXZ1c2JfbWRpbyAqbXZ1c2IgPSBtZGlvLVxcdTAwM2Vwcml2O1xcbiAgMzU6XFx0XFx0aW50IGVyciwgYWxlbjtcXG4gIDM2OlxcdFxcbiAgMzc6XFx0XFx0bXZ1c2ItXFx1MDAzZWJ1ZltNVlVTQl9DTURfQUREUl0gPSBjcHVfdG9fbGUxNigweGE0MDAgfCAoZGV2IFxcdTAwM2NcXHUwMDNjIDUpIHwgcmVnKTtcXG4gIDM4OlxcdFxcbiAgMzk6XFx0XFx0ZXJyID0gdXNiX2J1bGtfbXNnKG12dXNiLVxcdTAwM2V1ZGV2LCB1c2Jfc25kYnVsa3BpcGUobXZ1c2ItXFx1MDAzZXVkZXYsIDIpLFxcbiAgNDA6XFx0XFx0XFx0XFx0ICAgbXZ1c2ItXFx1MDAzZWJ1ZiwgNiwgXFx1MDAyNmFsZW4sIDEwMCk7XFxuICA0MTpcXHRcXHRpZiAoZXJyKVxcbiAgNDI6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gIDQzOlxcdFxcbiAgNDQ6XFx0XFx0ZXJyID0gdXNiX2J1bGtfbXNnKG12dXNiLVxcdTAwM2V1ZGV2LCB1c2JfcmN2YnVsa3BpcGUobXZ1c2ItXFx1MDAzZXVkZXYsIDYpLFxcbiAgNDU6XFx0XFx0XFx0XFx0ICAgXFx1MDAyNm12dXNiLVxcdTAwM2VidWZbTVZVU0JfQ01EX1ZBTF0sIDIsIFxcdTAwMjZhbGVuLCAxMDApO1xcbiAgNDY6XFx0XFx0aWYgKGVycilcXG4gIDQ3OlxcdFxcdFxcdHJldHVybiBlcnI7XFxuICA0ODpcXHRcXG4gIDQ5OlxcdFxcdHJldHVybiBsZTE2X3RvX2NwdShtdnVzYi1cXHUwMDNlYnVmW01WVVNCX0NNRF9WQUxdKTtcXG4gIDUwOlxcdH1cXG4gIDUxOlxcdFxcbiAgNTI6XFx0c3RhdGljIGludCBtdnVzYl9tZGlvX3dyaXRlKHN0cnVjdCBtaWlfYnVzICptZGlvLCBpbnQgZGV2LCBpbnQgcmVnLCB1MTYgdmFsKVxcbiAgNTM6XFx0e1xcbiAgNTQ6XFx0XFx0c3RydWN0IG12dXNiX21kaW8gKm12dXNiID0gbWRpby1cXHUwMDNlcHJpdjtcXG4gIDU1OlxcdFxcdGludCBhbGVuO1xcbiAgNTY6XFx0XFxuICA1NzpcXHRcXHRtdnVzYi1cXHUwMDNlYnVmW01WVVNCX0NNRF9BRERSXSA9IGNwdV90b19sZTE2KDB4ODAwMCB8IChkZXYgXFx1MDAzY1xcdTAwM2MgNSkgfCByZWcpO1xcbiAgNTg6XFx0XFx0bXZ1c2ItXFx1MDAzZWJ1ZltNVlVTQl9DTURfVkFMXSAgPSBjcHVfdG9fbGUxNih2YWwpO1xcbiAgNTk6XFx0XFxuICA2MDpcXHRcXHRyZXR1cm4gdXNiX2J1bGtfbXNnKG12dXNiLVxcdTAwM2V1ZGV2LCB1c2Jfc25kYnVsa3BpcGUobXZ1c2ItXFx1MDAzZXVkZXYsIDIpLFxcbiAgNjE6XFx0XFx0XFx0XFx0ICAgIG12dXNiLVxcdTAwM2VidWYsIDgsIFxcdTAwMjZhbGVuLCAxMDApO1xcbiAgNjI6XFx0fVxcbiAgNjM6XFx0XFxuICA2NDpcXHRzdGF0aWMgaW50IG12dXNiX21kaW9fcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSxcXG4gIDY1OlxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuICA2NjpcXHR7XFxuICA2NzpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2aW50ZXJmYWNlLVxcdTAwM2VkZXY7XFxuICA2ODpcXHRcXHRzdHJ1Y3QgbXZ1c2JfbWRpbyAqbXZ1c2I7XFxuICA2OTpcXHRcXHRzdHJ1Y3QgbWlpX2J1cyAqbWRpbztcXG4gIDcwOlxcdFxcbiAgNzE6XFx0XFx0bWRpbyA9IGRldm1fbWRpb2J1c19hbGxvY19zaXplKGRldiwgc2l6ZW9mKCptdnVzYikpO1xcbiAgNzI6XFx0XFx0aWYgKCFtZGlvKVxcbiAgNzM6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuICA3NDpcXHRcXG4gIDc1OlxcdFxcdG12dXNiID0gbWRpby1cXHUwMDNlcHJpdjtcXG4gIDc2OlxcdFxcdG12dXNiLVxcdTAwM2VtZGlvID0gbWRpbztcXG4gIDc3OlxcdFxcdG12dXNiLVxcdTAwM2V1ZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRlcmZhY2UpO1xcbiAgNzg6XFx0XFxuICA3OTpcXHRcXHQvKiBSZXZlcnNlZCBmcm9tIFVTQiBQQ0FQcywgbm8gaWRlYSB3aGF0IHRoZXNlIG1lYW4uICovXFxuICA4MDpcXHRcXHRtdnVzYi1cXHUwMDNlYnVmW01WVVNCX0NNRF9QUkVBTUJMRTBdID0gY3B1X3RvX2xlMTYoMHhlODAwKTtcXG4gIDgxOlxcdFxcdG12dXNiLVxcdTAwM2VidWZbTVZVU0JfQ01EX1BSRUFNQkxFMV0gPSBjcHVfdG9fbGUxNigweDAwMDEpO1xcbiAgODI6XFx0XFxuICA4MzpcXHRcXHRzbnByaW50ZihtZGlvLVxcdTAwM2VpZCwgTUlJX0JVU19JRF9TSVpFLCBcXFwibXZ1c2ItJXNcXFwiLCBkZXZfbmFtZShkZXYpKTtcXG4gIDg0OlxcdFxcdG1kaW8tXFx1MDAzZW5hbWUgPSBtZGlvLVxcdTAwM2VpZDtcXG4gIDg1OlxcdFxcdG1kaW8tXFx1MDAzZXBhcmVudCA9IGRldjtcXG4gIDg2OlxcdFxcdG1kaW8tXFx1MDAzZXJlYWQgPSBtdnVzYl9tZGlvX3JlYWQ7XFxuICA4NzpcXHRcXHRtZGlvLVxcdTAwM2V3cml0ZSA9IG12dXNiX21kaW9fd3JpdGU7XFxuICA4ODpcXHRcXG4gIDg5OlxcdFxcdHVzYl9zZXRfaW50ZmRhdGEoaW50ZXJmYWNlLCBtdnVzYik7XFxuICA5MDpcXHRcXG4gIDkxOlxcdFxcdHJldHVybiBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIGRldi1cXHUwMDNlb2Zfbm9kZSk7XFxuICA5MjpcXHR9XFxuICA5MzpcXHRcXG4gIDk0OlxcdHN0YXRpYyB2b2lkIG12dXNiX21kaW9fZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxcbiAgOTU6XFx0e1xcbiAgOTY6XFx0XFx0c3RydWN0IG12dXNiX21kaW8gKm12dXNiID0gdXNiX2dldF9pbnRmZGF0YShpbnRlcmZhY2UpO1xcbiAgOTc6XFx0XFxuICA5ODpcXHRcXHRtZGlvYnVzX3VucmVnaXN0ZXIobXZ1c2ItXFx1MDAzZW1kaW8pO1xcbiAgOTk6XFx0XFx0dXNiX3NldF9pbnRmZGF0YShpbnRlcmZhY2UsIE5VTEwpO1xcbiAxMDA6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTo0MDoxMC43NzAyOTE5MloiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MjIyMDM2Mzg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIFN5emthbGxlcidzIFBvdGVudGlhbCBmb3IgVGVzdGluZyB0aGUgYGRhcDgyMTFyYCBQSFkgRHJpdmVyKipcblxuT2theSwgdGhpcyBpcyBleGNpdGluZyEgSSBzZWUgdGhhdCBgbWRpby1tdnVzYmAgaXMgYSBVU0IgTURJTyBidXMgZHJpdmVyLCBhbmQgU3l6a2FsbGVyIGNhbiBlbXVsYXRlIGEgVVNCIGRldmljZSB1c2luZyBgdmhjaWAuIFRoZSBiZWF1dHkgb2YgdGhpcyBpcyB0aGF0IHdoZW4gU3l6a2FsbGVyIHByZXNlbnRzIGEgVVNCIGRldmljZSB3aXRoIGBpZFZlbmRvcj0weDEyODZgIGFuZCBgaWRQcm9kdWN0PTB4MWZhNGAsIHRoZSBgbWRpby1tdnVzYmAgZHJpdmVyIHdpbGwgcHJvYmUuIEl0IHRoZW4gYWxsb2NhdGVzIGFuZCByZWdpc3RlcnMgYW4gTURJTyBidXMuIENydWNpYWxseSwgdGhpcyBNRElPIGJ1cyB3aWxsIHN1YnNlcXVlbnRseSBzY2FuIGZvciBQSFlzIGJ5IHJlYWRpbmcgcmVnaXN0ZXJzIDIgYW5kIDMg4oCTIHRoZSBQSFkgSUQg4oCTIHZpYSB0aGUgYG12dXNiX21kaW9fcmVhZGAgZnVuY3Rpb24uXG5cbk5vdywgaGVyZSdzIHdoZXJlIFN5emthbGxlciBnZXRzIHRvIHNoaW5lLiBgbXZ1c2JfbWRpb19yZWFkYCBzZW5kcyBhIFVTQiBidWxrIG1lc3NhZ2UgdG8gdGhlIGVtdWxhdGVkIGRldmljZSwgd2hpY2ggbWVhbnMgU3l6a2FsbGVyIGNhbiBpbmplY3QgKndoYXRldmVyKiBkYXRhIGl0IGxpa2VzIGluIHJlc3BvbnNlISBUaGUgc3lzdGVtIGlzIHNldCB1cCB0byBhbGxvdyBTeXprYWxsZXIgdG8gY29udHJvbCB0aGUgUEhZIElELiBJIGNhbiBjcmFmdCB0aGUgcmVzcG9uc2UgdG8gYG12dXNiX21kaW9fcmVhZGAgdG8gZ2l2ZSB1cyBgMHgwMDA4YCBhbmQgYDB4MDExQmAgZm9yIHJlZ2lzdGVycyAyIGFuZCAzISBCaW5nby5cblxuVGhlIE1ESU8gYnVzIHdpbGwgdGhlbiBjcmVhdGUgYSBQSFkgZGV2aWNlIHdpdGggUEhZIElEIGAweDAwMDgwMTFCYCwgYW5kICp0aGF0KiB3aWxsIGNhdXNlIHRoZSBgZGFwODIxMXJgIFBIWSBkcml2ZXIgdG8gYmluZCB0byBpdCEgVGhpcywgaW4gdHVybiwgd2lsbCB0cmlnZ2VyIGEgY2FsbCB0byBgZGFwODIxMXJfY29uZmlnX2luaXRgLiBCcmlsbGlhbnQhIFN5emthbGxlciBoYXMgYSBjbGVhciBwYXRoIHRvIGdldCB0byB0aGlzIGNyaXRpY2FsIGZ1bmN0aW9uLiBUaGlzIGlzIGFic29sdXRlbHkgYW4gYXZlbnVlIGZvciB0ZXN0aW5nIHRoZSBgZGFwODIxMXJgIFBIWSBkcml2ZXIhXG5cbkhvd2V2ZXIsIGEgcXVlc3Rpb24gYXJpc2VzLiBgZGFwODIxMXJfY29uZmlnX2luaXRgIGNoZWNrcyBgcGh5X2ludGVyZmFjZV9pc19yZ21paShwaHlkZXYpYC4gQnV0IGhvdyBpcyB0aGUgUEhZIGludGVyZmFjZSBtb2RlIHNldD8gTm9ybWFsbHksIHRoaXMgaXMgZG9uZSBieSB0aGUgTUFDIGRyaXZlciB3aGVuIGl0IGNhbGxzIGBwaHlfY29ubmVjdGAgb3IgYHBoeV9hdHRhY2hgLiBCdXQgaGVyZSdzIHRoZSBjYXRjaDogdGhlIFBIWSBpcyBiZWluZyBjcmVhdGVkIGRpcmVjdGx5IG9uIHRoZSBNRElPIGJ1cy4gSXQncyAqbm90KiBhdHRhY2hlZCB0byBhbnkgTUFDIHlldC4gSXMgYGRhcDgyMTFyX2NvbmZpZ19pbml0YCBhY3R1YWxseSBjYWxsZWQgZHVyaW5nIHByb2JlPyBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIGBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jYCB0byBzZWUgcHJlY2lzZWx5IHdoZW4gYGNvbmZpZ19pbml0YCBpcyBpbnZva2VkLiBJdCBjb3VsZCBiZSBwYXJ0IG9mIHRoZSBpbml0aWFsIHByb2JlIHByb2Nlc3MsIHdoaWNoIHdvdWxkIGJlIGlkZWFsLiBJIG5lZWQgdG8ga25vdyB0aGUgc3RhdGUgb2YgdGhlIFBIWSB3aGVuIGBjb25maWdfaW5pdGAgaXMgY2FsbGVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgaW50ZXJmYWNlIGNoZWNrLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzU1NywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjQwOjE3Ljk5MjMzMjUxNFoiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk2MzE1OTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZ19pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xMzQxPWludCBwaHlfaW5pdF9odyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMzY1LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTM2NjpcXHRpZiAocGh5ZGV2LVxcdTAwM2VkcnYtXFx1MDAzZWNvbmZpZ19pbml0KSB7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMzY3OlxcdFxcdHJldCA9IHBoeWRldi1cXHUwMDNlZHJ2LVxcdTAwM2Vjb25maWdfaW5pdChwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTM2OC1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6NDA6MTguMTg4NjU3NTA5WiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNTM3OTUzMzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSdtIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDpcblxuKipVbmRlcnN0YW5kaW5nIHRoZSBUaW1pbmcgb2YgYHBoeV9pbml0X2h3YCoqXG5cblJpZ2h0LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgYHBoeV9pbml0X2h3YC4gVGhlIGNydWNpYWwgcXVlc3Rpb24gSSdtIGdyYXBwbGluZyB3aXRoIGlzICp3aGVuKiBpcyB0aGlzIGZ1bmN0aW9uIGFjdHVhbGx5IGludm9rZWQgd2l0aGluIHRoZSBicm9hZGVyIHN5c3RlbSBpbml0aWFsaXphdGlvbiBmbG93PyBJJ20gdHJ5aW5nIHRvIHBpbiBkb3duIHRoZSBleGFjdCBzZXF1ZW5jZSBvZiBldmVudHMuIElzIGl0IGNhbGxlZCBlYXJseSwgbWF5YmUgZHVyaW5nIHRoZSBkZXZpY2UgZHJpdmVyJ3MgcHJvYmUgcm91dGluZT8gT3IgcGVyaGFwcyBpdCdzIGRlZmVycmVkIHRvIGEgbGF0ZXIgc3RhZ2UsIGxpa2UgZHVyaW5nIG5ldHdvcmsgaW50ZXJmYWNlIGJyaW5nLXVwPyBLbm93aW5nIHRoaXMgaXMgZnVuZGFtZW50YWwgZm9yIGRlYnVnZ2luZyBhbmQgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgaW52b2x2ZWQgaW4gaW5pdGlhbGl6aW5nIHRoZSBwaHlzaWNhbCBsYXllci4gSSdsbCBuZWVkIHRvIGRpZyB0aHJvdWdoIHRoZSBkcml2ZXIgY29kZSBhbmQgdGhlIHBsYXRmb3JtIGluaXRpYWxpemF0aW9uIHNjcmlwdHMgdG8gdHJhY2UgdGhlIGNhbGxpbmcgcGF0aC4gQW5kLCBvZiBjb3Vyc2UsIEknbSBhc3N1bWluZyBpdCdzIGhhcmR3YXJlLXNwZWNpZmljLCByZXF1aXJpbmcgbWUgdG8gbG9vayBhdCB0aGUgcmVsZXZhbnQgZGF0YSBzaGVldHMgYW5kIHJlZmVyZW5jZSBtYW51YWxzLiBVbHRpbWF0ZWx5LCBkZXRlcm1pbmluZyB0aGUgdGltaW5nIGlzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhlIGhhcmR3YXJlIGlzIGluaXRpYWxpemVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDczNCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjQwOjIxLjU0MjQ1ODE0N1oiLCJTZXEiOjQ4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYxNDAyOTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeV9pbml0X2h3XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0zNzg9c3RhdGljIF9fbWF5YmVfdW51c2VkIGludCBtZGlvX2J1c19waHlfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzk4LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6Mzk5OlxcdHJldCA9IHBoeV9pbml0X2h3KHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy00MDAtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTEzMDU9RVhQT1JUX1NZTUJPTChwaHlfZGlzY29ubmVjdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEzMjEtICogICBlZmZvcnQgdG8gc3VwcG9ydCBzdWNoIGJyb2tlbiBQSFlzLCB0aGlzIGZ1bmN0aW9uIGlzIHNlcGFyYXRlIGZyb20gdGhlXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMzIyOiAqICAgc3RhbmRhcmQgcGh5X2luaXRfaHcoKSB3aGljaCB3aWxsIHplcm8gYWxsIHRoZSBvdGhlciBiaXRzIGluIHRoZSBCTUNSXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMzIzLSAqICAgYW5kIHJlYXBwbHkgYWxsIGRyaXZlci1zcGVjaWZpYyBhbmQgYm9hcmQtc3BlY2lmaWMgZml4dXBzLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xMzI1PXN0YXRpYyBpbnQgcGh5X3BvbGxfcmVzZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTM0MC1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjEzNDE6aW50IHBoeV9pbml0X2h3KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMzQyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTM4Ny19XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMzg4OkVYUE9SVF9TWU1CT0wocGh5X2luaXRfaHcpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTM4OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTc1Mj1pbnQgcGh5X2F0dGFjaF9kaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTg3NC1cXHQgKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE4NzU6XFx0ZXJyID0gcGh5X2luaXRfaHcocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE4NzYtXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6NDA6MjEuODAzODcyNTgxWiIsIlNlcSI6NDksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MTU5NDQ1MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlLCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKlRyYWNpbmcgdGhlIFBIWSBJbml0aWFsaXphdGlvbiBQYXRoKipcblxuUmlnaHQsIGxldCBtZSBzZWUuLi4gYHBoeV9pbml0X2h3YCBpcyBkZWZpbml0ZWx5IHRyaWdnZXJlZCB3aXRoaW4gdGhlIGBwaHlfYXR0YWNoX2RpcmVjdGAgZnVuY3Rpb24uIEFuZCBJIGtub3cgdGhhdCBgcGh5X2F0dGFjaF9kaXJlY3RgIGlzIGNhbGxlZCB3aGVuIGEgTUFDIGRyaXZlciwgcmlnaHQgaW4gaXRzIGBjb25uZWN0YCBjYWxsYmFjaywgbGlua3MgdXAgd2l0aCB0aGUgUEhZLiBTbyBmYXIsIHNvIGdvb2QuIFRoYXQncyB0aGUgbm9ybWFsIGRhdGEgcGF0aC5cblxuQnV0IHRoZSByZWFsIHF1ZXN0aW9uIEkgbmVlZCB0byBhc2sgbXlzZWxmIGhlcmUgaXMgd2hldGhlciBgcGh5X2luaXRfaHdgIGlzIGFsc28gZ2V0dGluZyBjYWxsZWQgZHVyaW5nIHRoYXQgaW5pdGlhbCBQSFkgKnByb2JlKiBwaGFzZS4gSSBuZWVkIHRvIGJlIHN1cmUgdGhlIGhhcmR3YXJlIGlzIGJlaW5nIGluaXRpYWxpemVkIGluIHRoZSBwcm9wZXIgb3JkZXIuIFRoYXQgc3RhcnR1cCBzZXF1ZW5jZSBpcyB3aGVyZSB0aGluZ3MgdGVuZCB0byBnbyBzaWRld2F5cyBpZiB5b3UncmUgbm90IGNhcmVmdWwuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgZGV0ZXJtaW5pbmcgaG93IHRvIGRlYnVnIGFueSBwb3RlbnRpYWwgUEhZLXJlbGF0ZWQgaXNzdWVzIGxhdGVyIG9uLiBMZXQgbWUga2VlcCBkaWdnaW5nLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NTUyLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6NDA6MjUuMzE5ODIxNjA1WiIsIlNlcSI6NTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzA2Mzc3OTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5X2luaXRfaHdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTM3OD1zdGF0aWMgX19tYXliZV91bnVzZWQgaW50IG1kaW9fYnVzX3BoeV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zOTgtXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzozOTk6XFx0cmV0ID0gcGh5X2luaXRfaHcocGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTQwMC1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTMwNT1FWFBPUlRfU1lNQk9MKHBoeV9kaXNjb25uZWN0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTMyMS0gKiAgIGVmZm9ydCB0byBzdXBwb3J0IHN1Y2ggYnJva2VuIFBIWXMsIHRoaXMgZnVuY3Rpb24gaXMgc2VwYXJhdGUgZnJvbSB0aGVcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjEzMjI6ICogICBzdGFuZGFyZCBwaHlfaW5pdF9odygpIHdoaWNoIHdpbGwgemVybyBhbGwgdGhlIG90aGVyIGJpdHMgaW4gdGhlIEJNQ1JcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEzMjMtICogICBhbmQgcmVhcHBseSBhbGwgZHJpdmVyLXNwZWNpZmljIGFuZCBib2FyZC1zcGVjaWZpYyBmaXh1cHMuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTEzMjU9c3RhdGljIGludCBwaHlfcG9sbF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMzQwLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTM0MTppbnQgcGh5X2luaXRfaHcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEzNDIte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMzg3LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjEzODg6RVhQT1JUX1NZTUJPTChwaHlfaW5pdF9odyk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMzg5LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xNzUyPWludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xODc0LVxcdCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTg3NTpcXHRlcnIgPSBwaHlfaW5pdF9odyhwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTg3Ni1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTo0MDoyNS41NTA0NjU3NzlaIiwiU2VxIjo1MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQzNjcyMjkxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSG1tLCBUaGF0J3MgVW5leHBlY3RlZC4qKlxuXG5XYWl0IGEgbWludXRlLi4uIEknbSBsb29raW5nIGF0IGBwaHlfcHJvYmVgIGluIGBwaHlfZGV2aWNlLmNgIGFuZCBzb21ldGhpbmcganVzdCBkb2Vzbid0IHNpdCByaWdodC4gSSdkICphc3N1bWVkKiB0aGF0IHRoZSBwcm9iaW5nIHByb2Nlc3Mgd291bGQgaW5oZXJlbnRseSBpbmNsdWRlIGFuIGluaXRpYWxpemF0aW9uIHN0ZXAsIHBhcnRpY3VsYXJseSBzb21ldGhpbmcgbGlrZSBgcGh5X2luaXRfaHdgLiBJdCdzIGFsbW9zdCBheGlvbWF0aWMgdGhhdCB5b3UnZCBuZWVkIHRvIGluaXRpYWxpemUgdGhlIGhhcmR3YXJlIHRvIGFjdHVhbGx5ICpwcm9iZSogaXQgZWZmZWN0aXZlbHksIHJpZ2h0PyBPdGhlcndpc2UsIHdoYXQgYXJlIHlvdSBldmVuIGxvb2tpbmcgZm9yPyBZb3UgY2FuJ3QganVzdCBleHBlY3QgaXQgdG8gbWFnaWNhbGx5IHdvcmsgd2l0aG91dCBwdXR0aW5nIGl0IGluIGEga25vd24sIGJhc2VsaW5lIHN0YXRlLiBUaGlzIGNhbGxzIGZvciBhIGNsb3NlciBpbnNwZWN0aW9uIG9mIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCB0aGUgaW50ZW5kZWQgYXJjaGl0ZWN0dXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nICpiZWZvcmUqIGBwaHlfcHJvYmVgLCBhbmQgaWYgdGhlIGluaXRpYWxpemF0aW9uIGlzIGJlaW5nIGRlZmVycmVkLCBvciBwZXJoYXBzIGhhbmRsZWQgaW4gYSBjb21wbGV0ZWx5IGRpZmZlcmVudCB3YXkgdGhhbiBJJ2QgZXhwZWN0LiBJcyB0aGVyZSBhIHNlcGFyYXRlLCBleHBsaWNpdCBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBjYWxsZWQgZWFybGllciwgcGVyaGFwcyB0aHJvdWdoIGEgZGV2aWNlIHRyZWUgb3IgcGxhdGZvcm0tc3BlY2lmaWMgZHJpdmVyIHNldHVwPyBPciBhbSBJIG1pc3Npbmcgc29tZXRoaW5nIGFsdG9nZXRoZXI/IFRoZXJlIG1pZ2h0IGJlIGFuIGludGVyZXN0aW5nIGRlc2lnbiBjaG9pY2UgaGVyZSBhbmQgSSB3YW50IHRvIHVuZGVyc3RhbmQgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2MzczLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6NDA6MjguOTg3MTkzMTQ1WiIsIlNlcSI6NTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDc5Mzk3MjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5X3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0zNjUyPUVYUE9SVF9TWU1CT0xfR1BMKGZ3bm9kZV9nZXRfcGh5X25vZGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zNjU0LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MzY1NTogKiBwaHlfcHJvYmUgLSBwcm9iZSBhbmQgaW5pdCBhIFBIWSBkZXZpY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM2NTYtICogQGRldjogZGV2aWNlIHRvIHByb2JlIGFuZCBpbml0XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM2NTktICovXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzozNjYwOnN0YXRpYyBpbnQgcGh5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTM2NjEte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0zODM5PXN0YXRpYyBpbnQgcGh5X2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgcGh5X2RyaXZlciAqbmV3X2RyaXZlcixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMzg2NS1cXHRuZXdfZHJpdmVyLVxcdTAwM2VtZGlvZHJ2LmRyaXZlci5idXMgPSBcXHUwMDI2bWRpb19idXNfdHlwZTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjM4NjY6XFx0bmV3X2RyaXZlci1cXHUwMDNlbWRpb2Rydi5kcml2ZXIucHJvYmUgPSBwaHlfcHJvYmU7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0zODY3LVxcdG5ld19kcml2ZXItXFx1MDAzZW1kaW9kcnYuZHJpdmVyLnJlbW92ZSA9IHBoeV9yZW1vdmU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjQwOjI5LjMzNTE0NjA2N1oiLCJTZXEiOjUzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjgzOTMyNzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgYHBoeV9wcm9iZWAgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgYHBoeV9wcm9iZWAgaW1wbGVtZW50YXRpb24uIEkgbmVlZCB0byBnZXQgYSBzb2xpZCBncmFzcCBvZiBob3cgdGhpcyBmdW5jdGlvbiBpcyBoYW5kbGluZyBQSFkgZGV0ZWN0aW9uIGFuZCBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgYW5kIHZlcmlmeSB0aGUgc3BlY2lmaWMgbWV0aG9kcyB1c2VkLiBJcyBpdCB1c2luZyBhdXRvbmVnb3RpYXRpb24/IEFyZSB0aGVyZSBzcGVjaWZpYyByZWdpc3RlciByZWFkcyBhbmQgd3JpdGVzIGludm9sdmVkPyBXaGF0IGFyZSB0aGUgcG90ZW50aWFsIGZhaWx1cmUgcG9pbnRzPyBJIG5lZWQgdG8gbG9vayBjbG9zZWx5IGF0IHRoZSBlcnJvciBoYW5kbGluZywgZXNwZWNpYWxseSBjb25jZXJuaW5nIHdoaWNoIFBIWSB0eXBlcyBpdCdzIGF0dGVtcHRpbmcgdG8gZGV0ZWN0IGFuZCBzdXBwb3J0LiBJIGFsc28gbmVlZCB0byBzZWUgaWYgaXQgZ3JhY2VmdWxseSBoYW5kbGVzIHNpdHVhdGlvbnMgd2hlcmUgdGhlIFBIWSBtaWdodCBub3QgYmUgaW1tZWRpYXRlbHkgcmVzcG9uc2l2ZS4gSSB3YW50IHRvIGNoZWNrIGZvciByYWNlIGNvbmRpdGlvbnMsIGVzcGVjaWFsbHkgaWYgdGhlcmUncyBhbnkgaW50ZXJydXB0LWRyaXZlbiBsb2dpYyBpbnZvbHZlZCBpbiB0aGUgZGV0ZWN0aW9uIHByb2Nlc3MuIEFyZSB0aGVyZSBhbnkgYXNzdW1wdGlvbnMgYmVpbmcgbWFkZSBhYm91dCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBvciBkcml2ZXIgZW52aXJvbm1lbnQgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIEkgc2hvdWxkIGlkZW50aWZ5IHJpZ2h0IG5vdz8gVGhpcyBpcyBhbGwgYWJvdXQgdmVyaWZ5aW5nIHRoZSByb2J1c3RuZXNzIGFuZCBlZmZpY2llbmN5IG9mIHRoZSBwcm9iZSBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzAxNSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjQwOjMzLjAxOTA4MjQxN1oiLCJTZXEiOjU0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTc2NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzNjUwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzY1MDpcXHRcXHRyZXR1cm4gZndub2RlX2ZpbmRfcmVmZXJlbmNlKGZ3bm9kZSwgXFxcInBoeS1kZXZpY2VcXFwiLCAwKTtcXG4zNjUxOlxcdH1cXG4zNjUyOlxcdEVYUE9SVF9TWU1CT0xfR1BMKGZ3bm9kZV9nZXRfcGh5X25vZGUpO1xcbjM2NTM6XFx0XFxuMzY1NDpcXHQvKipcXG4zNjU1OlxcdCAqIHBoeV9wcm9iZSAtIHByb2JlIGFuZCBpbml0IGEgUEhZIGRldmljZVxcbjM2NTY6XFx0ICogQGRldjogZGV2aWNlIHRvIHByb2JlIGFuZCBpbml0XFxuMzY1NzpcXHQgKlxcbjM2NTg6XFx0ICogVGFrZSBjYXJlIG9mIHNldHRpbmcgdXAgdGhlIHBoeV9kZXZpY2Ugc3RydWN0dXJlLCBzZXQgdGhlIHN0YXRlIHRvIFJFQURZLlxcbjM2NTk6XFx0ICovXFxuMzY2MDpcXHRzdGF0aWMgaW50IHBoeV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuMzY2MTpcXHR7XFxuMzY2MjpcXHRcXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2ID0gdG9fcGh5X2RldmljZShkZXYpO1xcbjM2NjM6XFx0XFx0c3RydWN0IGRldmljZV9kcml2ZXIgKmRydiA9IHBoeWRldi1cXHUwMDNlbWRpby5kZXYuZHJpdmVyO1xcbjM2NjQ6XFx0XFx0c3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydiA9IHRvX3BoeV9kcml2ZXIoZHJ2KTtcXG4zNjY1OlxcdFxcdGludCBlcnIgPSAwO1xcbjM2NjY6XFx0XFxuMzY2NzpcXHRcXHRwaHlkZXYtXFx1MDAzZWRydiA9IHBoeWRydjtcXG4zNjY4OlxcdFxcbjM2Njk6XFx0XFx0LyogRGlzYWJsZSB0aGUgaW50ZXJydXB0IGlmIHRoZSBQSFkgZG9lc24ndCBzdXBwb3J0IGl0XFxuMzY3MDpcXHRcXHQgKiBidXQgdGhlIGludGVycnVwdCBpcyBzdGlsbCBhIHZhbGlkIG9uZVxcbjM2NzE6XFx0XFx0ICovXFxuMzY3MjpcXHRcXHRpZiAoIXBoeV9kcnZfc3VwcG9ydHNfaXJxKHBoeWRydikgXFx1MDAyNlxcdTAwMjYgcGh5X2ludGVycnVwdF9pc192YWxpZChwaHlkZXYpKVxcbjM2NzM6XFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2VpcnEgPSBQSFlfUE9MTDtcXG4zNjc0OlxcdFxcbjM2NzU6XFx0XFx0aWYgKHBoeWRydi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBQSFlfSVNfSU5URVJOQUwpXFxuMzY3NjpcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZWlzX2ludGVybmFsID0gdHJ1ZTtcXG4zNjc3OlxcdFxcbjM2Nzg6XFx0XFx0LyogRGVhc3NlcnQgdGhlIHJlc2V0IHNpZ25hbCAqL1xcbjM2Nzk6XFx0XFx0cGh5X2RldmljZV9yZXNldChwaHlkZXYsIDApO1xcbjM2ODA6XFx0XFxuMzY4MTpcXHRcXHRpZiAocGh5ZGV2LVxcdTAwM2VkcnYtXFx1MDAzZXByb2JlKSB7XFxuMzY4MjpcXHRcXHRcXHRlcnIgPSBwaHlkZXYtXFx1MDAzZWRydi1cXHUwMDNlcHJvYmUocGh5ZGV2KTtcXG4zNjgzOlxcdFxcdFxcdGlmIChlcnIpXFxuMzY4NDpcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4zNjg1OlxcdFxcdH1cXG4zNjg2OlxcdFxcbjM2ODc6XFx0XFx0cGh5X2Rpc2FibGVfaW50ZXJydXB0cyhwaHlkZXYpO1xcbjM2ODg6XFx0XFxuMzY4OTpcXHRcXHQvKiBTdGFydCBvdXQgc3VwcG9ydGluZyBldmVyeXRoaW5nLiBFdmVudHVhbGx5LFxcbjM2OTA6XFx0XFx0ICogYSBjb250cm9sbGVyIHdpbGwgYXR0YWNoLCBhbmQgbWF5IG1vZGlmeSBvbmVcXG4zNjkxOlxcdFxcdCAqIG9yIGJvdGggb2YgdGhlc2UgdmFsdWVzXFxuMzY5MjpcXHRcXHQgKi9cXG4zNjkzOlxcdFxcdGlmIChwaHlkcnYtXFx1MDAzZWZlYXR1cmVzKSB7XFxuMzY5NDpcXHRcXHRcXHRsaW5rbW9kZV9jb3B5KHBoeWRldi1cXHUwMDNlc3VwcG9ydGVkLCBwaHlkcnYtXFx1MDAzZWZlYXR1cmVzKTtcXG4zNjk1OlxcdFxcdFxcdGdlbnBoeV9jNDVfcmVhZF9lZWVfYWJpbGl0aWVzKHBoeWRldik7XFxuMzY5NjpcXHRcXHR9XFxuMzY5NzpcXHRcXHRlbHNlIGlmIChwaHlkcnYtXFx1MDAzZWdldF9mZWF0dXJlcylcXG4zNjk4OlxcdFxcdFxcdGVyciA9IHBoeWRydi1cXHUwMDNlZ2V0X2ZlYXR1cmVzKHBoeWRldik7XFxuMzY5OTpcXHRcXHRlbHNlIGlmIChwaHlkZXYtXFx1MDAzZWlzX2M0NSlcXG4zNzAwOlxcdFxcdFxcdGVyciA9IGdlbnBoeV9jNDVfcG1hX3JlYWRfYWJpbGl0aWVzKHBoeWRldik7XFxuMzcwMTpcXHRcXHRlbHNlXFxuMzcwMjpcXHRcXHRcXHRlcnIgPSBnZW5waHlfcmVhZF9hYmlsaXRpZXMocGh5ZGV2KTtcXG4zNzAzOlxcdFxcbjM3MDQ6XFx0XFx0aWYgKGVycilcXG4zNzA1OlxcdFxcdFxcdGdvdG8gb3V0O1xcbjM3MDY6XFx0XFxuMzcwNzpcXHRcXHRpZiAoIWxpbmttb2RlX3Rlc3RfYml0KEVUSFRPT0xfTElOS19NT0RFX0F1dG9uZWdfQklULFxcbjM3MDg6XFx0XFx0XFx0XFx0ICAgICAgIHBoeWRldi1cXHUwMDNlc3VwcG9ydGVkKSlcXG4zNzA5OlxcdFxcdFxcdHBoeWRldi1cXHUwMDNlYXV0b25lZyA9IDA7XFxuMzcxMDpcXHRcXG4zNzExOlxcdFxcdGlmIChsaW5rbW9kZV90ZXN0X2JpdChFVEhUT09MX0xJTktfTU9ERV8xMDAwYmFzZVRfSGFsZl9CSVQsXFxuMzcxMjpcXHRcXHRcXHRcXHQgICAgICBwaHlkZXYtXFx1MDAzZXN1cHBvcnRlZCkpXFxuMzcxMzpcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZWlzX2dpZ2FiaXRfY2FwYWJsZSA9IDE7XFxuMzcxNDpcXHRcXHRpZiAobGlua21vZGVfdGVzdF9iaXQoRVRIVE9PTF9MSU5LX01PREVfMTAwMGJhc2VUX0Z1bGxfQklULFxcbjM3MTU6XFx0XFx0XFx0XFx0ICAgICAgcGh5ZGV2LVxcdTAwM2VzdXBwb3J0ZWQpKVxcbjM3MTY6XFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2Vpc19naWdhYml0X2NhcGFibGUgPSAxO1xcbjM3MTc6XFx0XFxuMzcxODpcXHRcXHRvZl9zZXRfcGh5X3N1cHBvcnRlZChwaHlkZXYpO1xcbjM3MTk6XFx0XFxuMzcyMDpcXHRcXHRlcnIgPSBwaHlfc2V0dXBfcG9ydHMocGh5ZGV2KTtcXG4zNzIxOlxcdFxcdGlmIChlcnIpXFxuMzcyMjpcXHRcXHRcXHRnb3RvIG91dDtcXG4zNzIzOlxcdFxcbjM3MjQ6XFx0XFx0cGh5X2FkdmVydGlzZV9zdXBwb3J0ZWQocGh5ZGV2KTtcXG4zNzI1OlxcdFxcbjM3MjY6XFx0XFx0LyogR2V0IFBIWSBkZWZhdWx0IEVFRSBhZHZlcnRpc2luZyBtb2RlcyBhbmQgaGFuZGxlIHRoZW0gYXMgcG90ZW50aWFsbHlcXG4zNzI3OlxcdFxcdCAqIHNhZmUgaW5pdGlhbCBjb25maWd1cmF0aW9uLlxcbjM3Mjg6XFx0XFx0ICovXFxuMzcyOTpcXHRcXHRlcnIgPSBnZW5waHlfYzQ1X3JlYWRfZWVlX2FkdihwaHlkZXYsIHBoeWRldi1cXHUwMDNlYWR2ZXJ0aXNpbmdfZWVlKTtcXG4zNzMwOlxcdFxcdGlmIChlcnIpXFxuMzczMTpcXHRcXHRcXHRnb3RvIG91dDtcXG4zNzMyOlxcdFxcbjM3MzM6XFx0XFx0LyogR2V0IHRoZSBFRUUgbW9kZXMgd2Ugd2FudCB0byBwcm9oaWJpdC4gKi9cXG4zNzM0OlxcdFxcdG9mX3NldF9waHlfZWVlX2Jyb2tlbihwaHlkZXYpO1xcbjM3MzU6XFx0XFxuMzczNjpcXHRcXHQvKiBTb21lIFBIWXMgbWF5IGFkdmVydGlzZSwgYnkgZGVmYXVsdCwgbm90IHN1cHBvcnQgRUVFIG1vZGVzLiBTbyxcXG4zNzM3OlxcdFxcdCAqIHdlIG5lZWQgdG8gY2xlYW4gdGhlbS4gSW4gYWRkaXRpb24gcmVtb3ZlIGFsbCBkaXNhYmxlZCBFRUUgbW9kZXMuXFxuMzczODpcXHRcXHQgKi9cXG4zNzM5OlxcdFxcdGxpbmttb2RlX2FuZChwaHlkZXYtXFx1MDAzZWFkdmVydGlzaW5nX2VlZSwgcGh5ZGV2LVxcdTAwM2VzdXBwb3J0ZWRfZWVlLFxcbjM3NDA6XFx0XFx0XFx0ICAgICBwaHlkZXYtXFx1MDAzZWFkdmVydGlzaW5nX2VlZSk7XFxuMzc0MTpcXHRcXHRsaW5rbW9kZV9hbmRub3QocGh5ZGV2LVxcdTAwM2VhZHZlcnRpc2luZ19lZWUsIHBoeWRldi1cXHUwMDNlYWR2ZXJ0aXNpbmdfZWVlLFxcbjM3NDI6XFx0XFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2VlZWVfZGlzYWJsZWRfbW9kZXMpO1xcbjM3NDM6XFx0XFxuMzc0NDpcXHRcXHQvKiBUaGVyZSBpcyBubyBcXFwiZW5hYmxlZFxcXCIgZmxhZy4gSWYgUEhZIGlzIGFkdmVydGlzaW5nLCBhc3N1bWUgaXQgaXNcXG4zNzQ1OlxcdFxcdCAqIGtpbmQgb2YgZW5hYmxlZC5cXG4zNzQ2OlxcdFxcdCAqL1xcbjM3NDc6XFx0XFx0cGh5ZGV2LVxcdTAwM2VlZWVfY2ZnLmVlZV9lbmFibGVkID0gIWxpbmttb2RlX2VtcHR5KHBoeWRldi1cXHUwMDNlYWR2ZXJ0aXNpbmdfZWVlKTtcXG4zNzQ4OlxcdFxcbjM3NDk6XFx0XFx0LyogR2V0IG1hc3Rlci9zbGF2ZSBzdHJhcCBvdmVycmlkZXMgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6NDA6MzMuMDE5MzgzNTg3WiIsIlNlcSI6NTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3ODE4NDc3MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBQSFkgRHJpdmVyIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IGhvdyBgZGFwODIxMXJfY29uZmlnX2luaXRgIGFjdHVhbGx5IGdldHMgY2FsbGVkLiBUaGUgY3J1Y2lhbCByZWFsaXphdGlvbiBpcyB0aGF0IGBwaHlfcHJvYmVgICpkb2Vzbid0KiBpbml0aWF0ZSBgY29uZmlnX2luaXRgLiBUaGF0IG1lYW5zIGBkYXA4MjExcl9jb25maWdfaW5pdGAgd2lsbCBvbmx5IHJ1biBpZiBhIE1BQyBkcml2ZXIgc3VjY2Vzc2Z1bGx5IGF0dGFjaGVzIHRvIHRoZSBQSFkuIFRoYXQncyB0aGUga2V5LiBOb3csIGNhbiBzeXprYWxsZXIgYWNoaWV2ZSB0aGF0IGF0dGFjaG1lbnQ/XG5cbklmIHN5emthbGxlciBjcmVhdGVzIGEgUEhZIGRldmljZSB1c2luZyB0aGUgYG1kaW8tbXZ1c2JgIGRyaXZlciwgYXMgSSBzdXNwZWN0IGl0IG1pZ2h0LCB0aGF0IFBIWSBpcyBqdXN0IGdvaW5nIHRvIGJlIHNpdHRpbmcgdGhlcmUgb24gdGhlIE1ESU8gYnVzLiBObyBNQUMgZHJpdmVyIHdpbGwgYXV0b21hdGljYWxseSBsaW5rIHVwIHdpdGggaXQganVzdCBieSBleGlzdGluZy4gSSBuZWVkIHRvIGZvcmNlIHRoZSBhc3NvY2lhdGlvbi5cblxuUmlnaHQsIGBkc2FfbG9vcGAgKmRvZXMqIGF0dGFjaCB0byBmaXhlZCBQSFlzLCB3aGljaCBnaXZlcyBtZSBhbiBpZGVhLiBCdXQgaXMgdGhlcmUgYSBtZXRob2QgdG8gY29ubmVjdCBhIE1BQyB0byBhbiBhcmJpdHJhcnkgUEhZPyBJIGNvdWxkIGxvb2sgYXQgYFNJT0NTTUlJUkVHYCwgYnV0IHRoYXQncyBqdXN0IGZvciByZWdpc3RlciBhY2Nlc3MsIG5vdCBhdHRhY2htZW50LiBgbmV0ZGV2c2ltYCBpcyBhIGRlYWQgZW5kOyBubyBQSFkgdXNhZ2UgdGhlcmUuIEFuZCBgbWFjbWFjYD8gTm9wZS5cblxuQWhhISBDb3VsZCBzeXprYWxsZXIgbGV2ZXJhZ2UgYHN5el9nZW5ldGxpbmtfZ2V0X2ZhbWlseWAgb3Igc2ltaWxhciBtZWNoYW5pc21zPyBDYW4gSSBtYW5pcHVsYXRlIHRoZSBrZXJuZWwgc3RhdGUgc29tZWhvdyB0byB0cmlnZ2VyIGBwaHlfYXR0YWNoX2RpcmVjdGAgb3IgYHBoeV9jb25uZWN0YCBmcm9tIHVzZXJzcGFjZT8gVGhhdCdzIHRoZSBpbXBvcnRhbnQgcGllY2UuIExldCBtZSBjaGVjayB3aGVyZSBgcGh5X2F0dGFjaF9kaXJlY3RgIGlzIHVzZWQgYW5kIHNlZSBpZiBJIGNhbiBmaW5kIGEgdXNlci1zcGFjZSBjb250cm9sbGFibGUgcGF0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg4MjUsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTo0MDozOC44MDEyMzY1MDZaIiwiU2VxIjo1NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwOTQ3NjYzMywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5X2F0dGFjaF9kaXJlY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6NDA6MzkuMTEwNzI0ODE4WiIsIlNlcSI6NTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NDc2MzY0NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipOZXR3b3JrIERyaXZlciBEZWJ1Z2dpbmcgLSBXaGVyZSB0byBCZWdpbioqXG5cbk9rYXksIHNvIEknbSB0cm91Ymxlc2hvb3RpbmcgYSBuZXR3b3JrIGRyaXZlciBpc3N1ZSwgYW5kIEkndmUgZ290IGEgaHVuY2ggaXQncyBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgUEhZIChQaHlzaWNhbCBMYXllcikuIFRpbWUgdG8gZGl2ZSBpbi4gTXkgZmlyc3QgaW5zdGluY3QsIGFuZCB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0LCBpcyB0aGUgYGRyaXZlcnMvbmV0L2AgZGlyZWN0b3J5LiBUaGF0J3MgdGhlIGdvLXRvIGxvY2F0aW9uIGZvciBuZXR3b3JrIGRyaXZlciBjb2RlLCBvYnZpb3VzbHkuIE5vdywgd2hhdCBhbSBJIGxvb2tpbmcgZm9yIHdpdGhpbiB0aGF0IG1hc3NpdmUgY29kZWJhc2U/IFdlbGwsIEkgbmVlZCB0byBjaGVjayB0aGUgcG90ZW50aWFsIGNvbm5lY3Rpb24gcG9pbnRzIG9mIHRoZSBQSFkuIEkgYW0gZ29pbmcgdG8gc2VhcmNoIGZvciBgcGh5X2F0dGFjaF9kaXJlY3RgIG9yIGBwaHlfY29ubmVjdGAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcHJldHR5IHN0YW5kYXJkIGZvciBlc3RhYmxpc2hpbmcgYSBkaXJlY3Qgb3Igc3RhbmRhcmQgY29ubmVjdGlvbiB0byBhIFBIWSwgYW5kIGFyZSBsaWtlbHkgZW50cnkgcG9pbnRzIHRvIHRoZSBjb2RlIEkgYW0gaW50ZXJlc3RlZCBpbi4gVGhpcyB3aWxsIGdpdmUgbWUgYSBwb2ludCBvZiBkZXBhcnR1cmUgdG8gaW52ZXN0aWdhdGUgdGhlIFBIWSBjb25uZWN0aW9uIGxvZ2ljLCBlcnJvciBoYW5kbGluZywgYW5kIHJlc291cmNlIGFsbG9jYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5NDMxLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6NDA6NDIuOTU4MzY1Mzc1WiIsIlNlcSI6NTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTY0MjU2NDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5X2Nvbm5lY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jPTYwNz1zdGF0aWMgaW50IGJjbV9zZjJfbWRpb19yZWdpc3RlcihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTY1Ni1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjY1NzpcXHQvKiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IG9mX3BoeV9jb25uZWN0KCkgd2lsbCBub3Qgd29yayBieVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNjU4LVxcdCAqIHJlbW92aW5nIHRoZSAncGhhbmRsZScgYW5kICdsaW51eCxwaGFuZGxlJyBwcm9wZXJ0aWVzIGFuZFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmM9OTY4PXN0YXRpYyBib29sIG5ldGNfcG9ydF9pc19lbWRpb19jb25zdW1lcihzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy05ODQtXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmM6OTg1Oi8qIEN1cnJlbnRseSwgcGh5bGlua19vZl9waHlfY29ubmVjdCgpIGlzIGNhbGxlZCBieSBkc2FfdXNlcl9jcmVhdGUoKSxcXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy05ODYtICogc28gaWYgdGhlIHN3aXRjaCB1c2VzIHRoZSBleHRlcm5hbCBNRElPIGNvbnRyb2xsZXIgKGxpa2UgdGhlIEVNRElPXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtOTg3LSAqIGZ1bmN0aW9uKSB0byBtYW5hZ2UgdGhlIGV4dGVybmFsIFBIWXMuIFRoZSBNRElPIGJ1cyBtYXkgbm90IGJlXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmM6OTg4OiAqIGNyZWF0ZWQgd2hlbiBwaHlsaW5rX29mX3BoeV9jb25uZWN0KCkgaXMgY2FsbGVkLCBzbyBpdCB3aWxsIHJldHVyblxcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTk4OS0gKiBhbiBlcnJvciBhbmQgY2F1c2UgdGhlIHN3aXRjaCBkcml2ZXIgdG8gZmFpbCB0byBwcm9iZS5cXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzo5OTA6ICogVGhpcyB3b3JrYXJvdW5kIGNhbiBiZSByZW1vdmVkIHdoZW4gRFNBIHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QoKVxcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTk5MS0gKiBjYWxscyBhcmUgbW92ZWQgZnJvbSBwcm9iZSgpIHRvIG5kb19vcGVuKCkuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjQwOjQzLjE3NDc5NzY1WiIsIlNlcSI6NTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3ODkxMTEwODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBhIENvbm5lY3Rpb24gU2NlbmFyaW8qKlxuXG5BbHJpZ2h0LCBJJ20gdHJ5aW5nIHRvIHdyYXAgbXkgaGVhZCBhcm91bmQgdGhpcyBzeXN0ZW0sIGFuZCBteSBmaXJzdCB0aG91Z2h0IGltbWVkaWF0ZWx5IGp1bXBzIHRvIGBkc2FfdXNlcl9waHlfY29ubmVjdGAuIFRoYXQgZnVuY3Rpb24gbmFtZSBoYXMgYSB2ZXJ5IHNwZWNpZmljIGNvbm5vdGF0aW9uLCBkb2Vzbid0IGl0PyBJdCBzdWdnZXN0cyBhIGRpcmVjdCBwaHlzaWNhbCBjb25uZWN0aW9uIG9yIGludGVyYWN0aW9uIGF0IHRoZSB1c2VyIGxldmVsLCB3aXRoaW4gdGhlIERvbWFpbiBTcGVjaWZpYyBBcmNoaXRlY3R1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBzcGVjaWZpY2FsbHkgKmRvZXMqIGFuZCB3aGF0IGl0ICptZWFucyogaW4gdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnQgcHJvYmxlbS4gSXMgdGhpcyBhIGRyaXZlciBjYWxsPyBBIG5ldHdvcmsgc2V0dXAgZnVuY3Rpb24/IElzIHRoaXMgcmVsYXRlZCB0byBzb21lIGZvcm0gb2YgaGFyZHdhcmUgaGFuZC1vZmY/IEkgbmVlZCBtb3JlIGNvbnRleHQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGNhbGxpbmcgdGhpcyByb3V0aW5lLiBXaGF0IHByb3RvY29scyBvciBpbnRlcmZhY2VzIGFyZSBiZWluZyB1c2VkIGhlcmU/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMTc1LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6NDA6NDYuOTYzOTEzNjU3WiIsIlNlcSI6NjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzQ1MTU5OTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRzYV91c2VyX3BoeV9jb25uZWN0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9kc2EvdXNlci5jPTI2MjQ9c3RhdGljIHZvaWQgZHNhX3VzZXJfcGh5bGlua19maXhlZF9zdGF0ZShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG4tLVxcbm5ldC9kc2EvdXNlci5jLTI2MzYtLyogdXNlciBkZXZpY2Ugc2V0dXAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5uZXQvZHNhL3VzZXIuYzoyNjM3OnN0YXRpYyBpbnQgZHNhX3VzZXJfcGh5X2Nvbm5lY3Qoc3RydWN0IG5ldF9kZXZpY2UgKnVzZXJfZGV2LCBpbnQgYWRkcixcXG5uZXQvZHNhL3VzZXIuYy0yNjM4LVxcdFxcdFxcdFxcdHUzMiBmbGFncylcXG4tLVxcbm5ldC9kc2EvdXNlci5jPTI2NTQ9c3RhdGljIGludCBkc2FfdXNlcl9waHlfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKnVzZXJfZGV2KVxcbi0tXFxubmV0L2RzYS91c2VyLmMtMjY4NS1cXHRcXHQgKi9cXG5uZXQvZHNhL3VzZXIuYzoyNjg2OlxcdFxcdHJldCA9IGRzYV91c2VyX3BoeV9jb25uZWN0KHVzZXJfZGV2LCBkcC1cXHUwMDNlaW5kZXgsIHBoeV9mbGFncyk7XFxubmV0L2RzYS91c2VyLmMtMjY4Ny1cXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjQwOjUxLjcwOTA4MTUyMloiLCJTZXEiOjYxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMTM1MzI5NTkxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgREFQODIxMVIgUEhZIERyaXZlciBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIHRoZSBgZHNhX3VzZXJfcGh5X3NldHVwYCBmdW5jdGlvbiBpcyBrZXkgaGVyZS4gSXQgbG9va3MgbGlrZSB3aGVuIGEgRFNBIHVzZXIgZGV2aWNlIGlzIGNyZWF0ZWQsIGFuZCBpZiBzeXprYWxsZXIgY29uc3RydWN0cyBhIERTQSBzd2l0Y2ggdXNpbmcgYSBkZXZpY2UgdHJlZSBvdmVybGF5LCBhIFBIWSBub2RlIGNhbiBiZSBzcGVjaWZpZWQuIFRoaXMgc2V0dXAgdGhlbiBjYWxscyBlaXRoZXIgYHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3RgIG9yIGBkc2FfdXNlcl9waHlfY29ubmVjdGAsIHdoaWNoIHVsdGltYXRlbHkgYXR0YWNoZXMgdGhlIFBIWS4gVGhlIGNyaXRpY2FsIHBvaW50IGlzIHRoYXQgc3l6a2FsbGVyICpjYW4qIGluamVjdCB0aGVzZSBkZXZpY2UgdHJlZSBvdmVybGF5cy5cblxuSWYgc3l6a2FsbGVyIGNyYWZ0cyBhIERUIG92ZXJsYXkgd2l0aCBhIERTQSBzd2l0Y2ggYW5kIGEgUEhZIG5vZGUgdGhhdCBzcGVjaWZpZXMgdGhlIGBldGhlcm5ldC1waHktaWQwMDA4LjAxMWJgIGNvbXBhdGlibGUgc3RyaW5nLCB0aGVuIHRoZSBgZGFwODIxMXJfY29uZmlnX2luaXRgIGZ1bmN0aW9uICpzaG91bGQqIGJlIGNhbGxlZC4gVGhlIHF1ZXN0aW9uIGlzLCBkb2VzIHN5emthbGxlciAqYWN0dWFsbHkqIGRvIHRoaXM/IEkgY2FuJ3QgY2hlY2sgdGhlIHN5emthbGxlciBzb3VyY2UgZGlyZWN0bHksIGJ1dCB0aGUgYXNzdW1wdGlvbiBpcyB0aGF0IGlmIGl0J3MgcmVhY2hhYmxlIHZpYSBEVCBvdmVybGF5LCBpdCBpcywgaW4gdGhlb3J5LCByZWFjaGFibGUgZm9yIGZ1enppbmcuXG5cbk5vdywgbG9va2luZyBhdCBgZGFwODIxMXJfY29uZmlnX2luaXRgLCBpdCdzIGEgdmVyeSBzdHJhaWdodGZvcndhcmQgZnVuY3Rpb24uIEl0IHJlYWRzIGByeC1pbnRlcm5hbC1kZWxheS1wc2AgYW5kIGB0eC1pbnRlcm5hbC1kZWxheS1wc2AgcHJvcGVydGllcyBmcm9tIHRoZSBkZXZpY2UgdHJlZSwgZG9lcyBzb21lIGJpdCBtYW5pcHVsYXRpb24sIGFuZCB3cml0ZXMgdG8gTURJTyByZWdpc3RlcnMuIEl0J3MgcmVhbGx5IGp1c3QgaW5pdGlhbGl6aW5nIHRoZSBQSFkuIERvZXMgdGhpcyBxdWFsaWZ5IGFzIFwiY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXNcIiB0aGF0IHNob3VsZCBiZSBmdXp6ZWQ/XG5cblRoaXMgZHJpdmVyIGlzIGhhcmR3YXJlLXNwZWNpZmljIGFuZCBvbmx5IHdyaXRlcyB0byByZWdpc3RlcnMsIHdpdGggbWluaW1hbCBpbnRlcmFjdGlvbiB3aXRoIHVzZXJzcGFjZS4gVGhpcyBpc24ndCBpbmhlcmVudGx5IGV4Y2l0aW5nIGZvciBmdXp6aW5nLCBidXQgaXQgKmlzKiBmdW5jdGlvbmFsIGNvZGUuIE5vdywgdGhlIHByb21wdCBnaXZlcyBjcml0ZXJpYSBmb3IgKm5vdCogZnV6emluZywgYW5kIGl0IHNwZWNpZmljYWxseSBtZW50aW9ucyB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyBmb3IgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFVzIHRoYXQgcmVxdWlyZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBQSFkgZHJpdmVyLiBJdCByZXF1aXJlcyBhIHBoeXNpY2FsIERBUDgyMTFSIGNoaXAuIElzIGl0IGVtdWxhdGVkIGluIFFFTVU/IE5vLlxuXG5UaGVvcmV0aWNhbGx5LCBpZiBzeXprYWxsZXIgdXNlcyBzb21ldGhpbmcgbGlrZSBgbWRpby1tdnVzYmAgYW5kIGEgdmlydHVhbCBoYXJkd2FyZSBjb250ZXh0LCBpdCBjb3VsZCAqcmVhY2gqIHRoaXMgZHJpdmVyLiBCdXQgZXZlbiBpZiBpdCBjYW4sIGRvZXMgaXQgKmRvKiBhbnl0aGluZyBtZWFuaW5nZnVsPyAgSWYgdGhlcmUncyBubyByZWFsIGhhcmR3YXJlLCB0aGUgTURJTyByZWFkcyByZXR1cm4gZ2FyYmFnZSAobGlrZSBhbGwgemVyb3MpLiBUaGUgYHJlYWRfcG9sbF90aW1lb3V0YCB3YWl0cyBmb3IgdGhlIHJlc2V0IGJpdCB0byBjbGVhciwgc28gaWYgaXQgcmVhZHMgemVyb2VzIGZyb20gYSBtb2NrIGJ1cywgaXQgd2lsbCB0aW1lIG91dCBhbmQgZmFpbC4gU28sIHRoaXMgY29kZSBwYXRoIHdpbGwgbGlrZWx5IGVycm9yIG91dC5cblxuVGhlbiBJIHJlYWQgdGhlIHByb21wdCBhZ2Fpbi4gSXQgZXhwbGljaXRseSBzYXlzLCBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZVwiLiBUaGlzIHNwZWNpZmljIFBIWSBjaGlwIGlzIGNvbnNpZGVyZWQgXCJpbXBvc3NpYmxlIHRvIHJlYWNoXCIuXG5cblRoZSBwcm9tcHQgc3RhdGVzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBmb3IgdmVuZG9yc3BlY2lmaWMgZHJpdmVycyBmb3IgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIFFFTVUuICBUaGlzIGRyaXZlciBmaXRzIHRoYXQgZGVzY3JpcHRpb24uIFRoZSBcIlBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVXCIgZXhhbXBsZXMgYXJlIGp1c3QgZXhhbXBsZXM7IHRoZSAqcHJpbmNpcGxlKiBpcyB3aGF0IG1hdHRlcnMg4oCTIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnMgZm9yIHVuZW11bGF0ZWQgaGFyZHdhcmUuXG5cblNvLCBsZXQncyBzYXkgc3l6a2FsbGVyICpjYW4qIGluamVjdCByZXNwb25zZXMgYW5kIHBhc3MgdGhlIGByZWFkX3BvbGxfdGltZW91dGAuLi4gd2hhdCdzIGxlZnQ/IEl0J3MganVzdCBhIHNpbmdsZSBgZGFwODIxMXJfbW9kaWZ5X2V4dGAgY2FsbCBhZnRlciB0aGUgd2FpdCBsb29wLiBUaGVyZSdzIG5vIGNvbXBsZXggbG9naWMsIG5vIG1lbW9yeSBhbGxvY2F0aW9uLCBhbmQgbm8gaW50ZXJhY3Rpb24gd2l0aCB0aGUgdXNlcnNwYWNlLiBKdXN0IHJlZ2lzdGVyIHdyaXRlcy4gIElzIHRoYXQgd29ydGggZnV6emluZz9cblxuVGhlIGNvbmNsdXNpb24gaXMgYFdvcnRoRnV6emluZz1mYWxzZWAgYmVjYXVzZSBpdCdzIGEgdmVuZG9yLXNwZWNpZmljIFBIWSBkcml2ZXIgZm9yIHVuZW11bGF0ZWQgaGFyZHdhcmUuIEl0IGNvbnRhaW5zIG9ubHkgdHJpdmlhbCByZWdpc3RlciBpbml0aWFsaXphdGlvbiBsb2dpYy5cbkxldCdzIGp1c3QgZG91YmxlIGNoZWNrLCB0aGF0IGBkYXA4MjExcl9jb25maWdfaW5pdGAgaXMgdGhlIG9ubHkgY3VzdG9tIGZ1bmN0aW9uLiBDaGVja2luZyB0aGUgYGRhcDgyMTFyX2RyaXZlcmAsIHRoYXQgaXMgY29ycmVjdC4gSXQgaXMganVzdCBgZGFwODIxMXJfY29uZmlnX2luaXRgIGFuZCBhbGwgb3RoZXIgZnVuY3Rpb25zIGFyZSBnZW5lcmljIFBIWSBmdW5jdGlvbnMuXG5cbkZpbmFsIGRlY2lzaW9uOiBgV29ydGhGdXp6aW5nPWZhbHNlYFxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDYyOSwiT3V0cHV0VG9rZW5zIjoxMzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDA5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjQxOjEzLjA2MjM4MDk3MVoiLCJTZXEiOjYyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4OTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSB2ZW5kb3Itc3BlY2lmaWMgUEhZIGRyaXZlciBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWS4gVGhlIGRyaXZlciBvbmx5IGNvbnRhaW5zIHRyaXZpYWwgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gbG9naWMgKHJlYWRpbmcgZGV2aWNlIHRyZWUgcHJvcGVydGllcyBhbmQgd3JpdGluZyB0byBNRElPIHJlZ2lzdGVycykgYW5kIHJlbGllcyBvbiBnZW5lcmljIFBIWSBmdW5jdGlvbnMgZm9yIGFsbCBvdGhlciBvcGVyYXRpb25zLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCBhbmQgZXZlbiBpZiByZWFjaGVkIHZpYSBhIG1vY2sgTURJTyBidXMsIHRoZSBjb2RlIGxhY2tzIGNvbXBsZXggbG9naWMsIG1lbW9yeSBtYW5hZ2VtZW50LCBvciB1c2Vyc3BhY2UgaW50ZXJmYWNlcyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHZlbmRvci1zcGVjaWZpYyBQSFkgZHJpdmVyIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZLiBUaGUgZHJpdmVyIG9ubHkgY29udGFpbnMgdHJpdmlhbCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBsb2dpYyAocmVhZGluZyBkZXZpY2UgdHJlZSBwcm9wZXJ0aWVzIGFuZCB3cml0aW5nIHRvIE1ESU8gcmVnaXN0ZXJzKSBhbmQgcmVsaWVzIG9uIGdlbmVyaWMgUEhZIGZ1bmN0aW9ucyBmb3IgYWxsIG90aGVyIG9wZXJhdGlvbnMuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIGFuZCBldmVuIGlmIHJlYWNoZWQgdmlhIGEgbW9jayBNRElPIGJ1cywgdGhlIGNvZGUgbGFja3MgY29tcGxleCBsb2dpYywgbWVtb3J5IG1hbmFnZW1lbnQsIG9yIHVzZXJzcGFjZSBpbnRlcmZhY2VzIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowkbqhh[1] Phase: Running StartedAt: 2026-07-27 19:41:25 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkbqhh[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-27 19:41:25 +0000 UTC FinishedAt: 2026-07-27 19:41:31 +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,}