Name: series-workflowc5vbn Phase: Failed StartedAt: 2026-09-07 08:20:27 +0000 UTC FinishedAt: 2026-09-07 08:23:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc5vbn[0] Phase: Succeeded StartedAt: 2026-09-07 08:20:27 +0000 UTC FinishedAt: 2026-09-07 08:23:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc5vbn[0].run-triage Phase: Succeeded StartedAt: 2026-09-07 08:20:27 +0000 UTC FinishedAt: 2026-09-07 08:23:10 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjIyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBMQU44NjV4IFNQSSBFdGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYyksIHRoZSBPcGVuIEFsbGlhbmNlIFRDNiBNQUMtUEhZIHByb3RvY29sIGxheWVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYyksIGFuZCB0aGUgTWljcm9jaGlwIDEwQkFTRS1UMVMgUEhZIGRyaXZlciAoZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYykuIFRoZXNlIGRyaXZlcnMgb3BlcmF0ZSBvbiBzcGVjaWZpYyBwaHlzaWNhbCAxMEJBU0UtVDFTIHNpbmdsZS1wYWlyIEV0aGVybmV0IGhhcmR3YXJlIGNvbm5lY3RlZCBvdmVyIFNQSS9NRElPIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODoyMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQ0YmMxYzM3ZjdlODY2ZWI5OTdkODg3OGE1ZjZlN2Y3MDUwYjdkMWZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCA3IDA4OjIyOjA0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguY1xuaW5kZXggMjZhMjc2MTMzMmE1YS4uMDQzYTNkYzNmOTY1NyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jXG5AQCAtMzMyLDYgJiM0MzszMzIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGxhbjg2NXhfbmV0ZGV2X29wcyA9IHtcbiBcbiBzdGF0aWMgaW50IGxhbjg2NXhfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbiB7XG4mIzQzO1x0c3RydWN0IG9hX3RjNl9xdWlya3MgdGM2X3F1aXJrcyA9IHt9O1xuIFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbiBcdHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXY7XG4gXHRpbnQgcmV0O1xuQEAgLTM0Niw3ICYjNDM7MzQ3LDggQEAgc3RhdGljIGludCBsYW44NjV4X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4gXHRzcGlfc2V0X2RydmRhdGEoc3BpLCBwcml2KTtcbiBcdElOSVRfV09SSyhcdTAwMjZwcml2LVx1MDAzZW11bHRpY2FzdF93b3JrLCBsYW44NjV4X211bHRpY2FzdF93b3JrX2hhbmRsZXIpO1xuIFxuLVx0cHJpdi1cdTAwM2V0YzYgPSBvYV90YzZfaW5pdChzcGksIG5ldGRldiwgTlVMTCk7XG4mIzQzO1x0dGM2X3F1aXJrcy5xdWlya19mbGFncyA9IE9BX1RDNl9QSFlfSU5UO1xuJiM0MztcdHByaXYtXHUwMDNldGM2ID0gb2FfdGM2X2luaXQoc3BpLCBuZXRkZXYsIFx1MDAyNnRjNl9xdWlya3MpO1xuIFx0aWYgKCFwcml2LVx1MDAzZXRjNikge1xuIFx0XHRyZXQgPSAtRU5PREVWO1xuIFx0XHRnb3RvIGZyZWVfbmV0ZGV2O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmNcbmluZGV4IDZmY2M1ZjU2MWQ1NjAuLjAwYjAxNzZjMWZlN2EgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmNcbkBAIC04LDYgJiM0Mzs4LDggQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRmaWVsZC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW9wb2xsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pbnRlcnJ1cHQuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9pcnEuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9pcnFkb21haW4uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21kaW8uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2FfdGM2LmhcdTAwM2VcbkBAIC03MCw2ICYjNDM7NzIsOCBAQCBzdHJ1Y3Qgb2FfdGM2IHtcbiBcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXY7XG4gXHRzdHJ1Y3QgbWlpX2J1cyAqbWRpb2J1cztcbiBcdHN0cnVjdCBzcGlfZGV2aWNlICpzcGk7XG4mIzQzO1x0c3RydWN0IGlycV9kb21haW4gKnBoeV9pcnFfZG9tYWluO1xuJiM0MztcdGludCBwaHlfdmlycTtcbiBcdHN0cnVjdCBtdXRleCBzcGlfY3RybF9sb2NrOyAvKiBQcm90ZWN0cyBzcGkgY29udHJvbCB0cmFuc2ZlciAqL1xuIFx0c3BpbmxvY2tfdCB0eF9za2JfbG9jazsgLyogUHJvdGVjdHMgdHggc2tiIGhhbmRsaW5nICovXG4gXHR2b2lkICpzcGlfY3RybF90eF9idWY7XG5AQCAtNTI4LDYgJiM0Mzs1MzIsNDQgQEAgaW50IG9hX3RjNl9tZGlvYnVzX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IGRldm51bSxcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwob2FfdGM2X21kaW9idXNfd3JpdGVfYzQ1KTtcbiBcbiYjNDM7c3RhdGljIGludCBvYV90YzZfcGh5X2lycV9tYXAoc3RydWN0IGlycV9kb21haW4gKmRvbWFpbiwgdW5zaWduZWQgaW50IGlycSxcbiYjNDM7XHRcdFx0ICAgICAgaXJxX2h3X251bWJlcl90IGh3aXJxKVxuJiM0Mzt7XG4mIzQzO1x0aXJxX3NldF9jaGlwX2RhdGEoaXJxLCBkb21haW4tXHUwMDNlaG9zdF9kYXRhKTtcbiYjNDM7XHRpcnFfc2V0X2NoaXBfYW5kX2hhbmRsZXIoaXJxLCBcdTAwMjZkdW1teV9pcnFfY2hpcCwgaGFuZGxlX3NpbXBsZV9pcnEpO1xuJiM0MztcdGlycV9zZXRfbmVzdGVkX3RocmVhZChpcnEsIHRydWUpO1xuJiM0MztcdGlycV9zZXRfbm9wcm9iZShpcnEpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfZG9tYWluX29wcyBvYV90YzZfcGh5X2lycV9kb21haW5fb3BzID0ge1xuJiM0MztcdC5tYXAgPSBvYV90YzZfcGh5X2lycV9tYXAsXG4mIzQzO307XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IG9hX3RjNl9waHlfaXJxX3NldHVwKHN0cnVjdCBvYV90YzYgKnRjNilcbiYjNDM7e1xuJiM0MztcdHRjNi1cdTAwM2VwaHlfaXJxX2RvbWFpbiA9XG4mIzQzO1x0XHRpcnFfZG9tYWluX2NyZWF0ZV9saW5lYXIoTlVMTCwgMSxcbiYjNDM7XHRcdFx0XHRcdCBcdTAwMjZvYV90YzZfcGh5X2lycV9kb21haW5fb3BzLCB0YzYpO1xuJiM0MztcdGlmICghdGM2LVx1MDAzZXBoeV9pcnFfZG9tYWluKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1xuJiM0MztcdHRjNi1cdTAwM2VwaHlfdmlycSA9IGlycV9jcmVhdGVfbWFwcGluZyh0YzYtXHUwMDNlcGh5X2lycV9kb21haW4sIDApO1xuJiM0MztcdGlmICghdGM2LVx1MDAzZXBoeV92aXJxKSB7XG4mIzQzO1x0XHRpcnFfZG9tYWluX3JlbW92ZSh0YzYtXHUwMDNlcGh5X2lycV9kb21haW4pO1xuJiM0MztcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgb2FfdGM2X3BoeV9pcnFfdGVhcmRvd24oc3RydWN0IG9hX3RjNiAqdGM2KVxuJiM0Mzt7XG4mIzQzO1x0aXJxX2Rpc3Bvc2VfbWFwcGluZyh0YzYtXHUwMDNlcGh5X3ZpcnEpO1xuJiM0MztcdGlycV9kb21haW5fcmVtb3ZlKHRjNi1cdTAwM2VwaHlfaXJxX2RvbWFpbik7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBvYV90YzZfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3Qgb2FfdGM2ICp0YzYpXG4ge1xuIFx0aW50IHJldDtcbkBAIC01NTksOSAmIzQzOzYwMSwyNSBAQCBzdGF0aWMgaW50IG9hX3RjNl9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBvYV90YzYgKnRjNilcbiBcdHNucHJpbnRmKHRjNi1cdTAwM2VtZGlvYnVzLVx1MDAzZWlkLCBBUlJBWV9TSVpFKHRjNi1cdTAwM2VtZGlvYnVzLVx1MDAzZWlkKSwgXCYjMzQ7JXNcJiMzNDssXG4gXHRcdCBkZXZfbmFtZShcdTAwMjZ0YzYtXHUwMDNlc3BpLVx1MDAzZWRldikpO1xuIFxuJiM0MztcdGlmICh0YzYtXHUwMDNlcXVpcmtfZmxhZ3MgXHUwMDI2IE9BX1RDNl9QSFlfSU5UKSB7XG4mIzQzO1x0XHRyZXQgPSBvYV90YzZfcGh5X2lycV9zZXR1cCh0YzYpO1xuJiM0MztcdFx0aWYgKHJldCkge1xuJiM0MztcdFx0XHRtZGlvYnVzX2ZyZWUodGM2LVx1MDAzZW1kaW9idXMpO1xuJiM0MztcdFx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdFx0fVxuJiM0MztcdFx0LyogUG9wdWxhdGUgYWxsIGlycVtdIGVudHJpZXMgYmVmb3JlIHJlZ2lzdHJhdGlvbiBzb1xuJiM0MztcdFx0ICogcGh5X2RldmljZV9jcmVhdGUoKSBwaWNrcyB1cCB0aGUgdmlydHVhbCBJUlEgcmVnYXJkbGVzcyBvZlxuJiM0MztcdFx0ICogdGhlIFBIWSYjMzk7cyBNRElPIGFkZHJlc3MuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBQSFlfTUFYX0FERFI7IGkmIzQzOyYjNDM7KVxuJiM0MztcdFx0XHR0YzYtXHUwMDNlbWRpb2J1cy1cdTAwM2VpcnFbaV0gPSB0YzYtXHUwMDNlcGh5X3ZpcnE7XG4mIzQzO1x0fVxuJiM0MztcbiBcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIodGM2LVx1MDAzZW1kaW9idXMpO1xuIFx0aWYgKHJldCkge1xuIFx0XHRuZXRkZXZfZXJyKHRjNi1cdTAwM2VuZXRkZXYsIFwmIzM0O0NvdWxkIG5vdCByZWdpc3RlciBNRElPIGJ1c1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRpZiAodGM2LVx1MDAzZXF1aXJrX2ZsYWdzIFx1MDAyNiBPQV9UQzZfUEhZX0lOVClcbiYjNDM7XHRcdFx0b2FfdGM2X3BoeV9pcnFfdGVhcmRvd24odGM2KTtcbiBcdFx0bWRpb2J1c19mcmVlKHRjNi1cdTAwM2VtZGlvYnVzKTtcbiBcdFx0cmV0dXJuIHJldDtcbiBcdH1cbkBAIC01NzIsNiAmIzQzOzYzMCw4IEBAIHN0YXRpYyBpbnQgb2FfdGM2X21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG9hX3RjNiAqdGM2KVxuIHN0YXRpYyB2b2lkIG9hX3RjNl9tZGlvYnVzX3VucmVnaXN0ZXIoc3RydWN0IG9hX3RjNiAqdGM2KVxuIHtcbiBcdG1kaW9idXNfdW5yZWdpc3Rlcih0YzYtXHUwMDNlbWRpb2J1cyk7XG4mIzQzO1x0aWYgKHRjNi1cdTAwM2VxdWlya19mbGFncyBcdTAwMjYgT0FfVEM2X1BIWV9JTlQpXG4mIzQzO1x0XHRvYV90YzZfcGh5X2lycV90ZWFyZG93bih0YzYpO1xuIFx0bWRpb2J1c19mcmVlKHRjNi1cdTAwM2VtZGlvYnVzKTtcbiB9XG4gXG5AQCAtNjYxLDcgJiM0Mzs3MjEsNyBAQCBzdGF0aWMgaW50IG9hX3RjNl9zd19yZXNldF9tYWNwaHkoc3RydWN0IG9hX3RjNiAqdGM2KVxuIFx0cmV0dXJuIG9hX3RjNl93cml0ZV9yZWdpc3Rlcih0YzYsIE9BX1RDNl9SRUdfU1RBVFVTMCwgcmVndmFsKTtcbiB9XG4gXG4tc3RhdGljIGludCBvYV90YzZfdW5tYXNrX21hY3BoeV9lcnJvcl9pbnRlcnJ1cHRzKHN0cnVjdCBvYV90YzYgKnRjNilcbiYjNDM7c3RhdGljIGludCBvYV90YzZfdW5tYXNrX2ludGVycnVwdHMoc3RydWN0IG9hX3RjNiAqdGM2KVxuIHtcbiBcdHUzMiByZWd2YWw7XG4gXHRpbnQgcmV0O1xuQEAgLTY3MCw3ICYjNDM7NzMwLDggQEAgc3RhdGljIGludCBvYV90YzZfdW5tYXNrX21hY3BoeV9lcnJvcl9pbnRlcnJ1cHRzKHN0cnVjdCBvYV90YzYgKnRjNilcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4tXHRyZWd2YWwgXHUwMDI2PSB+KE9BX1RDNl9JTlRfTUFTSzBfVFhfUFJPVE9DT0xfRVJSX01BU0sgfFxuJiM0MztcdHJlZ3ZhbCBcdTAwMjY9IH4oT0FfVEM2X0lOVF9NQVNLMF9QSFlfSU5UX01BU0sgfFxuJiM0MztcdFx0ICAgIE9BX1RDNl9JTlRfTUFTSzBfVFhfUFJPVE9DT0xfRVJSX01BU0sgfFxuIFx0XHQgICAgT0FfVEM2X0lOVF9NQVNLMF9SWF9CVUZGRVJfT1ZFUkZMT1dfRVJSX01BU0sgfFxuIFx0XHQgICAgT0FfVEM2X0lOVF9NQVNLMF9MT1NTX09GX0ZSQU1FX0VSUl9NQVNLIHxcbiBcdFx0ICAgIE9BX1RDNl9JTlRfTUFTSzBfSEVBREVSX0VSUl9NQVNLKTtcbkBAIC04MTAsNiAmIzQzOzg3MSwxNSBAQCBzdGF0aWMgaW50IG9hX3RjNl9wcm9jZXNzX2V4dGVuZGVkX3N0YXR1cyhzdHJ1Y3Qgb2FfdGM2ICp0YzYpXG4gXHRcdHJldHVybiByZXQ7XG4gXHR9XG4gXG4mIzQzO1x0LyogRGlzcGF0Y2ggdGhlIFBIWSBpbnRlcnJ1cHQgdG8gcGh5bGliIHZpYSB0aGUgbmVzdGVkIHZpcnR1YWwgSVJRIHNvXG4mIzQzO1x0ICogdGhlIFBIWSBkcml2ZXIgcmVhZHMgYW5kIGFja25vd2xlZGdlcyBpdHMgc3RhdHVzLiBQSFlJTlQgaXMgbGV2ZWxcbiYjNDM7XHQgKiB0cmlnZ2VyZWQsIHNvIGRvaW5nIHRoaXMgc3luY2hyb25vdXNseSBoZXJlIChpbiB0aGUgc2xlZXBhYmxlXG4mIzQzO1x0ICogdGhyZWFkZWQgSVJRKSBjbGVhcnMgdGhlIHNvdXJjZSBiZWZvcmUgdGhlIG5leHQgZGF0YSBjaHVuay5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoKHRjNi1cdTAwM2VxdWlya19mbGFncyBcdTAwMjYgT0FfVEM2X1BIWV9JTlQpIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICBGSUVMRF9HRVQoT0FfVEM2X1NUQVRVUzBfUEhZX0lOVCwgdmFsdWUpKVxuJiM0MztcdFx0aGFuZGxlX25lc3RlZF9pcnEodGM2LVx1MDAzZXBoeV92aXJxKTtcbiYjNDM7XG4gXHRpZiAoRklFTERfR0VUKE9BX1RDNl9TVEFUVVMwX1JYX0JVRkZFUl9PVkVSRkxPV19FUlJPUiwgdmFsdWUpKSB7XG4gXHRcdG9hX3RjNl9sb29rX2Zvcl9uZXdfZnJhbWUodGM2KTtcbiBcdFx0bmV0X2Vycl9yYXRlbGltaXRlZChcJiMzNDslczogUmVjZWl2ZSBidWZmZXIgb3ZlcmZsb3cgZXJyb3JcXG5cJiMzNDssXG5AQCAtMTUxOCw3ICYjNDM7MTU4OCw3IEBAIHN0cnVjdCBvYV90YzYgKm9hX3RjNl9pbml0KHN0cnVjdCBzcGlfZGV2aWNlICpzcGksIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuLVx0cmV0ID0gb2FfdGM2X3VubWFza19tYWNwaHlfZXJyb3JfaW50ZXJydXB0cyh0YzYpO1xuJiM0MztcdHJldCA9IG9hX3RjNl91bm1hc2tfaW50ZXJydXB0cyh0YzYpO1xuIFx0aWYgKHJldCkge1xuIFx0XHRkZXZfZXJyKFx1MDAyNnRjNi1cdTAwM2VzcGktXHUwMDNlZGV2LFxuIFx0XHRcdFwmIzM0O01BQy1QSFkgZXJyb3IgaW50ZXJydXB0cyB1bm1hc2sgZmFpbGVkOiAlZFxcblwmIzM0OywgcmV0KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jIGIvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuY1xuaW5kZXggNzNjMjNkMzExZDcyYS4uYzNhNzM4Yzc0MjViZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmNcbkBAIC0yNywxMSAmIzQzOzI3LDIzIEBAXG4gI2RlZmluZSBMQU44NjVYX1JFR19DRkdQQVJBTV9DVFJMIDB4MDBEQVxuICNkZWZpbmUgTEFOODY1WF9SRUdfU1RTMiAweDAwMTlcbiBcbiYjNDM7LyogUEhZIGludGVycnVwdCBzdGF0dXMgYW5kIG1hc2sgcmVnaXN0ZXJzIChNRElPX01NRF9WRU5EMikuIFRoZSBzdGF0dXMgYml0c1xuJiM0MzsgKiBhcmUgcmVhZC10by1jbGVhcjsgYSBtYXNrIGJpdCBpcyBlbmFibGVkIGJ5IHdyaXRpbmcgMC5cbiYjNDM7ICovXG4mIzQzOyNkZWZpbmUgTEFOODZYWF9SRUdfU1RTMVx0XHQweDAwMThcbiYjNDM7I2RlZmluZSBMQU44NlhYX1JFR19JTVNLMVx0XHQweDAwMUNcbiYjNDM7XG4mIzQzOyNkZWZpbmUgTEFOODZYWF9TVFMxX0xJTktfU1RTX0NIQU5HRURcdEJJVCgxMylcbiYjNDM7I2RlZmluZSBMQU44NlhYX1NUUzFfUExDQV9TVFNfQ0hBTkdFRFx0QklUKDExKVxuJiM0MztcbiAvKiBDb2xsaXNpb24gRGV0ZWN0b3IgQ29udHJvbCAwIFJlZ2lzdGVyICovXG4gI2RlZmluZSBMQU44NlhYX1JFR19DT0xfREVUX0NUUkwwXHQweDAwODdcbiAjZGVmaW5lIENPTF9ERVRfQ1RSTDBfRU5BQkxFX0JJVF9NQVNLXHRCSVQoMTUpXG4gI2RlZmluZSBDT0xfREVUX0VOQUJMRVx0XHRcdEJJVCgxNSlcbiAjZGVmaW5lIENPTF9ERVRfRElTQUJMRVx0XHRcdDB4MDAwMFxuJiM0MzsjZGVmaW5lIENPTF9ERVRfQ1RSTDBfQ0NNRkNfTUFTS1x0R0VOTUFTSygxMCwgOSlcbiYjNDM7LyogT0EgZGVmYXVsdDogY29sbGlzaW9ucyBnYXRlZCBieSBQTENBX1N0YXR1cyBpbiBoYXJkd2FyZSAqL1xuJiM0MzsjZGVmaW5lIENPTF9ERVRfQ1RSTDBfQ0NNRkNfT0FfREVGQVVMVFx0QklUKDkpXG4gXG4gLyogTEFOODY3MC8xLzIgUmV2LkQwIExpbmsgU3RhdHVzIFNlbGVjdGlvbiBSZWdpc3RlciAqL1xuICNkZWZpbmUgTEFOODY3WF9SRUdfTElOS19TVEFUVVNfQ1RSTFx0MHgwMDEyXG5AQCAtNDU4LDYgJiM0Mzs0NzAsMTYgQEAgc3RhdGljIGludCBsYW44Nnh4X3BsY2Ffc2V0X2NmZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbiYjNDM7XHQvKiBQSFlzIHdpdGggcm91dGVkIGludGVycnVwdHMgaGFuZGxlIENERU4gZHluYW1pY2FsbHkgdmlhIHRoZSBpbnRlcnJ1cHRcbiYjNDM7XHQgKiBoYW5kbGVyLCBzbyBza2lwIHRoZSBzdGF0aWMgd3JpdGUuIFBIWXMgcnVubmluZyB3aXRoIFBIWV9QT0xMIGhhdmUgbm9cbiYjNDM7XHQgKiBpbnRlcnJ1cHQgaGFuZGxlciwgc28gYXBwbHkgdGhlIHN0YXRpYyBDREVOIHdyaXRlIGFzIGEgYmFzZWxpbmUgb25cbiYjNDM7XHQgKiBldmVyeSBldGh0b29sIFBMQ0EgcmVjb25maWd1cmF0aW9uLiBUaGUgbGltaXRhdGlvbiBpcyB0aGF0IGF1dG9ub21vdXNcbiYjNDM7XHQgKiBQTENBIG1vZGUgdHJhbnNpdGlvbnMgYmV0d2VlbiBldGh0b29sIHJlY29uZmlndXJhdGlvbnMgYXJlIG5vdFxuJiM0MztcdCAqIHRyYWNrZWQgb24gc3VjaCBib2FyZHMuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKHBoeWRldi1cdTAwM2VpcnEgIT0gUEhZX1BPTEwpXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4gXHRpZiAocGxjYV9jZmctXHUwMDNlZW5hYmxlZClcbiBcdFx0cmV0dXJuIHBoeV9tb2RpZnlfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXG4gXHRcdFx0XHQgICAgICBMQU44NlhYX1JFR19DT0xfREVUX0NUUkwwLFxuQEAgLTQ4NCw2ICYjNDM7NTA2LDE4IEBAIHN0YXRpYyBpbnQgbGFuODY3eF9yZXZkMF9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0XHRcdHJldHVybiByZXQ7XG4gXHR9XG4gXG4mIzQzO1x0LyogQU4xNzYwOiBjb25maWd1cmUgQ0NNRkMgdG8gT0EgZGVmYXVsdCBzbyB0aGF0IHRoZSBoYXJkd2FyZVxuJiM0MztcdCAqIGF1dG9tYXRpY2FsbHkgZ2F0ZXMgY29sbGlzaW9uIGZvcndhcmRpbmcgdG8gdGhlIE1BQyBiYXNlZCBvblxuJiM0MztcdCAqIFBMQ0FfU3RhdHVzLiBDb2xsaXNpb25zIGFyZSBuZWl0aGVyIGNvdW50ZWQgbm9yIGZvcndhcmRlZCB3aGVuXG4mIzQzO1x0ICogUExDQV9TdGF0dXMgPSBPSywgZWxpbWluYXRpbmcgdGhlIG5lZWQgZm9yIHNvZnR3YXJlLWRyaXZlbiBDREVOXG4mIzQzO1x0ICogdG9nZ2xpbmcgaW4gdGhlIGludGVycnVwdCBoYW5kbGVyLiBDREVOIHJlbWFpbnMgZW5hYmxlZC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRyZXQgPSBwaHlfbW9kaWZ5X21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBMQU44NlhYX1JFR19DT0xfREVUX0NUUkwwLFxuJiM0MztcdFx0XHQgICAgIENPTF9ERVRfQ1RSTDBfQ0NNRkNfTUFTSyxcbiYjNDM7XHRcdFx0ICAgICBDT0xfREVUX0NUUkwwX0NDTUZDX09BX0RFRkFVTFQpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiBcdC8qIEluaXRpYWxseSB0aGUgUEhZIHdpbGwgYmUgaW4gQ1NNQS9DRCBtb2RlIGJ5IGRlZmF1bHQuIFNvIGl0IGlzXG4gXHQgKiByZXF1aXJlZCB0byBzZXQgdGhlIGxpbmsgYWx3YXlzIGFjdGl2ZSBhcyBpdCBkb2VzbiYjMzk7dCBzdXBwb3J0XG4gXHQgKiBhdXRvbmVnLlxuQEAgLTUwNiw2ICYjNDM7NTQwLDEyMSBAQCBzdGF0aWMgaW50IGxhbjg2eHhfcmVhZF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7c3RhdGljIGludCBsYW44Nnh4X2NvbmZpZ19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4mIzQzO3tcbiYjNDM7XHR1MTYgbWFzayA9IExBTjg2WFhfU1RTMV9QTENBX1NUU19DSEFOR0VEO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdGlmIChwaHlkZXYtXHUwMDNlcGh5X2lkID09IFBIWV9JRF9MQU44NjdYX1JFVkQwKVxuJiM0MztcdFx0bWFzayB8PSBMQU44NlhYX1NUUzFfTElOS19TVFNfQ0hBTkdFRDtcbiYjNDM7XG4mIzQzO1x0aWYgKHBoeWRldi1cdTAwM2VpbnRlcnJ1cHRzID09IFBIWV9JTlRFUlJVUFRfRU5BQkxFRCkge1xuJiM0MztcdFx0LyogUmVhZCB0byBjbGVhciBhbnkgcGVuZGluZyBzdGF0dXMgYmVmb3JlIGVuYWJsaW5nLiAqL1xuJiM0MztcdFx0cmV0ID0gcGh5X3JlYWRfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIExBTjg2WFhfUkVHX1NUUzEpO1xuJiM0MztcdFx0aWYgKHJldCBcdTAwM2MgMClcbiYjNDM7XHRcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0XHQvKiBBIG1hc2sgYml0IG9mIDAgZW5hYmxlcyB0aGUgY29ycmVzcG9uZGluZyBpbnRlcnJ1cHQuICovXG4mIzQzO1x0XHRyZXR1cm4gcGh5X2NsZWFyX2JpdHNfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXG4mIzQzO1x0XHRcdFx0XHQgIExBTjg2WFhfUkVHX0lNU0sxLCBtYXNrKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldCA9IHBoeV9zZXRfYml0c19tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTEFOODZYWF9SRUdfSU1TSzEsXG4mIzQzO1x0XHRcdCAgICAgICBtYXNrKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0LyogUmVhZCB0byBjbGVhciBhbnkgcGVuZGluZyBzdGF0dXMgYWZ0ZXIgZGlzYWJsaW5nLiAqL1xuJiM0MztcdHJldCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBMQU44NlhYX1JFR19TVFMxKTtcbiYjNDM7XHRpZiAocmV0IFx1MDAzYyAwKVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpcnFyZXR1cm5fdCBsYW44Nnh4X2hhbmRsZV9pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBwaHlfcGxjYV9zdGF0dXMgcGxjYV9zdDtcbiYjNDM7XHRpcnFyZXR1cm5fdCByZXRfaXJxID0gSVJRX05PTkU7XG4mIzQzO1x0aW50IHN0czEsIHJldDtcbiYjNDM7XG4mIzQzO1x0LyogUmVhZGluZyB0aGUgc3RhdHVzIHJlZ2lzdGVyIGNsZWFycyB0aGUgbGF0Y2hlZCBldmVudCBiaXRzLiAqL1xuJiM0MztcdHN0czEgPSBwaHlfcmVhZF9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTEFOODZYWF9SRUdfU1RTMSk7XG4mIzQzO1x0aWYgKHN0czEgXHUwMDNjIDApIHtcbiYjNDM7XHRcdHBoeV9lcnJvcihwaHlkZXYpO1xuJiM0MztcdFx0cmV0dXJuIElSUV9OT05FO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKHN0czEgXHUwMDI2IExBTjg2WFhfU1RTMV9QTENBX1NUU19DSEFOR0VEKSB7XG4mIzQzO1x0XHRyZXQgPSBnZW5waHlfYzQ1X3BsY2FfZ2V0X3N0YXR1cyhwaHlkZXYsIFx1MDAyNnBsY2Ffc3QpO1xuJiM0MztcdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuJiM0MztcdFx0XHRwaHlfZXJyb3IocGh5ZGV2KTtcbiYjNDM7XHRcdFx0cmV0dXJuIElSUV9OT05FO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdC8qIEFOMTc2MC9BTjE2OTk6IGRpc2FibGUgY29sbGlzaW9uIGRldGVjdGlvbiBpbiBQTENBIG1vZGUgdG9cbiYjNDM7XHRcdCAqIGltcHJvdmUgc2lnbmFsIHF1YWxpdHk7IHJlLWVuYWJsZSBpdCBpbiBDU01BL0NEIG1vZGUuXG4mIzQzO1x0XHQgKlxuJiM0MztcdFx0ICogaHR0cHM6Ly93d3cubWljcm9jaGlwLmNvbS9lbi11cy9hcHBsaWNhdGlvbi1ub3Rlcy9hbjE3NjBcbiYjNDM7XHRcdCAqIGh0dHBzOi8vd3d3Lm1pY3JvY2hpcC5jb20vZW4tdXMvYXBwbGljYXRpb24tbm90ZXMvYW4xNjk5XG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdHJldCA9IHBoeV9tb2RpZnlfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXG4mIzQzO1x0XHRcdFx0ICAgICBMQU44NlhYX1JFR19DT0xfREVUX0NUUkwwLFxuJiM0MztcdFx0XHRcdCAgICAgQ09MX0RFVF9DVFJMMF9FTkFCTEVfQklUX01BU0ssXG4mIzQzO1x0XHRcdFx0ICAgICBwbGNhX3N0LnBzdCA/IENPTF9ERVRfRElTQUJMRSA6XG4mIzQzO1x0XHRcdFx0ICAgICBDT0xfREVUX0VOQUJMRSk7XG4mIzQzO1x0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4mIzQzO1x0XHRcdHBoeV9lcnJvcihwaHlkZXYpO1xuJiM0MztcdFx0XHRyZXR1cm4gSVJRX05PTkU7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0cmV0X2lycSA9IElSUV9IQU5ETEVEO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldF9pcnE7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpcnFyZXR1cm5fdCBsYW44Njd4X3JldmQwX2hhbmRsZV9pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBwaHlfcGxjYV9zdGF0dXMgcGxjYV9zdDtcbiYjNDM7XHRpcnFyZXR1cm5fdCByZXRfaXJxID0gSVJRX05PTkU7XG4mIzQzO1x0aW50IHN0czEsIHJldDtcbiYjNDM7XG4mIzQzO1x0LyogUmVhZGluZyB0aGUgc3RhdHVzIHJlZ2lzdGVyIGNsZWFycyB0aGUgbGF0Y2hlZCBldmVudCBiaXRzLiAqL1xuJiM0MztcdHN0czEgPSBwaHlfcmVhZF9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTEFOODZYWF9SRUdfU1RTMSk7XG4mIzQzO1x0aWYgKHN0czEgXHUwMDNjIDApIHtcbiYjNDM7XHRcdHBoeV9lcnJvcihwaHlkZXYpO1xuJiM0MztcdFx0cmV0dXJuIElSUV9OT05FO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKHN0czEgXHUwMDI2IExBTjg2WFhfU1RTMV9MSU5LX1NUU19DSEFOR0VEKSB7XG4mIzQzO1x0XHRwaHlfdHJpZ2dlcl9tYWNoaW5lKHBoeWRldik7XG4mIzQzO1x0XHRyZXRfaXJxID0gSVJRX0hBTkRMRUQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAoc3RzMSBcdTAwMjYgTEFOODZYWF9TVFMxX1BMQ0FfU1RTX0NIQU5HRUQpIHtcbiYjNDM7XHRcdHJldCA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfc3RhdHVzKHBoeWRldiwgXHUwMDI2cGxjYV9zdCk7XG4mIzQzO1x0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4mIzQzO1x0XHRcdHBoeV9lcnJvcihwaHlkZXYpO1xuJiM0MztcdFx0XHRyZXR1cm4gSVJRX05PTkU7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0LyogQ29sbGlzaW9uIGRldGVjdGlvbiBpcyBoYW5kbGVkIGF1dG9ub21vdXNseSBieSB0aGUgaGFyZHdhcmVcbiYjNDM7XHRcdCAqIHZpYSBDQ01GQy4gT25seSB0aGUgbGluayBzdGF0dXMgc2VsZWN0aW9uIG5lZWRzIHRvIGJlIHVwZGF0ZWRcbiYjNDM7XHRcdCAqIG9uIGVhY2ggUExDQSBzdGF0dXMgdHJhbnNpdGlvbi5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0cmV0ID0gbGFuODY3eF9yZXZkMF9saW5rX2FjdGl2ZV9zZWxlY3Rpb24ocGh5ZGV2LCBwbGNhX3N0LnBzdCk7XG4mIzQzO1x0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4mIzQzO1x0XHRcdHBoeV9lcnJvcihwaHlkZXYpO1xuJiM0MztcdFx0XHRyZXR1cm4gSVJRX05PTkU7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0cmV0X2lycSA9IElSUV9IQU5ETEVEO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldF9pcnE7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MXNfZHJpdmVyW10gPSB7XG4gXHR7XG4gXHRcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfTEFOODY3WF9SRVZCMSksXG5AQCAtNTEzLDYgJiM0Mzs2NjIsOCBAQCBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbWljcm9jaGlwX3Qxc19kcml2ZXJbXSA9IHtcbiBcdFx0LmZlYXR1cmVzICAgICAgICAgICA9IFBIWV9CQVNJQ19UMVNfUDJNUF9GRUFUVVJFUyxcbiBcdFx0LmNvbmZpZ19pbml0ICAgICAgICA9IGxhbjg2N3hfcmV2YjFfY29uZmlnX2luaXQsXG4gXHRcdC5yZWFkX3N0YXR1cyAgICAgICAgPSBsYW44Nnh4X3JlYWRfc3RhdHVzLFxuJiM0MztcdFx0LmNvbmZpZ19pbnRyICAgICAgICA9IGxhbjg2eHhfY29uZmlnX2ludHIsXG4mIzQzO1x0XHQuaGFuZGxlX2ludGVycnVwdCAgID0gbGFuODZ4eF9oYW5kbGVfaW50ZXJydXB0LFxuIFx0XHQuZ2V0X3BsY2FfY2ZnXHQgICAgPSBnZW5waHlfYzQ1X3BsY2FfZ2V0X2NmZyxcbiBcdFx0LnNldF9wbGNhX2NmZ1x0ICAgID0gZ2VucGh5X2M0NV9wbGNhX3NldF9jZmcsXG4gXHRcdC5nZXRfcGxjYV9zdGF0dXMgICAgPSBnZW5waHlfYzQ1X3BsY2FfZ2V0X3N0YXR1cyxcbkBAIC01MjMsNiAmIzQzOzY3NCw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtaWNyb2NoaXBfdDFzX2RyaXZlcltdID0ge1xuIFx0XHQuZmVhdHVyZXMgICAgICAgICAgID0gUEhZX0JBU0lDX1QxU19QMk1QX0ZFQVRVUkVTLFxuIFx0XHQuY29uZmlnX2luaXQgICAgICAgID0gbGFuODY3eF9yZXZjX2NvbmZpZ19pbml0LFxuIFx0XHQucmVhZF9zdGF0dXMgICAgICAgID0gbGFuODZ4eF9yZWFkX3N0YXR1cyxcbiYjNDM7XHRcdC5jb25maWdfaW50ciAgICAgICAgPSBsYW44Nnh4X2NvbmZpZ19pbnRyLFxuJiM0MztcdFx0LmhhbmRsZV9pbnRlcnJ1cHQgICA9IGxhbjg2eHhfaGFuZGxlX2ludGVycnVwdCxcbiBcdFx0LmdldF9wbGNhX2NmZ1x0ICAgID0gZ2VucGh5X2M0NV9wbGNhX2dldF9jZmcsXG4gXHRcdC5zZXRfcGxjYV9jZmdcdCAgICA9IGxhbjg2eHhfcGxjYV9zZXRfY2ZnLFxuIFx0XHQuZ2V0X3BsY2Ffc3RhdHVzICAgID0gZ2VucGh5X2M0NV9wbGNhX2dldF9zdGF0dXMsXG5AQCAtNTMzLDYgJiM0Mzs2ODYsOCBAQCBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbWljcm9jaGlwX3Qxc19kcml2ZXJbXSA9IHtcbiBcdFx0LmZlYXR1cmVzICAgICAgICAgICA9IFBIWV9CQVNJQ19UMVNfUDJNUF9GRUFUVVJFUyxcbiBcdFx0LmNvbmZpZ19pbml0ICAgICAgICA9IGxhbjg2N3hfcmV2Y19jb25maWdfaW5pdCxcbiBcdFx0LnJlYWRfc3RhdHVzICAgICAgICA9IGxhbjg2eHhfcmVhZF9zdGF0dXMsXG4mIzQzO1x0XHQuY29uZmlnX2ludHIgICAgICAgID0gbGFuODZ4eF9jb25maWdfaW50cixcbiYjNDM7XHRcdC5oYW5kbGVfaW50ZXJydXB0ICAgPSBsYW44Nnh4X2hhbmRsZV9pbnRlcnJ1cHQsXG4gXHRcdC5nZXRfcGxjYV9jZmdcdCAgICA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfY2ZnLFxuIFx0XHQuc2V0X3BsY2FfY2ZnXHQgICAgPSBsYW44Nnh4X3BsY2Ffc2V0X2NmZyxcbiBcdFx0LmdldF9wbGNhX3N0YXR1cyAgICA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfc3RhdHVzLFxuQEAgLTU0Miw2ICYjNDM7Njk3LDggQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MXNfZHJpdmVyW10gPSB7XG4gXHRcdC5uYW1lICAgICAgICAgICAgICAgPSBcJiMzNDtMQU44NjdYIFJldi5EMFwmIzM0OyxcbiBcdFx0LmZlYXR1cmVzICAgICAgICAgICA9IFBIWV9CQVNJQ19UMVNfUDJNUF9GRUFUVVJFUyxcbiBcdFx0LmNvbmZpZ19pbml0ICAgICAgICA9IGxhbjg2N3hfcmV2ZDBfY29uZmlnX2luaXQsXG4mIzQzO1x0XHQuY29uZmlnX2ludHIgICAgICAgID0gbGFuODZ4eF9jb25maWdfaW50cixcbiYjNDM7XHRcdC5oYW5kbGVfaW50ZXJydXB0ICAgPSBsYW44Njd4X3JldmQwX2hhbmRsZV9pbnRlcnJ1cHQsXG4gXHRcdC5nZXRfcGxjYV9jZmdcdCAgICA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfY2ZnLFxuIFx0XHQuc2V0X3BsY2FfY2ZnXHQgICAgPSBsYW44Nnh4X3BsY2Ffc2V0X2NmZyxcbiBcdFx0LmdldF9wbGNhX3N0YXR1cyAgICA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfc3RhdHVzLFxuQEAgLTU1Niw2ICYjNDM7NzEzLDggQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MXNfZHJpdmVyW10gPSB7XG4gXHRcdC5mZWF0dXJlcyAgICAgICAgICAgPSBQSFlfQkFTSUNfVDFTX1AyTVBfRkVBVFVSRVMsXG4gXHRcdC5jb25maWdfaW5pdCAgICAgICAgPSBsYW44NjV4X3JldmJfY29uZmlnX2luaXQsXG4gXHRcdC5yZWFkX3N0YXR1cyAgICAgICAgPSBsYW44Nnh4X3JlYWRfc3RhdHVzLFxuJiM0MztcdFx0LmNvbmZpZ19pbnRyICAgICAgICA9IGxhbjg2eHhfY29uZmlnX2ludHIsXG4mIzQzO1x0XHQuaGFuZGxlX2ludGVycnVwdCAgID0gbGFuODZ4eF9oYW5kbGVfaW50ZXJydXB0LFxuIFx0XHQucmVhZF9tbWQgICAgICAgICAgID0gZ2VucGh5X3JlYWRfbW1kX2M0NSxcbiBcdFx0LndyaXRlX21tZCAgICAgICAgICA9IGdlbnBoeV93cml0ZV9tbWRfYzQ1LFxuIFx0XHQuZ2V0X3BsY2FfY2ZnXHQgICAgPSBnZW5waHlfYzQ1X3BsY2FfZ2V0X2NmZyxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L29hX3RjNi5oIGIvaW5jbHVkZS9saW51eC9vYV90YzYuaFxuaW5kZXggMjdmNjUyZDQ5MjBiMi4uMWM4Y2MyNjNjNWU1MyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvb2FfdGM2LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvb2FfdGM2LmhcbkBAIC0zMCw2ICYjNDM7MzAsNyBAQFxuIFxuIC8qIFN0YXR1cyBSZWdpc3RlciAjMCAqL1xuICNkZWZpbmUgT0FfVEM2X1JFR19TVEFUVVMwXHRcdFx0MHgwMDA4XG4mIzQzOyNkZWZpbmUgT0FfVEM2X1NUQVRVUzBfUEhZX0lOVFx0XHRcdEJJVCg3KVxuICNkZWZpbmUgT0FfVEM2X1NUQVRVUzBfUkVTRVRDXHRcdFx0QklUKDYpXHQvKiBSZXNldCBDb21wbGV0ZSAqL1xuICNkZWZpbmUgT0FfVEM2X1NUQVRVUzBfSEVBREVSX0VSUk9SXHRcdEJJVCg1KVxuICNkZWZpbmUgT0FfVEM2X1NUQVRVUzBfTE9TU19PRl9GUkFNRV9FUlJPUlx0QklUKDQpXG5AQCAtNDMsNiAmIzQzOzQ0LDcgQEBcbiBcbiAvKiBJbnRlcnJ1cHQgTWFzayBSZWdpc3RlciAjMCAqL1xuICNkZWZpbmUgT0FfVEM2X1JFR19JTlRfTUFTSzBcdFx0XHRcdDB4MDAwQ1xuJiM0MzsjZGVmaW5lIE9BX1RDNl9JTlRfTUFTSzBfUEhZX0lOVF9NQVNLXHRcdFx0QklUKDcpXG4gI2RlZmluZSBPQV9UQzZfSU5UX01BU0swX0hFQURFUl9FUlJfTUFTS1x0XHRCSVQoNSlcbiAjZGVmaW5lIE9BX1RDNl9JTlRfTUFTSzBfTE9TU19PRl9GUkFNRV9FUlJfTUFTS1x0XHRCSVQoNClcbiAjZGVmaW5lIE9BX1RDNl9JTlRfTUFTSzBfUlhfQlVGRkVSX09WRVJGTE9XX0VSUl9NQVNLXHRCSVQoMylcbkBAIC02OCw2ICYjNDM7NzAsNyBAQCBzdHJ1Y3Qgb2FfdGM2O1xuIFxuIGVudW0gb2FfdGM2X3F1aXJrX2ZsYWcge1xuIFx0T0FfVEM2X0JST0tFTl9QSFkgPSBCSVQoMCksXG4mIzQzO1x0T0FfVEM2X1BIWV9JTlQgICAgPSBCSVQoMSksXG4gfTtcbiBcbiBzdHJ1Y3Qgb2FfdGM2X3F1aXJrcyB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MjI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBMQU44NjV4IFNQSSBFdGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYyksIHRoZSBPcGVuIEFsbGlhbmNlIFRDNiBNQUMtUEhZIHByb3RvY29sIGxheWVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYyksIGFuZCB0aGUgTWljcm9jaGlwIDEwQkFTRS1UMVMgUEhZIGRyaXZlciAoZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYykuIFRoZXNlIGRyaXZlcnMgb3BlcmF0ZSBvbiBzcGVjaWZpYyBwaHlzaWNhbCAxMEJBU0UtVDFTIHNpbmdsZS1wYWlyIEV0aGVybmV0IGhhcmR3YXJlIGNvbm5lY3RlZCBvdmVyIFNQSS9NRElPIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDQ0YmMxYzM3ZjdlODY2ZWI5OTdkODg3OGE1ZjZlN2Y3MDUwYjdkMWYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIFNlcCA3IDA4OjIyOjA0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jCmluZGV4IDI2YTI3NjEzMzJhNWEuLjA0M2EzZGMzZjk2NTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMKQEAgLTMzMiw2ICYjNDM7MzMyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBsYW44NjV4X25ldGRldl9vcHMgPSB7CiAKIHN0YXRpYyBpbnQgbGFuODY1eF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewomIzQzOwlzdHJ1Y3Qgb2FfdGM2X3F1aXJrcyB0YzZfcXVpcmtzID0ge307CiAJc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjsKIAlzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2OwogCWludCByZXQ7CkBAIC0zNDYsNyAmIzQzOzM0Nyw4IEBAIHN0YXRpYyBpbnQgbGFuODY1eF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCXNwaV9zZXRfZHJ2ZGF0YShzcGksIHByaXYpOwogCUlOSVRfV09SSygmYW1wO3ByaXYtJmd0O211bHRpY2FzdF93b3JrLCBsYW44NjV4X211bHRpY2FzdF93b3JrX2hhbmRsZXIpOwogCi0JcHJpdi0mZ3Q7dGM2ID0gb2FfdGM2X2luaXQoc3BpLCBuZXRkZXYsIE5VTEwpOwomIzQzOwl0YzZfcXVpcmtzLnF1aXJrX2ZsYWdzID0gT0FfVEM2X1BIWV9JTlQ7CiYjNDM7CXByaXYtJmd0O3RjNiA9IG9hX3RjNl9pbml0KHNwaSwgbmV0ZGV2LCAmYW1wO3RjNl9xdWlya3MpOwogCWlmICghcHJpdi0mZ3Q7dGM2KSB7CiAJCXJldCA9IC1FTk9ERVY7CiAJCWdvdG8gZnJlZV9uZXRkZXY7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jCmluZGV4IDZmY2M1ZjU2MWQ1NjAuLjAwYjAxNzZjMWZlN2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jCkBAIC04LDYgJiM0Mzs4LDggQEAKICNpbmNsdWRlICZsdDtsaW51eC9iaXRmaWVsZC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2lvcG9sbC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2ludGVycnVwdC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9pcnEuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvaXJxZG9tYWluLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbWRpby5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BoeS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L29hX3RjNi5oJmd0OwpAQCAtNzAsNiAmIzQzOzcyLDggQEAgc3RydWN0IG9hX3RjNiB7CiAJc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldjsKIAlzdHJ1Y3QgbWlpX2J1cyAqbWRpb2J1czsKIAlzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpOwomIzQzOwlzdHJ1Y3QgaXJxX2RvbWFpbiAqcGh5X2lycV9kb21haW47CiYjNDM7CWludCBwaHlfdmlycTsKIAlzdHJ1Y3QgbXV0ZXggc3BpX2N0cmxfbG9jazsgLyogUHJvdGVjdHMgc3BpIGNvbnRyb2wgdHJhbnNmZXIgKi8KIAlzcGlubG9ja190IHR4X3NrYl9sb2NrOyAvKiBQcm90ZWN0cyB0eCBza2IgaGFuZGxpbmcgKi8KIAl2b2lkICpzcGlfY3RybF90eF9idWY7CkBAIC01MjgsNiAmIzQzOzUzMiw0NCBAQCBpbnQgb2FfdGM2X21kaW9idXNfd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgZGV2bnVtLAogfQogRVhQT1JUX1NZTUJPTF9HUEwob2FfdGM2X21kaW9idXNfd3JpdGVfYzQ1KTsKIAomIzQzO3N0YXRpYyBpbnQgb2FfdGM2X3BoeV9pcnFfbWFwKHN0cnVjdCBpcnFfZG9tYWluICpkb21haW4sIHVuc2lnbmVkIGludCBpcnEsCiYjNDM7CQkJICAgICAgaXJxX2h3X251bWJlcl90IGh3aXJxKQomIzQzO3sKJiM0MzsJaXJxX3NldF9jaGlwX2RhdGEoaXJxLCBkb21haW4tJmd0O2hvc3RfZGF0YSk7CiYjNDM7CWlycV9zZXRfY2hpcF9hbmRfaGFuZGxlcihpcnEsICZhbXA7ZHVtbXlfaXJxX2NoaXAsIGhhbmRsZV9zaW1wbGVfaXJxKTsKJiM0MzsJaXJxX3NldF9uZXN0ZWRfdGhyZWFkKGlycSwgdHJ1ZSk7CiYjNDM7CWlycV9zZXRfbm9wcm9iZShpcnEpOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfZG9tYWluX29wcyBvYV90YzZfcGh5X2lycV9kb21haW5fb3BzID0gewomIzQzOwkubWFwID0gb2FfdGM2X3BoeV9pcnFfbWFwLAomIzQzO307CiYjNDM7CiYjNDM7c3RhdGljIGludCBvYV90YzZfcGh5X2lycV9zZXR1cChzdHJ1Y3Qgb2FfdGM2ICp0YzYpCiYjNDM7ewomIzQzOwl0YzYtJmd0O3BoeV9pcnFfZG9tYWluID0KJiM0MzsJCWlycV9kb21haW5fY3JlYXRlX2xpbmVhcihOVUxMLCAxLAomIzQzOwkJCQkJICZhbXA7b2FfdGM2X3BoeV9pcnFfZG9tYWluX29wcywgdGM2KTsKJiM0MzsJaWYgKCF0YzYtJmd0O3BoeV9pcnFfZG9tYWluKQomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiYjNDM7CXRjNi0mZ3Q7cGh5X3ZpcnEgPSBpcnFfY3JlYXRlX21hcHBpbmcodGM2LSZndDtwaHlfaXJxX2RvbWFpbiwgMCk7CiYjNDM7CWlmICghdGM2LSZndDtwaHlfdmlycSkgewomIzQzOwkJaXJxX2RvbWFpbl9yZW1vdmUodGM2LSZndDtwaHlfaXJxX2RvbWFpbik7CiYjNDM7CQlyZXR1cm4gLUVOT01FTTsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgb2FfdGM2X3BoeV9pcnFfdGVhcmRvd24oc3RydWN0IG9hX3RjNiAqdGM2KQomIzQzO3sKJiM0MzsJaXJxX2Rpc3Bvc2VfbWFwcGluZyh0YzYtJmd0O3BoeV92aXJxKTsKJiM0MzsJaXJxX2RvbWFpbl9yZW1vdmUodGM2LSZndDtwaHlfaXJxX2RvbWFpbik7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBvYV90YzZfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3Qgb2FfdGM2ICp0YzYpCiB7CiAJaW50IHJldDsKQEAgLTU1OSw5ICYjNDM7NjAxLDI1IEBAIHN0YXRpYyBpbnQgb2FfdGM2X21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG9hX3RjNiAqdGM2KQogCXNucHJpbnRmKHRjNi0mZ3Q7bWRpb2J1cy0mZ3Q7aWQsIEFSUkFZX1NJWkUodGM2LSZndDttZGlvYnVzLSZndDtpZCksICYjMzQ7JXMmIzM0OywKIAkJIGRldl9uYW1lKCZhbXA7dGM2LSZndDtzcGktJmd0O2RldikpOwogCiYjNDM7CWlmICh0YzYtJmd0O3F1aXJrX2ZsYWdzICZhbXA7IE9BX1RDNl9QSFlfSU5UKSB7CiYjNDM7CQlyZXQgPSBvYV90YzZfcGh5X2lycV9zZXR1cCh0YzYpOwomIzQzOwkJaWYgKHJldCkgewomIzQzOwkJCW1kaW9idXNfZnJlZSh0YzYtJmd0O21kaW9idXMpOwomIzQzOwkJCXJldHVybiByZXQ7CiYjNDM7CQl9CiYjNDM7CQkvKiBQb3B1bGF0ZSBhbGwgaXJxW10gZW50cmllcyBiZWZvcmUgcmVnaXN0cmF0aW9uIHNvCiYjNDM7CQkgKiBwaHlfZGV2aWNlX2NyZWF0ZSgpIHBpY2tzIHVwIHRoZSB2aXJ0dWFsIElSUSByZWdhcmRsZXNzIG9mCiYjNDM7CQkgKiB0aGUgUEhZJiMzOTtzIE1ESU8gYWRkcmVzcy4KJiM0MzsJCSAqLwomIzQzOwkJZm9yIChpbnQgaSA9IDA7IGkgJmx0OyBQSFlfTUFYX0FERFI7IGkmIzQzOyYjNDM7KQomIzQzOwkJCXRjNi0mZ3Q7bWRpb2J1cy0mZ3Q7aXJxW2ldID0gdGM2LSZndDtwaHlfdmlycTsKJiM0MzsJfQomIzQzOwogCXJldCA9IG1kaW9idXNfcmVnaXN0ZXIodGM2LSZndDttZGlvYnVzKTsKIAlpZiAocmV0KSB7CiAJCW5ldGRldl9lcnIodGM2LSZndDtuZXRkZXYsICYjMzQ7Q291bGQgbm90IHJlZ2lzdGVyIE1ESU8gYnVzXG4mIzM0Oyk7CiYjNDM7CQlpZiAodGM2LSZndDtxdWlya19mbGFncyAmYW1wOyBPQV9UQzZfUEhZX0lOVCkKJiM0MzsJCQlvYV90YzZfcGh5X2lycV90ZWFyZG93bih0YzYpOwogCQltZGlvYnVzX2ZyZWUodGM2LSZndDttZGlvYnVzKTsKIAkJcmV0dXJuIHJldDsKIAl9CkBAIC01NzIsNiAmIzQzOzYzMCw4IEBAIHN0YXRpYyBpbnQgb2FfdGM2X21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG9hX3RjNiAqdGM2KQogc3RhdGljIHZvaWQgb2FfdGM2X21kaW9idXNfdW5yZWdpc3RlcihzdHJ1Y3Qgb2FfdGM2ICp0YzYpCiB7CiAJbWRpb2J1c191bnJlZ2lzdGVyKHRjNi0mZ3Q7bWRpb2J1cyk7CiYjNDM7CWlmICh0YzYtJmd0O3F1aXJrX2ZsYWdzICZhbXA7IE9BX1RDNl9QSFlfSU5UKQomIzQzOwkJb2FfdGM2X3BoeV9pcnFfdGVhcmRvd24odGM2KTsKIAltZGlvYnVzX2ZyZWUodGM2LSZndDttZGlvYnVzKTsKIH0KIApAQCAtNjYxLDcgJiM0Mzs3MjEsNyBAQCBzdGF0aWMgaW50IG9hX3RjNl9zd19yZXNldF9tYWNwaHkoc3RydWN0IG9hX3RjNiAqdGM2KQogCXJldHVybiBvYV90YzZfd3JpdGVfcmVnaXN0ZXIodGM2LCBPQV9UQzZfUkVHX1NUQVRVUzAsIHJlZ3ZhbCk7CiB9CiAKLXN0YXRpYyBpbnQgb2FfdGM2X3VubWFza19tYWNwaHlfZXJyb3JfaW50ZXJydXB0cyhzdHJ1Y3Qgb2FfdGM2ICp0YzYpCiYjNDM7c3RhdGljIGludCBvYV90YzZfdW5tYXNrX2ludGVycnVwdHMoc3RydWN0IG9hX3RjNiAqdGM2KQogewogCXUzMiByZWd2YWw7CiAJaW50IHJldDsKQEAgLTY3MCw3ICYjNDM7NzMwLDggQEAgc3RhdGljIGludCBvYV90YzZfdW5tYXNrX21hY3BoeV9lcnJvcl9pbnRlcnJ1cHRzKHN0cnVjdCBvYV90YzYgKnRjNikKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JcmVndmFsICZhbXA7PSB+KE9BX1RDNl9JTlRfTUFTSzBfVFhfUFJPVE9DT0xfRVJSX01BU0sgfAomIzQzOwlyZWd2YWwgJmFtcDs9IH4oT0FfVEM2X0lOVF9NQVNLMF9QSFlfSU5UX01BU0sgfAomIzQzOwkJICAgIE9BX1RDNl9JTlRfTUFTSzBfVFhfUFJPVE9DT0xfRVJSX01BU0sgfAogCQkgICAgT0FfVEM2X0lOVF9NQVNLMF9SWF9CVUZGRVJfT1ZFUkZMT1dfRVJSX01BU0sgfAogCQkgICAgT0FfVEM2X0lOVF9NQVNLMF9MT1NTX09GX0ZSQU1FX0VSUl9NQVNLIHwKIAkJICAgIE9BX1RDNl9JTlRfTUFTSzBfSEVBREVSX0VSUl9NQVNLKTsKQEAgLTgxMCw2ICYjNDM7ODcxLDE1IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3Byb2Nlc3NfZXh0ZW5kZWRfc3RhdHVzKHN0cnVjdCBvYV90YzYgKnRjNikKIAkJcmV0dXJuIHJldDsKIAl9CiAKJiM0MzsJLyogRGlzcGF0Y2ggdGhlIFBIWSBpbnRlcnJ1cHQgdG8gcGh5bGliIHZpYSB0aGUgbmVzdGVkIHZpcnR1YWwgSVJRIHNvCiYjNDM7CSAqIHRoZSBQSFkgZHJpdmVyIHJlYWRzIGFuZCBhY2tub3dsZWRnZXMgaXRzIHN0YXR1cy4gUEhZSU5UIGlzIGxldmVsCiYjNDM7CSAqIHRyaWdnZXJlZCwgc28gZG9pbmcgdGhpcyBzeW5jaHJvbm91c2x5IGhlcmUgKGluIHRoZSBzbGVlcGFibGUKJiM0MzsJICogdGhyZWFkZWQgSVJRKSBjbGVhcnMgdGhlIHNvdXJjZSBiZWZvcmUgdGhlIG5leHQgZGF0YSBjaHVuay4KJiM0MzsJICovCiYjNDM7CWlmICgodGM2LSZndDtxdWlya19mbGFncyAmYW1wOyBPQV9UQzZfUEhZX0lOVCkgJmFtcDsmYW1wOwomIzQzOwkgICAgRklFTERfR0VUKE9BX1RDNl9TVEFUVVMwX1BIWV9JTlQsIHZhbHVlKSkKJiM0MzsJCWhhbmRsZV9uZXN0ZWRfaXJxKHRjNi0mZ3Q7cGh5X3ZpcnEpOwomIzQzOwogCWlmIChGSUVMRF9HRVQoT0FfVEM2X1NUQVRVUzBfUlhfQlVGRkVSX09WRVJGTE9XX0VSUk9SLCB2YWx1ZSkpIHsKIAkJb2FfdGM2X2xvb2tfZm9yX25ld19mcmFtZSh0YzYpOwogCQluZXRfZXJyX3JhdGVsaW1pdGVkKCYjMzQ7JXM6IFJlY2VpdmUgYnVmZmVyIG92ZXJmbG93IGVycm9yXG4mIzM0OywKQEAgLTE1MTgsNyAmIzQzOzE1ODgsNyBAQCBzdHJ1Y3Qgb2FfdGM2ICpvYV90YzZfaW5pdChzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LAogCQlyZXR1cm4gTlVMTDsKIAl9CiAKLQlyZXQgPSBvYV90YzZfdW5tYXNrX21hY3BoeV9lcnJvcl9pbnRlcnJ1cHRzKHRjNik7CiYjNDM7CXJldCA9IG9hX3RjNl91bm1hc2tfaW50ZXJydXB0cyh0YzYpOwogCWlmIChyZXQpIHsKIAkJZGV2X2VycigmYW1wO3RjNi0mZ3Q7c3BpLSZndDtkZXYsCiAJCQkmIzM0O01BQy1QSFkgZXJyb3IgaW50ZXJydXB0cyB1bm1hc2sgZmFpbGVkOiAlZFxuJiMzNDssIHJldCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jIGIvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYwppbmRleCA3M2MyM2QzMTFkNzJhLi5jM2E3MzhjNzQyNWJmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMKQEAgLTI3LDExICYjNDM7MjcsMjMgQEAKICNkZWZpbmUgTEFOODY1WF9SRUdfQ0ZHUEFSQU1fQ1RSTCAweDAwREEKICNkZWZpbmUgTEFOODY1WF9SRUdfU1RTMiAweDAwMTkKIAomIzQzOy8qIFBIWSBpbnRlcnJ1cHQgc3RhdHVzIGFuZCBtYXNrIHJlZ2lzdGVycyAoTURJT19NTURfVkVORDIpLiBUaGUgc3RhdHVzIGJpdHMKJiM0MzsgKiBhcmUgcmVhZC10by1jbGVhcjsgYSBtYXNrIGJpdCBpcyBlbmFibGVkIGJ5IHdyaXRpbmcgMC4KJiM0MzsgKi8KJiM0MzsjZGVmaW5lIExBTjg2WFhfUkVHX1NUUzEJCTB4MDAxOAomIzQzOyNkZWZpbmUgTEFOODZYWF9SRUdfSU1TSzEJCTB4MDAxQwomIzQzOwomIzQzOyNkZWZpbmUgTEFOODZYWF9TVFMxX0xJTktfU1RTX0NIQU5HRUQJQklUKDEzKQomIzQzOyNkZWZpbmUgTEFOODZYWF9TVFMxX1BMQ0FfU1RTX0NIQU5HRUQJQklUKDExKQomIzQzOwogLyogQ29sbGlzaW9uIERldGVjdG9yIENvbnRyb2wgMCBSZWdpc3RlciAqLwogI2RlZmluZSBMQU44NlhYX1JFR19DT0xfREVUX0NUUkwwCTB4MDA4NwogI2RlZmluZSBDT0xfREVUX0NUUkwwX0VOQUJMRV9CSVRfTUFTSwlCSVQoMTUpCiAjZGVmaW5lIENPTF9ERVRfRU5BQkxFCQkJQklUKDE1KQogI2RlZmluZSBDT0xfREVUX0RJU0FCTEUJCQkweDAwMDAKJiM0MzsjZGVmaW5lIENPTF9ERVRfQ1RSTDBfQ0NNRkNfTUFTSwlHRU5NQVNLKDEwLCA5KQomIzQzOy8qIE9BIGRlZmF1bHQ6IGNvbGxpc2lvbnMgZ2F0ZWQgYnkgUExDQV9TdGF0dXMgaW4gaGFyZHdhcmUgKi8KJiM0MzsjZGVmaW5lIENPTF9ERVRfQ1RSTDBfQ0NNRkNfT0FfREVGQVVMVAlCSVQoOSkKIAogLyogTEFOODY3MC8xLzIgUmV2LkQwIExpbmsgU3RhdHVzIFNlbGVjdGlvbiBSZWdpc3RlciAqLwogI2RlZmluZSBMQU44NjdYX1JFR19MSU5LX1NUQVRVU19DVFJMCTB4MDAxMgpAQCAtNDU4LDYgJiM0Mzs0NzAsMTYgQEAgc3RhdGljIGludCBsYW44Nnh4X3BsY2Ffc2V0X2NmZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKJiM0MzsJLyogUEhZcyB3aXRoIHJvdXRlZCBpbnRlcnJ1cHRzIGhhbmRsZSBDREVOIGR5bmFtaWNhbGx5IHZpYSB0aGUgaW50ZXJydXB0CiYjNDM7CSAqIGhhbmRsZXIsIHNvIHNraXAgdGhlIHN0YXRpYyB3cml0ZS4gUEhZcyBydW5uaW5nIHdpdGggUEhZX1BPTEwgaGF2ZSBubwomIzQzOwkgKiBpbnRlcnJ1cHQgaGFuZGxlciwgc28gYXBwbHkgdGhlIHN0YXRpYyBDREVOIHdyaXRlIGFzIGEgYmFzZWxpbmUgb24KJiM0MzsJICogZXZlcnkgZXRodG9vbCBQTENBIHJlY29uZmlndXJhdGlvbi4gVGhlIGxpbWl0YXRpb24gaXMgdGhhdCBhdXRvbm9tb3VzCiYjNDM7CSAqIFBMQ0EgbW9kZSB0cmFuc2l0aW9ucyBiZXR3ZWVuIGV0aHRvb2wgcmVjb25maWd1cmF0aW9ucyBhcmUgbm90CiYjNDM7CSAqIHRyYWNrZWQgb24gc3VjaCBib2FyZHMuCiYjNDM7CSAqLwomIzQzOwlpZiAocGh5ZGV2LSZndDtpcnEgIT0gUEhZX1BPTEwpCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKIAlpZiAocGxjYV9jZmctJmd0O2VuYWJsZWQpCiAJCXJldHVybiBwaHlfbW9kaWZ5X21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLAogCQkJCSAgICAgIExBTjg2WFhfUkVHX0NPTF9ERVRfQ1RSTDAsCkBAIC00ODQsNiAmIzQzOzUwNiwxOCBAQCBzdGF0aWMgaW50IGxhbjg2N3hfcmV2ZDBfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAkJCXJldHVybiByZXQ7CiAJfQogCiYjNDM7CS8qIEFOMTc2MDogY29uZmlndXJlIENDTUZDIHRvIE9BIGRlZmF1bHQgc28gdGhhdCB0aGUgaGFyZHdhcmUKJiM0MzsJICogYXV0b21hdGljYWxseSBnYXRlcyBjb2xsaXNpb24gZm9yd2FyZGluZyB0byB0aGUgTUFDIGJhc2VkIG9uCiYjNDM7CSAqIFBMQ0FfU3RhdHVzLiBDb2xsaXNpb25zIGFyZSBuZWl0aGVyIGNvdW50ZWQgbm9yIGZvcndhcmRlZCB3aGVuCiYjNDM7CSAqIFBMQ0FfU3RhdHVzID0gT0ssIGVsaW1pbmF0aW5nIHRoZSBuZWVkIGZvciBzb2Z0d2FyZS1kcml2ZW4gQ0RFTgomIzQzOwkgKiB0b2dnbGluZyBpbiB0aGUgaW50ZXJydXB0IGhhbmRsZXIuIENERU4gcmVtYWlucyBlbmFibGVkLgomIzQzOwkgKi8KJiM0MzsJcmV0ID0gcGh5X21vZGlmeV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTEFOODZYWF9SRUdfQ09MX0RFVF9DVFJMMCwKJiM0MzsJCQkgICAgIENPTF9ERVRfQ1RSTDBfQ0NNRkNfTUFTSywKJiM0MzsJCQkgICAgIENPTF9ERVRfQ1RSTDBfQ0NNRkNfT0FfREVGQVVMVCk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwogCS8qIEluaXRpYWxseSB0aGUgUEhZIHdpbGwgYmUgaW4gQ1NNQS9DRCBtb2RlIGJ5IGRlZmF1bHQuIFNvIGl0IGlzCiAJICogcmVxdWlyZWQgdG8gc2V0IHRoZSBsaW5rIGFsd2F5cyBhY3RpdmUgYXMgaXQgZG9lc24mIzM5O3Qgc3VwcG9ydAogCSAqIGF1dG9uZWcuCkBAIC01MDYsNiAmIzQzOzU0MCwxMjEgQEAgc3RhdGljIGludCBsYW44Nnh4X3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiAJcmV0dXJuIDA7CiB9CiAKJiM0MztzdGF0aWMgaW50IGxhbjg2eHhfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKJiM0Mzt7CiYjNDM7CXUxNiBtYXNrID0gTEFOODZYWF9TVFMxX1BMQ0FfU1RTX0NIQU5HRUQ7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CWlmIChwaHlkZXYtJmd0O3BoeV9pZCA9PSBQSFlfSURfTEFOODY3WF9SRVZEMCkKJiM0MzsJCW1hc2sgfD0gTEFOODZYWF9TVFMxX0xJTktfU1RTX0NIQU5HRUQ7CiYjNDM7CiYjNDM7CWlmIChwaHlkZXYtJmd0O2ludGVycnVwdHMgPT0gUEhZX0lOVEVSUlVQVF9FTkFCTEVEKSB7CiYjNDM7CQkvKiBSZWFkIHRvIGNsZWFyIGFueSBwZW5kaW5nIHN0YXR1cyBiZWZvcmUgZW5hYmxpbmcuICovCiYjNDM7CQlyZXQgPSBwaHlfcmVhZF9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTEFOODZYWF9SRUdfU1RTMSk7CiYjNDM7CQlpZiAocmV0ICZsdDsgMCkKJiM0MzsJCQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwkJLyogQSBtYXNrIGJpdCBvZiAwIGVuYWJsZXMgdGhlIGNvcnJlc3BvbmRpbmcgaW50ZXJydXB0LiAqLwomIzQzOwkJcmV0dXJuIHBoeV9jbGVhcl9iaXRzX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLAomIzQzOwkJCQkJICBMQU44NlhYX1JFR19JTVNLMSwgbWFzayk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0ID0gcGh5X3NldF9iaXRzX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBMQU44NlhYX1JFR19JTVNLMSwKJiM0MzsJCQkgICAgICAgbWFzayk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwkvKiBSZWFkIHRvIGNsZWFyIGFueSBwZW5kaW5nIHN0YXR1cyBhZnRlciBkaXNhYmxpbmcuICovCiYjNDM7CXJldCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBMQU44NlhYX1JFR19TVFMxKTsKJiM0MzsJaWYgKHJldCAmbHQ7IDApCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGlycXJldHVybl90IGxhbjg2eHhfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQomIzQzO3sKJiM0MzsJc3RydWN0IHBoeV9wbGNhX3N0YXR1cyBwbGNhX3N0OwomIzQzOwlpcnFyZXR1cm5fdCByZXRfaXJxID0gSVJRX05PTkU7CiYjNDM7CWludCBzdHMxLCByZXQ7CiYjNDM7CiYjNDM7CS8qIFJlYWRpbmcgdGhlIHN0YXR1cyByZWdpc3RlciBjbGVhcnMgdGhlIGxhdGNoZWQgZXZlbnQgYml0cy4gKi8KJiM0MzsJc3RzMSA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBMQU44NlhYX1JFR19TVFMxKTsKJiM0MzsJaWYgKHN0czEgJmx0OyAwKSB7CiYjNDM7CQlwaHlfZXJyb3IocGh5ZGV2KTsKJiM0MzsJCXJldHVybiBJUlFfTk9ORTsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAoc3RzMSAmYW1wOyBMQU44NlhYX1NUUzFfUExDQV9TVFNfQ0hBTkdFRCkgewomIzQzOwkJcmV0ID0gZ2VucGh5X2M0NV9wbGNhX2dldF9zdGF0dXMocGh5ZGV2LCAmYW1wO3BsY2Ffc3QpOwomIzQzOwkJaWYgKHJldCAmbHQ7IDApIHsKJiM0MzsJCQlwaHlfZXJyb3IocGh5ZGV2KTsKJiM0MzsJCQlyZXR1cm4gSVJRX05PTkU7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQkvKiBBTjE3NjAvQU4xNjk5OiBkaXNhYmxlIGNvbGxpc2lvbiBkZXRlY3Rpb24gaW4gUExDQSBtb2RlIHRvCiYjNDM7CQkgKiBpbXByb3ZlIHNpZ25hbCBxdWFsaXR5OyByZS1lbmFibGUgaXQgaW4gQ1NNQS9DRCBtb2RlLgomIzQzOwkJICoKJiM0MzsJCSAqIGh0dHBzOi8vd3d3Lm1pY3JvY2hpcC5jb20vZW4tdXMvYXBwbGljYXRpb24tbm90ZXMvYW4xNzYwCiYjNDM7CQkgKiBodHRwczovL3d3dy5taWNyb2NoaXAuY29tL2VuLXVzL2FwcGxpY2F0aW9uLW5vdGVzL2FuMTY5OQomIzQzOwkJICovCiYjNDM7CQlyZXQgPSBwaHlfbW9kaWZ5X21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLAomIzQzOwkJCQkgICAgIExBTjg2WFhfUkVHX0NPTF9ERVRfQ1RSTDAsCiYjNDM7CQkJCSAgICAgQ09MX0RFVF9DVFJMMF9FTkFCTEVfQklUX01BU0ssCiYjNDM7CQkJCSAgICAgcGxjYV9zdC5wc3QgPyBDT0xfREVUX0RJU0FCTEUgOgomIzQzOwkJCQkgICAgIENPTF9ERVRfRU5BQkxFKTsKJiM0MzsJCWlmIChyZXQgJmx0OyAwKSB7CiYjNDM7CQkJcGh5X2Vycm9yKHBoeWRldik7CiYjNDM7CQkJcmV0dXJuIElSUV9OT05FOwomIzQzOwkJfQomIzQzOwomIzQzOwkJcmV0X2lycSA9IElSUV9IQU5ETEVEOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiByZXRfaXJxOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaXJxcmV0dXJuX3QgbGFuODY3eF9yZXZkMF9oYW5kbGVfaW50ZXJydXB0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcGh5X3BsY2Ffc3RhdHVzIHBsY2Ffc3Q7CiYjNDM7CWlycXJldHVybl90IHJldF9pcnEgPSBJUlFfTk9ORTsKJiM0MzsJaW50IHN0czEsIHJldDsKJiM0MzsKJiM0MzsJLyogUmVhZGluZyB0aGUgc3RhdHVzIHJlZ2lzdGVyIGNsZWFycyB0aGUgbGF0Y2hlZCBldmVudCBiaXRzLiAqLwomIzQzOwlzdHMxID0gcGh5X3JlYWRfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIExBTjg2WFhfUkVHX1NUUzEpOwomIzQzOwlpZiAoc3RzMSAmbHQ7IDApIHsKJiM0MzsJCXBoeV9lcnJvcihwaHlkZXYpOwomIzQzOwkJcmV0dXJuIElSUV9OT05FOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChzdHMxICZhbXA7IExBTjg2WFhfU1RTMV9MSU5LX1NUU19DSEFOR0VEKSB7CiYjNDM7CQlwaHlfdHJpZ2dlcl9tYWNoaW5lKHBoeWRldik7CiYjNDM7CQlyZXRfaXJxID0gSVJRX0hBTkRMRUQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJaWYgKHN0czEgJmFtcDsgTEFOODZYWF9TVFMxX1BMQ0FfU1RTX0NIQU5HRUQpIHsKJiM0MzsJCXJldCA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfc3RhdHVzKHBoeWRldiwgJmFtcDtwbGNhX3N0KTsKJiM0MzsJCWlmIChyZXQgJmx0OyAwKSB7CiYjNDM7CQkJcGh5X2Vycm9yKHBoeWRldik7CiYjNDM7CQkJcmV0dXJuIElSUV9OT05FOwomIzQzOwkJfQomIzQzOwomIzQzOwkJLyogQ29sbGlzaW9uIGRldGVjdGlvbiBpcyBoYW5kbGVkIGF1dG9ub21vdXNseSBieSB0aGUgaGFyZHdhcmUKJiM0MzsJCSAqIHZpYSBDQ01GQy4gT25seSB0aGUgbGluayBzdGF0dXMgc2VsZWN0aW9uIG5lZWRzIHRvIGJlIHVwZGF0ZWQKJiM0MzsJCSAqIG9uIGVhY2ggUExDQSBzdGF0dXMgdHJhbnNpdGlvbi4KJiM0MzsJCSAqLwomIzQzOwkJcmV0ID0gbGFuODY3eF9yZXZkMF9saW5rX2FjdGl2ZV9zZWxlY3Rpb24ocGh5ZGV2LCBwbGNhX3N0LnBzdCk7CiYjNDM7CQlpZiAocmV0ICZsdDsgMCkgewomIzQzOwkJCXBoeV9lcnJvcihwaHlkZXYpOwomIzQzOwkJCXJldHVybiBJUlFfTk9ORTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCXJldF9pcnEgPSBJUlFfSEFORExFRDsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gcmV0X2lycTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbWljcm9jaGlwX3Qxc19kcml2ZXJbXSA9IHsKIAl7CiAJCVBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfTEFOODY3WF9SRVZCMSksCkBAIC01MTMsNiAmIzQzOzY2Miw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtaWNyb2NoaXBfdDFzX2RyaXZlcltdID0gewogCQkuZmVhdHVyZXMgICAgICAgICAgID0gUEhZX0JBU0lDX1QxU19QMk1QX0ZFQVRVUkVTLAogCQkuY29uZmlnX2luaXQgICAgICAgID0gbGFuODY3eF9yZXZiMV9jb25maWdfaW5pdCwKIAkJLnJlYWRfc3RhdHVzICAgICAgICA9IGxhbjg2eHhfcmVhZF9zdGF0dXMsCiYjNDM7CQkuY29uZmlnX2ludHIgICAgICAgID0gbGFuODZ4eF9jb25maWdfaW50ciwKJiM0MzsJCS5oYW5kbGVfaW50ZXJydXB0ICAgPSBsYW44Nnh4X2hhbmRsZV9pbnRlcnJ1cHQsCiAJCS5nZXRfcGxjYV9jZmcJICAgID0gZ2VucGh5X2M0NV9wbGNhX2dldF9jZmcsCiAJCS5zZXRfcGxjYV9jZmcJICAgID0gZ2VucGh5X2M0NV9wbGNhX3NldF9jZmcsCiAJCS5nZXRfcGxjYV9zdGF0dXMgICAgPSBnZW5waHlfYzQ1X3BsY2FfZ2V0X3N0YXR1cywKQEAgLTUyMyw2ICYjNDM7Njc0LDggQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MXNfZHJpdmVyW10gPSB7CiAJCS5mZWF0dXJlcyAgICAgICAgICAgPSBQSFlfQkFTSUNfVDFTX1AyTVBfRkVBVFVSRVMsCiAJCS5jb25maWdfaW5pdCAgICAgICAgPSBsYW44Njd4X3JldmNfY29uZmlnX2luaXQsCiAJCS5yZWFkX3N0YXR1cyAgICAgICAgPSBsYW44Nnh4X3JlYWRfc3RhdHVzLAomIzQzOwkJLmNvbmZpZ19pbnRyICAgICAgICA9IGxhbjg2eHhfY29uZmlnX2ludHIsCiYjNDM7CQkuaGFuZGxlX2ludGVycnVwdCAgID0gbGFuODZ4eF9oYW5kbGVfaW50ZXJydXB0LAogCQkuZ2V0X3BsY2FfY2ZnCSAgICA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfY2ZnLAogCQkuc2V0X3BsY2FfY2ZnCSAgICA9IGxhbjg2eHhfcGxjYV9zZXRfY2ZnLAogCQkuZ2V0X3BsY2Ffc3RhdHVzICAgID0gZ2VucGh5X2M0NV9wbGNhX2dldF9zdGF0dXMsCkBAIC01MzMsNiAmIzQzOzY4Niw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtaWNyb2NoaXBfdDFzX2RyaXZlcltdID0gewogCQkuZmVhdHVyZXMgICAgICAgICAgID0gUEhZX0JBU0lDX1QxU19QMk1QX0ZFQVRVUkVTLAogCQkuY29uZmlnX2luaXQgICAgICAgID0gbGFuODY3eF9yZXZjX2NvbmZpZ19pbml0LAogCQkucmVhZF9zdGF0dXMgICAgICAgID0gbGFuODZ4eF9yZWFkX3N0YXR1cywKJiM0MzsJCS5jb25maWdfaW50ciAgICAgICAgPSBsYW44Nnh4X2NvbmZpZ19pbnRyLAomIzQzOwkJLmhhbmRsZV9pbnRlcnJ1cHQgICA9IGxhbjg2eHhfaGFuZGxlX2ludGVycnVwdCwKIAkJLmdldF9wbGNhX2NmZwkgICAgPSBnZW5waHlfYzQ1X3BsY2FfZ2V0X2NmZywKIAkJLnNldF9wbGNhX2NmZwkgICAgPSBsYW44Nnh4X3BsY2Ffc2V0X2NmZywKIAkJLmdldF9wbGNhX3N0YXR1cyAgICA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfc3RhdHVzLApAQCAtNTQyLDYgJiM0Mzs2OTcsOCBAQCBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbWljcm9jaGlwX3Qxc19kcml2ZXJbXSA9IHsKIAkJLm5hbWUgICAgICAgICAgICAgICA9ICYjMzQ7TEFOODY3WCBSZXYuRDAmIzM0OywKIAkJLmZlYXR1cmVzICAgICAgICAgICA9IFBIWV9CQVNJQ19UMVNfUDJNUF9GRUFUVVJFUywKIAkJLmNvbmZpZ19pbml0ICAgICAgICA9IGxhbjg2N3hfcmV2ZDBfY29uZmlnX2luaXQsCiYjNDM7CQkuY29uZmlnX2ludHIgICAgICAgID0gbGFuODZ4eF9jb25maWdfaW50ciwKJiM0MzsJCS5oYW5kbGVfaW50ZXJydXB0ICAgPSBsYW44Njd4X3JldmQwX2hhbmRsZV9pbnRlcnJ1cHQsCiAJCS5nZXRfcGxjYV9jZmcJICAgID0gZ2VucGh5X2M0NV9wbGNhX2dldF9jZmcsCiAJCS5zZXRfcGxjYV9jZmcJICAgID0gbGFuODZ4eF9wbGNhX3NldF9jZmcsCiAJCS5nZXRfcGxjYV9zdGF0dXMgICAgPSBnZW5waHlfYzQ1X3BsY2FfZ2V0X3N0YXR1cywKQEAgLTU1Niw2ICYjNDM7NzEzLDggQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MXNfZHJpdmVyW10gPSB7CiAJCS5mZWF0dXJlcyAgICAgICAgICAgPSBQSFlfQkFTSUNfVDFTX1AyTVBfRkVBVFVSRVMsCiAJCS5jb25maWdfaW5pdCAgICAgICAgPSBsYW44NjV4X3JldmJfY29uZmlnX2luaXQsCiAJCS5yZWFkX3N0YXR1cyAgICAgICAgPSBsYW44Nnh4X3JlYWRfc3RhdHVzLAomIzQzOwkJLmNvbmZpZ19pbnRyICAgICAgICA9IGxhbjg2eHhfY29uZmlnX2ludHIsCiYjNDM7CQkuaGFuZGxlX2ludGVycnVwdCAgID0gbGFuODZ4eF9oYW5kbGVfaW50ZXJydXB0LAogCQkucmVhZF9tbWQgICAgICAgICAgID0gZ2VucGh5X3JlYWRfbW1kX2M0NSwKIAkJLndyaXRlX21tZCAgICAgICAgICA9IGdlbnBoeV93cml0ZV9tbWRfYzQ1LAogCQkuZ2V0X3BsY2FfY2ZnCSAgICA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfY2ZnLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9vYV90YzYuaCBiL2luY2x1ZGUvbGludXgvb2FfdGM2LmgKaW5kZXggMjdmNjUyZDQ5MjBiMi4uMWM4Y2MyNjNjNWU1MyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9vYV90YzYuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L29hX3RjNi5oCkBAIC0zMCw2ICYjNDM7MzAsNyBAQAogCiAvKiBTdGF0dXMgUmVnaXN0ZXIgIzAgKi8KICNkZWZpbmUgT0FfVEM2X1JFR19TVEFUVVMwCQkJMHgwMDA4CiYjNDM7I2RlZmluZSBPQV9UQzZfU1RBVFVTMF9QSFlfSU5UCQkJQklUKDcpCiAjZGVmaW5lIE9BX1RDNl9TVEFUVVMwX1JFU0VUQwkJCUJJVCg2KQkvKiBSZXNldCBDb21wbGV0ZSAqLwogI2RlZmluZSBPQV9UQzZfU1RBVFVTMF9IRUFERVJfRVJST1IJCUJJVCg1KQogI2RlZmluZSBPQV9UQzZfU1RBVFVTMF9MT1NTX09GX0ZSQU1FX0VSUk9SCUJJVCg0KQpAQCAtNDMsNiAmIzQzOzQ0LDcgQEAKIAogLyogSW50ZXJydXB0IE1hc2sgUmVnaXN0ZXIgIzAgKi8KICNkZWZpbmUgT0FfVEM2X1JFR19JTlRfTUFTSzAJCQkJMHgwMDBDCiYjNDM7I2RlZmluZSBPQV9UQzZfSU5UX01BU0swX1BIWV9JTlRfTUFTSwkJCUJJVCg3KQogI2RlZmluZSBPQV9UQzZfSU5UX01BU0swX0hFQURFUl9FUlJfTUFTSwkJQklUKDUpCiAjZGVmaW5lIE9BX1RDNl9JTlRfTUFTSzBfTE9TU19PRl9GUkFNRV9FUlJfTUFTSwkJQklUKDQpCiAjZGVmaW5lIE9BX1RDNl9JTlRfTUFTSzBfUlhfQlVGRkVSX09WRVJGTE9XX0VSUl9NQVNLCUJJVCgzKQpAQCAtNjgsNiAmIzQzOzcwLDcgQEAgc3RydWN0IG9hX3RjNjsKIAogZW51bSBvYV90YzZfcXVpcmtfZmxhZyB7CiAJT0FfVEM2X0JST0tFTl9QSFkgPSBCSVQoMCksCiYjNDM7CU9BX1RDNl9QSFlfSU5UICAgID0gQklUKDEpLAogfTsKIAogc3RydWN0IG9hX3RjNl9xdWlya3Mgewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTU2CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgRmVhc2liaWxpdHkgQW5hbHlzaXMqKgoKT2theSwgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoaXMgcGF0Y2ggYW5kIGRlY2lkZSBpZiBmdXp6aW5nIGl0IGlzIGEgd29ydGh3aGlsZSBlbmRlYXZvci4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhlIGNvZGUgbW9kaWZpY2F0aW9ucy4gSSBzZWUgY2hhbmdlcyBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jYCwgYGRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmNgLCBhbmQgYGluY2x1ZGUvbGludXgvb2FfdGM2LmhgLiBUaW1lIHRvIHF1aWNrbHkgaWRlbnRpZnkgd2hhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoLgoKQWgsIGBsYW44NjV4YCBpcyBhIFNQSSBFdGhlcm5ldCBjb250cm9sbGVyIGZyb20gTWljcm9jaGlwLCBzcGVjaWZpY2FsbHkgdGhlIExBTjg2NTAvMSAxMEJBU0UtVDFTIE1BQy1QSFkuIGBvYV90YzZgIGlzIHRoZSBPcGVuIEFsbGlhbmNlIFRDNiAxMEJBU0UtVDFTIE1BQy1QSFkgcHJvdG9jb2wgZHJpdmVyLCBhbHNvIG9wZXJhdGluZyBvdmVyIFNQSSwgaXQgbG9va3MgbGlrZS4gQW5kIGBtaWNyb2NoaXBfdDFzYCBpcyBhIFBIWSBkcml2ZXIgZm9yIE1pY3JvY2hpcCYjMzk7cyBMQU44Njd4L0xBTjg2NXggMTBCQVNFLVQxUyBQSFlzLgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogY2FuIHdlIHJlYWNoIHRoZXNlIGRyaXZlcnMgaW4gYSBzdGFuZGFyZCBmdXp6aW5nIGVudmlyb25tZW50LCBsaWtlIFFFTVUgb3IgR0NFIHg4Nl82NCwgd2l0aG91dCBuZWVkaW5nIGFjdHVhbCBwaHlzaWNhbCBoYXJkd2FyZT8gTXkgZ3V0IGZlZWxpbmcgdGVsbHMgbWUgdGhpcyBtaWdodCBiZSB0cmlja3ksIGJlY2F1c2Ugb2YgdGhlIFNQSSBpbnRlcmFjdGlvbi4gSXQmIzM5O3MgbGlrZWx5IHRoYXQgU1BJIGRldmljZXMgYW5kIFBIWSBkZXZpY2VzIGdldCBpbnN0YW50aWF0ZWQgaW4gYSBzcGVjaWZpYyB3YXksIHBvdGVudGlhbGx5IHJlbHlpbmcgb24gYSBkZXZpY2UgdHJlZSBvciBzcGVjaWZpYyBwaHlzaWNhbCBTUEkgaGFyZHdhcmUuIExldCYjMzk7cyBzZWUgaWYgdGhlcmUgaXMgYSB2aXJ0dWFsIGJ1cyBvciBlbXVsYXRlZCBkZXZpY2UgdGhhdCB3ZSBjYW4gbGV2ZXJhZ2UuCgpTbywgbGV0JiMzOTtzIGZpcmUgdXAgbXkgcHJlZmVycmVkIHRvb2xzIGFuZCBzZWFyY2ggdGhlIGtlcm5lbCB0cmVlIGZvciBgbGFuODY1eGAsIGBvYV90YzZgLCBhbmQgYG1pY3JvY2hpcF90MXNgLiBUaGlzIHNob3VsZCBnaXZlIHVzIHNvbWUgY3JpdGljYWwgaW5zaWdodCBpbnRvIGhvdyB0aGVzZSBkcml2ZXJzIGFyZSBpbml0aWFsaXplZCBhbmQgdXNlZC4gRnJvbSB0aGVyZSwgd2UgY2FuIHRoZW4gZGV0ZXJtaW5lIHRoZSBmZWFzaWJpbGl0eSBvZiBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xhbjg2NXgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZz00NT1jb25maWcgTEFONzQzWFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnLTU5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWc6NjA6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnLTYxLXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL01ha2VmaWxlPTEwPWxhbjc0M3gtb2JqcyA6PSBsYW43NDN4X21haW4ubyBsYW43NDN4X2V0aHRvb2wubyBsYW43NDN4X3B0cC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvTWFrZWZpbGUtMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX0xBTjg2NVgpICYjNDM7PSBsYW44NjV4L1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL01ha2VmaWxlLTEzLW9iai0kKENPTkZJR19MQU45NjZYX1NXSVRDSCkgJiM0Mzs9IGxhbjk2NngvXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvS2NvbmZpZz04PWNvbmZpZyBMQU44NjVYXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvS2NvbmZpZy0xNi1cdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZSB3aWxsIGJlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9LY29uZmlnOjE3Olx0ICBjYWxsZWQgbGFuODY1eC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L0tjb25maWctMTgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvTWFrZWZpbGUtNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX0xBTjg2NVgpICYjNDM7PSBsYW44NjV4Lm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6Mzk6c3RydWN0IGxhbjg2NXhfcHJpdiB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDAtXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgbXVsdGljYXN0X3dvcms7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ2OnN0YXRpYyBpbnQgbGFuODY1eF9zZXRfaHdfbWFjYWRkcl9sb3dfYnl0ZXMoc3RydWN0IG9hX3RjNiAqdGM2LCBjb25zdCB1OCAqbWFjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NTU6c3RhdGljIGludCBsYW44NjV4X3NldF9od19tYWNhZGRyKHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYsIGNvbnN0IHU4ICptYWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNTYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy02MS1cdC8qIENvbmZpZ3VyZSBNQUMgYWRkcmVzcyBsb3cgYnl0ZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo2MjpcdHJldCA9IGxhbjg2NXhfc2V0X2h3X21hY2FkZHJfbG93X2J5dGVzKHByaXYtXHUwMDNldGM2LCBtYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTYzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNzUtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo3NjpcdHJlc3RvcmVfcmV0ID0gbGFuODY1eF9zZXRfaHdfbWFjYWRkcl9sb3dfYnl0ZXMocHJpdi1cdTAwM2V0YzYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNzctXHRcdFx0XHRcdFx0ICAgICAgIHByaXYtXHUwMDNlbmV0ZGV2LVx1MDAzZWRldl9hZGRyKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtODMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6ODQ6c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBsYW44NjV4X2V0aHRvb2xfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTg1LVx0LmdldF9saW5rX2tzZXR0aW5ncyA9IHBoeV9ldGh0b29sX2dldF9saW5rX2tzZXR0aW5ncyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtODgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6ODk6c3RhdGljIGludCBsYW44NjV4X3NldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB2b2lkICphZGRyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTkwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo5MTpcdHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTkyLVx0c3RydWN0IHNvY2thZGRyICphZGRyZXNzID0gYWRkcjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTAxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjEwMjpcdHJldCA9IGxhbjg2NXhfc2V0X2h3X21hY2FkZHIocHJpdiwgYWRkcmVzcy1cdTAwM2VzYV9kYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xMDMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYz0xMTE9c3RhdGljIHUzMiBnZXRfYWRkcmVzc19iaXQodTggYWRkcltFVEhfQUxFTl0sIHUzMiBiaXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTExNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoxMTY6c3RhdGljIHUzMiBsYW44NjV4X2hhc2godTggYWRkcltFVEhfQUxFTl0pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTE3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjEzMjpzdGF0aWMgaW50IGxhbjg2NXhfc2V0X3NwZWNpZmljX211bHRpY2FzdF9hZGRyKHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTMzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTM5LVx0bmV0ZGV2X2Zvcl9lYWNoX21jX2FkZHIoaGEsIHByaXYtXHUwMDNlbmV0ZGV2KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MTQwOlx0XHR1MzIgYml0X251bSA9IGxhbjg2NXhfaGFzaChoYS1cdTAwM2VhZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xNDEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTE2My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoxNjQ6c3RhdGljIGludCBsYW44NjV4X3NldF9hbGxfbXVsdGljYXN0X2FkZHIoc3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xNjUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xODUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MTg2OnN0YXRpYyBpbnQgbGFuODY1eF9jbGVhcl9hbGxfbXVsdGljYXN0X2FkZHIoc3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xODcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yMDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjA1OnN0YXRpYyB2b2lkIGxhbjg2NXhfbXVsdGljYXN0X3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjA2LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyMDc6XHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBsYW44NjV4X3ByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjA4LVx0XHRcdFx0XHRcdCBtdWx0aWNhc3Rfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTIxOC1cdFx0LyogRW5hYmxpbmcgYWxsIG11bHRpY2FzdCBtb2RlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjE5Olx0XHRpZiAobGFuODY1eF9zZXRfYWxsX211bHRpY2FzdF9hZGRyKHByaXYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTIyMC1cdFx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTIyNi1cdFx0LyogRW5hYmxpbmcgc3BlY2lmaWMgbXVsdGljYXN0IG1vZGUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyMjc6XHRcdGlmIChsYW44NjV4X3NldF9zcGVjaWZpY19tdWx0aWNhc3RfYWRkcihwcml2KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yMjgtXHRcdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yMzQtXHRcdC8qIEVuYWJsaW5nIGxvY2FsIG1hYyBhZGRyZXNzIG9ubHkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyMzU6XHRcdGlmIChsYW44NjV4X2NsZWFyX2FsbF9tdWx0aWNhc3RfYWRkcihwcml2KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yMzYtXHRcdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjQ0OnN0YXRpYyB2b2lkIGxhbjg2NXhfc2V0X211bHRpY2FzdF9saXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjQ1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyNDY6XHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNDctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyNTE6c3RhdGljIG5ldGRldl90eF90IGxhbjg2NXhfc2VuZF9wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNTItXHRcdFx0XHQgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNTMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjI1NDpcdHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI1NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjU4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjI1OTpzdGF0aWMgaW50IGxhbjg2NXhfaHdfZGlzYWJsZShzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI2MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI3My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyNzQ6c3RhdGljIGludCBsYW44NjV4X25ldF9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI3NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6Mjc2Olx0c3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjc3LVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjgwLVx0cGh5X3N0b3AobmV0ZGV2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjgxOlx0cmV0ID0gbGFuODY1eF9od19kaXNhYmxlKHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI4Mi1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjg5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjI5MDpzdGF0aWMgaW50IGxhbjg2NXhfaHdfZW5hYmxlKHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjkxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzA0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMwNTpzdGF0aWMgaW50IGxhbjg2NXhfbmV0X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMDYte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMwNzpcdHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMwOC1cdGludCByZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzA5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMxMDpcdHJldCA9IGxhbjg2NXhfaHdfZW5hYmxlKHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMxMS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzIyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMyMzpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGxhbjg2NXhfbmV0ZGV2X29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMjQ6XHQubmRvX29wZW5cdFx0PSBsYW44NjV4X25ldF9vcGVuLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMyNTpcdC5uZG9fc3RvcFx0XHQ9IGxhbjg2NXhfbmV0X2Nsb3NlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMyNjpcdC5uZG9fc3RhcnRfeG1pdFx0XHQ9IGxhbjg2NXhfc2VuZF9wYWNrZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzI3Olx0Lm5kb19zZXRfcnhfbW9kZVx0PSBsYW44NjV4X3NldF9tdWx0aWNhc3RfbGlzdCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMjg6XHQubmRvX3NldF9tYWNfYWRkcmVzc1x0PSBsYW44NjV4X3NldF9tYWNfYWRkcmVzcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMjktXHQubmRvX3ZhbGlkYXRlX2FkZHJcdD0gZXRoX3ZhbGlkYXRlX2FkZHIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMzMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMzM6c3RhdGljIGludCBsYW44NjV4X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzM0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzM2LVx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMzc6XHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMzOC1cdGludCByZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzM5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjM0MDpcdG5ldGRldiA9IGFsbG9jX2V0aGVyZGV2KHNpemVvZihzdHJ1Y3QgbGFuODY1eF9wcml2KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzQxLVx0aWYgKCFuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM0Ny1cdHNwaV9zZXRfZHJ2ZGF0YShzcGksIHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjM0ODpcdElOSVRfV09SSyhcdTAwMjZwcml2LVx1MDAzZW11bHRpY2FzdF93b3JrLCBsYW44NjV4X211bHRpY2FzdF93b3JrX2hhbmRsZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM0OS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzkzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjM5NDpcdHJldCA9IGxhbjg2NXhfc2V0X2h3X21hY2FkZHIocHJpdiwgbmV0ZGV2LVx1MDAzZWRldl9hZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zOTUtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQwMS1cdG5ldGRldi1cdTAwM2VpcnEgPSBzcGktXHUwMDNlaXJxO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQwMjpcdG5ldGRldi1cdTAwM2VuZXRkZXZfb3BzID0gXHUwMDI2bGFuODY1eF9uZXRkZXZfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQwMzpcdG5ldGRldi1cdTAwM2VldGh0b29sX29wcyA9IFx1MDAyNmxhbjg2NXhfZXRodG9vbF9vcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDA0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00MTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDIwOnN0YXRpYyB2b2lkIGxhbjg2NXhfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDIxLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0MjI6XHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2ID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDIzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00MjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDMwOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3BpX2RldmljZV9pZCBsYW44NjV4X2lkc1tdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQzMS1cdHsgLm5hbWUgPSBcJiMzNDtsYW44NjUwXCYjMzQ7IH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQzNC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQzNTpNT0RVTEVfREVWSUNFX1RBQkxFKHNwaSwgbGFuODY1eF9pZHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0Mzc6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbGFuODY1eF9kdF9pZHNbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00MzgtXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7bWljcm9jaGlwLGxhbjg2NTBcJiMzNDsgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDQxLX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDQyOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGxhbjg2NXhfZHRfaWRzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDQ0OnN0YXRpYyBzdHJ1Y3Qgc3BpX2RyaXZlciBsYW44NjV4X2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NDUtXHQuZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ0Ni1cdFx0Lm5hbWUgPSBEUlZfTkFNRSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0NDc6XHRcdC5vZl9tYXRjaF90YWJsZSA9IGxhbjg2NXhfZHRfaWRzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ0OC1cdCB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ0OTpcdC5wcm9iZSA9IGxhbjg2NXhfcHJvYmUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDUwOlx0LnJlbW92ZSA9IGxhbjg2NXhfcmVtb3ZlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ1MTpcdC5pZF90YWJsZSA9IGxhbjg2NXhfaWRzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ1Mi19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ1Mzptb2R1bGVfc3BpX2RyaXZlcihsYW44NjV4X2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDU0LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM9ODk9c3RhdGljIGNvbnN0IHUxNiBsYW44Njd4X3JldmIxX2ZpeHVwX21hc2tzWzEyXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTk5LSAqL1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoxMDA6c3RhdGljIGNvbnN0IHUzMiBsYW44NjV4X3JldmJfZml4dXBfcmVnaXN0ZXJzWzE3XSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTAxLVx0MHgwMEQwLCAweDAwRTAsIDB4MDBFOSwgMHgwMEY1LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTA3LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoxMDg6c3RhdGljIGNvbnN0IHUxNiBsYW44NjV4X3JldmJfZml4dXBfdmFsdWVzWzE3XSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTA5LVx0MHgzRjMxLCAweEMwMDAsIDB4OUU1MCwgMHgxQ0Y4LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTE1LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoxMTY6c3RhdGljIGNvbnN0IHUxNiBsYW44NjV4X3JldmJfZml4dXBfY2ZnX3JlZ3NbMl0gPSB7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTExNy1cdDB4MDA4NCwgMHgwMDhBLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTE5LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoxMjA6c3RhdGljIGNvbnN0IHUzMiBsYW44NjV4X3JldmJfc3FpX2ZpeHVwX3JlZ3NbMTJdID0ge1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xMjEtXHQweDAwQjAsIDB4MDBCMSwgMHgwMEIyLCAweDAwQjMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xMjUtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjEyNjpzdGF0aWMgY29uc3QgdTE2IGxhbjg2NXhfcmV2Yl9zcWlfZml4dXBfdmFsdWVzWzEyXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTI3LVx0MHgwMTAzLCAweDA5MTAsIDB4MUQyNiwgMHgwMDJBLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTMxLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoxMzI6c3RhdGljIGNvbnN0IHUxNiBsYW44NjV4X3JldmJfc3FpX2ZpeHVwX2NmZ19yZWdzWzNdID0ge1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xMzMtXHQweDAwQUQsIDB4MDBBRSwgMHgwMEFGLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM9MTQ2PXN0YXRpYyBjb25zdCB1MTYgbGFuODY3eF9yZXZkMF9maXh1cF92YWx1ZXNbOF0gPSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xNTgtICovXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjE1OTpzdGF0aWMgaW50IGxhbjg2NXhfcmV2Yl9pbmRpcmVjdF9yZWFkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiBhZGRyKVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xNjAte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTc4LSAqL1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoxNzk6c3RhdGljIGludCBsYW44NjV4X2dlbmVyYXRlX2NmZ19vZmZzZXRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHM4IG9mZnNldHNbXSlcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTgwLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTE4NC1cdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGZpeHVwX3JlZ3MpOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoxODU6XHRcdHJldCA9IGxhbjg2NXhfcmV2Yl9pbmRpcmVjdF9yZWFkKHBoeWRldiwgZml4dXBfcmVnc1tpXSk7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTE4Ni1cdFx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTE5OS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MjAwOnN0YXRpYyBpbnQgbGFuODY1eF9yZWFkX2NmZ19wYXJhbXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjAxLVx0XHRcdFx0ICAgY29uc3QgdTE2IGNmZ19yZWdzW10sIHUxNiBjZmdfcGFyYW1zW10sXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yMTYtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjIxNzpzdGF0aWMgaW50IGxhbjg2NXhfd3JpdGVfY2ZnX3BhcmFtcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yMTgtXHRcdFx0XHQgICAgY29uc3QgdTE2IGNmZ19yZWdzW10sIHUxNiBjZmdfcGFyYW1zW10sXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yMzItXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjIzMzpzdGF0aWMgaW50IGxhbjg2NXhfc2V0dXBfY2ZncGFyYW0oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgczggb2Zmc2V0c1tdKVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yMzQte1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyMzU6XHR1MTYgY2ZnX3Jlc3VsdHNbQVJSQVlfU0laRShsYW44NjV4X3JldmJfZml4dXBfY2ZnX3JlZ3MpXTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MjM2Olx0dTE2IGNmZ19wYXJhbXNbQVJSQVlfU0laRShsYW44NjV4X3JldmJfZml4dXBfY2ZnX3JlZ3MpXTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjM3LVx0aW50IHJldDtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjM4LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyMzk6XHRyZXQgPSBsYW44NjV4X3JlYWRfY2ZnX3BhcmFtcyhwaHlkZXYsIGxhbjg2NXhfcmV2Yl9maXh1cF9jZmdfcmVncyxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjQwLVx0XHRcdFx0ICAgICAgY2ZnX3BhcmFtcywgQVJSQVlfU0laRShjZmdfcGFyYW1zKSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNDgtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI0OTpcdHJldHVybiBsYW44NjV4X3dyaXRlX2NmZ19wYXJhbXMocGh5ZGV2LCBsYW44NjV4X3JldmJfZml4dXBfY2ZnX3JlZ3MsXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI1MC1cdFx0XHRcdFx0Y2ZnX3Jlc3VsdHMsIEFSUkFZX1NJWkUoY2ZnX3Jlc3VsdHMpKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI1Mi1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MjUzOnN0YXRpYyBpbnQgbGFuODY1eF9zZXR1cF9zcWlfY2ZncGFyYW0oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgczggb2Zmc2V0c1tdKVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNTQte1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyNTU6XHR1MTYgY2ZnX3Jlc3VsdHNbQVJSQVlfU0laRShsYW44NjV4X3JldmJfc3FpX2ZpeHVwX2NmZ19yZWdzKV07XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI1NjpcdHUxNiBjZmdfcGFyYW1zW0FSUkFZX1NJWkUobGFuODY1eF9yZXZiX3NxaV9maXh1cF9jZmdfcmVncyldO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNTctXHRpbnQgcmV0O1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNTgtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI1OTpcdHJldCA9IGxhbjg2NXhfcmVhZF9jZmdfcGFyYW1zKHBoeWRldiwgbGFuODY1eF9yZXZiX3NxaV9maXh1cF9jZmdfcmVncyxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjYwLVx0XHRcdFx0ICAgICAgY2ZnX3BhcmFtcywgQVJSQVlfU0laRShjZmdfcGFyYW1zKSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNzAtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI3MTpcdHJldHVybiBsYW44NjV4X3dyaXRlX2NmZ19wYXJhbXMocGh5ZGV2LCBsYW44NjV4X3JldmJfc3FpX2ZpeHVwX2NmZ19yZWdzLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNzItXHRcdFx0XHRcdGNmZ19yZXN1bHRzLCBBUlJBWV9TSVpFKGNmZ19yZXN1bHRzKSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNzQtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI3NTpzdGF0aWMgaW50IGxhbjg2NXhfcmV2Yl9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNzYte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjgyLVx0ICovXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI4MzpcdHJldCA9IGxhbjg2NXhfZ2VuZXJhdGVfY2ZnX29mZnNldHMocGh5ZGV2LCBvZmZzZXRzKTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjg0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI4Ni1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6Mjg3Olx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUobGFuODY1eF9yZXZiX2ZpeHVwX3JlZ2lzdGVycyk7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI4OC1cdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyODk6XHRcdFx0XHQgICAgbGFuODY1eF9yZXZiX2ZpeHVwX3JlZ2lzdGVyc1tpXSxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MjkwOlx0XHRcdFx0ICAgIGxhbjg2NXhfcmV2Yl9maXh1cF92YWx1ZXNbaV0pO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yOTEtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yOTQtXHRcdGlmIChpID09IDEpIHtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6Mjk1Olx0XHRcdHJldCA9IGxhbjg2NXhfc2V0dXBfY2ZncGFyYW0ocGh5ZGV2LCBvZmZzZXRzKTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjk2LVx0XHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zMDAtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjMwMTpcdHJldCA9IGxhbjg2NXhfc2V0dXBfc3FpX2NmZ3BhcmFtKHBoeWRldiwgb2Zmc2V0cyk7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTMwMi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zMDQtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjMwNTpcdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGxhbjg2NXhfcmV2Yl9zcWlfZml4dXBfcmVncyk7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTMwNi1cdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzozMDc6XHRcdFx0XHQgICAgbGFuODY1eF9yZXZiX3NxaV9maXh1cF9yZWdzW2ldLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzozMDg6XHRcdFx0XHQgICAgbGFuODY1eF9yZXZiX3NxaV9maXh1cF92YWx1ZXNbaV0pO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zMDktXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYz0zNDE9c3RhdGljIGludCBsYW44Njd4X3JldmNfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTM0OS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MzUwOlx0cmV0ID0gbGFuODY1eF9nZW5lcmF0ZV9jZmdfb2Zmc2V0cyhwaHlkZXYsIG9mZnNldHMpO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zNTEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMzY1LVx0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjM2NjpcdFx0XHRcdCAgICBsYW44NjV4X3JldmJfZml4dXBfcmVnaXN0ZXJzW2ldLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzozNjc6XHRcdFx0XHQgICAgbGFuODY1eF9yZXZiX2ZpeHVwX3ZhbHVlc1tpXSk7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTM2OC1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTM3MS1cdFx0aWYgKGkgPT0gMSkge1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzozNzI6XHRcdFx0cmV0ID0gbGFuODY1eF9zZXR1cF9jZmdwYXJhbShwaHlkZXYsIG9mZnNldHMpO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zNzMtXHRcdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTM3Ny1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6Mzc4Olx0cmV0ID0gbGFuODY1eF9zZXR1cF9zcWlfY2ZncGFyYW0ocGh5ZGV2LCBvZmZzZXRzKTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMzc5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTM4MS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MzgyOlx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUobGFuODY1eF9yZXZiX3NxaV9maXh1cF9yZWdzKTsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMzgzLVx0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjM4NDpcdFx0XHRcdCAgICBsYW44NjV4X3JldmJfc3FpX2ZpeHVwX3JlZ3NbaV0sXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjM4NTpcdFx0XHRcdCAgICBsYW44NjV4X3JldmJfc3FpX2ZpeHVwX3ZhbHVlc1tpXSk7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTM4Ni1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jPTY1OD1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbWljcm9jaGlwX3Qxc19kcml2ZXJbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTcxMy1cdFx0LmZlYXR1cmVzICAgICAgICAgICA9IFBIWV9CQVNJQ19UMVNfUDJNUF9GRUFUVVJFUyxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6NzE0Olx0XHQuY29uZmlnX2luaXQgICAgICAgID0gbGFuODY1eF9yZXZiX2NvbmZpZ19pbml0LFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy03MTUtXHRcdC5yZWFkX3N0YXR1cyAgICAgICAgPSBsYW44Nnh4X3JlYWRfc3RhdHVzLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5ODM5CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOgoKKipDaGVja2luZyB0aGUgT0FfVEM2IEltcGxlbWVudGF0aW9uIGFuZCBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIGBvYV90YzYuY2AgYW5kIGl0cyBhc3NvY2lhdGVkIEtjb25maWcgZmlsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIE9BX1RDNi4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIEtjb25maWcgZW50cmllcyB0aGF0IGNvbnRyb2wgd2hldGhlciB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgaW5jbHVkZWQgaW4gdGhlIGJ1aWxkLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBkZWZpbml0aW9ucyByZWxhdGVkIHRvIGBPQV9UQzZgIGl0c2VsZiwgb2YgY291cnNlLCBidXQgSSBzaG91bGQgYWxzbyBzZWUgaG93IHRoZSBgTUlDUk9DSElQX1QxU2AgZHJpdmVyIGludGVyYWN0cyB3aXRoIGl0LCBpZiBhdCBhbGwuIEl0JiMzOTtzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJlbGF0aW9uc2hpcHMsIGFuZCB3aGV0aGVyIHRoZXNlIGZlYXR1cmVzIGFyZSBtdXR1YWxseSBleGNsdXNpdmUsIG9yIGhhdmUgc3BlY2lmaWMgY29uZGl0aW9ucyBhdHRhY2hlZC4gSSYjMzk7bSBtZW50YWxseSBwYXJzaW5nIHRoZSBLY29uZmlnIGVudHJpZXMgdG8gcXVpY2tseSBncmFzcCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGlzIHdpbGwgaGVscCBtZSBxdWlja2x5IHVuZGVyc3RhbmQgaG93IHRvIGVuYWJsZSBvciBkaXNhYmxlIHRoZSByZWxldmFudCBjb2RlIGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtPQV9UQzYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNjEyIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9LY29uZmlnPTEzOT1jb25maWcgRVRIT0Ncbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9LY29uZmlnLTE0OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L0tjb25maWc6MTQ5OmNvbmZpZyBPQV9UQzZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L0tjb25maWctMTUwLVx0dHJpc3RhdGUgXCYjMzQ7T1BFTiBBbGxpYW5jZSBUQzYgMTBCQVNFLVQxeCBNQUMtUEhZIHN1cHBvcnRcJiMzNDsgaWYgQ09NUElMRV9URVNUXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvTWFrZWZpbGU9MTA2PW9iai0kKENPTkZJR19ORVRfVkVORE9SX1BFTlNBTkRPKSAmIzQzOz0gcGVuc2FuZG8vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9NYWtlZmlsZToxMDc6b2JqLSQoQ09ORklHX09BX1RDNikgJiM0Mzs9IG9hX3RjNi5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9NYWtlZmlsZS0xMDgtb2JqLSQoQ09ORklHX05FVF9WRU5ET1JfWlRFKSAmIzQzOz0genRlL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9LY29uZmlnPTI5PWNvbmZpZyBBRElOMTE0MFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9LY29uZmlnLTMyLVx0c2VsZWN0IEFESU4xMTQwX1BIWVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL0tjb25maWc6MzM6XHRzZWxlY3QgT0FfVEM2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvS2NvbmZpZy0zNC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYz0xNDM9c3RhdGljIGludCBhZGluMTE0MF9tYWNfZmlsdGVyX3NldChzdHJ1Y3QgYWRpbjExNDBfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy0xNTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYzoxNTY6XHRyZXQgPSBvYV90YzZfd3JpdGVfcmVnaXN0ZXJfbW1zKHByaXYtXHUwMDNldGM2LCBPQV9UQzZfTUFDX01NUzEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy0xNTctXHRcdFx0XHRcdHJlZ19hZGRyZXNzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTE2NC1cdHJlZ19hZGRyZXNzID0gQURJTjExNDBfTUFDX0FERFJfRklMVF9MV1JfUkVHICYjNDM7IDIgKiBzbG90O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM6MTY1Olx0cmV0ID0gb2FfdGM2X3dyaXRlX3JlZ2lzdGVyX21tcyhwcml2LVx1MDAzZXRjNiwgT0FfVEM2X01BQ19NTVMxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtMTY2LVx0XHRcdFx0XHRyZWdfYWRkcmVzcyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy0xODAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYzoxODE6XHRyZXQgPSBvYV90YzZfd3JpdGVfcmVnaXN0ZXJfbW1zKHByaXYtXHUwMDNldGM2LCBPQV9UQzZfTUFDX01NUzEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy0xODItXHRcdFx0XHRcdHJlZ19hZGRyZXNzLCB2YWwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTE4OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jOjE4OTpcdHJldHVybiBvYV90YzZfd3JpdGVfcmVnaXN0ZXJfbW1zKHByaXYtXHUwMDNldGM2LCBPQV9UQzZfTUFDX01NUzEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy0xOTAtXHRcdFx0XHRcdCByZWdfYWRkcmVzcywgdmFsKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYz0yNTA9c3RhdGljIGludCBhZGluMTE0MF9wcm9taXNjdW91c19tb2RlKHN0cnVjdCBhZGluMTE0MF9wcml2ICpwcml2LCBib29sIGVuYWJsZWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtMjU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM6MjU1Olx0cmV0ID0gb2FfdGM2X3JlYWRfcmVnaXN0ZXIocHJpdi1cdTAwM2V0YzYsIE9BX1RDNl9SRUdfQ09ORklHMiwgXHUwMDI2dmFsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTI1Ni1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtMjYzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM6MjY0Olx0cmV0dXJuIG9hX3RjNl93cml0ZV9yZWdpc3Rlcihwcml2LVx1MDAzZXRjNiwgT0FfVEM2X1JFR19DT05GSUcyLCB2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtMjY1LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYz0zNDE9c3RhdGljIHZvaWQgYWRpbjExNDBfc3RhdHNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtMzUxLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShhZGluMTE0MF9zdGF0X3JlZ3MpOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM6MzUyOlx0XHRyZXQgPSBvYV90YzZfcmVhZF9yZWdpc3Rlcl9tbXMocHJpdi1cdTAwM2V0YzYsIE9BX1RDNl9NQUNfTU1TMSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTM1My1cdFx0XHRcdFx0ICAgICAgIGFkaW4xMTQwX3N0YXRfcmVnc1tpXSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYz0zNjY9c3RhdGljIGludCBhZGluMTE0MF9jb25maWd1cmUoc3RydWN0IGFkaW4xMTQwX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtMzc1LVx0LyogRGlzYWJsZSBNQUMgbG9vcGJhY2sgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jOjM3NjpcdHJldCA9IG9hX3RjNl93cml0ZV9yZWdpc3Rlcl9tbXMocHJpdi1cdTAwM2V0YzYsIE9BX1RDNl9NQUNfTU1TMSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTM3Ny1cdFx0XHRcdFx0QURJTjExNDBfTUFDX1AxX0xPT1BfQUREUl9SRUcsIDB4MCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtMzgwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM6MzgxOlx0cmV0ID0gb2FfdGM2X3JlYWRfcmVnaXN0ZXIocHJpdi1cdTAwM2V0YzYsIE9BX1RDNl9SRUdfQ09ORklHMiwgXHUwMDI2cmVnX3ZhbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy0zODItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTM4Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jOjM4NzpcdHJldCA9IG9hX3RjNl93cml0ZV9yZWdpc3Rlcihwcml2LVx1MDAzZXRjNiwgT0FfVEM2X1JFR19DT05GSUcyLCByZWdfdmFsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTM4OC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM9NzA5PXN0YXRpYyBpbnQgYWRpbjExNDBfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy03MjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYzo3MjU6XHR0YzZfcXVpcmtzLnF1aXJrX2ZsYWdzID0gT0FfVEM2X0JST0tFTl9QSFk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy03MjYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvS2NvbmZpZz04PWNvbmZpZyBMQU44NjVYXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvS2NvbmZpZy0xMC1cdGRlcGVuZHMgb24gU1BJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9LY29uZmlnOjExOlx0c2VsZWN0IE9BX1RDNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvS2NvbmZpZy0xMi1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM9MzMzPXN0YXRpYyBpbnQgbGFuODY1eF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzUwOlx0dGM2X3F1aXJrcy5xdWlya19mbGFncyA9IE9BX1RDNl9QSFlfSU5UO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM1MS1cdHByaXYtXHUwMDNldGM2ID0gb2FfdGM2X2luaXQoc3BpLCBuZXRkZXYsIFx1MDAyNnRjNl9xdWlya3MpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTE3LS8qIENvbnRyb2wgY29tbWFuZCBoZWFkZXIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjE4OiNkZWZpbmUgT0FfVEM2X0NUUkxfSEVBREVSX0RBVEFfTk9UX0NUUkxcdEJJVCgzMSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjE5OiNkZWZpbmUgT0FfVEM2X0NUUkxfSEVBREVSX1dSSVRFX05PVF9SRUFEXHRCSVQoMjkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoyMDojZGVmaW5lIE9BX1RDNl9DVFJMX0hFQURFUl9NRU1fTUFQX1NFTEVDVE9SXHRHRU5NQVNLKDI3LCAyNClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjIxOiNkZWZpbmUgT0FfVEM2X0NUUkxfSEVBREVSX0FERFJcdFx0XHRHRU5NQVNLKDIzLCA4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MjI6I2RlZmluZSBPQV9UQzZfQ1RSTF9IRUFERVJfTEVOR1RIXHRcdEdFTk1BU0soNywgMSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjIzOiNkZWZpbmUgT0FfVEM2X0NUUkxfSEVBREVSX1BBUklUWVx0XHRCSVQoMClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTI0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMjUtLyogRGF0YSBoZWFkZXIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjI2OiNkZWZpbmUgT0FfVEM2X0RBVEFfSEVBREVSX0RBVEFfTk9UX0NUUkxcdEJJVCgzMSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjI3OiNkZWZpbmUgT0FfVEM2X0RBVEFfSEVBREVSX0RBVEFfVkFMSURcdFx0QklUKDIxKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6Mjg6I2RlZmluZSBPQV9UQzZfREFUQV9IRUFERVJfU1RBUlRfVkFMSURcdFx0QklUKDIwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6Mjk6I2RlZmluZSBPQV9UQzZfREFUQV9IRUFERVJfU1RBUlRfV09SRF9PRkZTRVRcdEdFTk1BU0soMTksIDE2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MzA6I2RlZmluZSBPQV9UQzZfREFUQV9IRUFERVJfRU5EX1ZBTElEXHRcdEJJVCgxNClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjMxOiNkZWZpbmUgT0FfVEM2X0RBVEFfSEVBREVSX0VORF9CWVRFX09GRlNFVFx0R0VOTUFTSygxMywgOClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjMyOiNkZWZpbmUgT0FfVEM2X0RBVEFfSEVBREVSX1BBUklUWVx0XHRCSVQoMClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTMzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMzQtLyogRGF0YSBmb290ZXIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjM1OiNkZWZpbmUgT0FfVEM2X0RBVEFfRk9PVEVSX0VYVEVOREVEX1NUU1x0XHRCSVQoMzEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzozNjojZGVmaW5lIE9BX1RDNl9EQVRBX0ZPT1RFUl9SWERfSEVBREVSX0JBRFx0QklUKDMwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6Mzc6I2RlZmluZSBPQV9UQzZfREFUQV9GT09URVJfQ09ORklHX1NZTkNcdFx0QklUKDI5KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6Mzg6I2RlZmluZSBPQV9UQzZfREFUQV9GT09URVJfUlhfQ0hVTktTXHRcdEdFTk1BU0soMjgsIDI0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6Mzk6I2RlZmluZSBPQV9UQzZfREFUQV9GT09URVJfREFUQV9WQUxJRFx0XHRCSVQoMjEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo0MDojZGVmaW5lIE9BX1RDNl9EQVRBX0ZPT1RFUl9TVEFSVF9WQUxJRFx0XHRCSVQoMjApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo0MTojZGVmaW5lIE9BX1RDNl9EQVRBX0ZPT1RFUl9TVEFSVF9XT1JEX09GRlNFVFx0R0VOTUFTSygxOSwgMTYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo0MjojZGVmaW5lIE9BX1RDNl9EQVRBX0ZPT1RFUl9FTkRfVkFMSURcdFx0QklUKDE0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NDM6I2RlZmluZSBPQV9UQzZfREFUQV9GT09URVJfRU5EX0JZVEVfT0ZGU0VUXHRHRU5NQVNLKDEzLCA4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NDQ6I2RlZmluZSBPQV9UQzZfREFUQV9GT09URVJfVFhfQ1JFRElUU1x0XHRHRU5NQVNLKDUsIDEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy00NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjQ2OiNkZWZpbmUgT0FfVEM2X0NUUkxfUFJPVF9SRVBMWV9TSVpFXHRcdDRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjQ3OiNkZWZpbmUgT0FfVEM2X0NUUkxfSEVBREVSX1NJWkVcdFx0XHQ0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo0ODojZGVmaW5lIE9BX1RDNl9DVFJMX1JFR19WQUxVRV9TSVpFXHRcdDRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjQ5OiNkZWZpbmUgT0FfVEM2X0NUUkxfSUdOT1JFRF9TSVpFXHRcdDRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjUwOiNkZWZpbmUgT0FfVEM2X0NUUkxfTUFYX1JFR0lTVEVSU1x0XHQxMjhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjUxOiNkZWZpbmUgT0FfVEM2X0NUUkxfU1BJX0JVRl9TSVpFXHQoT0FfVEM2X0NUUkxfSEVBREVSX1NJWkUgJiM0MztcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NTI6XHRcdFx0XHRcdChPQV9UQzZfQ1RSTF9NQVhfUkVHSVNURVJTICpcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NTM6XHRcdFx0XHRcdChPQV9UQzZfQ1RSTF9SRUdfVkFMVUVfU0laRSAmIzQzO1xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo1NDpcdFx0XHRcdFx0T0FfVEM2X0NUUkxfUFJPVF9SRVBMWV9TSVpFKSkgJiM0MztcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NTU6XHRcdFx0XHRcdE9BX1RDNl9DVFJMX0lHTk9SRURfU0laRSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTU2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NTc6I2RlZmluZSBPQV9UQzZfQ0hVTktfUEFZTE9BRF9TSVpFXHRcdDY0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo1ODojZGVmaW5lIE9BX1RDNl9EQVRBX0hFQURFUl9TSVpFXHRcdFx0NFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NTk6I2RlZmluZSBPQV9UQzZfQ0hVTktfU0laRVx0XHRcdChPQV9UQzZfREFUQV9IRUFERVJfU0laRSAmIzQzO1xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo2MDpcdFx0XHRcdFx0XHRPQV9UQzZfQ0hVTktfUEFZTE9BRF9TSVpFKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NjE6I2RlZmluZSBPQV9UQzZfTUFYX1RYX0NIVU5LU1x0XHRcdDQ4XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo2MjojZGVmaW5lIE9BX1RDNl9TUElfREFUQV9CVUZfU0laRVx0XHQoT0FfVEM2X01BWF9UWF9DSFVOS1MgKlxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo2MzpcdFx0XHRcdFx0XHRPQV9UQzZfQ0hVTktfU0laRSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTY0LSNkZWZpbmUgU1RBVFVTMF9SRVNFVENfUE9MTF9ERUxBWVx0XHQxMDAwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo2NzojZGVmaW5lIE9BX1RDNl9SRUdfTU1TX01BU0tcdFx0R0VOTUFTSygxOSwgMTYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy02OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz05Nz1lbnVtIG9hX3RjNl9oZWFkZXJfdHlwZSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo5ODpcdE9BX1RDNl9DVFJMX0hFQURFUixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjk5Olx0T0FfVEM2X0RBVEFfSEVBREVSLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTAwLX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9MTAyPWVudW0gb2FfdGM2X3JlZ2lzdGVyX29wIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjEwMzpcdE9BX1RDNl9DVFJMX1JFR19SRUFEID0gMCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjEwNDpcdE9BX1RDNl9DVFJMX1JFR19XUklURSA9IDEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMDUtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz0xMDc9ZW51bSBvYV90YzZfZGF0YV92YWxpZF9pbmZvIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjEwODpcdE9BX1RDNl9EQVRBX0lOVkFMSUQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMDk6XHRPQV9UQzZfREFUQV9WQUxJRCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTExMC19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTExMj1lbnVtIG9hX3RjNl9kYXRhX3N0YXJ0X3ZhbGlkX2luZm8ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTEzOlx0T0FfVEM2X0RBVEFfU1RBUlRfSU5WQUxJRCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjExNDpcdE9BX1RDNl9EQVRBX1NUQVJUX1ZBTElELFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTE1LX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9MTE3PWVudW0gb2FfdGM2X2RhdGFfZW5kX3ZhbGlkX2luZm8ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTE4Olx0T0FfVEM2X0RBVEFfRU5EX0lOVkFMSUQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMTk6XHRPQV9UQzZfREFUQV9FTkRfVkFMSUQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMjAtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz0xMjI9c3RhdGljIGludCBvYV90YzZfc3BpX3RyYW5zZmVyKHN0cnVjdCBvYV90YzYgKnRjNixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMjg6XHRpZiAoaGVhZGVyX3R5cGUgPT0gT0FfVEM2X0RBVEFfSEVBREVSKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMjktXHRcdHhmZXIudHhfYnVmID0gdGM2LVx1MDAzZXNwaV9kYXRhX3R4X2J1Zjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz0xNTY9c3RhdGljIF9fYmUzMiBvYV90YzZfcHJlcGFyZV9jdHJsX2hlYWRlcih1MzIgYWRkciwgdTggbGVuZ3RoLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTE2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjE2MTpcdGhlYWRlciA9IEZJRUxEX1BSRVAoT0FfVEM2X0NUUkxfSEVBREVSX0RBVEFfTk9UX0NUUkwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxNjI6XHRcdFx0ICAgIE9BX1RDNl9DVFJMX0hFQURFUikgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTYzOlx0XHQgRklFTERfUFJFUChPQV9UQzZfQ1RSTF9IRUFERVJfV1JJVEVfTk9UX1JFQUQsIHJlZ19vcCkgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTY0Olx0XHQgRklFTERfUFJFUChPQV9UQzZfQ1RSTF9IRUFERVJfTUVNX01BUF9TRUxFQ1RPUiwgYWRkciBcdTAwM2VcdTAwM2UgMTYpIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjE2NTpcdFx0IEZJRUxEX1BSRVAoT0FfVEM2X0NUUkxfSEVBREVSX0FERFIsIGFkZHIpIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjE2NjpcdFx0IEZJRUxEX1BSRVAoT0FfVEM2X0NUUkxfSEVBREVSX0xFTkdUSCwgbGVuZ3RoIC0gMSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxNjc6XHRoZWFkZXIgfD0gRklFTERfUFJFUChPQV9UQzZfQ1RSTF9IRUFERVJfUEFSSVRZLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTY4LVx0XHRcdCAgICAgb2FfdGM2X2dldF9wYXJpdHkoaGVhZGVyKSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9MTczPXN0YXRpYyB2b2lkIG9hX3RjNl91cGRhdGVfY3RybF93cml0ZV9kYXRhKHN0cnVjdCBvYV90YzYgKnRjNiwgdTMyIHZhbHVlW10sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTc1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjE3NjpcdF9fYmUzMiAqdHhfYnVmID0gdGM2LVx1MDAzZXNwaV9jdHJsX3R4X2J1ZiAmIzQzOyBPQV9UQzZfQ1RSTF9IRUFERVJfU0laRTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTE3Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz0xODU9c3RhdGljIHUxNiBvYV90YzZfY2FsY3VsYXRlX2N0cmxfYnVmX3NpemUodTggbGVuZ3RoLCBib29sIGN0cmxfcHJvdClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTE4Ni17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxODc6XHR1MzIgcmVwbHlfc2l6ZSA9IE9BX1RDNl9DVFJMX1JFR19WQUxVRV9TSVpFO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTg4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTg5LVx0aWYgKGN0cmxfcHJvdClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjE5MDpcdFx0cmVwbHlfc2l6ZSAmIzQzOz0gT0FfVEM2X0NUUkxfUFJPVF9SRVBMWV9TSVpFO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTkxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTE5NS1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTk2Olx0cmV0dXJuIE9BX1RDNl9DVFJMX0hFQURFUl9TSVpFICYjNDM7IHJlcGx5X3NpemUgKiBsZW5ndGggJiM0MztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjE5NzpcdCAgICAgICBPQV9UQzZfQ1RSTF9JR05PUkVEX1NJWkU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xOTgtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTIwMD1zdGF0aWMgdm9pZCBvYV90YzZfcHJlcGFyZV9jdHJsX3NwaV9idWYoc3RydWN0IG9hX3RjNiAqdGM2LCB1MzIgYWRkcmVzcyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0yMDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoyMTA6XHRpZiAocmVnX29wID09IE9BX1RDNl9DVFJMX1JFR19XUklURSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTIxMS1cdFx0b2FfdGM2X3VwZGF0ZV9jdHJsX3dyaXRlX2RhdGEodGM2LCB2YWx1ZSwgbGVuZ3RoKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz0yMTQ9c3RhdGljIGludCBvYV90YzZfY2hlY2tfY3RybF93cml0ZV9yZXBseShzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4IHNpemUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMjE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MjE5Olx0cnhfYnVmICYjNDM7PSBPQV9UQzZfQ1RSTF9JR05PUkVEX1NJWkU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0yMjAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMjIzLVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoyMjQ6XHRpZiAobWVtY21wKHR4X2J1ZiwgcnhfYnVmLCBzaXplIC0gT0FfVEM2X0NUUkxfSUdOT1JFRF9TSVpFKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTIyNS1cdFx0cmV0dXJuIC1FUFJPVE87XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9MjMwPXN0YXRpYyBpbnQgb2FfdGM2X2NoZWNrX2N0cmxfcmVhZF9yZXBseShzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4IGxlbmd0aClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTIzMS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoyMzI6XHRfX2JlMzIgKnJ4X2J1ZiA9IHRjNi1cdTAwM2VzcGlfY3RybF9yeF9idWYgJiM0MzsgT0FfVEM2X0NUUkxfSUdOT1JFRF9TSVpFO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMjMzLVx0X19iZTMyICp0eF9idWYgPSB0YzYtXHUwMDNlc3BpX2N0cmxfdHhfYnVmO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTI2MD1zdGF0aWMgdm9pZCBvYV90YzZfY29weV9jdHJsX3JlYWRfZGF0YShzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHUzMiB2YWx1ZVtdLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTI2Mi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoyNjM6XHRfX2JlMzIgKnJ4X2J1ZiA9IHRjNi1cdTAwM2VzcGlfY3RybF9yeF9idWYgJiM0MzsgT0FfVEM2X0NUUkxfSUdOT1JFRF9TSVpFICYjNDM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoyNjQ6XHRcdFx0IE9BX1RDNl9DVFJMX0hFQURFUl9TSVpFO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMjY1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTI3NT1zdGF0aWMgaW50IG9hX3RjNl9wZXJmb3JtX2N0cmwoc3RydWN0IG9hX3RjNiAqdGM2LCB1MzIgYWRkcmVzcywgdTMyIHZhbHVlW10sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMjg2LVx0LyogUGVyZm9ybSBTUEkgdHJhbnNmZXIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjI4NzpcdHJldCA9IG9hX3RjNl9zcGlfdHJhbnNmZXIodGM2LCBPQV9UQzZfQ1RSTF9IRUFERVIsIHNpemUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMjg4LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTI5NC1cdC8qIENoZWNrIGVjaG9lZC9yZWNlaXZlZCBjb250cm9sIHdyaXRlIGNvbW1hbmQgcmVwbHkgZm9yIGVycm9ycyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6Mjk1Olx0aWYgKHJlZ19vcCA9PSBPQV9UQzZfQ1RSTF9SRUdfV1JJVEUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0yOTYtXHRcdHJldHVybiBvYV90YzZfY2hlY2tfY3RybF93cml0ZV9yZXBseSh0YzYsIHNpemUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTMxOT1pbnQgb2FfdGM2X3JlYWRfcmVnaXN0ZXJzKHN0cnVjdCBvYV90YzYgKnRjNiwgdTMyIGFkZHJlc3MsIHUzMiB2YWx1ZVtdLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTMyMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjMyNDpcdGlmICghbGVuZ3RoIHx8IGxlbmd0aCBcdTAwM2UgT0FfVEM2X0NUUkxfTUFYX1JFR0lTVEVSUykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMzI1LVx0XHRkZXZfZXJyKFx1MDAyNnRjNi1cdTAwM2VzcGktXHUwMDNlZGV2LCBcJiMzNDtJbnZhbGlkIHJlZ2lzdGVyIGxlbmd0aCBwYXJhbWV0ZXJcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTMzMC1cdHJldCA9IG9hX3RjNl9wZXJmb3JtX2N0cmwodGM2LCBhZGRyZXNzLCB2YWx1ZSwgbGVuZ3RoLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MzMxOlx0XHRcdFx0ICBPQV9UQzZfQ1RSTF9SRUdfUkVBRCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0zMzItXHRtdXRleF91bmxvY2soXHUwMDI2dGM2LVx1MDAzZXNwaV9jdHJsX2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTM2Mj1pbnQgb2FfdGM2X3JlYWRfcmVnaXN0ZXJfbW1zKHN0cnVjdCBvYV90YzYgKnRjNiwgdTggbW1zLCB1MTYgYWRkcmVzcyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0zNjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzozNjc6XHRtbXNfcmVnID0gRklFTERfUFJFUChPQV9UQzZfUkVHX01NU19NQVNLLCBtbXMpIHwgYWRkcmVzcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTM2OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz0zODQ9aW50IG9hX3RjNl93cml0ZV9yZWdpc3RlcnMoc3RydWN0IG9hX3RjNiAqdGM2LCB1MzIgYWRkcmVzcywgdTMyIHZhbHVlW10sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMzg4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6Mzg5Olx0aWYgKCFsZW5ndGggfHwgbGVuZ3RoIFx1MDAzZSBPQV9UQzZfQ1RSTF9NQVhfUkVHSVNURVJTKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0zOTAtXHRcdGRldl9lcnIoXHUwMDI2dGM2LVx1MDAzZXNwaS1cdTAwM2VkZXYsIFwmIzM0O0ludmFsaWQgcmVnaXN0ZXIgbGVuZ3RoIHBhcmFtZXRlclxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMzk1LVx0cmV0ID0gb2FfdGM2X3BlcmZvcm1fY3RybCh0YzYsIGFkZHJlc3MsIHZhbHVlLCBsZW5ndGgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzozOTY6XHRcdFx0XHQgIE9BX1RDNl9DVFJMX1JFR19XUklURSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0zOTctXHRtdXRleF91bmxvY2soXHUwMDI2dGM2LVx1MDAzZXNwaV9jdHJsX2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTQyNz1pbnQgb2FfdGM2X3dyaXRlX3JlZ2lzdGVyX21tcyhzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4IG1tcywgdTE2IGFkZHJlc3MsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNDMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NDMyOlx0bW1zX3JlZyA9IEZJRUxEX1BSRVAoT0FfVEM2X1JFR19NTVNfTUFTSywgbW1zKSB8IGFkZHJlc3M7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy00MzMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9NDM4PXN0YXRpYyBpbnQgb2FfdGM2X2NoZWNrX3BoeV9yZWdfZGlyZWN0X2FjY2Vzc19jYXBhYmlsaXR5KHN0cnVjdCBvYV90YzYgKnRjNilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy00NDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo0NDM6XHRyZXQgPSBvYV90YzZfcmVhZF9yZWdpc3Rlcih0YzYsIE9BX1RDNl9SRUdfU1REQ0FQLCBcdTAwMjZyZWd2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNDQ0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy00NDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo0NDc6XHRpZiAoIShyZWd2YWwgXHUwMDI2IE9BX1RDNl9TVERDQVBfRElSRUNUX1BIWV9SRUdfQUNDRVNTKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTQ0OC1cdFx0cmV0dXJuIC1FTk9ERVY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9NDU4PXN0YXRpYyBpbnQgb2FfdGM2X21kaW9idXNfcmVhZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZ251bSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy00NjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo0NjQ6XHRyZXQgPSBvYV90YzZfcmVhZF9yZWdpc3Rlcih0YzYsIE9BX1RDNl9QSFlfU1REX1JFR19BRERSX0JBU0UgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NDY1Olx0XHRcdFx0ICAgKHJlZ251bSBcdTAwMjYgT0FfVEM2X1BIWV9TVERfUkVHX0FERFJfTUFTSyksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy00NjYtXHRcdFx0XHQgICBcdTAwMjZyZWd2YWwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTQ3Mz1zdGF0aWMgaW50IG9hX3RjNl9tZGlvYnVzX3dyaXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgcmVnbnVtLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTQ3Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjQ3ODpcdHJldHVybiBvYV90YzZfd3JpdGVfcmVnaXN0ZXIodGM2LCBPQV9UQzZfUEhZX1NURF9SRUdfQUREUl9CQVNFIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjQ3OTpcdFx0XHRcdCAgICAgKHJlZ251bSBcdTAwMjYgT0FfVEM2X1BIWV9TVERfUkVHX0FERFJfTUFTSyksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy00ODAtXHRcdFx0XHQgICAgIHZhbCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9NDgzPXN0YXRpYyBpbnQgb2FfdGM2X2dldF9waHlfYzQ1X21tcyhpbnQgZGV2bnVtKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTQ4Ni1cdGNhc2UgTURJT19NTURfUENTOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NDg3Olx0XHRyZXR1cm4gT0FfVEM2X1BIWV9DNDVfUENTX01NUzI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy00ODgtXHRjYXNlIE1ESU9fTU1EX1BNQVBNRDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjQ4OTpcdFx0cmV0dXJuIE9BX1RDNl9QSFlfQzQ1X1BNQV9QTURfTU1TMztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTQ5MC1cdGNhc2UgTURJT19NTURfVkVORDI6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo0OTE6XHRcdHJldHVybiBPQV9UQzZfUEhZX0M0NV9WU19QTENBX01NUzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy00OTItXHRjYXNlIE1ESU9fTU1EX0FOOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NDkzOlx0XHRyZXR1cm4gT0FfVEM2X1BIWV9DNDVfQVVUT19ORUdfTU1TNTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTQ5NC1cdGNhc2UgTURJT19NTURfUE9XRVJfVU5JVDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjQ5NTpcdFx0cmV0dXJuIE9BX1RDNl9QSFlfQzQ1X1BPV0VSX1VOSVRfTU1TNjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTQ5Ni1cdGRlZmF1bHQ6XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9NTczPXN0YXRpYyBpbnQgb2FfdGM2X21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG9hX3RjNiAqdGM2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTYwMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjYwNDpcdGlmICh0YzYtXHUwMDNlcXVpcmtfZmxhZ3MgXHUwMDI2IE9BX1RDNl9QSFlfSU5UKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy02MDUtXHRcdHJldCA9IG9hX3RjNl9waHlfaXJxX3NldHVwKHRjNik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNjIwLVx0XHRuZXRkZXZfZXJyKHRjNi1cdTAwM2VuZXRkZXYsIFwmIzM0O0NvdWxkIG5vdCByZWdpc3RlciBNRElPIGJ1c1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo2MjE6XHRcdGlmICh0YzYtXHUwMDNlcXVpcmtfZmxhZ3MgXHUwMDI2IE9BX1RDNl9QSFlfSU5UKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNjIyLVx0XHRcdG9hX3RjNl9waHlfaXJxX3RlYXJkb3duKHRjNik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9NjMwPXN0YXRpYyB2b2lkIG9hX3RjNl9tZGlvYnVzX3VucmVnaXN0ZXIoc3RydWN0IG9hX3RjNiAqdGM2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTYzMi1cdG1kaW9idXNfdW5yZWdpc3Rlcih0YzYtXHUwMDNlbWRpb2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo2MzM6XHRpZiAodGM2LVx1MDAzZXF1aXJrX2ZsYWdzIFx1MDAyNiBPQV9UQzZfUEhZX0lOVClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTYzNC1cdFx0b2FfdGM2X3BoeV9pcnFfdGVhcmRvd24odGM2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz02Mzg9c3RhdGljIGludCBvYV90YzZfcGh5X2luaXQoc3RydWN0IG9hX3RjNiAqdGM2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTY0MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjY0MjpcdGlmICh0YzYtXHUwMDNlcXVpcmtfZmxhZ3MgXHUwMDI2IE9BX1RDNl9CUk9LRU5fUEhZKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNjQzLVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz02Nzk9c3RhdGljIHZvaWQgb2FfdGM2X3BoeV9leGl0KHN0cnVjdCBvYV90YzYgKnRjNilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTY4MC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo2ODE6XHRpZiAodGM2LVx1MDAzZXF1aXJrX2ZsYWdzIFx1MDAyNiBPQV9UQzZfQlJPS0VOX1BIWSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTY4Mi1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTY4OD1zdGF0aWMgaW50IG9hX3RjNl9yZWFkX3N0YXR1czAoc3RydWN0IG9hX3RjNiAqdGM2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTY5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjY5MzpcdHJldCA9IG9hX3RjNl9yZWFkX3JlZ2lzdGVyKHRjNiwgT0FfVEM2X1JFR19TVEFUVVMwLCBcdTAwMjZyZWd2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNjk0LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTcwMz1zdGF0aWMgaW50IG9hX3RjNl9zd19yZXNldF9tYWNwaHkoc3RydWN0IG9hX3RjNiAqdGM2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNzA0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjcwNTpcdHUzMiByZWd2YWwgPSBPQV9UQzZfUkVTRVRfU1dSRVNFVDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTcwNi1cdGludCByZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy03MDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo3MDg6XHRyZXQgPSBvYV90YzZfd3JpdGVfcmVnaXN0ZXIodGM2LCBPQV9UQzZfUkVHX1JFU0VULCByZWd2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNzA5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy03MTMtXHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQob2FfdGM2X3JlYWRfc3RhdHVzMCwgdGM2LCByZWd2YWwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo3MTQ6XHRcdFx0XHQgcmVndmFsIFx1MDAyNiBPQV9UQzZfU1RBVFVTMF9SRVNFVEMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy03MTUtXHRcdFx0XHQgU1RBVFVTMF9SRVNFVENfUE9MTF9ERUxBWSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy03MjAtXHQvKiBDbGVhciB0aGUgcmVzZXQgY29tcGxldGUgc3RhdHVzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo3MjE6XHRyZXR1cm4gb2FfdGM2X3dyaXRlX3JlZ2lzdGVyKHRjNiwgT0FfVEM2X1JFR19TVEFUVVMwLCByZWd2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNzIyLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz03MjQ9c3RhdGljIGludCBvYV90YzZfdW5tYXNrX2ludGVycnVwdHMoc3RydWN0IG9hX3RjNiAqdGM2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTcyOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjcyOTpcdHJldCA9IG9hX3RjNl9yZWFkX3JlZ2lzdGVyKHRjNiwgT0FfVEM2X1JFR19JTlRfTUFTSzAsIFx1MDAyNnJlZ3ZhbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy03MzAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTczMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjczMzpcdHJlZ3ZhbCBcdTAwMjY9IH4oT0FfVEM2X0lOVF9NQVNLMF9QSFlfSU5UX01BU0sgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NzM0Olx0XHQgICAgT0FfVEM2X0lOVF9NQVNLMF9UWF9QUk9UT0NPTF9FUlJfTUFTSyB8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo3MzU6XHRcdCAgICBPQV9UQzZfSU5UX01BU0swX1JYX0JVRkZFUl9PVkVSRkxPV19FUlJfTUFTSyB8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo3MzY6XHRcdCAgICBPQV9UQzZfSU5UX01BU0swX0xPU1NfT0ZfRlJBTUVfRVJSX01BU0sgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NzM3Olx0XHQgICAgT0FfVEM2X0lOVF9NQVNLMF9IRUFERVJfRVJSX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNzM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NzM5Olx0cmV0dXJuIG9hX3RjNl93cml0ZV9yZWdpc3Rlcih0YzYsIE9BX1RDNl9SRUdfSU5UX01BU0swLCByZWd2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNzQwLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz03NDI9c3RhdGljIGludCBvYV90YzZfZW5hYmxlX2RhdGFfdHJhbnNmZXIoc3RydWN0IG9hX3RjNiAqdGM2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTc0Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjc0NzpcdHJldCA9IG9hX3RjNl9yZWFkX3JlZ2lzdGVyKHRjNiwgT0FfVEM2X1JFR19DT05GSUcwLCBcdTAwMjZ2YWx1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy03NDgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTc1MS1cdC8qIEVuYWJsZSBjb25maWd1cmF0aW9uIHN5bmNocm9uaXphdGlvbiBmb3IgZGF0YSB0cmFuc2ZlciAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NzUyOlx0dmFsdWUgfD0gT0FfVEM2X0NPTkZJRzBfU1lOQztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTc1My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjc1NDpcdHJldHVybiBvYV90YzZfd3JpdGVfcmVnaXN0ZXIodGM2LCBPQV9UQzZfUkVHX0NPTkZJRzAsIHZhbHVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTc1NS19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9ODI1PXN0YXRpYyB2b2lkIG9hX3RjNl9kaXNhYmxlX3RyYWZmaWMoc3RydWN0IG9hX3RjNiAqdGM2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtODI2LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjgyNzpcdHUzMiByZWd2YWwgPSBPQV9UQzZfSU5UX01BU0swX0FMTF9JTlRFUlJVUFRTO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtODI4LVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy04NDAtXHRvYV90YzZfZnJlZV9vbmdvaW5nX3NrYnModGM2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjg0MTpcdG9hX3RjNl93cml0ZV9yZWdpc3Rlcih0YzYsIE9BX1RDNl9SRUdfSU5UX01BU0swLCByZWd2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6ODQyOlx0b2FfdGM2X3JlYWRfcmVnaXN0ZXIodGM2LCBPQV9UQzZfUkVHX1NUQVRVUzAsIFx1MDAyNnJlZ3ZhbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo4NDM6XHRvYV90YzZfd3JpdGVfcmVnaXN0ZXIodGM2LCBPQV9UQzZfUkVHX1NUQVRVUzAsIHJlZ3ZhbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy04NDQtXHRkZXZfZXJyKFx1MDAyNnRjNi1cdTAwM2VzcGktXHUwMDNlZGV2LCBcJiMzNDtEZXZpY2UgaW50ZXJydXB0IGRpc2FibGVkIHRvIGF2b2lkIGludGVycnVwdCBzdG9ybVwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9ODQ3PXN0YXRpYyBpbnQgb2FfdGM2X3Byb2Nlc3NfZXh0ZW5kZWRfc3RhdHVzKHN0cnVjdCBvYV90YzYgKnRjNilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy04NTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo4NTI6XHRyZXQgPSBvYV90YzZfcmVhZF9yZWdpc3Rlcih0YzYsIE9BX1RDNl9SRUdfU1RBVFVTMCwgXHUwMDI2dmFsdWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtODUzLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTg2Ni1cdC8qIENsZWFyIHRoZSBlcnJvciBpbnRlcnJ1cHRzIHN0YXR1cyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6ODY3Olx0cmV0ID0gb2FfdGM2X3dyaXRlX3JlZ2lzdGVyKHRjNiwgT0FfVEM2X1JFR19TVEFUVVMwLCB2YWx1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy04NjgtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtODc4LVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo4Nzk6XHRpZiAoKHRjNi1cdTAwM2VxdWlya19mbGFncyBcdTAwMjYgT0FfVEM2X1BIWV9JTlQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6ODgwOlx0ICAgIEZJRUxEX0dFVChPQV9UQzZfU1RBVFVTMF9QSFlfSU5ULCB2YWx1ZSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy04ODEtXHRcdGhhbmRsZV9uZXN0ZWRfaXJxKHRjNi1cdTAwM2VwaHlfdmlycSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy04ODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo4ODM6XHRpZiAoRklFTERfR0VUKE9BX1RDNl9TVEFUVVMwX1JYX0JVRkZFUl9PVkVSRkxPV19FUlJPUiwgdmFsdWUpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy04ODQtXHRcdG9hX3RjNl9sb29rX2Zvcl9uZXdfZnJhbWUodGM2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy04ODgtXHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo4ODk6XHRpZiAoRklFTERfR0VUKE9BX1RDNl9TVEFUVVMwX1RYX1BST1RPQ09MX0VSUk9SLCB2YWx1ZSkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTg5MC1cdFx0bmV0ZGV2X2Vycih0YzYtXHUwMDNlbmV0ZGV2LCBcJiMzNDtUcmFuc21pdCBwcm90b2NvbCBlcnJvclxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtODk1LVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo4OTY6XHRpZiAoRklFTERfR0VUKE9BX1RDNl9TVEFUVVMwX0xPU1NfT0ZfRlJBTUVfRVJST1IsIHZhbHVlKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtODk3LVx0XHRuZXRkZXZfZXJyKHRjNi1cdTAwM2VuZXRkZXYsIFwmIzM0O0xvc3Mgb2YgZnJhbWUgZXJyb3JcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTg5OS1cdH1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjkwMDpcdGlmIChGSUVMRF9HRVQoT0FfVEM2X1NUQVRVUzBfSEVBREVSX0VSUk9SLCB2YWx1ZSkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTkwMS1cdFx0bmV0ZGV2X2Vycih0YzYtXHUwMDNlbmV0ZGV2LCBcJiMzNDtIZWFkZXIgZXJyb3JcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTkwOD1zdGF0aWMgaW50IG9hX3RjNl9wcm9jZXNzX3J4X2NodW5rX2Zvb3RlcihzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHUzMiBmb290ZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtOTE2LVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo5MTc6XHR0YzYtXHUwMDNldHhfY3JlZGl0cyA9IEZJRUxEX0dFVChPQV9UQzZfREFUQV9GT09URVJfVFhfQ1JFRElUUywgZm9vdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjkxODpcdHRjNi1cdTAwM2VyeF9jaHVua3NfYXZhaWxhYmxlID0gRklFTERfR0VUKE9BX1RDNl9EQVRBX0ZPT1RFUl9SWF9DSFVOS1MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy05MTktXHRcdFx0XHRcdCAgICAgZm9vdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTkyMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjkyMTpcdGlmIChGSUVMRF9HRVQoT0FfVEM2X0RBVEFfRk9PVEVSX0VYVEVOREVEX1NUUywgZm9vdGVyKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtOTIyLVx0XHRyZXQgPSBvYV90YzZfcHJvY2Vzc19leHRlbmRlZF9zdGF0dXModGM2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy05MzMtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjkzNDpcdGlmIChGSUVMRF9HRVQoT0FfVEM2X0RBVEFfRk9PVEVSX1JYRF9IRUFERVJfQkFELCBmb290ZXIpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy05MzUtXHRcdG5ldGRldl9lcnIodGM2LVx1MDAzZW5ldGRldiwgXCYjMzQ7UnhkIGhlYWRlciBiYWQgZXJyb3JcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTkzOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjkzOTpcdGlmICghRklFTERfR0VUKE9BX1RDNl9EQVRBX0ZPT1RFUl9DT05GSUdfU1lOQywgZm9vdGVyKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtOTQwLVx0XHRuZXRkZXZfZXJyKHRjNi1cdTAwM2VuZXRkZXYsIFwmIzM0O0NvbmZpZyB1bnN5bmMgZXJyb3JcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTEwNDc9c3RhdGljIGludCBvYV90YzZfcHJjc19vbmdvaW5nX3J4X2ZyYW1lKHN0cnVjdCBvYV90YzYgKnRjNiwgdTggKnBheWxvYWQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTA1MC1cdHJldHVybiBvYV90YzZfdXBkYXRlX3J4X3NrYih0YzYsIHBheWxvYWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMDUxOlx0XHRcdFx0ICAgIE9BX1RDNl9DSFVOS19QQVlMT0FEX1NJWkUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTA1Mi19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9MTA1ND1zdGF0aWMgaW50IG9hX3RjNl9wcmNzX3J4X2NodW5rX3BheWxvYWQoc3RydWN0IG9hX3RjNiAqdGM2LCB1OCAqZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMDU2LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjEwNTc6XHR1OCBzdGFydF9ieXRlX29mZnNldCA9IEZJRUxEX0dFVChPQV9UQzZfREFUQV9GT09URVJfU1RBUlRfV09SRF9PRkZTRVQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMDU4LVx0XHRcdFx0XHQgZm9vdGVyKSAqIHNpemVvZih1MzIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTA1OTpcdHU4IGVuZF9ieXRlX29mZnNldCA9IEZJRUxEX0dFVChPQV9UQzZfREFUQV9GT09URVJfRU5EX0JZVEVfT0ZGU0VULFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTA2MC1cdFx0XHRcdCAgICAgICBmb290ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTA2MTpcdGJvb2wgc3RhcnRfdmFsaWQgPSBGSUVMRF9HRVQoT0FfVEM2X0RBVEFfRk9PVEVSX1NUQVJUX1ZBTElELCBmb290ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTA2MjpcdGJvb2wgZW5kX3ZhbGlkID0gRklFTERfR0VUKE9BX1RDNl9EQVRBX0ZPT1RFUl9FTkRfVkFMSUQsIGZvb3Rlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMDYzLVx0dTE2IHNpemU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTA4MS1cdGlmIChzdGFydF92YWxpZCBcdTAwMjZcdTAwMjYgIWVuZF92YWxpZCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTA4MjpcdFx0c2l6ZSA9IE9BX1RDNl9DSFVOS19QQVlMT0FEX1NJWkUgLSBzdGFydF9ieXRlX29mZnNldDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTEwODMtXHRcdHJldHVybiBvYV90YzZfcHJjc19yeF9mcmFtZV9zdGFydCh0YzYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTExNC1cdFx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTExNTpcdFx0c2l6ZSA9IE9BX1RDNl9DSFVOS19QQVlMT0FEX1NJWkUgLSBzdGFydF9ieXRlX29mZnNldDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTExMTYtXHRcdHJldHVybiBvYV90YzZfcHJjc19yeF9mcmFtZV9zdGFydCh0YzYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9MTEzNT1zdGF0aWMgaW50IG9hX3RjNl9wcm9jZXNzX3NwaV9kYXRhX3J4X2J1ZihzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHUxNiBsZW5ndGgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMTM2LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjExMzc6XHR1MTYgbm9fb2ZfcnhfY2h1bmtzID0gbGVuZ3RoIC8gT0FfVEM2X0NIVU5LX1NJWkU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMTM4LVx0Ym9vbCByZXRyeSA9IGZhbHNlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTExNDQtXHRcdC8qIExhc3QgNCBieXRlcyBpbiBlYWNoIHJlY2VpdmVkIGNodW5rIGNvbnNpc3QgZm9vdGVyIGluZm8gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjExNDU6XHRcdGZvb3RlciA9IG9hX3RjNl9nZXRfcnhfY2h1bmtfZm9vdGVyKHRjNiwgaSAqIE9BX1RDNl9DSFVOS19TSVpFICYjNDM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMTQ2Olx0XHRcdFx0XHRcdCAgICBPQV9UQzZfQ0hVTktfUEFZTE9BRF9TSVpFKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTExNDctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTE1OC1cdFx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMTU5Olx0XHRpZiAoRklFTERfR0VUKE9BX1RDNl9EQVRBX0ZPT1RFUl9EQVRBX1ZBTElELCBmb290ZXIpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMTYwLVx0XHRcdHU4ICpwYXlsb2FkID0gdGM2LVx1MDAzZXNwaV9kYXRhX3J4X2J1ZiAmIzQzOyBpICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjExNjE6XHRcdFx0XHQgICAgICBPQV9UQzZfQ0hVTktfU0laRTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTExNjItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9MTE5Nj1zdGF0aWMgX19iZTMyIG9hX3RjNl9wcmVwYXJlX2RhdGFfaGVhZGVyKGJvb2wgZGF0YV92YWxpZCwgYm9vbCBzdGFydF92YWxpZCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMTk4LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjExOTk6XHR1MzIgaGVhZGVyID0gRklFTERfUFJFUChPQV9UQzZfREFUQV9IRUFERVJfREFUQV9OT1RfQ1RSTCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjEyMDA6XHRcdFx0XHRPQV9UQzZfREFUQV9IRUFERVIpIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjEyMDE6XHRcdCAgICAgRklFTERfUFJFUChPQV9UQzZfREFUQV9IRUFERVJfREFUQV9WQUxJRCwgZGF0YV92YWxpZCkgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTIwMjpcdFx0ICAgICBGSUVMRF9QUkVQKE9BX1RDNl9EQVRBX0hFQURFUl9TVEFSVF9WQUxJRCwgc3RhcnRfdmFsaWQpIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjEyMDM6XHRcdCAgICAgRklFTERfUFJFUChPQV9UQzZfREFUQV9IRUFERVJfRU5EX1ZBTElELCBlbmRfdmFsaWQpIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjEyMDQ6XHRcdCAgICAgRklFTERfUFJFUChPQV9UQzZfREFUQV9IRUFERVJfRU5EX0JZVEVfT0ZGU0VULFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTIwNS1cdFx0XHRcdGVuZF9ieXRlX29mZnNldCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMjA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTIwNzpcdGhlYWRlciB8PSBGSUVMRF9QUkVQKE9BX1RDNl9EQVRBX0hFQURFUl9QQVJJVFksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMjA4LVx0XHRcdCAgICAgb2FfdGM2X2dldF9wYXJpdHkoaGVhZGVyKSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9MTIxMz1zdGF0aWMgdm9pZCBvYV90YzZfYWRkX3R4X3NrYl90b19zcGlfYnVmKHN0cnVjdCBvYV90YzYgKnRjNilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTEyMTQte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTIxNTpcdGVudW0gb2FfdGM2X2RhdGFfZW5kX3ZhbGlkX2luZm8gZW5kX3ZhbGlkID0gT0FfVEM2X0RBVEFfRU5EX0lOVkFMSUQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMjE2LVx0X19iZTMyICp0eF9idWYgPSB0YzYtXHUwMDNlc3BpX2RhdGFfdHhfYnVmICYjNDM7IHRjNi1cdTAwM2VzcGlfZGF0YV90eF9idWZfb2Zmc2V0O1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM1OTUKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqSW52ZXN0aWdhdGluZyB0aGUgTUlDUk9DSElQX1QxU19QSFkgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gYE1JQ1JPQ0hJUF9UMVNfUEhZYCBpcyBkZWZpbmVkLiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gaXRzIG5hdHVyZSBhcyBhIFBIWSAocGh5c2ljYWwgbGF5ZXIpIGRyaXZlciwgaXMgdG8gY2hlY2sgdGhlIGBLY29uZmlnYCBmaWxlIHdpdGhpbiB0aGUgbmV0d29yayBkcml2ZXImIzM5O3MgZGlyZWN0b3J5LiBTcGVjaWZpY2FsbHksIEkgc2hvdWxkIGxvb2sgaW4gYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYC4gVGhpcyBmaWxlIHVzdWFsbHkgaGFuZGxlcyBhbGwgdGhlIFBIWS1yZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGhhdCYjMzk7cyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgZm9yIHRoZSBgTUlDUk9DSElQX1QxU19QSFlgIGRlZmluaXRpb24uIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtNSUNST0NISVBfVDFTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTMyMz1jb25maWcgTUlDUkVMX1BIWVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTMyOS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjMzMDpjb25maWcgTUlDUk9DSElQX1QxU19QSFlcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTMzMS1cdHRyaXN0YXRlIFwmIzM0O01pY3JvY2hpcCAxMEJBU0UtVDFTIEV0aGVybmV0IFBIWXNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU9ODI9b2JqLSQoQ09ORklHX01JQ1JPQ0hJUF9UMV9QSFkpXHQmIzQzOz0gbWljcm9jaGlwX3QxLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo4MzpvYmotJChDT05GSUdfTUlDUk9DSElQX1QxU19QSFkpICYjNDM7PSBtaWNyb2NoaXBfdDFzLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS04NC1vYmotJChDT05GSUdfTUlDUk9TRU1JX1BIWSlcdCYjNDM7PSBtc2NjL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MDEyCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqS2NvbmZpZyBEaXZlIGZvciBMQU44NjV4IEV0aGVybmV0IERyaXZlcnMqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIExldCYjMzk7cyBzdGFydCB3aXRoIHRoZSBgS2NvbmZpZ2AgZmlsZSBmb3IgdGhlIExBTjg2NXggRXRoZXJuZXQgZHJpdmVycy4gVGhhdCYjMzk7cyB0aGUgbG9naWNhbCBmaXJzdCBzdG9wLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgYXZhaWxhYmxlIGFuZCBob3cgdGhleSYjMzk7cmUgc3RydWN0dXJlZCB3aXRoaW4gdGhlIGJ1aWxkIHN5c3RlbS4gSSYjMzk7bSBsb29raW5nIGZvciB0aGluZ3MgbGlrZToKCiogICAqKkZlYXR1cmUgRmxhZ3M6KiogQXJlIHRoZXJlIGNvbmRpdGlvbmFsIGJ1aWxkIG9wdGlvbnMgZm9yIHRoaW5ncyBsaWtlIHNwZWNpZmljIFBIWSBjb25maWd1cmF0aW9ucywgaW50ZXJydXB0IG1vZGVzIChwb2xsaW5nLCBpbnRlcnJ1cHQtZHJpdmVuLCBldGMuKSwgb3IgRE1BIHN1cHBvcnQ/CiogICAqKkRlcGVuZGVuY2llczoqKiBXaGF0IG90aGVyIGtlcm5lbCBjb21wb25lbnRzIG9yIGRyaXZlcnMgbmVlZCB0byBiZSBlbmFibGVkIGZvciB0aGUgTEFOODY1eCBkcml2ZXIgdG8gZnVuY3Rpb24gY29ycmVjdGx5PyBBcmUgdGhlcmUgc3BlY2lmaWMgZGVwZW5kZW5jaWVzIG9uIG5ldHdvcmsgc3RhY2sgZmVhdHVyZXMgb3IgTUFDIGFkZHJlc3MgbWFuYWdlbWVudD8KKiAgICoqRGVmYXVsdHMgYW5kIEhlbHAgVGV4dDoqKiBXaGF0IGFyZSB0aGUgZGVmYXVsdCBzZXR0aW5ncyBmb3IgZWFjaCBvcHRpb24/IEFuZCwgb2YgY291cnNlLCB0aGUgaGVscGZ1bCBkZXNjcmlwdGlvbnMgdGhhdCB3aWxsIGd1aWRlIGRldmVsb3BlcnMuIFRoZSBjb21tZW50cyBoYXZlIHRvIGJlIGNsZWFyIGFuZCBjb25jaXNlLgoqICAgKipBcmNoaXRlY3R1cmUtU3BlY2lmaWMgU2VsZWN0aW9uczoqKiBEb2VzIHRoZSBLY29uZmlnIGV4cG9zZSBhbnkgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIHNlbGVjdGlvbnMgbGlrZSBjYWNoZSBsaW5lIHNpemVzIG9yIG1lbW9yeSByZWdpb25zPwoKSSYjMzk7bSBob3BpbmcgdGhpcyBLY29uZmlnIGlzIHdlbGwtb3JnYW5pemVkLCB3aXRoIGEgY2xlYXIgaGllcmFyY2h5IHRoYXQgcmVmbGVjdHMgdGhlIGxvZ2ljYWwgc3RydWN0dXJlIG9mIHRoZSBkcml2ZXIgYW5kIGl0cyBjYXBhYmlsaXRpZXMuIEl0JiMzOTtzIG9mdGVuIHdoZXJlIHRoZSBzdG9yeSBvZiB0aGUgZHJpdmVyJiMzOTtzIGNvbmZpZ3VyYXRpb24gYmVnaW5zLiBJJiMzOTttIGtlZW4gdG8gc2VlIGlmIGFueSBuZXcgZmVhdHVyZXMgaGF2ZSBiZWVuIGFkZGVkIG9yIGlmIHNvbWUgb2YgdGhlIGV4aXN0aW5nIG9wdGlvbnMgaGF2ZSBjaGFuZ2VkLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UmIzM5O3ZlIGdvdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgTWljcm9jaGlwIExBTjg2NXggRHJpdmVyIFN1cHBvcnRcbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0aWYgTkVUX1ZFTkRPUl9NSUNST0NISVBcbiAgIDc6XHRcbiAgIDg6XHRjb25maWcgTEFOODY1WFxuICAgOTpcdFx0dHJpc3RhdGUgXCYjMzQ7TEFOODY1eCBzdXBwb3J0XCYjMzQ7XG4gIDEwOlx0XHRkZXBlbmRzIG9uIFNQSVxuICAxMTpcdFx0c2VsZWN0IE9BX1RDNlxuICAxMjpcdFx0aGVscFxuICAxMzpcdFx0ICBTdXBwb3J0IGZvciB0aGUgTWljcm9jaGlwIExBTjg2NTAvMSBSZXYuQjAvQjEgTUFDUEhZIEV0aGVybmV0IGNoaXAuIEl0XG4gIDE0Olx0XHQgIHVzZXMgT1BFTiBBbGxpYW5jZSAxMEJBU0UtVDF4IFNlcmlhbCBJbnRlcmZhY2Ugc3BlY2lmaWNhdGlvbi5cbiAgMTU6XHRcbiAgMTY6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZSB3aWxsIGJlXG4gIDE3Olx0XHQgIGNhbGxlZCBsYW44NjV4LlxuICAxODpcdFxuICAxOTpcdGVuZGlmICMgTkVUX1ZFTkRPUl9NSUNST0NISVBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ2NTAKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgS2NvbmZpZyBMYWJ5cmludGgqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIE9BX1RDNi4gTXkgaW5zdGluY3QgaXMgdG8gaGVhZCBzdHJhaWdodCB0byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvS2NvbmZpZ2AsIGFzIHRoYXQmIzM5O3MgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIGZvciBFdGhlcm5ldC1yZWxhdGVkIGNvbmZpZ3VyYXRpb25zLiBJIHZhZ3VlbHkgcmVjYWxsIHRoYXQgdHlwZSBvZiBvcHRpb24gb2Z0ZW4gYmVpbmcgZGVmaW5lZCBhcm91bmQgbGluZSAxNDkuIFRpbWUgdG8gZmlyZSB1cCBteSBlZGl0b3IgYW5kIHRha2UgYSBsb29rLiBMZXQmIzM5O3Mgc2VlIHdoYXQgZ2VtcyBhcmUgaGlkZGVuIGluIHRoYXQgcGFydGljdWxhciBzZWN0aW9uLi4uaG9wZWZ1bGx5IHRoZSBhdXRob3Igd2FzIGtpbmQgZW5vdWdoIHRvIG9yZ2FuaXplIHRoaW5ncyBpbiBhIGNsZWFyIG1hbm5lci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTQ1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDI1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNDU6XHRcdHNlbGVjdCBCSVRSRVZFUlNFXG4gMTQ2Olx0XHRoZWxwXG4gMTQ3Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBPcGVuQ29yZXMgMTAvMTAwIE1icHMgRXRoZXJuZXQgTUFDLlxuIDE0ODpcdFxuIDE0OTpcdGNvbmZpZyBPQV9UQzZcbiAxNTA6XHRcdHRyaXN0YXRlIFwmIzM0O09QRU4gQWxsaWFuY2UgVEM2IDEwQkFTRS1UMXggTUFDLVBIWSBzdXBwb3J0XCYjMzQ7IGlmIENPTVBJTEVfVEVTVFxuIDE1MTpcdFx0ZGVwZW5kcyBvbiBTUElcbiAxNTI6XHRcdHNlbGVjdCBQSFlMSUJcbiAxNTM6XHRcdGhlbHBcbiAxNTQ6XHRcdCAgVGhpcyBsaWJyYXJ5IGltcGxlbWVudHMgT1BFTiBBbGxpYW5jZSBUQzYgMTBCQVNFLVQxeCBNQUMtUEhZXG4gMTU1Olx0XHQgIFNlcmlhbCBJbnRlcmZhY2UgcHJvdG9jb2wgZm9yIHN1cHBvcnRpbmcgMTBCQVNFLVQxeCBNQUMtUEhZcy5cbiAxNTY6XHRcbiAxNTc6XHRcdCAgVG8ga25vdyB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscywgcmVmZXIgZG9jdW1lbnRhdGlvbiBpblxuIDE1ODpcdFx0ICBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9vYS10YzYtZnJhbWV3b3JrLnJzdFx1MDAzZS5cbiAxNTk6XHRcbiAxNjA6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcGFzZW1pL0tjb25maWdcJiMzNDtcbiAxNjE6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcGVuc2FuZG8vS2NvbmZpZ1wmIzM0O1xuIDE2MjpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZ1wmIzM0O1xuIDE2MzpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL0tjb25maWdcJiMzNDtcbiAxNjQ6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vS2NvbmZpZ1wmIzM0O1xuIDE2NTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZGMvS2NvbmZpZ1wmIzM0O1xuIDE2NjpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWdcJiMzNDtcbiAxNjc6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnXCYjMzQ7XG4gMTY4Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3JvY2tlci9LY29uZmlnXCYjMzQ7XG4gMTY5Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3NhbXN1bmcvS2NvbmZpZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTMxMwoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDYxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIExBTjg2NVgvT0FfVEM2L01JQ1JPQ0hJUF9UMVMgUmVhY2hhYmlsaXR5IGluIFN5emthbGxlcioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBnb2FsIGlzIHRvIGRldGVybWluZSBpZiBJIGNhbiBhY3R1YWxseSBmdXp6IHRoZXNlIGRyaXZlcnMg4oCTIExBTjg2NVgsIE9BX1RDNiwgYW5kIE1JQ1JPQ0hJUF9UMVMg4oCTIHVzaW5nIHN5emthbGxlci4gVGhlIGNvcmUgcXVlc3Rpb24gaXM6IGFyZSB0aGV5IHJlYWNoYWJsZSB3aXRoaW4gdGhlIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgYW5kIEdDRSB0aGF0IHN5emthbGxlciBsZXZlcmFnZXM/IFRoaXMgJiMzNDtyZWFjaGFiaWxpdHkmIzM0OyBpcyB0aGUga2V5LiBGdXp6aW5nIHVucmVhY2hhYmxlIGNvZGUgaXMgYSB3YXN0ZSBvZiByZXNvdXJjZXMuCgpGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGVzZSBkcml2ZXJzICphcmUqLiBMQU44NjVYIGlzIGEgU1BJIGRyaXZlciAoYHN0cnVjdCBzcGlfZHJpdmVyYCksIGBsYW44NjV4X2RyaXZlcmAuIE1JQ1JPQ0hJUF9UMVMgaXMgYSBQSFkgZHJpdmVyIChgc3RydWN0IHBoeV9kcml2ZXJgLCBgbWljcm9jaGlwX3Qxc19kcml2ZXJbXWApLiBPQV9UQzYgaXMgYSBzdXBwb3J0aW5nIGxpYnJhcnkgZm9yIFNQSSBNQUMtUEhZcyB1c2VkIGJ5IGBsYW44NjV4YCBhbmQgYGFkaW4xMTQwYC4KCk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IGNhbiBJIGluc3RhbnRpYXRlIG9yIHByb2JlIFNQSSBhbmQgUEhZIGRldmljZXMgd2l0aGluIGEgdHlwaWNhbCBRRU1VIHg4Nl82NCBlbnZpcm9ubWVudD8gVGhhdCYjMzk7cyB0aGUgZ2F0ZWtlZXBlci4gU3RhbmRhcmQgUUVNVSBkb2VzbiYjMzk7dCBzZWVtIHRvIGhhdmUgYSBnZW5lcmljIFNQSSBidXMgaW5zdGFudGlhdGlvbi4gVW5sZXNzLCB0aGVyZSYjMzk7cyBzb21lIGtpbmQgb2YgbW9jayBTUEkgY29udHJvbGxlciwgVVNCLXRvLVNQSSBhZGFwdGVyLCBwbGF0Zm9ybSBkZXZpY2UsIG9yIG1heWJlIGV2ZW4gYSBjb25maWdmcyBTUEkgZGV2aWNlLiBIbW0sIGRvZXMgTGludXggZXZlbiBsZXQgeW91IGluc3RhbnRpYXRlIFNQSSBkZXZpY2VzIGZyb20gdXNlcnNwYWNlIGRpcmVjdGx5PyBEb2VzIFFFTVUgZXZlbiAqaGF2ZSogU1BJIHN1cHBvcnQgYnkgZGVmYXVsdD8KCkxldCBtZSBzdGVwIGJhY2sgYW5kIGNoZWNrIHN5emthbGxlciYjMzk7cyBkb2N1bWVudGF0aW9uIG9yIGV4YW1wbGVzLiBIYXMgaXQgYmVlbiB1c2VkIHRvIHRlc3QgU1BJIGRldmljZXMgYmVmb3JlPyBXaGF0IGFib3V0IGhvdyBTUEkgZGV2aWNlcyBhcmUgdGVzdGVkIGluIGdlbmVyYWw/IFdhaXQsIHRoZXJlJiMzOTtzIHRoYXQgcHJpbmNpcGxlOiBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURS4gSSBuZWVkIHRvIGJlIHN1cmUgdGhlIGNvZGUgKmNhbiogZXhlY3V0ZSBpbiB0aGVzZSBlbnZpcm9ubWVudHMuIElmIGl0JiMzOTtzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSwgZG9uJiMzOTt0IGZ1enogaXQuCgpUaGlzIGJyaW5ncyBtZSB0byBTZWN0aW9uIDIuIFRoYXQgbGlzdHMgZXhhbXBsZXMgb2YgJiMzNDtzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUmIzM0OyBoYXJkd2FyZS4gVGhpbmdzIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgdGhhdCBuZWVkIGRlZGljYXRlZCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gQWxzbyB1bnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHMsIGxpa2UgZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgYC5yZW1vdmVgLCBgLnNodXRkb3duYCwgYHBjaV91bnJlZ2lzdGVyX2RyaXZlcmApIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyB1bmJpbmRpbmcsIGFuZCBjb2RlIHBhdGhzIHNwZWNpZmljIHRvIG5vbi10YXJnZXQgYXJjaGl0ZWN0dXJlcy4KClNvLCB3aGVyZSBkbyBTUEkgYW5kIFBIWSBkcml2ZXJzIGZpdCBpbj8gQ2FuIEkgZXZlbiByZWFjaCBvciBwcm9iZSBMQU44NjV4IG9yIE1pY3JvY2hpcCBQSFlzPyBJIGhhdmUgdG8gZmlndXJlIG91dCBpZiBzeXprYWxsZXIgb3Igc3RhbmRhcmQgUUVNVSBjYW4gZG8gdGhhdC4gSXMgdGhlcmUgYSAmIzM0O3NwaS1tb2NrLCYjMzQ7IGEgJiMzNDtzcGktY29udHJvbGxlciwmIzM0OyBvciBzb21lIG5ldGxpbmsgb3IgTURJTyB0cmljaz8gSSBiZXR0ZXIgc2VhcmNoIHRoZSBrZXJuZWwgZm9yIGFueSBtZW50aW9uIG9mIFNQSSBjb250cm9sbGVycyBvciBNRElPLiBUaW1lIHRvIGRpZyBpbiBhbmQgZmluZCBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xhbjg2NTAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoxMzojZGVmaW5lIERSVl9OQU1FXHRcdFx0XCYjMzQ7bGFuODY1MFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTE0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYz00MzA9c3RhdGljIGNvbnN0IHN0cnVjdCBzcGlfZGV2aWNlX2lkIGxhbjg2NXhfaWRzW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDMxOlx0eyAubmFtZSA9IFwmIzM0O2xhbjg2NTBcJiMzNDsgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00MzItXHR7IC5uYW1lID0gXCYjMzQ7bGFuODY1MVwmIzM0OyB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYz00Mzc9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbGFuODY1eF9kdF9pZHNbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0Mzg6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7bWljcm9jaGlwLGxhbjg2NTBcJiMzNDsgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00MzktXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7bWljcm9jaGlwLGxhbjg2NTFcJiMzNDsgfSxcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTYtICogIGxhbjg2NzAvMS8yIFJldi5CMS9DMS9DMi9EMFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo3OiAqICBsYW44NjUwLzEgUmV2LkIwL0IxIEludGVybmFsIFBIWXNcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtOC0gKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcwNDIKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAyMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBMQU44NjV4IERyaXZlcnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBsYW44NjV4YCwgd2hpY2ggaXMgY2xlYXJseSBhbiBTUEkgZHJpdmVyIHRhaWxvcmVkIGZvciB0aG9zZSBNaWNyb2NoaXAgTEFOODY1MC8xIGNoaXBzLiBUaGVuIHRoZXJlJiMzOTtzIGBtaWNyb2NoaXBfdDFzYCwgd2hpY2ggSSBpbW1lZGlhdGVseSByZWNvZ25pemUgYXMgYW4gTURJTyBQSFkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBMQU44Njd4L0xBTjg2NXggZXRoZXJuZXQgUEhZcy4gQW5kIGZpbmFsbHksIGBvYV90YzZgIOKAkyB0aGF0JiMzOTtzIHRoZSBPUEVOIEFsbGlhbmNlIFRDNiBsaWJyYXJ5OyB0aGUgMTBCQVNFLVQxeCBNQUMtUEhZIHN1cHBvcnQgdGhhdCBib3RoIGBsYW44NjV4YCBhbmQgdGhlIGBhZGluMTE0MGAgU1BJIGV0aGVybmV0IGNvbnRyb2xsZXJzIGxldmVyYWdlLgoKTm93LCBteSBtaW5kIHN0YXJ0cyB0byB3YW5kZXIuIEkgaGF2ZSB0byB0aGluayBhYm91dCBwb3RlbnRpYWwgc2NlbmFyaW9zLiBBcmUgd2UgdGFsa2luZyBzdHJpY3RseSBwaHlzaWNhbCBoYXJkd2FyZSBoZXJlLCBvciBhcmUgdGhlcmUgdmlydHVhbCBkZXZpY2VzIGluIHBsYXk/IENhbiB3ZSBwb3NzaWJseSBoYXZlIHZpcnR1YWwgU1BJIG9yIE1ESU8gZGV2aWNlcyB0aGF0ICphdHRhY2gqIHRvIHRoaXMsIG9yIGNvdWxkIHdlIHNvbWVob3cgY3JlYXRlIGEgdmlydHVhbCBpbnN0YW5jZSBvZiBgbGFuODY1MGAgb3IgYG1pY3JvY2hpcF90MXNgPyBUaGF0IHdvdWxkIGRlZmluaXRlbHkgY2hhbmdlIHRoZSBsYW5kc2NhcGUuCgpNeSBuZXh0IHN0ZXAgaGFzIHRvIGJlIGEgZGVlcGVyIGludmVzdGlnYXRpb24uIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBpZiBzeXprYWxsZXIgaGFzIGFueSBwc2V1ZG8tc3lzY2FsbHMgb3IgaWYgdGhlcmUgYXJlIGFueSBvYnZpb3VzIHVzZXJzcGFjZSBpbnRlcmZhY2VzIHRoYXQgYWxsb3cgdXMgdG8gYmluZCBTUEkgb3IgUEhZIGRldmljZXMuIEkgbmVlZCB0byBrbm93IGlmIHRoaXMgaXMgZnVuZGFtZW50YWxseSBsaW1pdGVkIHRvIHBoeXNpY2FsIGhhcmR3YXJlIG9yIGlmIHRoZXJlJiMzOTtzIGFueSBmbGV4aWJpbGl0eS4gSSBoYXZlIHRvIHRoaW5rIGFib3V0IGhvdyBTUEkgZGV2aWNlcyBhcmUgdHlwaWNhbGx5IG1hbmFnZWQgYW5kIGNyZWF0ZWQgaW4gdGhlIGtlcm5lbCDigJMgYXJlIHRoZXJlIHN5c2ZzLCBjb25maWdmcywgaW9jdGwgbWVjaGFuaXNtcywgb3Igc2ltaWxhciBtZXRob2RzIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQ/IFRpbWUgdG8gZGl2ZSBpbnRvIGBkcml2ZXJzL3NwaS9gIGFuZCBzdGFydCBkaWdnaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXdfZGV2aWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zcGkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1kZmwuYz0xMjQ9c3RhdGljIGludCBkZmxfc3BpX2FsdGVyYV9wcm9iZShzdHJ1Y3QgZGZsX2RldmljZSAqZGZsX2Rldilcbi0tXG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLWRmbC5jLTE3NC1cbmRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtZGZsLmM6MTc1Olx0aWYgKCFzcGlfbmV3X2RldmljZShob3N0LCBcdTAwMjZib2FyZF9pbmZvKSkge1xuZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1kZmwuYy0xNzYtXHRcdGRldl9lcnIoZGV2LCBcJiMzNDslcyBmYWlsZWQgdG8gY3JlYXRlIFNQSSBkZXZpY2U6ICVzXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtcGxhdGZvcm0uYz0zNT1zdGF0aWMgaW50IGFsdGVyYV9zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLXBsYXRmb3JtLmMtMTE2LVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwZGF0YS1cdTAwM2VudW1fZGV2aWNlczsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtcGxhdGZvcm0uYzoxMTc6XHRcdFx0aWYgKCFzcGlfbmV3X2RldmljZShob3N0LCBwZGF0YS1cdTAwM2VkZXZpY2VzICYjNDM7IGkpKVxuZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1wbGF0Zm9ybS5jLTExOC1cdFx0XHRcdGRldl93YXJuKFx1MDAyNnBkZXYtXHUwMDNlZGV2LFxuLS1cbmRyaXZlcnMvc3BpL3NwaS1idXR0ZXJmbHkuYz0xNzY9c3RhdGljIHZvaWQgYnV0dGVyZmx5X2F0dGFjaChzdHJ1Y3QgcGFycG9ydCAqcClcbi0tXG5kcml2ZXJzL3NwaS9zcGktYnV0dGVyZmx5LmMtMjY1LVx0cHAtXHUwMDNlaW5mb1swXS5jb250cm9sbGVyX2RhdGEgPSBwcDtcbmRyaXZlcnMvc3BpL3NwaS1idXR0ZXJmbHkuYzoyNjY6XHRwcC1cdTAwM2VkYXRhZmxhc2ggPSBzcGlfbmV3X2RldmljZShwcC1cdTAwM2ViaXRiYW5nLmN0bHIsIFx1MDAyNnBwLVx1MDAzZWluZm9bMF0pO1xuZHJpdmVycy9zcGkvc3BpLWJ1dHRlcmZseS5jLTI2Ny1cdGlmIChwcC1cdTAwM2VkYXRhZmxhc2gpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWNoMzQxLmM9MTQxPXN0YXRpYyBpbnQgY2gzNDFfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4tLVxuZHJpdmVycy9zcGkvc3BpLWNoMzQxLmMtMjA2LVxuZHJpdmVycy9zcGkvc3BpLWNoMzQxLmM6MjA3Olx0Y2gzNDEtXHUwMDNlc3BpZGV2ID0gc3BpX25ld19kZXZpY2UoY3RybCwgXHUwMDI2Y2hpcCk7XG5kcml2ZXJzL3NwaS9zcGktY2gzNDEuYy0yMDgtXHRpZiAoIWNoMzQxLVx1MDAzZXNwaWRldikge1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1jczQybDQzLmM9MzEyPXN0YXRpYyBpbnQgY3M0Mmw0M19zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3NwaS9zcGktY3M0Mmw0My5jLTQyNi1cbmRyaXZlcnMvc3BpL3NwaS1jczQybDQzLmM6NDI3Olx0XHRpZiAoIXNwaV9uZXdfZGV2aWNlKHByaXYtXHUwMDNlY3RsciwgYW1wbF9pbmZvKSlcbmRyaXZlcnMvc3BpL3NwaS1jczQybDQzLmMtNDI4LVx0XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKHByaXYtXHUwMDNlZGV2LCAtRU5PREVWLFxuLS1cbmRyaXZlcnMvc3BpL3NwaS1jczQybDQzLmMtNDMwLVxuZHJpdmVycy9zcGkvc3BpLWNzNDJsNDMuYzo0MzE6XHRcdGlmICghc3BpX25ld19kZXZpY2UocHJpdi1cdTAwM2VjdGxyLCBhbXByX2luZm8pKVxuZHJpdmVycy9zcGkvc3BpLWNzNDJsNDMuYy00MzItXHRcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUocHJpdi1cdTAwM2VkZXYsIC1FTk9ERVYsXG4tLVxuZHJpdmVycy9zcGkvc3BpLWludGVsLmM9MTM3NT1zdGF0aWMgaW50IGludGVsX3NwaV9wb3B1bGF0ZV9jaGlwKHN0cnVjdCBpbnRlbF9zcGkgKmlzcGkpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWludGVsLmMtMTQwMS1cbmRyaXZlcnMvc3BpL3NwaS1pbnRlbC5jOjE0MDI6XHRpZiAoIXNwaV9uZXdfZGV2aWNlKGlzcGktXHUwMDNlaG9zdCwgXHUwMDI2Y2hpcCkpXG5kcml2ZXJzL3NwaS9zcGktaW50ZWwuYy0xNDAzLVx0XHRyZXR1cm4gLUVOT0RFVjtcbi0tXG5kcml2ZXJzL3NwaS9zcGktaW50ZWwuYy0xNDMwLVxuZHJpdmVycy9zcGkvc3BpLWludGVsLmM6MTQzMTpcdGlmICghc3BpX25ld19kZXZpY2UoaXNwaS1cdTAwM2Vob3N0LCBcdTAwMjZjaGlwKSlcbmRyaXZlcnMvc3BpL3NwaS1pbnRlbC5jLTE0MzItXHRcdHJldHVybiAtRU5PREVWO1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1rc3BpMi5jPTMxMD1zdGF0aWMgaW50IGtzcGkyX3JlZ2lzdGVyX2RldmljZXMoc3RydWN0IGtzcGkyICprc3BpKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1rc3BpMi5jLTMxNi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGtzcGktXHUwMDNlYXV4ZGV2LVx1MDAzZWluZm9fc2l6ZTsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvc3BpL3NwaS1rc3BpMi5jOjMxNzpcdFx0c3RydWN0IHNwaV9kZXZpY2UgKmRldmljZSA9IHNwaV9uZXdfZGV2aWNlKGtzcGktXHUwMDNlaG9zdCwgXHUwMDI2aW5mb1tpXSk7XG5kcml2ZXJzL3NwaS9zcGkta3NwaTIuYy0zMTgtXG4tLVxuZHJpdmVycy9zcGkvc3BpLWxtNzBsbHAuYz0xODg9c3RhdGljIHZvaWQgc3BpX2xtNzBsbHBfYXR0YWNoKHN0cnVjdCBwYXJwb3J0ICpwKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1sbTcwbGxwLmMtMjY2LVx0cHAtXHUwMDNlaW5mby5jb250cm9sbGVyX2RhdGEgPSBwcDtcbmRyaXZlcnMvc3BpL3NwaS1sbTcwbGxwLmM6MjY3Olx0cHAtXHUwMDNlc3BpZGV2X2xtNzAgPSBzcGlfbmV3X2RldmljZShwcC1cdTAwM2ViaXRiYW5nLmN0bHIsIFx1MDAyNnBwLVx1MDAzZWluZm8pO1xuZHJpdmVycy9zcGkvc3BpLWxtNzBsbHAuYy0yNjgtXHRpZiAocHAtXHUwMDNlc3BpZGV2X2xtNzApXG4tLVxuZHJpdmVycy9zcGkvc3BpLWxtNzBsbHAuYy0yNzEtXHRlbHNlIHtcbmRyaXZlcnMvc3BpL3NwaS1sbTcwbGxwLmM6MjcyOlx0XHRkZXZfd2FybihcdTAwMjZwZC1cdTAwM2VkZXYsIFwmIzM0O3NwaV9uZXdfZGV2aWNlIGZhaWxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL3NwaS9zcGktbG03MGxscC5jLTI3My1cdFx0c3RhdHVzID0gLUVOT0RFVjtcbi0tXG5kcml2ZXJzL3NwaS9zcGkteGlsaW54LmM9NDAyPXN0YXRpYyBpbnQgeGlsaW54X3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS14aWxpbnguYy01MDktXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHBkYXRhLVx1MDAzZW51bV9kZXZpY2VzOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvc3BpL3NwaS14aWxpbnguYzo1MTA6XHRcdFx0c3BpX25ld19kZXZpY2UoaG9zdCwgcGRhdGEtXHUwMDNlZGV2aWNlcyAmIzQzOyBpKTtcbmRyaXZlcnMvc3BpL3NwaS14aWxpbnguYy01MTEtXHR9XG4tLVxuZHJpdmVycy9zcGkvc3BpLmM9Mjk3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIHNwaV9jb250cm9sbGVyX3N0YXRpc3RpY3NfZ3JvdXAgPSB7XG4tLVxuZHJpdmVycy9zcGkvc3BpLmMtMzA0LS8qXG5kcml2ZXJzL3NwaS9zcGkuYzozMDU6ICogbmV3X2RldmljZV9zdG9yZSAtIGluc3RhbnRpYXRlIGEgbmV3IFNQSSBkZXZpY2UgZnJvbSB1c2Vyc3BhY2VcbmRyaXZlcnMvc3BpL3NwaS5jLTMwNi0gKlxuLS1cbmRyaXZlcnMvc3BpL3NwaS5jLTMwOS0gKiBFeGFtcGxlczpcbmRyaXZlcnMvc3BpL3NwaS5jOjMxMDogKiAgIGVjaG8gc3BpZGV2IDAgXHUwMDNlIG5ld19kZXZpY2VcbmRyaXZlcnMvc3BpL3NwaS5jOjMxMTogKiAgIGVjaG8gc3BpZGV2IDAgMTAwMDAwMDAgXHUwMDNlIG5ld19kZXZpY2VcbmRyaXZlcnMvc3BpL3NwaS5jOjMxMjogKiAgIGVjaG8gc3BpZGV2IDAgMTAwMDAwMDAgMyBcdTAwM2UgbmV3X2RldmljZVxuZHJpdmVycy9zcGkvc3BpLmMtMzEzLSAqL1xuZHJpdmVycy9zcGkvc3BpLmM9MzE0PXN0YXRpYyBzc2l6ZV90XG5kcml2ZXJzL3NwaS9zcGkuYzozMTU6bmV3X2RldmljZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuZHJpdmVycy9zcGkvc3BpLmMtMzE2LVx0XHQgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpXG4tLVxuZHJpdmVycy9zcGkvc3BpLmMtMzI5LVx0aWYgKCFibGFuaykge1xuZHJpdmVycy9zcGkvc3BpLmM6MzMwOlx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7bmV3X2RldmljZTogTWlzc2luZyBwYXJhbWV0ZXJzXFxuXCYjMzQ7KTtcbmRyaXZlcnMvc3BpL3NwaS5jLTMzMS1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9zcGkvc3BpLmMtMzM0LVx0aWYgKGJsYW5rID09IGJ1ZiB8fCBibGFuayAtIGJ1ZiBcdTAwM2UgU1BJX05BTUVfU0laRSAtIDEpIHtcbmRyaXZlcnMvc3BpL3NwaS5jOjMzNTpcdFx0ZGV2X2VycihkZXYsIFwmIzM0O25ld19kZXZpY2U6IEludmFsaWQgZGV2aWNlIG5hbWVcXG5cJiMzNDspO1xuZHJpdmVycy9zcGkvc3BpLmMtMzM2LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL3NwaS9zcGkuYy0zNDgtXHRpZiAoc3NjYW5mKCYjNDM7JiM0MztibGFuaywgXCYjMzQ7JXUgJXUgJXVcJiMzNDssIFx1MDAyNmNoaXBfc2VsZWN0LCBcdTAwMjZtYXhfc3BlZWRfaHosIFx1MDAyNm1vZGUpIFx1MDAzYyAxKSB7XG5kcml2ZXJzL3NwaS9zcGkuYzozNDk6XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtuZXdfZGV2aWNlOiBDYW4mIzM5O3QgcGFyc2UgY2hpcCBzZWxlY3RcXG5cJiMzNDspO1xuZHJpdmVycy9zcGkvc3BpLmMtMzUwLVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL3NwaS9zcGkuYy0zNTktXHRpZiAoY2hpcF9zZWxlY3QgXHUwMDNlIFU4X01BWCB8fCBjaGlwX3NlbGVjdCBcdTAwM2U9IGN0bHItXHUwMDNlbnVtX2NoaXBzZWxlY3QpIHtcbmRyaXZlcnMvc3BpL3NwaS5jOjM2MDpcdFx0ZGV2X2VycihkZXYsIFwmIzM0O25ld19kZXZpY2U6IENoaXAgc2VsZWN0ICV1IG91dCBvZiByYW5nZSAobnVtX2NoaXBzZWxlY3Q9JXUpXFxuXCYjMzQ7LFxuZHJpdmVycy9zcGkvc3BpLmMtMzYxLVx0XHRcdGNoaXBfc2VsZWN0LCBjdGxyLVx1MDAzZW51bV9jaGlwc2VsZWN0KTtcbi0tXG5kcml2ZXJzL3NwaS9zcGkuYy0zNzItXHRpZiAobW9kZSBcdTAwMjYgfih1MzIpU1BJX01PREVfVVNFUl9NQVNLKSB7XG5kcml2ZXJzL3NwaS9zcGkuYzozNzM6XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtuZXdfZGV2aWNlOiBJbnZhbGlkIG1vZGUgYml0cyAweCV4XFxuXCYjMzQ7LFxuZHJpdmVycy9zcGkvc3BpLmMtMzc0LVx0XHRcdG1vZGUgXHUwMDI2IH4odTMyKVNQSV9NT0RFX1VTRVJfTUFTSyk7XG4tLVxuZHJpdmVycy9zcGkvc3BpLmMtNDAxLVx0LypcbmRyaXZlcnMvc3BpL3NwaS5jOjQwMjpcdCAqIHNwaV91bnJlZ2lzdGVyX2NvbnRyb2xsZXIoKSByZW1vdmVzIHRoZSBuZXdfZGV2aWNlL2RlbGV0ZV9kZXZpY2VcbmRyaXZlcnMvc3BpL3NwaS5jLTQwMy1cdCAqIHN5c2ZzIGdyb3VwIGJlZm9yZSB0YWtpbmcgYWRkX2xvY2ssIHNvIGtlcm5mc19kcmFpbigpIGhhcyBhbHJlYWR5XG4tLVxuZHJpdmVycy9zcGkvc3BpLmMtNDIxLVxuZHJpdmVycy9zcGkvc3BpLmM6NDIyOlx0ZGV2X2luZm8oZGV2LCBcJiMzNDtuZXdfZGV2aWNlOiBJbnN0YW50aWF0ZWQgZGV2aWNlICVzIGF0IENTJXVcXG5cJiMzNDssXG5kcml2ZXJzL3NwaS9zcGkuYy00MjMtXHRcdCBtb2RhbGlhcywgY2hpcF9zZWxlY3QpO1xuLS1cbmRyaXZlcnMvc3BpL3NwaS5jLTQyNS19XG5kcml2ZXJzL3NwaS9zcGkuYzo0MjY6c3RhdGljIERFVklDRV9BVFRSX0lHTk9SRV9MT0NLREVQKG5ld19kZXZpY2UsIDAyMDAsIE5VTEwsIG5ld19kZXZpY2Vfc3RvcmUpO1xuZHJpdmVycy9zcGkvc3BpLmMtNDI3LVxuLS1cbmRyaXZlcnMvc3BpL3NwaS5jPTQ3MT1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqc3BpX2NvbnRyb2xsZXJfdXNlcnNwYWNlX2F0dHJzW10gPSB7XG5kcml2ZXJzL3NwaS9zcGkuYzo0NzI6XHRcdTAwMjZkZXZfYXR0cl9uZXdfZGV2aWNlLmF0dHIsXG5kcml2ZXJzL3NwaS9zcGkuYy00NzMtXHRcdTAwMjZkZXZfYXR0cl9kZWxldGVfZGV2aWNlLmF0dHIsXG4tLVxuZHJpdmVycy9zcGkvc3BpLmM9NDc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIHNwaV9jb250cm9sbGVyX3VzZXJzcGFjZV9ncm91cCA9IHtcbi0tXG5kcml2ZXJzL3NwaS9zcGkuYy00ODQtICogc3BpX2NvbnRyb2xsZXJfdXNlcnNwYWNlX2dyb3VwIGlzIHJlZ2lzdGVyZWQgbWFudWFsbHkgZm9yIGhvc3QgY29udHJvbGxlcnNcbmRyaXZlcnMvc3BpL3NwaS5jOjQ4NTogKiBhdCB0aGUgZW5kIG9mIHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKCkgc28gbmV3X2RldmljZS9kZWxldGVfZGV2aWNlIG9ubHlcbmRyaXZlcnMvc3BpL3NwaS5jLTQ4Ni0gKiBhcHBlYXIgYWZ0ZXIgRFQvQUNQSSBjaGlsZHJlbiBhbmQgdGhlIHF1ZXVlIGFyZSBzZXQgdXAuXG4tLVxuZHJpdmVycy9zcGkvc3BpLmM9OTc5PUVYUE9SVF9TWU1CT0xfR1BMKHNwaV9hZGRfZGV2aWNlKTtcbi0tXG5kcml2ZXJzL3NwaS9zcGkuYy05ODEtLyoqXG5kcml2ZXJzL3NwaS9zcGkuYzo5ODI6ICogc3BpX25ld19kZXZpY2UgLSBpbnN0YW50aWF0ZSBvbmUgbmV3IFNQSSBkZXZpY2VcbmRyaXZlcnMvc3BpL3NwaS5jLTk4My0gKiBAY3RscjogQ29udHJvbGxlciB0byB3aGljaCBkZXZpY2UgaXMgY29ubmVjdGVkXG4tLVxuZHJpdmVycy9zcGkvc3BpLmMtOTk0LSAqL1xuZHJpdmVycy9zcGkvc3BpLmM6OTk1OnN0cnVjdCBzcGlfZGV2aWNlICpzcGlfbmV3X2RldmljZShzdHJ1Y3Qgc3BpX2NvbnRyb2xsZXIgKmN0bHIsXG5kcml2ZXJzL3NwaS9zcGkuYy05OTYtXHRcdFx0XHQgIHN0cnVjdCBzcGlfYm9hcmRfaW5mbyAqY2hpcClcbi0tXG5kcml2ZXJzL3NwaS9zcGkuYy0xMDUwLX1cbmRyaXZlcnMvc3BpL3NwaS5jOjEwNTE6RVhQT1JUX1NZTUJPTF9HUEwoc3BpX25ld19kZXZpY2UpO1xuZHJpdmVycy9zcGkvc3BpLmMtMTA1Mi1cbi0tXG5kcml2ZXJzL3NwaS9zcGkuYz0xMDgxPXN0YXRpYyB2b2lkIHNwaV9tYXRjaF9jb250cm9sbGVyX3RvX2JvYXJkaW5mbyhzdHJ1Y3Qgc3BpX2NvbnRyb2xsZXIgKmN0bHIsXG4tLVxuZHJpdmVycy9zcGkvc3BpLmMtMTA4OC1cbmRyaXZlcnMvc3BpL3NwaS5jOjEwODk6XHRkZXYgPSBzcGlfbmV3X2RldmljZShjdGxyLCBiaSk7XG5kcml2ZXJzL3NwaS9zcGkuYy0xMDkwLVx0aWYgKCFkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLmM9MzY1Mj1pbnQgc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IHNwaV9jb250cm9sbGVyICpjdGxyKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS5jLTM3NTctXHQvKlxuZHJpdmVycy9zcGkvc3BpLmM6Mzc1ODpcdCAqIFJlZ2lzdGVyIHRoZSBuZXdfZGV2aWNlL2RlbGV0ZV9kZXZpY2Ugc3lzZnMgaW50ZXJmYWNlIGFzIHRoZVxuZHJpdmVycy9zcGkvc3BpLmMtMzc1OS1cdCAqIGZpbmFsIHN0ZXAgb2YgaG9zdCBjb250cm9sbGVyIGJyaW5ndXAsIG9ubHkgYWZ0ZXIgdGhlIHF1ZXVlLFxuLS1cbmRyaXZlcnMvc3BpL3NwaS5jPTM4Mzg9dm9pZCBzcGlfdW5yZWdpc3Rlcl9jb250cm9sbGVyKHN0cnVjdCBzcGlfY29udHJvbGxlciAqY3Rscilcbi0tXG5kcml2ZXJzL3NwaS9zcGkuYy0zODQzLVx0LypcbmRyaXZlcnMvc3BpL3NwaS5jOjM4NDQ6XHQgKiBEcmFpbiBpbi1mbGlnaHQgbmV3X2RldmljZS9kZWxldGVfZGV2aWNlIHN5c2ZzIHN0b3JlcyBhbmRcbmRyaXZlcnMvc3BpL3NwaS5jLTM4NDUtXHQgKiBwcmV2ZW50IG5ldyBvbmVzIGZyb20gc3RhcnRpbmcuICBNdXN0IGhhcHBlbiBiZWZvcmUgd2UgdGFrZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDgxMgoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDE3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIFRob3VnaHRzIG9uIFNQSSBEZXZpY2UgSW5zdGFudGlhdGlvbiBhbmQgdGhlIExBTjg2NXggRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBuZXdfZGV2aWNlYCBlbnRyeSBpbiBzeXNmcyBmb3IgU1BJLiBSaWdodCwgdGhpcyBpcyBob3cgeW91IGNhbiBkeW5hbWljYWxseSBpbnN0YW50aWF0ZSBhIG5ldyBTUEkgZGV2aWNlIGZyb20gdXNlcnNwYWNlLiBJIHNlZSBpdCYjMzk7cyBzb21ldGhpbmcgbGlrZSBgZWNobyBsYW44NjUwIDAgJmd0OyAvc3lzL2NsYXNzL3NwaV9tYXN0ZXIvc3BpWC9uZXdfZGV2aWNlYC4gTWFrZXMgc2Vuc2UuIEJ1dCBJJiMzOTttIGltbWVkaWF0ZWx5IHdvbmRlcmluZyBhYm91dCB0aGUgZW52aXJvbm1lbnQg4oCTIHNwZWNpZmljYWxseSwgUUVNVS4gRG9lcyBRRU1VIGV2ZW4gaGF2ZSBuYXRpdmUgU1BJIGNvbnRyb2xsZXIgc3VwcG9ydCwgb3Igd2lsbCBJIG5lZWQgdG8gc2ltdWxhdGUgaXQgd2l0aCBzb21ldGhpbmcgbGlrZSBgc3BpLWxvb3BiYWNrLXRlc3RgLCBgc3BpLW1vY2tgLCBgc3BpLWdwaW9gLCBvciBtYXliZSBldmVuIGBzcGktYnV0dGVyZmx5YD8gQW5kLCBpcyBTeXprYWxsZXIgaGl0dGluZyBTUEksIG9yIGlzIHRoaXMgYSBkZWFkIGVuZD8KCk9rYXksIGhvbGQgb24uIEJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGUgc2V0dXAsIGxldCYjMzk7cyBiYWNrIHVwIGFuZCB1bmRlcnN0YW5kIHRoZSBhY3R1YWwgZGV2aWNlIGRyaXZlciYjMzk7cyBiZWhhdmlvci4gSSBuZWVkIHRvIHNlZSB3aGF0IGhhcHBlbnMgKndoZW4qIHRoaXMgYGxhbjg2NXhgIGRldmljZSBpcyBwcm9iZWQuIEkgc2hvdWxkIGNoZWNrIHRoZSBwcm9iZSBmdW5jdGlvbiwgc3RhcnRpbmcgd2l0aCB0aGUgYGxhbjg2NXhfcHJvYmVgIGZ1bmN0aW9uLiBJIHdpbGwgZ28gZGlyZWN0bHkgdG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguY2AgYW5kIGFuYWx5emUgZnJvbSBsaW5lIDMzMCB0byBhYm91dCA0MjAuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIGludGVyZXN0aW5nIHN0dWZmIGxpa2VseSBpcy4gVGhhdCBzaG91bGQgdGVsbCBtZSB3aGF0JiMzOTtzIGFjdHVhbGx5IGhhcHBlbmluZyBvbiBpbnN0YW50aWF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMzMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4NQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzMwOlx0XHQubmRvX2V0aF9pb2N0bCAgICAgICAgICA9IHBoeV9kb19pb2N0bF9ydW5uaW5nLFxuIDMzMTpcdH07XG4gMzMyOlx0XG4gMzMzOlx0c3RhdGljIGludCBsYW44NjV4X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4gMzM0Olx0e1xuIDMzNTpcdFx0c3RydWN0IG9hX3RjNl9xdWlya3MgdGM2X3F1aXJrcyA9IHt9O1xuIDMzNjpcdFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbiAzMzc6XHRcdHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXY7XG4gMzM4Olx0XHRpbnQgcmV0O1xuIDMzOTpcdFxuIDM0MDpcdFx0bmV0ZGV2ID0gYWxsb2NfZXRoZXJkZXYoc2l6ZW9mKHN0cnVjdCBsYW44NjV4X3ByaXYpKTtcbiAzNDE6XHRcdGlmICghbmV0ZGV2KVxuIDM0MjpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAzNDM6XHRcbiAzNDQ6XHRcdHByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuIDM0NTpcdFx0cHJpdi1cdTAwM2VuZXRkZXYgPSBuZXRkZXY7XG4gMzQ2Olx0XHRwcml2LVx1MDAzZXNwaSA9IHNwaTtcbiAzNDc6XHRcdHNwaV9zZXRfZHJ2ZGF0YShzcGksIHByaXYpO1xuIDM0ODpcdFx0SU5JVF9XT1JLKFx1MDAyNnByaXYtXHUwMDNlbXVsdGljYXN0X3dvcmssIGxhbjg2NXhfbXVsdGljYXN0X3dvcmtfaGFuZGxlcik7XG4gMzQ5Olx0XG4gMzUwOlx0XHR0YzZfcXVpcmtzLnF1aXJrX2ZsYWdzID0gT0FfVEM2X1BIWV9JTlQ7XG4gMzUxOlx0XHRwcml2LVx1MDAzZXRjNiA9IG9hX3RjNl9pbml0KHNwaSwgbmV0ZGV2LCBcdTAwMjZ0YzZfcXVpcmtzKTtcbiAzNTI6XHRcdGlmICghcHJpdi1cdTAwM2V0YzYpIHtcbiAzNTM6XHRcdFx0cmV0ID0gLUVOT0RFVjtcbiAzNTQ6XHRcdFx0Z290byBmcmVlX25ldGRldjtcbiAzNTU6XHRcdH1cbiAzNTY6XHRcbiAzNTc6XHRcdC8qIExBTjg2NXggUmV2LkIwL0IxIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBmcm9tIEFOMTc2MFxuIDM1ODpcdFx0ICogQXMgcGVyIHRoZSBDb25maWd1cmF0aW9uIEFwcGxpY2F0aW9uIE5vdGUgQU4xNzYwIHB1Ymxpc2hlZCBpbiB0aGVcbiAzNTk6XHRcdCAqIGxpbmssIGh0dHBzOi8vd3d3Lm1pY3JvY2hpcC5jb20vZW4tdXMvYXBwbGljYXRpb24tbm90ZXMvYW4xNzYwXG4gMzYwOlx0XHQgKiBSZXZpc2lvbiBGIChEUzYwMDAxNzYwRyAtIEp1bmUgMjAyNCksIGNvbmZpZ3VyZSB0aGUgTUFDIHRvIHNldCB0aW1lXG4gMzYxOlx0XHQgKiBzdGFtcGluZyBhdCB0aGUgZW5kIG9mIHRoZSBTdGFydCBvZiBGcmFtZSBEZWxpbWl0ZXIgKFNGRCkgYW5kIHNldCB0aGVcbiAzNjI6XHRcdCAqIFRpbWVyIEluY3JlbWVudCByZWcgdG8gNDAgbnMgdG8gYmUgdXNlZCBhcyBhIDI1IE1IeiBpbnRlcm5hbCBjbG9jay5cbiAzNjM6XHRcdCAqL1xuIDM2NDpcdFx0cmV0ID0gb2FfdGM2X3dyaXRlX3JlZ2lzdGVyKHByaXYtXHUwMDNldGM2LCBMQU44NjVYX1JFR19NQUNfVFNVX1RJTUVSX0lOQ1IsXG4gMzY1Olx0XHRcdFx0XHQgICAgTUFDX1RTVV9USU1FUl9JTkNSX0NPVU5UX05BTk9TRUNPTkRTKTtcbiAzNjY6XHRcdGlmIChyZXQpIHtcbiAzNjc6XHRcdFx0ZGV2X2VycihcdTAwMjZzcGktXHUwMDNlZGV2LCBcJiMzNDtGYWlsZWQgdG8gY29uZmlnIFRTVSBUaW1lciBJbmNyIHJlZzogJWRcXG5cJiMzNDssXG4gMzY4Olx0XHRcdFx0cmV0KTtcbiAzNjk6XHRcdFx0Z290byBvYV90YzZfZXhpdDtcbiAzNzA6XHRcdH1cbiAzNzE6XHRcbiAzNzI6XHRcdC8qIEFzIHBlciB0aGUgcG9pbnQgczMgaW4gdGhlIGJlbG93IGVycmF0YSwgU1BJIHJlY2VpdmUgRXRoZXJuZXQgZnJhbWVcbiAzNzM6XHRcdCAqIHRyYW5zZmVyIG1heSBoYWx0IHdoZW4gc3RhcnRpbmcgdGhlIG5leHQgZnJhbWUgaW4gdGhlIHNhbWUgZGF0YSBibG9ja1xuIDM3NDpcdFx0ICogKGNodW5rKSBhcyB0aGUgZW5kIG9mIGEgcHJldmlvdXMgZnJhbWUuIFRoZSBSRkEgZmllbGQgc2hvdWxkIGJlXG4gMzc1Olx0XHQgKiBjb25maWd1cmVkIHRvIDAxYiBvciAxMGIgZm9yIHByb3BlciBvcGVyYXRpb24uIEluIHRoZXNlIG1vZGVzLCBvbmx5XG4gMzc2Olx0XHQgKiBvbmUgcmVjZWl2ZSBFdGhlcm5ldCBmcmFtZSB3aWxsIGJlIHBsYWNlZCBpbiBhIHNpbmdsZSBkYXRhIGJsb2NrLlxuIDM3NzpcdFx0ICogV2hlbiB0aGUgUkZBIGZpZWxkIGlzIHdyaXR0ZW4gdG8gMDFiLCByZWNlaXZlZCBmcmFtZXMgd2lsbCBiZSBmb3JjZWRcbiAzNzg6XHRcdCAqIHRvIG9ubHkgc3RhcnQgaW4gdGhlIGZpcnN0IHdvcmQgb2YgdGhlIGRhdGEgYmxvY2sgcGF5bG9hZCAoU1dPPTApLiBBc1xuIDM3OTpcdFx0ICogcmVjb21tZW5kZWQsIGVuYWJsZSB6ZXJvIGFsaWduIHJlY2VpdmUgZnJhbWUgZmVhdHVyZSBmb3IgcHJvcGVyXG4gMzgwOlx0XHQgKiBvcGVyYXRpb24uXG4gMzgxOlx0XHQgKlxuIDM4MjpcdFx0ICogaHR0cHM6Ly93dzEubWljcm9jaGlwLmNvbS9kb3dubG9hZHMvYWVtRG9jdW1lbnRzL2RvY3VtZW50cy9BSVMvUHJvZHVjdERvY3VtZW50cy9FcnJhdGEvTEFOODY1MC0xLUVycmF0YS04MDAwMTA3NS5wZGZcbiAzODM6XHRcdCAqL1xuIDM4NDpcdFx0cmV0ID0gb2FfdGM2X3plcm9fYWxpZ25fcmVjZWl2ZV9mcmFtZV9lbmFibGUocHJpdi1cdTAwM2V0YzYpO1xuIDM4NTpcdFx0aWYgKHJldCkge1xuIDM4NjpcdFx0XHRkZXZfZXJyKFx1MDAyNnNwaS1cdTAwM2VkZXYsIFwmIzM0O0ZhaWxlZCB0byBzZXQgWkFSRkU6ICVkXFxuXCYjMzQ7LCByZXQpO1xuIDM4NzpcdFx0XHRnb3RvIG9hX3RjNl9leGl0O1xuIDM4ODpcdFx0fVxuIDM4OTpcdFxuIDM5MDpcdFx0LyogR2V0IHRoZSBNQUMgYWRkcmVzcyBmcm9tIHRoZSBTUEkgZGV2aWNlIHRyZWUgbm9kZSAqL1xuIDM5MTpcdFx0aWYgKGRldmljZV9nZXRfZXRoZGV2X2FkZHJlc3MoXHUwMDI2c3BpLVx1MDAzZWRldiwgbmV0ZGV2KSlcbiAzOTI6XHRcdFx0ZXRoX2h3X2FkZHJfcmFuZG9tKG5ldGRldik7XG4gMzkzOlx0XG4gMzk0Olx0XHRyZXQgPSBsYW44NjV4X3NldF9od19tYWNhZGRyKHByaXYsIG5ldGRldi1cdTAwM2VkZXZfYWRkcik7XG4gMzk1Olx0XHRpZiAocmV0KSB7XG4gMzk2Olx0XHRcdGRldl9lcnIoXHUwMDI2c3BpLVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIGNvbmZpZ3VyZSBNQUM6ICVkXFxuXCYjMzQ7LCByZXQpO1xuIDM5NzpcdFx0XHRnb3RvIG9hX3RjNl9leGl0O1xuIDM5ODpcdFx0fVxuIDM5OTpcdFxuIDQwMDpcdFx0bmV0ZGV2LVx1MDAzZWlmX3BvcnQgPSBJRl9QT1JUXzEwQkFTRVQ7XG4gNDAxOlx0XHRuZXRkZXYtXHUwMDNlaXJxID0gc3BpLVx1MDAzZWlycTtcbiA0MDI6XHRcdG5ldGRldi1cdTAwM2VuZXRkZXZfb3BzID0gXHUwMDI2bGFuODY1eF9uZXRkZXZfb3BzO1xuIDQwMzpcdFx0bmV0ZGV2LVx1MDAzZWV0aHRvb2xfb3BzID0gXHUwMDI2bGFuODY1eF9ldGh0b29sX29wcztcbiA0MDQ6XHRcbiA0MDU6XHRcdHJldCA9IHJlZ2lzdGVyX25ldGRldihuZXRkZXYpO1xuIDQwNjpcdFx0aWYgKHJldCkge1xuIDQwNzpcdFx0XHRkZXZfZXJyKFx1MDAyNnNwaS1cdTAwM2VkZXYsIFwmIzM0O1JlZ2lzdGVyIG5ldGRldiBmYWlsZWQgKHJldCA9ICVkKVwmIzM0OywgcmV0KTtcbiA0MDg6XHRcdFx0Z290byBvYV90YzZfZXhpdDtcbiA0MDk6XHRcdH1cbiA0MTA6XHRcbiA0MTE6XHRcdHJldHVybiAwO1xuIDQxMjpcdFxuIDQxMzpcdG9hX3RjNl9leGl0OlxuIDQxNDpcdFx0b2FfdGM2X2V4aXQocHJpdi1cdTAwM2V0YzYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Mjg4OQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDg1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEZlYXNpYmlsaXR5IEFzc2Vzc21lbnQqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCBpbnZvbHZlcyB0aGUgYGxhbjg2NXhgLCBgb2FfdGM2YCwgYW5kIGBtaWNyb2NoaXBfdDFzYCBjb21wb25lbnRzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgY29kZSBpcyBldmVuICpyZWFjaGFibGUqIGluIGEgc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudC4gVGhlIHRyaWFnZSBwaGlsb3NvcGh5IHByaW9yaXRpemVzIHJlYWNoYWJpbGl0eSBhcyB0aGUgcHJpbWFyeSBnYXRlLgoKRmlyc3QsIEkgcmVtZW1iZXIgdGhhdCBgbGFuODY1eGAgaXMgYSBNQUMtUEhZIGNvbm5lY3RlZCB2aWEgU1BJLiBUaGUgY3JpdGljYWwgcXVlc3Rpb24gaGVyZSBpcyB3aGV0aGVyIHRoaXMgaGFyZHdhcmUgb3IgYW55dGhpbmcgc2ltaWxhciBjYW4gYmUgZW11bGF0ZWQgd2l0aGluIHRoZSBzdGFuZGFyZCBRRU1VIHNldHVwIHdlJiMzOTtyZSB1c2luZy4gU2FkbHksIFFFTVUmIzM5O3MgZG9jdW1lbnRhdGlvbiBhbmQgbXkgcHJpb3Iga25vd2xlZGdlIHRlbGwgbWUgaXQgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGUgTEFOODY1MCwgTEFOODY1MSwgb3IgYW55IE1pY3JvY2hpcCBUMVMgUEhZLCBub3IgZG9lcyBpdCBoYXZlIGFuIE9BLVRDNiBjaGlwIGVtdWxhdGlvbi4KCk5vdywgbGV0JiMzOTtzIGFwcGx5IHRoZSB0cmlhZ2UgcGhpbG9zb3BoeS4gU2VjdGlvbiAxIHN0cmVzc2VzIHRoYXQgZnV6emluZyBzaG91bGQgb25seSB0YXJnZXQgY29kZSB0aGF0ICpleGVjdXRlcyogaW4gYSBzdGFuZGFyZCB2aXJ0dWFsIGVudmlyb25tZW50LiBTZWN0aW9uIDIgbGF5cyBvdXQgdGhlICYjMzQ7bmVnYXRpdmUgY3JpdGVyaWEmIzM0OyBmb3IgZGV0ZXJtaW5pbmcgd2hlbiB0byAqbm90KiBmdXp6LiBNeSBwcmltYXJ5IGNvbmNlcm4gaXMgaWYgdGhlIG1vZGlmaWVkIGNvZGUgZmFsbHMgaW50byB0aGlzIGNhdGVnb3J5LCBzcGVjaWZpY2FsbHk6ICYjMzQ7U3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlJiMzNDsgLSBsaWtlIHZlbmRvci1zcGVjaWZpYyBkZXZpY2VzIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDIGNhcmRzIHVuYXZhaWxhYmxlIGluIFFFTVUuIEFsc28sIGRyaXZlcnMgdGhhdCBhcmUgb25seSB1c2VkIGR1cmluZyBwaHlzaWNhbCBkZXZpY2UgcmVtb3ZhbCwgb3IgYXJlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYywgYXJlIHRvIGJlIGlnbm9yZWQuCgpTZWN0aW9uIDMgb3V0bGluZXMgdGhlICYjMzQ7cG9zaXRpdmUgY3JpdGVyaWEsJiMzNDsgY29kZSB0aGF0ICpzaG91bGQqIGJlIGZ1enplZC4gVGhhdCBpbmNsdWRlcyBhbnl0aGluZyBpbiBjb3JlIHN1YnN5c3RlbXMsIHJlZmFjdG9yaW5ncywgcnVudGltZSBhc3NlcnRpb25zLCBvciBkcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgc3VjaCBhcyB2aXJ0aW8sIFVTQiBnYWRnZXQsIGV0Yy4KCkkmIzM5O3ZlIGdvdCBmb3VyIGZpbGVzIGluIHRoZSBtb2RpZmllZCBjb2RlOiBgbGFuODY1eC5jYCwgYG9hX3RjNi5jYCwgYG1pY3JvY2hpcF90MXMuY2AsIGFuZCBgb2FfdGM2LmhgLiBNeSBhbmFseXNpcyBzYXlzIHRoYXQ6CgoxLiAgYGxhbjg2NXguY2AgaXMgdGhlIEV0aGVybmV0IGNvbnRyb2xsZXIgZHJpdmVyIGZvciB0aGUgTWljcm9jaGlwIExBTjg2NXggZmFtaWx5LCB1c2luZyBTUEkuCjIuICBgb2FfdGM2LmNgIGlzIHRoZSBPcGVuIEFsbGlhbmNlIFRDNiAxMEJBU0UtVDFTIE1BQy1QSFkgcHJvdG9jb2wgbGlicmFyeSwgYWxzbyBmb3IgU1BJLgozLiAgYG1pY3JvY2hpcF90MXMuY2AgaXMgdGhlIEV0aGVybmV0IFBIWSBkcml2ZXIgZm9yIExBTjg2N3gvTEFOODY1eC4KNC4gIGBvYV90YzYuaGAgaXMgdGhlIGFzc29jaWF0ZWQgaGVhZGVyLgoKR2l2ZW4gdGhhdCB0aGVzZSBhcmUgU1BJIGRyaXZlcnMgZm9yIHBoeXNpY2FsIE1BQy1QSFkgY2hpcHMsIHRoZSBrZXkgcXVlc3Rpb24gaXM6IGFyZSBhbnkgb2YgdGhlc2UgY29tcG9uZW50cyB1c2FibGUgd2l0aCB2aXJ0dWFsIGRyaXZlcnMgb3IgZW11bGF0ZWQgaGFyZHdhcmU/IFRoZSBhbnN3ZXIgbG9va3MgdG8gYmUgbm8uIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGNoZWNrIGFsbCB0aGUga2VybmVsIHVzZXMgb2YgYG9hX3RjNmAgYW5kIGRlY2lkZSBpZiB0aGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O29hX3RjNl9pbml0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9vYS10YzYtZnJhbWV3b3JrLnJzdD00NTQ9VGhlIGluY2x1ZGUvbGludXgvb2FfdGM2LmggZGVmaW5lcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczpcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9vYS10YzYtZnJhbWV3b3JrLnJzdC00NTUtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvb2EtdGM2LWZyYW1ld29yay5yc3Q6NDU2Oi4uIGM6ZnVuY3Rpb246OiBzdHJ1Y3Qgb2FfdGM2ICpvYV90YzZfaW5pdChzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpLCBcXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL29hLXRjNi1mcmFtZXdvcmsucnN0LTQ1Ny0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgXFxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYz03MDk9c3RhdGljIGludCBhZGluMTE0MF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTcyNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jOjcyNzpcdHByaXYtXHUwMDNldGM2ID0gb2FfdGM2X2luaXQoc3BpLCBuZXRkZXYsIFx1MDAyNnRjNl9xdWlya3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtNzI4LVx0aWYgKCFwcml2LVx1MDAzZXRjNilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM9MzMzPXN0YXRpYyBpbnQgbGFuODY1eF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zNTAtXHR0YzZfcXVpcmtzLnF1aXJrX2ZsYWdzID0gT0FfVEM2X1BIWV9JTlQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzUxOlx0cHJpdi1cdTAwM2V0YzYgPSBvYV90YzZfaW5pdChzcGksIG5ldGRldiwgXHUwMDI2dGM2X3F1aXJrcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzUyLVx0aWYgKCFwcml2LVx1MDAzZXRjNikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTE1MDU9c3RhdGljIGludCBvYV90YzZfY2hlY2tfY3RybF9wcm90ZWN0aW9uKHN0cnVjdCBvYV90YzYgKnRjNilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xNTE5LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTUyMDogKiBvYV90YzZfaW5pdCAtIGFsbG9jYXRlcyBhbmQgaW5pdGlhbGl6ZXMgb2FfdGM2IHN0cnVjdHVyZS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTE1MjEtICogQHNwaTogZGV2aWNlIHdpdGggd2hpY2ggZGF0YSB3aWxsIGJlIGV4Y2hhbmdlZC5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xNTI3LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTUyODpzdHJ1Y3Qgb2FfdGM2ICpvYV90YzZfaW5pdChzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTUyOS1cdFx0XHQgICBzdHJ1Y3Qgb2FfdGM2X3F1aXJrcyAqcXVpcmtzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTE2NDQtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTY0NTpFWFBPUlRfU1lNQk9MX0dQTChvYV90YzZfaW5pdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xNjQ2LVxuLS1cbmluY2x1ZGUvbGludXgvb2FfdGM2Lmg9NzY9c3RydWN0IG9hX3RjNl9xdWlya3Mge1xuLS1cbmluY2x1ZGUvbGludXgvb2FfdGM2LmgtNzktXG5pbmNsdWRlL2xpbnV4L29hX3RjNi5oOjgwOnN0cnVjdCBvYV90YzYgKm9hX3RjNl9pbml0KHN0cnVjdCBzcGlfZGV2aWNlICpzcGksIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5pbmNsdWRlL2xpbnV4L29hX3RjNi5oLTgxLVx0XHRcdCAgIHN0cnVjdCBvYV90YzZfcXVpcmtzICpxdWlya3MpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTI1OQoJCQkJCQkJb3V0cHV0OiAxNzYKCQkJCQkJCXRob3VnaHRzOiA1MjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgVW5yZWFjaGFiaWxpdHkgb2YgdGhlIE1vZGlmaWVkIENvZGUqKgoKT2theSwgaGVyZSYjMzk7cyB0aGUgZGVhbDogSSYjMzk7dmUgbG9va2VkIGF0IHRoZSBjYWxscyB0byBgb2FfdGM2X2luaXRgLiBJIHNlZSB0aGF0IGl0JiMzOTtzIG9ubHkgY2FsbGVkIGJ5IGBhZGluMTE0MF9wcm9iZWAgYW5kIGBsYW44NjV4X3Byb2JlYC4gVGhlc2UgYXJlIFNQSSBFdGhlcm5ldCBjb250cm9sbGVyIGRyaXZlcnMsIHNwZWNpZmljYWxseSBmb3IgdGhlIEFuYWxvZyBEZXZpY2VzIEFESU4xMTQwIGFuZCB0aGUgTWljcm9jaGlwIExBTjg2NTAvMSBjaGlwcy4gVGhlbiB0aGVyZSYjMzk7cyBgbWljcm9jaGlwX3Qxc2AsIGEgUEhZIGRyaXZlciBmb3IgdGhlIE1pY3JvY2hpcCBMQU44Njd4IC8gTEFOODY1eCBQSFkgaGFyZHdhcmUgY2hpcHMuCgpUaGVzZSBhcmUgbm90IGdlbmVyaWMgZGV2aWNlcy4gVGhleSYjMzk7cmUgcGh5c2ljYWwgSUNzIOKAkyAxMEJBU0UtVDFTIHNpbmdsZS1wYWlyIEV0aGVybmV0IE1BQy1QSFlzIG9yIFBIWXMgdGhhdCBjb25uZWN0IG92ZXIgU1BJL01ESU8uIEFuZCwgYXMgZmFyIGFzIEkga25vdywgdGhlc2UgYXJlbiYjMzk7dCBlbXVsYXRlZCBieSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBWTXMsIHdoaWNoIGFyZSBzdGFuZGFyZCBlbnZpcm9ubWVudHMgZm9yIG91ciBmdXp6aW5nIGVmZm9ydHMuIFdpdGhvdXQgdGhhdCBhY3R1YWwgaGFyZHdhcmUgb3IgYSB1c2FibGUgU1BJIGRldmljZSwgbmVpdGhlciBgbGFuODY1eF9wcm9iZWAsIGBhZGluMTE0MF9wcm9iZWAsIGBvYV90YzZgLCBub3IgYG1pY3JvY2hpcF90MXNfZHJpdmVyYCBjYW4gYmUgcHJvYmVkIG9yIHJ1bi4KClNvLCBpbiBlc3NlbmNlLCBhbGwgb2YgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiBJdCYjMzk7cyBlc3NlbnRpYWxseSBkZWFkIGNvZGUgaW4gb3VyIGN1cnJlbnQgZnV6emluZyBzZXR1cC4KCk5vdywgbGV0JiMzOTtzIHZlcmlmeSBpZiBhbGwgdGhlIHByZS1yZXF1aXNpdGVzIGFyZSBtZXQ6CgoxLiAgKipJcyBgV29ydGhGdXp6aW5nYCBmYWxzZT8qKiBZZXMsIGFic29sdXRlbHkuIFRoZSBjaGFuZ2VzIGFyZSBhbGwgc3BlY2lmaWMgdG8gaGFyZHdhcmUgKHRoZSBgbGFuODY1eGAsIGBvYV90YzZgLCBhbmQgYG1pY3JvY2hpcF90MXNgIGRyaXZlcnMpIHRoYXQgd2UgY2FuJiMzOTt0IGVtdWxhdGUgaW4gb3VyIHR5cGljYWwgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuCgoyLiAgKipBcmUgYEZvY3VzU3ltYm9sc2AgYW5kIGBFbmFibGVDb25maWdzYCBhcHByb3ByaWF0ZWx5IHNldCB3aGVuIGBXb3J0aEZ1enppbmdgIGlzIGZhbHNlPyoqIFRoZXkgc2hvdWxkIGJlIG51bGwgb3IgYW4gZW1wdHkgbGlzdC4gU28sIGxldCYjMzk7cyBkb3VibGUtY2hlY2sgdGhlIHBhcmFtZXRlciBmb3JtYXR0aW5nIGZvciBgc2V0LXJlc3VsdHNgOiBgRW5hYmxlQ29uZmlnc2Agc2hvdWxkIGJlIGEgbGlzdCBvZiBzdHJpbmdzIG9yIG51bGwuIGBGb2N1c1N5bWJvbHNgIGFzIHdlbGwsIHNob3VsZCBiZSBhIGxpc3Qgb2Ygc3RyaW5ncyBvciBudWxsLiBJIHdpbGwgcHJvdmlkZSBhIGNsZWFyIGFuZCBjb25jaXNlIGBSZWFzb25pbmdgIGFuZCBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYm9vbGVhbi4KCkkgdGhpbmsgYSBjbGVhciwgY29uY2lzZSByZWFzb25pbmcgc3RhdGVtZW50IHdvdWxkIGJlOiAmIzM0O1RoZSBjaGFuZ2VzIG1vZGlmeSB0aGUgTWljcm9jaGlwIExBTjg2NXggRXRoZXJuZXQgZHJpdmVyLCB0aGUgT3BlbiBBbGxpYW5jZSBUQzYgU1BJIE1BQy1QSFkgc3VwcG9ydCBsaWJyYXJ5LCBhbmQgdGhlIE1pY3JvY2hpcCAxMEJBU0UtVDFTIFBIWSBkcml2ZXIuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBzcGVjaWZpYyBwaHlzaWNhbCAxMEJBU0UtVDFTIEV0aGVybmV0IC8gTUFDLVBIWSBoYXJkd2FyZSBhdHRhY2hlZCB2aWEgU1BJL01ESU8gd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OwoKQWxyaWdodCwgdGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBMQU44NjV4IFNQSSBFdGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYyksIHRoZSBPcGVuIEFsbGlhbmNlIFRDNiBNQUMtUEhZIHByb3RvY29sIGxheWVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYyksIGFuZCB0aGUgTWljcm9jaGlwIDEwQkFTRS1UMVMgUEhZIGRyaXZlciAoZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYykuIFRoZXNlIGRyaXZlcnMgb3BlcmF0ZSBvbiBzcGVjaWZpYyBwaHlzaWNhbCAxMEJBU0UtVDFTIHNpbmdsZS1wYWlyIEV0aGVybmV0IGhhcmR3YXJlIGNvbm5lY3RlZCBvdmVyIFNQSS9NRElPIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBMQU44NjV4IFNQSSBFdGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYyksIHRoZSBPcGVuIEFsbGlhbmNlIFRDNiBNQUMtUEhZIHByb3RvY29sIGxheWVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYyksIGFuZCB0aGUgTWljcm9jaGlwIDEwQkFTRS1UMVMgUEhZIGRyaXZlciAoZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYykuIFRoZXNlIGRyaXZlcnMgb3BlcmF0ZSBvbiBzcGVjaWZpYyBwaHlzaWNhbCAxMEJBU0UtVDFTIHNpbmdsZS1wYWlyIEV0aGVybmV0IGhhcmR3YXJlIGNvbm5lY3RlZCBvdmVyIFNQSS9NRElPIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MjI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjIyOjA1LjA1MDQ5NTk1OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MDc3OTc3MzI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBMQU44NjV4IFNQSSBFdGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYyksIHRoZSBPcGVuIEFsbGlhbmNlIFRDNiBNQUMtUEhZIHByb3RvY29sIGxheWVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYyksIGFuZCB0aGUgTWljcm9jaGlwIDEwQkFTRS1UMVMgUEhZIGRyaXZlciAoZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYykuIFRoZXNlIGRyaXZlcnMgb3BlcmF0ZSBvbiBzcGVjaWZpYyBwaHlzaWNhbCAxMEJBU0UtVDFTIHNpbmdsZS1wYWlyIEV0aGVybmV0IGhhcmR3YXJlIGNvbm5lY3RlZCBvdmVyIFNQSS9NRElPIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDg6MjI6MDUuMDUwNTAxNTQ5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDIxNzA1MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0NGJjMWMzN2Y3ZTg2NmViOTk3ZDg4NzhhNWY2ZTdmNzA1MGI3ZDFmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gU2VwIDcgMDg6MjI6MDQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jXFxuaW5kZXggMjZhMjc2MTMzMmE1YS4uMDQzYTNkYzNmOTY1NyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmNcXG5AQCAtMzMyLDYgKzMzMiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgbGFuODY1eF9uZXRkZXZfb3BzID0ge1xcbiBcXG4gc3RhdGljIGludCBsYW44NjV4X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuIHtcXG4rXFx0c3RydWN0IG9hX3RjNl9xdWlya3MgdGM2X3F1aXJrcyA9IHt9O1xcbiBcXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbiBcXHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2O1xcbiBcXHRpbnQgcmV0O1xcbkBAIC0zNDYsNyArMzQ3LDggQEAgc3RhdGljIGludCBsYW44NjV4X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuIFxcdHNwaV9zZXRfZHJ2ZGF0YShzcGksIHByaXYpO1xcbiBcXHRJTklUX1dPUksoXFx1MDAyNnByaXYtXFx1MDAzZW11bHRpY2FzdF93b3JrLCBsYW44NjV4X211bHRpY2FzdF93b3JrX2hhbmRsZXIpO1xcbiBcXG4tXFx0cHJpdi1cXHUwMDNldGM2ID0gb2FfdGM2X2luaXQoc3BpLCBuZXRkZXYsIE5VTEwpO1xcbitcXHR0YzZfcXVpcmtzLnF1aXJrX2ZsYWdzID0gT0FfVEM2X1BIWV9JTlQ7XFxuK1xcdHByaXYtXFx1MDAzZXRjNiA9IG9hX3RjNl9pbml0KHNwaSwgbmV0ZGV2LCBcXHUwMDI2dGM2X3F1aXJrcyk7XFxuIFxcdGlmICghcHJpdi1cXHUwMDNldGM2KSB7XFxuIFxcdFxcdHJldCA9IC1FTk9ERVY7XFxuIFxcdFxcdGdvdG8gZnJlZV9uZXRkZXY7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmNcXG5pbmRleCA2ZmNjNWY1NjFkNTYwLi4wMGIwMTc2YzFmZTdhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmNcXG5AQCAtOCw2ICs4LDggQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2JpdGZpZWxkLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9pb3BvbGwuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2ludGVycnVwdC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvaXJxLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9pcnFkb21haW4uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21kaW8uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvb2FfdGM2LmhcXHUwMDNlXFxuQEAgLTcwLDYgKzcyLDggQEAgc3RydWN0IG9hX3RjNiB7XFxuIFxcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXY7XFxuIFxcdHN0cnVjdCBtaWlfYnVzICptZGlvYnVzO1xcbiBcXHRzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpO1xcbitcXHRzdHJ1Y3QgaXJxX2RvbWFpbiAqcGh5X2lycV9kb21haW47XFxuK1xcdGludCBwaHlfdmlycTtcXG4gXFx0c3RydWN0IG11dGV4IHNwaV9jdHJsX2xvY2s7IC8qIFByb3RlY3RzIHNwaSBjb250cm9sIHRyYW5zZmVyICovXFxuIFxcdHNwaW5sb2NrX3QgdHhfc2tiX2xvY2s7IC8qIFByb3RlY3RzIHR4IHNrYiBoYW5kbGluZyAqL1xcbiBcXHR2b2lkICpzcGlfY3RybF90eF9idWY7XFxuQEAgLTUyOCw2ICs1MzIsNDQgQEAgaW50IG9hX3RjNl9tZGlvYnVzX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IGRldm51bSxcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0dQTChvYV90YzZfbWRpb2J1c193cml0ZV9jNDUpO1xcbiBcXG4rc3RhdGljIGludCBvYV90YzZfcGh5X2lycV9tYXAoc3RydWN0IGlycV9kb21haW4gKmRvbWFpbiwgdW5zaWduZWQgaW50IGlycSxcXG4rXFx0XFx0XFx0ICAgICAgaXJxX2h3X251bWJlcl90IGh3aXJxKVxcbit7XFxuK1xcdGlycV9zZXRfY2hpcF9kYXRhKGlycSwgZG9tYWluLVxcdTAwM2Vob3N0X2RhdGEpO1xcbitcXHRpcnFfc2V0X2NoaXBfYW5kX2hhbmRsZXIoaXJxLCBcXHUwMDI2ZHVtbXlfaXJxX2NoaXAsIGhhbmRsZV9zaW1wbGVfaXJxKTtcXG4rXFx0aXJxX3NldF9uZXN0ZWRfdGhyZWFkKGlycSwgdHJ1ZSk7XFxuK1xcdGlycV9zZXRfbm9wcm9iZShpcnEpO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2RvbWFpbl9vcHMgb2FfdGM2X3BoeV9pcnFfZG9tYWluX29wcyA9IHtcXG4rXFx0Lm1hcCA9IG9hX3RjNl9waHlfaXJxX21hcCxcXG4rfTtcXG4rXFxuK3N0YXRpYyBpbnQgb2FfdGM2X3BoeV9pcnFfc2V0dXAoc3RydWN0IG9hX3RjNiAqdGM2KVxcbit7XFxuK1xcdHRjNi1cXHUwMDNlcGh5X2lycV9kb21haW4gPVxcbitcXHRcXHRpcnFfZG9tYWluX2NyZWF0ZV9saW5lYXIoTlVMTCwgMSxcXG4rXFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZvYV90YzZfcGh5X2lycV9kb21haW5fb3BzLCB0YzYpO1xcbitcXHRpZiAoIXRjNi1cXHUwMDNlcGh5X2lycV9kb21haW4pXFxuK1xcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXG4rXFx0dGM2LVxcdTAwM2VwaHlfdmlycSA9IGlycV9jcmVhdGVfbWFwcGluZyh0YzYtXFx1MDAzZXBoeV9pcnFfZG9tYWluLCAwKTtcXG4rXFx0aWYgKCF0YzYtXFx1MDAzZXBoeV92aXJxKSB7XFxuK1xcdFxcdGlycV9kb21haW5fcmVtb3ZlKHRjNi1cXHUwMDNlcGh5X2lycV9kb21haW4pO1xcbitcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIG9hX3RjNl9waHlfaXJxX3RlYXJkb3duKHN0cnVjdCBvYV90YzYgKnRjNilcXG4re1xcbitcXHRpcnFfZGlzcG9zZV9tYXBwaW5nKHRjNi1cXHUwMDNlcGh5X3ZpcnEpO1xcbitcXHRpcnFfZG9tYWluX3JlbW92ZSh0YzYtXFx1MDAzZXBoeV9pcnFfZG9tYWluKTtcXG4rfVxcbitcXG4gc3RhdGljIGludCBvYV90YzZfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3Qgb2FfdGM2ICp0YzYpXFxuIHtcXG4gXFx0aW50IHJldDtcXG5AQCAtNTU5LDkgKzYwMSwyNSBAQCBzdGF0aWMgaW50IG9hX3RjNl9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBvYV90YzYgKnRjNilcXG4gXFx0c25wcmludGYodGM2LVxcdTAwM2VtZGlvYnVzLVxcdTAwM2VpZCwgQVJSQVlfU0laRSh0YzYtXFx1MDAzZW1kaW9idXMtXFx1MDAzZWlkKSwgXFxcIiVzXFxcIixcXG4gXFx0XFx0IGRldl9uYW1lKFxcdTAwMjZ0YzYtXFx1MDAzZXNwaS1cXHUwMDNlZGV2KSk7XFxuIFxcbitcXHRpZiAodGM2LVxcdTAwM2VxdWlya19mbGFncyBcXHUwMDI2IE9BX1RDNl9QSFlfSU5UKSB7XFxuK1xcdFxcdHJldCA9IG9hX3RjNl9waHlfaXJxX3NldHVwKHRjNik7XFxuK1xcdFxcdGlmIChyZXQpIHtcXG4rXFx0XFx0XFx0bWRpb2J1c19mcmVlKHRjNi1cXHUwMDNlbWRpb2J1cyk7XFxuK1xcdFxcdFxcdHJldHVybiByZXQ7XFxuK1xcdFxcdH1cXG4rXFx0XFx0LyogUG9wdWxhdGUgYWxsIGlycVtdIGVudHJpZXMgYmVmb3JlIHJlZ2lzdHJhdGlvbiBzb1xcbitcXHRcXHQgKiBwaHlfZGV2aWNlX2NyZWF0ZSgpIHBpY2tzIHVwIHRoZSB2aXJ0dWFsIElSUSByZWdhcmRsZXNzIG9mXFxuK1xcdFxcdCAqIHRoZSBQSFkncyBNRElPIGFkZHJlc3MuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRmb3IgKGludCBpID0gMDsgaSBcXHUwMDNjIFBIWV9NQVhfQUREUjsgaSsrKVxcbitcXHRcXHRcXHR0YzYtXFx1MDAzZW1kaW9idXMtXFx1MDAzZWlycVtpXSA9IHRjNi1cXHUwMDNlcGh5X3ZpcnE7XFxuK1xcdH1cXG4rXFxuIFxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIodGM2LVxcdTAwM2VtZGlvYnVzKTtcXG4gXFx0aWYgKHJldCkge1xcbiBcXHRcXHRuZXRkZXZfZXJyKHRjNi1cXHUwMDNlbmV0ZGV2LCBcXFwiQ291bGQgbm90IHJlZ2lzdGVyIE1ESU8gYnVzXFxcXG5cXFwiKTtcXG4rXFx0XFx0aWYgKHRjNi1cXHUwMDNlcXVpcmtfZmxhZ3MgXFx1MDAyNiBPQV9UQzZfUEhZX0lOVClcXG4rXFx0XFx0XFx0b2FfdGM2X3BoeV9pcnFfdGVhcmRvd24odGM2KTtcXG4gXFx0XFx0bWRpb2J1c19mcmVlKHRjNi1cXHUwMDNlbWRpb2J1cyk7XFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdH1cXG5AQCAtNTcyLDYgKzYzMCw4IEBAIHN0YXRpYyBpbnQgb2FfdGM2X21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG9hX3RjNiAqdGM2KVxcbiBzdGF0aWMgdm9pZCBvYV90YzZfbWRpb2J1c191bnJlZ2lzdGVyKHN0cnVjdCBvYV90YzYgKnRjNilcXG4ge1xcbiBcXHRtZGlvYnVzX3VucmVnaXN0ZXIodGM2LVxcdTAwM2VtZGlvYnVzKTtcXG4rXFx0aWYgKHRjNi1cXHUwMDNlcXVpcmtfZmxhZ3MgXFx1MDAyNiBPQV9UQzZfUEhZX0lOVClcXG4rXFx0XFx0b2FfdGM2X3BoeV9pcnFfdGVhcmRvd24odGM2KTtcXG4gXFx0bWRpb2J1c19mcmVlKHRjNi1cXHUwMDNlbWRpb2J1cyk7XFxuIH1cXG4gXFxuQEAgLTY2MSw3ICs3MjEsNyBAQCBzdGF0aWMgaW50IG9hX3RjNl9zd19yZXNldF9tYWNwaHkoc3RydWN0IG9hX3RjNiAqdGM2KVxcbiBcXHRyZXR1cm4gb2FfdGM2X3dyaXRlX3JlZ2lzdGVyKHRjNiwgT0FfVEM2X1JFR19TVEFUVVMwLCByZWd2YWwpO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW50IG9hX3RjNl91bm1hc2tfbWFjcGh5X2Vycm9yX2ludGVycnVwdHMoc3RydWN0IG9hX3RjNiAqdGM2KVxcbitzdGF0aWMgaW50IG9hX3RjNl91bm1hc2tfaW50ZXJydXB0cyhzdHJ1Y3Qgb2FfdGM2ICp0YzYpXFxuIHtcXG4gXFx0dTMyIHJlZ3ZhbDtcXG4gXFx0aW50IHJldDtcXG5AQCAtNjcwLDcgKzczMCw4IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3VubWFza19tYWNwaHlfZXJyb3JfaW50ZXJydXB0cyhzdHJ1Y3Qgb2FfdGM2ICp0YzYpXFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbi1cXHRyZWd2YWwgXFx1MDAyNj0gfihPQV9UQzZfSU5UX01BU0swX1RYX1BST1RPQ09MX0VSUl9NQVNLIHxcXG4rXFx0cmVndmFsIFxcdTAwMjY9IH4oT0FfVEM2X0lOVF9NQVNLMF9QSFlfSU5UX01BU0sgfFxcbitcXHRcXHQgICAgT0FfVEM2X0lOVF9NQVNLMF9UWF9QUk9UT0NPTF9FUlJfTUFTSyB8XFxuIFxcdFxcdCAgICBPQV9UQzZfSU5UX01BU0swX1JYX0JVRkZFUl9PVkVSRkxPV19FUlJfTUFTSyB8XFxuIFxcdFxcdCAgICBPQV9UQzZfSU5UX01BU0swX0xPU1NfT0ZfRlJBTUVfRVJSX01BU0sgfFxcbiBcXHRcXHQgICAgT0FfVEM2X0lOVF9NQVNLMF9IRUFERVJfRVJSX01BU0spO1xcbkBAIC04MTAsNiArODcxLDE1IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3Byb2Nlc3NfZXh0ZW5kZWRfc3RhdHVzKHN0cnVjdCBvYV90YzYgKnRjNilcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFx0fVxcbiBcXG4rXFx0LyogRGlzcGF0Y2ggdGhlIFBIWSBpbnRlcnJ1cHQgdG8gcGh5bGliIHZpYSB0aGUgbmVzdGVkIHZpcnR1YWwgSVJRIHNvXFxuK1xcdCAqIHRoZSBQSFkgZHJpdmVyIHJlYWRzIGFuZCBhY2tub3dsZWRnZXMgaXRzIHN0YXR1cy4gUEhZSU5UIGlzIGxldmVsXFxuK1xcdCAqIHRyaWdnZXJlZCwgc28gZG9pbmcgdGhpcyBzeW5jaHJvbm91c2x5IGhlcmUgKGluIHRoZSBzbGVlcGFibGVcXG4rXFx0ICogdGhyZWFkZWQgSVJRKSBjbGVhcnMgdGhlIHNvdXJjZSBiZWZvcmUgdGhlIG5leHQgZGF0YSBjaHVuay5cXG4rXFx0ICovXFxuK1xcdGlmICgodGM2LVxcdTAwM2VxdWlya19mbGFncyBcXHUwMDI2IE9BX1RDNl9QSFlfSU5UKSBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgRklFTERfR0VUKE9BX1RDNl9TVEFUVVMwX1BIWV9JTlQsIHZhbHVlKSlcXG4rXFx0XFx0aGFuZGxlX25lc3RlZF9pcnEodGM2LVxcdTAwM2VwaHlfdmlycSk7XFxuK1xcbiBcXHRpZiAoRklFTERfR0VUKE9BX1RDNl9TVEFUVVMwX1JYX0JVRkZFUl9PVkVSRkxPV19FUlJPUiwgdmFsdWUpKSB7XFxuIFxcdFxcdG9hX3RjNl9sb29rX2Zvcl9uZXdfZnJhbWUodGM2KTtcXG4gXFx0XFx0bmV0X2Vycl9yYXRlbGltaXRlZChcXFwiJXM6IFJlY2VpdmUgYnVmZmVyIG92ZXJmbG93IGVycm9yXFxcXG5cXFwiLFxcbkBAIC0xNTE4LDcgKzE1ODgsNyBAQCBzdHJ1Y3Qgb2FfdGM2ICpvYV90YzZfaW5pdChzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFx0fVxcbiBcXG4tXFx0cmV0ID0gb2FfdGM2X3VubWFza19tYWNwaHlfZXJyb3JfaW50ZXJydXB0cyh0YzYpO1xcbitcXHRyZXQgPSBvYV90YzZfdW5tYXNrX2ludGVycnVwdHModGM2KTtcXG4gXFx0aWYgKHJldCkge1xcbiBcXHRcXHRkZXZfZXJyKFxcdTAwMjZ0YzYtXFx1MDAzZXNwaS1cXHUwMDNlZGV2LFxcbiBcXHRcXHRcXHRcXFwiTUFDLVBIWSBlcnJvciBpbnRlcnJ1cHRzIHVubWFzayBmYWlsZWQ6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jIGIvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuY1xcbmluZGV4IDczYzIzZDMxMWQ3MmEuLmMzYTczOGM3NDI1YmYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmNcXG5AQCAtMjcsMTEgKzI3LDIzIEBAXFxuICNkZWZpbmUgTEFOODY1WF9SRUdfQ0ZHUEFSQU1fQ1RSTCAweDAwREFcXG4gI2RlZmluZSBMQU44NjVYX1JFR19TVFMyIDB4MDAxOVxcbiBcXG4rLyogUEhZIGludGVycnVwdCBzdGF0dXMgYW5kIG1hc2sgcmVnaXN0ZXJzIChNRElPX01NRF9WRU5EMikuIFRoZSBzdGF0dXMgYml0c1xcbisgKiBhcmUgcmVhZC10by1jbGVhcjsgYSBtYXNrIGJpdCBpcyBlbmFibGVkIGJ5IHdyaXRpbmcgMC5cXG4rICovXFxuKyNkZWZpbmUgTEFOODZYWF9SRUdfU1RTMVxcdFxcdDB4MDAxOFxcbisjZGVmaW5lIExBTjg2WFhfUkVHX0lNU0sxXFx0XFx0MHgwMDFDXFxuK1xcbisjZGVmaW5lIExBTjg2WFhfU1RTMV9MSU5LX1NUU19DSEFOR0VEXFx0QklUKDEzKVxcbisjZGVmaW5lIExBTjg2WFhfU1RTMV9QTENBX1NUU19DSEFOR0VEXFx0QklUKDExKVxcbitcXG4gLyogQ29sbGlzaW9uIERldGVjdG9yIENvbnRyb2wgMCBSZWdpc3RlciAqL1xcbiAjZGVmaW5lIExBTjg2WFhfUkVHX0NPTF9ERVRfQ1RSTDBcXHQweDAwODdcXG4gI2RlZmluZSBDT0xfREVUX0NUUkwwX0VOQUJMRV9CSVRfTUFTS1xcdEJJVCgxNSlcXG4gI2RlZmluZSBDT0xfREVUX0VOQUJMRVxcdFxcdFxcdEJJVCgxNSlcXG4gI2RlZmluZSBDT0xfREVUX0RJU0FCTEVcXHRcXHRcXHQweDAwMDBcXG4rI2RlZmluZSBDT0xfREVUX0NUUkwwX0NDTUZDX01BU0tcXHRHRU5NQVNLKDEwLCA5KVxcbisvKiBPQSBkZWZhdWx0OiBjb2xsaXNpb25zIGdhdGVkIGJ5IFBMQ0FfU3RhdHVzIGluIGhhcmR3YXJlICovXFxuKyNkZWZpbmUgQ09MX0RFVF9DVFJMMF9DQ01GQ19PQV9ERUZBVUxUXFx0QklUKDkpXFxuIFxcbiAvKiBMQU44NjcwLzEvMiBSZXYuRDAgTGluayBTdGF0dXMgU2VsZWN0aW9uIFJlZ2lzdGVyICovXFxuICNkZWZpbmUgTEFOODY3WF9SRUdfTElOS19TVEFUVVNfQ1RSTFxcdDB4MDAxMlxcbkBAIC00NTgsNiArNDcwLDE2IEBAIHN0YXRpYyBpbnQgbGFuODZ4eF9wbGNhX3NldF9jZmcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuK1xcdC8qIFBIWXMgd2l0aCByb3V0ZWQgaW50ZXJydXB0cyBoYW5kbGUgQ0RFTiBkeW5hbWljYWxseSB2aWEgdGhlIGludGVycnVwdFxcbitcXHQgKiBoYW5kbGVyLCBzbyBza2lwIHRoZSBzdGF0aWMgd3JpdGUuIFBIWXMgcnVubmluZyB3aXRoIFBIWV9QT0xMIGhhdmUgbm9cXG4rXFx0ICogaW50ZXJydXB0IGhhbmRsZXIsIHNvIGFwcGx5IHRoZSBzdGF0aWMgQ0RFTiB3cml0ZSBhcyBhIGJhc2VsaW5lIG9uXFxuK1xcdCAqIGV2ZXJ5IGV0aHRvb2wgUExDQSByZWNvbmZpZ3VyYXRpb24uIFRoZSBsaW1pdGF0aW9uIGlzIHRoYXQgYXV0b25vbW91c1xcbitcXHQgKiBQTENBIG1vZGUgdHJhbnNpdGlvbnMgYmV0d2VlbiBldGh0b29sIHJlY29uZmlndXJhdGlvbnMgYXJlIG5vdFxcbitcXHQgKiB0cmFja2VkIG9uIHN1Y2ggYm9hcmRzLlxcbitcXHQgKi9cXG4rXFx0aWYgKHBoeWRldi1cXHUwMDNlaXJxICE9IFBIWV9QT0xMKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuIFxcdGlmIChwbGNhX2NmZy1cXHUwMDNlZW5hYmxlZClcXG4gXFx0XFx0cmV0dXJuIHBoeV9tb2RpZnlfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXFxuIFxcdFxcdFxcdFxcdCAgICAgIExBTjg2WFhfUkVHX0NPTF9ERVRfQ1RSTDAsXFxuQEAgLTQ4NCw2ICs1MDYsMTggQEAgc3RhdGljIGludCBsYW44Njd4X3JldmQwX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuIFxcdFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdH1cXG4gXFxuK1xcdC8qIEFOMTc2MDogY29uZmlndXJlIENDTUZDIHRvIE9BIGRlZmF1bHQgc28gdGhhdCB0aGUgaGFyZHdhcmVcXG4rXFx0ICogYXV0b21hdGljYWxseSBnYXRlcyBjb2xsaXNpb24gZm9yd2FyZGluZyB0byB0aGUgTUFDIGJhc2VkIG9uXFxuK1xcdCAqIFBMQ0FfU3RhdHVzLiBDb2xsaXNpb25zIGFyZSBuZWl0aGVyIGNvdW50ZWQgbm9yIGZvcndhcmRlZCB3aGVuXFxuK1xcdCAqIFBMQ0FfU3RhdHVzID0gT0ssIGVsaW1pbmF0aW5nIHRoZSBuZWVkIGZvciBzb2Z0d2FyZS1kcml2ZW4gQ0RFTlxcbitcXHQgKiB0b2dnbGluZyBpbiB0aGUgaW50ZXJydXB0IGhhbmRsZXIuIENERU4gcmVtYWlucyBlbmFibGVkLlxcbitcXHQgKi9cXG4rXFx0cmV0ID0gcGh5X21vZGlmeV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTEFOODZYWF9SRUdfQ09MX0RFVF9DVFJMMCxcXG4rXFx0XFx0XFx0ICAgICBDT0xfREVUX0NUUkwwX0NDTUZDX01BU0ssXFxuK1xcdFxcdFxcdCAgICAgQ09MX0RFVF9DVFJMMF9DQ01GQ19PQV9ERUZBVUxUKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuIFxcdC8qIEluaXRpYWxseSB0aGUgUEhZIHdpbGwgYmUgaW4gQ1NNQS9DRCBtb2RlIGJ5IGRlZmF1bHQuIFNvIGl0IGlzXFxuIFxcdCAqIHJlcXVpcmVkIHRvIHNldCB0aGUgbGluayBhbHdheXMgYWN0aXZlIGFzIGl0IGRvZXNuJ3Qgc3VwcG9ydFxcbiBcXHQgKiBhdXRvbmVnLlxcbkBAIC01MDYsNiArNTQwLDEyMSBAQCBzdGF0aWMgaW50IGxhbjg2eHhfcmVhZF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbnQgbGFuODZ4eF9jb25maWdfaW50cihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbit7XFxuK1xcdHUxNiBtYXNrID0gTEFOODZYWF9TVFMxX1BMQ0FfU1RTX0NIQU5HRUQ7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRpZiAocGh5ZGV2LVxcdTAwM2VwaHlfaWQgPT0gUEhZX0lEX0xBTjg2N1hfUkVWRDApXFxuK1xcdFxcdG1hc2sgfD0gTEFOODZYWF9TVFMxX0xJTktfU1RTX0NIQU5HRUQ7XFxuK1xcbitcXHRpZiAocGh5ZGV2LVxcdTAwM2VpbnRlcnJ1cHRzID09IFBIWV9JTlRFUlJVUFRfRU5BQkxFRCkge1xcbitcXHRcXHQvKiBSZWFkIHRvIGNsZWFyIGFueSBwZW5kaW5nIHN0YXR1cyBiZWZvcmUgZW5hYmxpbmcuICovXFxuK1xcdFxcdHJldCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBMQU44NlhYX1JFR19TVFMxKTtcXG4rXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuK1xcdFxcdFxcdHJldHVybiByZXQ7XFxuK1xcbitcXHRcXHQvKiBBIG1hc2sgYml0IG9mIDAgZW5hYmxlcyB0aGUgY29ycmVzcG9uZGluZyBpbnRlcnJ1cHQuICovXFxuK1xcdFxcdHJldHVybiBwaHlfY2xlYXJfYml0c19tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcXG4rXFx0XFx0XFx0XFx0XFx0ICBMQU44NlhYX1JFR19JTVNLMSwgbWFzayk7XFxuK1xcdH1cXG4rXFxuK1xcdHJldCA9IHBoeV9zZXRfYml0c19tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTEFOODZYWF9SRUdfSU1TSzEsXFxuK1xcdFxcdFxcdCAgICAgICBtYXNrKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdC8qIFJlYWQgdG8gY2xlYXIgYW55IHBlbmRpbmcgc3RhdHVzIGFmdGVyIGRpc2FibGluZy4gKi9cXG4rXFx0cmV0ID0gcGh5X3JlYWRfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIExBTjg2WFhfUkVHX1NUUzEpO1xcbitcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgaXJxcmV0dXJuX3QgbGFuODZ4eF9oYW5kbGVfaW50ZXJydXB0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuK3tcXG4rXFx0c3RydWN0IHBoeV9wbGNhX3N0YXR1cyBwbGNhX3N0O1xcbitcXHRpcnFyZXR1cm5fdCByZXRfaXJxID0gSVJRX05PTkU7XFxuK1xcdGludCBzdHMxLCByZXQ7XFxuK1xcbitcXHQvKiBSZWFkaW5nIHRoZSBzdGF0dXMgcmVnaXN0ZXIgY2xlYXJzIHRoZSBsYXRjaGVkIGV2ZW50IGJpdHMuICovXFxuK1xcdHN0czEgPSBwaHlfcmVhZF9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTEFOODZYWF9SRUdfU1RTMSk7XFxuK1xcdGlmIChzdHMxIFxcdTAwM2MgMCkge1xcbitcXHRcXHRwaHlfZXJyb3IocGh5ZGV2KTtcXG4rXFx0XFx0cmV0dXJuIElSUV9OT05FO1xcbitcXHR9XFxuK1xcbitcXHRpZiAoc3RzMSBcXHUwMDI2IExBTjg2WFhfU1RTMV9QTENBX1NUU19DSEFOR0VEKSB7XFxuK1xcdFxcdHJldCA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfc3RhdHVzKHBoeWRldiwgXFx1MDAyNnBsY2Ffc3QpO1xcbitcXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbitcXHRcXHRcXHRwaHlfZXJyb3IocGh5ZGV2KTtcXG4rXFx0XFx0XFx0cmV0dXJuIElSUV9OT05FO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHQvKiBBTjE3NjAvQU4xNjk5OiBkaXNhYmxlIGNvbGxpc2lvbiBkZXRlY3Rpb24gaW4gUExDQSBtb2RlIHRvXFxuK1xcdFxcdCAqIGltcHJvdmUgc2lnbmFsIHF1YWxpdHk7IHJlLWVuYWJsZSBpdCBpbiBDU01BL0NEIG1vZGUuXFxuK1xcdFxcdCAqXFxuK1xcdFxcdCAqIGh0dHBzOi8vd3d3Lm1pY3JvY2hpcC5jb20vZW4tdXMvYXBwbGljYXRpb24tbm90ZXMvYW4xNzYwXFxuK1xcdFxcdCAqIGh0dHBzOi8vd3d3Lm1pY3JvY2hpcC5jb20vZW4tdXMvYXBwbGljYXRpb24tbm90ZXMvYW4xNjk5XFxuK1xcdFxcdCAqL1xcbitcXHRcXHRyZXQgPSBwaHlfbW9kaWZ5X21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLFxcbitcXHRcXHRcXHRcXHQgICAgIExBTjg2WFhfUkVHX0NPTF9ERVRfQ1RSTDAsXFxuK1xcdFxcdFxcdFxcdCAgICAgQ09MX0RFVF9DVFJMMF9FTkFCTEVfQklUX01BU0ssXFxuK1xcdFxcdFxcdFxcdCAgICAgcGxjYV9zdC5wc3QgPyBDT0xfREVUX0RJU0FCTEUgOlxcbitcXHRcXHRcXHRcXHQgICAgIENPTF9ERVRfRU5BQkxFKTtcXG4rXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4rXFx0XFx0XFx0cGh5X2Vycm9yKHBoeWRldik7XFxuK1xcdFxcdFxcdHJldHVybiBJUlFfTk9ORTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0cmV0X2lycSA9IElSUV9IQU5ETEVEO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gcmV0X2lycTtcXG4rfVxcbitcXG4rc3RhdGljIGlycXJldHVybl90IGxhbjg2N3hfcmV2ZDBfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbit7XFxuK1xcdHN0cnVjdCBwaHlfcGxjYV9zdGF0dXMgcGxjYV9zdDtcXG4rXFx0aXJxcmV0dXJuX3QgcmV0X2lycSA9IElSUV9OT05FO1xcbitcXHRpbnQgc3RzMSwgcmV0O1xcbitcXG4rXFx0LyogUmVhZGluZyB0aGUgc3RhdHVzIHJlZ2lzdGVyIGNsZWFycyB0aGUgbGF0Y2hlZCBldmVudCBiaXRzLiAqL1xcbitcXHRzdHMxID0gcGh5X3JlYWRfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIExBTjg2WFhfUkVHX1NUUzEpO1xcbitcXHRpZiAoc3RzMSBcXHUwMDNjIDApIHtcXG4rXFx0XFx0cGh5X2Vycm9yKHBoeWRldik7XFxuK1xcdFxcdHJldHVybiBJUlFfTk9ORTtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKHN0czEgXFx1MDAyNiBMQU44NlhYX1NUUzFfTElOS19TVFNfQ0hBTkdFRCkge1xcbitcXHRcXHRwaHlfdHJpZ2dlcl9tYWNoaW5lKHBoeWRldik7XFxuK1xcdFxcdHJldF9pcnEgPSBJUlFfSEFORExFRDtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKHN0czEgXFx1MDAyNiBMQU44NlhYX1NUUzFfUExDQV9TVFNfQ0hBTkdFRCkge1xcbitcXHRcXHRyZXQgPSBnZW5waHlfYzQ1X3BsY2FfZ2V0X3N0YXR1cyhwaHlkZXYsIFxcdTAwMjZwbGNhX3N0KTtcXG4rXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4rXFx0XFx0XFx0cGh5X2Vycm9yKHBoeWRldik7XFxuK1xcdFxcdFxcdHJldHVybiBJUlFfTk9ORTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0LyogQ29sbGlzaW9uIGRldGVjdGlvbiBpcyBoYW5kbGVkIGF1dG9ub21vdXNseSBieSB0aGUgaGFyZHdhcmVcXG4rXFx0XFx0ICogdmlhIENDTUZDLiBPbmx5IHRoZSBsaW5rIHN0YXR1cyBzZWxlY3Rpb24gbmVlZHMgdG8gYmUgdXBkYXRlZFxcbitcXHRcXHQgKiBvbiBlYWNoIFBMQ0Egc3RhdHVzIHRyYW5zaXRpb24uXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRyZXQgPSBsYW44Njd4X3JldmQwX2xpbmtfYWN0aXZlX3NlbGVjdGlvbihwaHlkZXYsIHBsY2Ffc3QucHN0KTtcXG4rXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4rXFx0XFx0XFx0cGh5X2Vycm9yKHBoeWRldik7XFxuK1xcdFxcdFxcdHJldHVybiBJUlFfTk9ORTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0cmV0X2lycSA9IElSUV9IQU5ETEVEO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gcmV0X2lycTtcXG4rfVxcbitcXG4gc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MXNfZHJpdmVyW10gPSB7XFxuIFxcdHtcXG4gXFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9MQU44NjdYX1JFVkIxKSxcXG5AQCAtNTEzLDYgKzY2Miw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtaWNyb2NoaXBfdDFzX2RyaXZlcltdID0ge1xcbiBcXHRcXHQuZmVhdHVyZXMgICAgICAgICAgID0gUEhZX0JBU0lDX1QxU19QMk1QX0ZFQVRVUkVTLFxcbiBcXHRcXHQuY29uZmlnX2luaXQgICAgICAgID0gbGFuODY3eF9yZXZiMV9jb25maWdfaW5pdCxcXG4gXFx0XFx0LnJlYWRfc3RhdHVzICAgICAgICA9IGxhbjg2eHhfcmVhZF9zdGF0dXMsXFxuK1xcdFxcdC5jb25maWdfaW50ciAgICAgICAgPSBsYW44Nnh4X2NvbmZpZ19pbnRyLFxcbitcXHRcXHQuaGFuZGxlX2ludGVycnVwdCAgID0gbGFuODZ4eF9oYW5kbGVfaW50ZXJydXB0LFxcbiBcXHRcXHQuZ2V0X3BsY2FfY2ZnXFx0ICAgID0gZ2VucGh5X2M0NV9wbGNhX2dldF9jZmcsXFxuIFxcdFxcdC5zZXRfcGxjYV9jZmdcXHQgICAgPSBnZW5waHlfYzQ1X3BsY2Ffc2V0X2NmZyxcXG4gXFx0XFx0LmdldF9wbGNhX3N0YXR1cyAgICA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfc3RhdHVzLFxcbkBAIC01MjMsNiArNjc0LDggQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MXNfZHJpdmVyW10gPSB7XFxuIFxcdFxcdC5mZWF0dXJlcyAgICAgICAgICAgPSBQSFlfQkFTSUNfVDFTX1AyTVBfRkVBVFVSRVMsXFxuIFxcdFxcdC5jb25maWdfaW5pdCAgICAgICAgPSBsYW44Njd4X3JldmNfY29uZmlnX2luaXQsXFxuIFxcdFxcdC5yZWFkX3N0YXR1cyAgICAgICAgPSBsYW44Nnh4X3JlYWRfc3RhdHVzLFxcbitcXHRcXHQuY29uZmlnX2ludHIgICAgICAgID0gbGFuODZ4eF9jb25maWdfaW50cixcXG4rXFx0XFx0LmhhbmRsZV9pbnRlcnJ1cHQgICA9IGxhbjg2eHhfaGFuZGxlX2ludGVycnVwdCxcXG4gXFx0XFx0LmdldF9wbGNhX2NmZ1xcdCAgICA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfY2ZnLFxcbiBcXHRcXHQuc2V0X3BsY2FfY2ZnXFx0ICAgID0gbGFuODZ4eF9wbGNhX3NldF9jZmcsXFxuIFxcdFxcdC5nZXRfcGxjYV9zdGF0dXMgICAgPSBnZW5waHlfYzQ1X3BsY2FfZ2V0X3N0YXR1cyxcXG5AQCAtNTMzLDYgKzY4Niw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtaWNyb2NoaXBfdDFzX2RyaXZlcltdID0ge1xcbiBcXHRcXHQuZmVhdHVyZXMgICAgICAgICAgID0gUEhZX0JBU0lDX1QxU19QMk1QX0ZFQVRVUkVTLFxcbiBcXHRcXHQuY29uZmlnX2luaXQgICAgICAgID0gbGFuODY3eF9yZXZjX2NvbmZpZ19pbml0LFxcbiBcXHRcXHQucmVhZF9zdGF0dXMgICAgICAgID0gbGFuODZ4eF9yZWFkX3N0YXR1cyxcXG4rXFx0XFx0LmNvbmZpZ19pbnRyICAgICAgICA9IGxhbjg2eHhfY29uZmlnX2ludHIsXFxuK1xcdFxcdC5oYW5kbGVfaW50ZXJydXB0ICAgPSBsYW44Nnh4X2hhbmRsZV9pbnRlcnJ1cHQsXFxuIFxcdFxcdC5nZXRfcGxjYV9jZmdcXHQgICAgPSBnZW5waHlfYzQ1X3BsY2FfZ2V0X2NmZyxcXG4gXFx0XFx0LnNldF9wbGNhX2NmZ1xcdCAgICA9IGxhbjg2eHhfcGxjYV9zZXRfY2ZnLFxcbiBcXHRcXHQuZ2V0X3BsY2Ffc3RhdHVzICAgID0gZ2VucGh5X2M0NV9wbGNhX2dldF9zdGF0dXMsXFxuQEAgLTU0Miw2ICs2OTcsOCBAQCBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbWljcm9jaGlwX3Qxc19kcml2ZXJbXSA9IHtcXG4gXFx0XFx0Lm5hbWUgICAgICAgICAgICAgICA9IFxcXCJMQU44NjdYIFJldi5EMFxcXCIsXFxuIFxcdFxcdC5mZWF0dXJlcyAgICAgICAgICAgPSBQSFlfQkFTSUNfVDFTX1AyTVBfRkVBVFVSRVMsXFxuIFxcdFxcdC5jb25maWdfaW5pdCAgICAgICAgPSBsYW44Njd4X3JldmQwX2NvbmZpZ19pbml0LFxcbitcXHRcXHQuY29uZmlnX2ludHIgICAgICAgID0gbGFuODZ4eF9jb25maWdfaW50cixcXG4rXFx0XFx0LmhhbmRsZV9pbnRlcnJ1cHQgICA9IGxhbjg2N3hfcmV2ZDBfaGFuZGxlX2ludGVycnVwdCxcXG4gXFx0XFx0LmdldF9wbGNhX2NmZ1xcdCAgICA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfY2ZnLFxcbiBcXHRcXHQuc2V0X3BsY2FfY2ZnXFx0ICAgID0gbGFuODZ4eF9wbGNhX3NldF9jZmcsXFxuIFxcdFxcdC5nZXRfcGxjYV9zdGF0dXMgICAgPSBnZW5waHlfYzQ1X3BsY2FfZ2V0X3N0YXR1cyxcXG5AQCAtNTU2LDYgKzcxMyw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtaWNyb2NoaXBfdDFzX2RyaXZlcltdID0ge1xcbiBcXHRcXHQuZmVhdHVyZXMgICAgICAgICAgID0gUEhZX0JBU0lDX1QxU19QMk1QX0ZFQVRVUkVTLFxcbiBcXHRcXHQuY29uZmlnX2luaXQgICAgICAgID0gbGFuODY1eF9yZXZiX2NvbmZpZ19pbml0LFxcbiBcXHRcXHQucmVhZF9zdGF0dXMgICAgICAgID0gbGFuODZ4eF9yZWFkX3N0YXR1cyxcXG4rXFx0XFx0LmNvbmZpZ19pbnRyICAgICAgICA9IGxhbjg2eHhfY29uZmlnX2ludHIsXFxuK1xcdFxcdC5oYW5kbGVfaW50ZXJydXB0ICAgPSBsYW44Nnh4X2hhbmRsZV9pbnRlcnJ1cHQsXFxuIFxcdFxcdC5yZWFkX21tZCAgICAgICAgICAgPSBnZW5waHlfcmVhZF9tbWRfYzQ1LFxcbiBcXHRcXHQud3JpdGVfbW1kICAgICAgICAgID0gZ2VucGh5X3dyaXRlX21tZF9jNDUsXFxuIFxcdFxcdC5nZXRfcGxjYV9jZmdcXHQgICAgPSBnZW5waHlfYzQ1X3BsY2FfZ2V0X2NmZyxcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9vYV90YzYuaCBiL2luY2x1ZGUvbGludXgvb2FfdGM2LmhcXG5pbmRleCAyN2Y2NTJkNDkyMGIyLi4xYzhjYzI2M2M1ZTUzIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvb2FfdGM2LmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L29hX3RjNi5oXFxuQEAgLTMwLDYgKzMwLDcgQEBcXG4gXFxuIC8qIFN0YXR1cyBSZWdpc3RlciAjMCAqL1xcbiAjZGVmaW5lIE9BX1RDNl9SRUdfU1RBVFVTMFxcdFxcdFxcdDB4MDAwOFxcbisjZGVmaW5lIE9BX1RDNl9TVEFUVVMwX1BIWV9JTlRcXHRcXHRcXHRCSVQoNylcXG4gI2RlZmluZSBPQV9UQzZfU1RBVFVTMF9SRVNFVENcXHRcXHRcXHRCSVQoNilcXHQvKiBSZXNldCBDb21wbGV0ZSAqL1xcbiAjZGVmaW5lIE9BX1RDNl9TVEFUVVMwX0hFQURFUl9FUlJPUlxcdFxcdEJJVCg1KVxcbiAjZGVmaW5lIE9BX1RDNl9TVEFUVVMwX0xPU1NfT0ZfRlJBTUVfRVJST1JcXHRCSVQoNClcXG5AQCAtNDMsNiArNDQsNyBAQFxcbiBcXG4gLyogSW50ZXJydXB0IE1hc2sgUmVnaXN0ZXIgIzAgKi9cXG4gI2RlZmluZSBPQV9UQzZfUkVHX0lOVF9NQVNLMFxcdFxcdFxcdFxcdDB4MDAwQ1xcbisjZGVmaW5lIE9BX1RDNl9JTlRfTUFTSzBfUEhZX0lOVF9NQVNLXFx0XFx0XFx0QklUKDcpXFxuICNkZWZpbmUgT0FfVEM2X0lOVF9NQVNLMF9IRUFERVJfRVJSX01BU0tcXHRcXHRCSVQoNSlcXG4gI2RlZmluZSBPQV9UQzZfSU5UX01BU0swX0xPU1NfT0ZfRlJBTUVfRVJSX01BU0tcXHRcXHRCSVQoNClcXG4gI2RlZmluZSBPQV9UQzZfSU5UX01BU0swX1JYX0JVRkZFUl9PVkVSRkxPV19FUlJfTUFTS1xcdEJJVCgzKVxcbkBAIC02OCw2ICs3MCw3IEBAIHN0cnVjdCBvYV90YzY7XFxuIFxcbiBlbnVtIG9hX3RjNl9xdWlya19mbGFnIHtcXG4gXFx0T0FfVEM2X0JST0tFTl9QSFkgPSBCSVQoMCksXFxuK1xcdE9BX1RDNl9QSFlfSU5UICAgID0gQklUKDEpLFxcbiB9O1xcbiBcXG4gc3RydWN0IG9hX3RjNl9xdWlya3Mge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODoyMjowNS40OTMyODI2MjlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjUzNjM1MTc2MTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWljcm9jaGlwIExBTjg2NXggU1BJIEV0aGVybmV0IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jKSwgdGhlIE9wZW4gQWxsaWFuY2UgVEM2IE1BQy1QSFkgcHJvdG9jb2wgbGF5ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jKSwgYW5kIHRoZSBNaWNyb2NoaXAgMTBCQVNFLVQxUyBQSFkgZHJpdmVyIChkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jKS4gVGhlc2UgZHJpdmVycyBvcGVyYXRlIG9uIHNwZWNpZmljIHBoeXNpY2FsIDEwQkFTRS1UMVMgc2luZ2xlLXBhaXIgRXRoZXJuZXQgaGFyZHdhcmUgY29ubmVjdGVkIG92ZXIgU1BJL01ESU8gdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDQ0YmMxYzM3ZjdlODY2ZWI5OTdkODg3OGE1ZjZlN2Y3MDUwYjdkMWZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCA3IDA4OjIyOjA0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jXG5pbmRleCAyNmEyNzYxMzMyYTVhLi4wNDNhM2RjM2Y5NjU3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmNcbkBAIC0zMzIsNiArMzMyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBsYW44NjV4X25ldGRldl9vcHMgPSB7XG4gXG4gc3RhdGljIGludCBsYW44NjV4X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4ge1xuK1x0c3RydWN0IG9hX3RjNl9xdWlya3MgdGM2X3F1aXJrcyA9IHt9O1xuIFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbiBcdHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXY7XG4gXHRpbnQgcmV0O1xuQEAgLTM0Niw3ICszNDcsOCBAQCBzdGF0aWMgaW50IGxhbjg2NXhfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbiBcdHNwaV9zZXRfZHJ2ZGF0YShzcGksIHByaXYpO1xuIFx0SU5JVF9XT1JLKFx1MDAyNnByaXYtXHUwMDNlbXVsdGljYXN0X3dvcmssIGxhbjg2NXhfbXVsdGljYXN0X3dvcmtfaGFuZGxlcik7XG4gXG4tXHRwcml2LVx1MDAzZXRjNiA9IG9hX3RjNl9pbml0KHNwaSwgbmV0ZGV2LCBOVUxMKTtcbitcdHRjNl9xdWlya3MucXVpcmtfZmxhZ3MgPSBPQV9UQzZfUEhZX0lOVDtcbitcdHByaXYtXHUwMDNldGM2ID0gb2FfdGM2X2luaXQoc3BpLCBuZXRkZXYsIFx1MDAyNnRjNl9xdWlya3MpO1xuIFx0aWYgKCFwcml2LVx1MDAzZXRjNikge1xuIFx0XHRyZXQgPSAtRU5PREVWO1xuIFx0XHRnb3RvIGZyZWVfbmV0ZGV2O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmNcbmluZGV4IDZmY2M1ZjU2MWQ1NjAuLjAwYjAxNzZjMWZlN2EgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmNcbkBAIC04LDYgKzgsOCBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdGZpZWxkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pb3BvbGwuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2ludGVycnVwdC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvaXJxLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9pcnFkb21haW4uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21kaW8uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2FfdGM2LmhcdTAwM2VcbkBAIC03MCw2ICs3Miw4IEBAIHN0cnVjdCBvYV90YzYge1xuIFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldjtcbiBcdHN0cnVjdCBtaWlfYnVzICptZGlvYnVzO1xuIFx0c3RydWN0IHNwaV9kZXZpY2UgKnNwaTtcbitcdHN0cnVjdCBpcnFfZG9tYWluICpwaHlfaXJxX2RvbWFpbjtcbitcdGludCBwaHlfdmlycTtcbiBcdHN0cnVjdCBtdXRleCBzcGlfY3RybF9sb2NrOyAvKiBQcm90ZWN0cyBzcGkgY29udHJvbCB0cmFuc2ZlciAqL1xuIFx0c3BpbmxvY2tfdCB0eF9za2JfbG9jazsgLyogUHJvdGVjdHMgdHggc2tiIGhhbmRsaW5nICovXG4gXHR2b2lkICpzcGlfY3RybF90eF9idWY7XG5AQCAtNTI4LDYgKzUzMiw0NCBAQCBpbnQgb2FfdGM2X21kaW9idXNfd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgZGV2bnVtLFxuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChvYV90YzZfbWRpb2J1c193cml0ZV9jNDUpO1xuIFxuK3N0YXRpYyBpbnQgb2FfdGM2X3BoeV9pcnFfbWFwKHN0cnVjdCBpcnFfZG9tYWluICpkb21haW4sIHVuc2lnbmVkIGludCBpcnEsXG4rXHRcdFx0ICAgICAgaXJxX2h3X251bWJlcl90IGh3aXJxKVxuK3tcbitcdGlycV9zZXRfY2hpcF9kYXRhKGlycSwgZG9tYWluLVx1MDAzZWhvc3RfZGF0YSk7XG4rXHRpcnFfc2V0X2NoaXBfYW5kX2hhbmRsZXIoaXJxLCBcdTAwMjZkdW1teV9pcnFfY2hpcCwgaGFuZGxlX3NpbXBsZV9pcnEpO1xuK1x0aXJxX3NldF9uZXN0ZWRfdGhyZWFkKGlycSwgdHJ1ZSk7XG4rXHRpcnFfc2V0X25vcHJvYmUoaXJxKTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9kb21haW5fb3BzIG9hX3RjNl9waHlfaXJxX2RvbWFpbl9vcHMgPSB7XG4rXHQubWFwID0gb2FfdGM2X3BoeV9pcnFfbWFwLFxuK307XG4rXG4rc3RhdGljIGludCBvYV90YzZfcGh5X2lycV9zZXR1cChzdHJ1Y3Qgb2FfdGM2ICp0YzYpXG4re1xuK1x0dGM2LVx1MDAzZXBoeV9pcnFfZG9tYWluID1cbitcdFx0aXJxX2RvbWFpbl9jcmVhdGVfbGluZWFyKE5VTEwsIDEsXG4rXHRcdFx0XHRcdCBcdTAwMjZvYV90YzZfcGh5X2lycV9kb21haW5fb3BzLCB0YzYpO1xuK1x0aWYgKCF0YzYtXHUwMDNlcGh5X2lycV9kb21haW4pXG4rXHRcdHJldHVybiAtRU5PTUVNO1xuK1xuK1x0dGM2LVx1MDAzZXBoeV92aXJxID0gaXJxX2NyZWF0ZV9tYXBwaW5nKHRjNi1cdTAwM2VwaHlfaXJxX2RvbWFpbiwgMCk7XG4rXHRpZiAoIXRjNi1cdTAwM2VwaHlfdmlycSkge1xuK1x0XHRpcnFfZG9tYWluX3JlbW92ZSh0YzYtXHUwMDNlcGh5X2lycV9kb21haW4pO1xuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcdH1cbitcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgdm9pZCBvYV90YzZfcGh5X2lycV90ZWFyZG93bihzdHJ1Y3Qgb2FfdGM2ICp0YzYpXG4re1xuK1x0aXJxX2Rpc3Bvc2VfbWFwcGluZyh0YzYtXHUwMDNlcGh5X3ZpcnEpO1xuK1x0aXJxX2RvbWFpbl9yZW1vdmUodGM2LVx1MDAzZXBoeV9pcnFfZG9tYWluKTtcbit9XG4rXG4gc3RhdGljIGludCBvYV90YzZfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3Qgb2FfdGM2ICp0YzYpXG4ge1xuIFx0aW50IHJldDtcbkBAIC01NTksOSArNjAxLDI1IEBAIHN0YXRpYyBpbnQgb2FfdGM2X21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG9hX3RjNiAqdGM2KVxuIFx0c25wcmludGYodGM2LVx1MDAzZW1kaW9idXMtXHUwMDNlaWQsIEFSUkFZX1NJWkUodGM2LVx1MDAzZW1kaW9idXMtXHUwMDNlaWQpLCBcIiVzXCIsXG4gXHRcdCBkZXZfbmFtZShcdTAwMjZ0YzYtXHUwMDNlc3BpLVx1MDAzZWRldikpO1xuIFxuK1x0aWYgKHRjNi1cdTAwM2VxdWlya19mbGFncyBcdTAwMjYgT0FfVEM2X1BIWV9JTlQpIHtcbitcdFx0cmV0ID0gb2FfdGM2X3BoeV9pcnFfc2V0dXAodGM2KTtcbitcdFx0aWYgKHJldCkge1xuK1x0XHRcdG1kaW9idXNfZnJlZSh0YzYtXHUwMDNlbWRpb2J1cyk7XG4rXHRcdFx0cmV0dXJuIHJldDtcbitcdFx0fVxuK1x0XHQvKiBQb3B1bGF0ZSBhbGwgaXJxW10gZW50cmllcyBiZWZvcmUgcmVnaXN0cmF0aW9uIHNvXG4rXHRcdCAqIHBoeV9kZXZpY2VfY3JlYXRlKCkgcGlja3MgdXAgdGhlIHZpcnR1YWwgSVJRIHJlZ2FyZGxlc3Mgb2ZcbitcdFx0ICogdGhlIFBIWSdzIE1ESU8gYWRkcmVzcy5cbitcdFx0ICovXG4rXHRcdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBQSFlfTUFYX0FERFI7IGkrKylcbitcdFx0XHR0YzYtXHUwMDNlbWRpb2J1cy1cdTAwM2VpcnFbaV0gPSB0YzYtXHUwMDNlcGh5X3ZpcnE7XG4rXHR9XG4rXG4gXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKHRjNi1cdTAwM2VtZGlvYnVzKTtcbiBcdGlmIChyZXQpIHtcbiBcdFx0bmV0ZGV2X2Vycih0YzYtXHUwMDNlbmV0ZGV2LCBcIkNvdWxkIG5vdCByZWdpc3RlciBNRElPIGJ1c1xcblwiKTtcbitcdFx0aWYgKHRjNi1cdTAwM2VxdWlya19mbGFncyBcdTAwMjYgT0FfVEM2X1BIWV9JTlQpXG4rXHRcdFx0b2FfdGM2X3BoeV9pcnFfdGVhcmRvd24odGM2KTtcbiBcdFx0bWRpb2J1c19mcmVlKHRjNi1cdTAwM2VtZGlvYnVzKTtcbiBcdFx0cmV0dXJuIHJldDtcbiBcdH1cbkBAIC01NzIsNiArNjMwLDggQEAgc3RhdGljIGludCBvYV90YzZfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3Qgb2FfdGM2ICp0YzYpXG4gc3RhdGljIHZvaWQgb2FfdGM2X21kaW9idXNfdW5yZWdpc3RlcihzdHJ1Y3Qgb2FfdGM2ICp0YzYpXG4ge1xuIFx0bWRpb2J1c191bnJlZ2lzdGVyKHRjNi1cdTAwM2VtZGlvYnVzKTtcbitcdGlmICh0YzYtXHUwMDNlcXVpcmtfZmxhZ3MgXHUwMDI2IE9BX1RDNl9QSFlfSU5UKVxuK1x0XHRvYV90YzZfcGh5X2lycV90ZWFyZG93bih0YzYpO1xuIFx0bWRpb2J1c19mcmVlKHRjNi1cdTAwM2VtZGlvYnVzKTtcbiB9XG4gXG5AQCAtNjYxLDcgKzcyMSw3IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3N3X3Jlc2V0X21hY3BoeShzdHJ1Y3Qgb2FfdGM2ICp0YzYpXG4gXHRyZXR1cm4gb2FfdGM2X3dyaXRlX3JlZ2lzdGVyKHRjNiwgT0FfVEM2X1JFR19TVEFUVVMwLCByZWd2YWwpO1xuIH1cbiBcbi1zdGF0aWMgaW50IG9hX3RjNl91bm1hc2tfbWFjcGh5X2Vycm9yX2ludGVycnVwdHMoc3RydWN0IG9hX3RjNiAqdGM2KVxuK3N0YXRpYyBpbnQgb2FfdGM2X3VubWFza19pbnRlcnJ1cHRzKHN0cnVjdCBvYV90YzYgKnRjNilcbiB7XG4gXHR1MzIgcmVndmFsO1xuIFx0aW50IHJldDtcbkBAIC02NzAsNyArNzMwLDggQEAgc3RhdGljIGludCBvYV90YzZfdW5tYXNrX21hY3BoeV9lcnJvcl9pbnRlcnJ1cHRzKHN0cnVjdCBvYV90YzYgKnRjNilcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4tXHRyZWd2YWwgXHUwMDI2PSB+KE9BX1RDNl9JTlRfTUFTSzBfVFhfUFJPVE9DT0xfRVJSX01BU0sgfFxuK1x0cmVndmFsIFx1MDAyNj0gfihPQV9UQzZfSU5UX01BU0swX1BIWV9JTlRfTUFTSyB8XG4rXHRcdCAgICBPQV9UQzZfSU5UX01BU0swX1RYX1BST1RPQ09MX0VSUl9NQVNLIHxcbiBcdFx0ICAgIE9BX1RDNl9JTlRfTUFTSzBfUlhfQlVGRkVSX09WRVJGTE9XX0VSUl9NQVNLIHxcbiBcdFx0ICAgIE9BX1RDNl9JTlRfTUFTSzBfTE9TU19PRl9GUkFNRV9FUlJfTUFTSyB8XG4gXHRcdCAgICBPQV9UQzZfSU5UX01BU0swX0hFQURFUl9FUlJfTUFTSyk7XG5AQCAtODEwLDYgKzg3MSwxNSBAQCBzdGF0aWMgaW50IG9hX3RjNl9wcm9jZXNzX2V4dGVuZGVkX3N0YXR1cyhzdHJ1Y3Qgb2FfdGM2ICp0YzYpXG4gXHRcdHJldHVybiByZXQ7XG4gXHR9XG4gXG4rXHQvKiBEaXNwYXRjaCB0aGUgUEhZIGludGVycnVwdCB0byBwaHlsaWIgdmlhIHRoZSBuZXN0ZWQgdmlydHVhbCBJUlEgc29cbitcdCAqIHRoZSBQSFkgZHJpdmVyIHJlYWRzIGFuZCBhY2tub3dsZWRnZXMgaXRzIHN0YXR1cy4gUEhZSU5UIGlzIGxldmVsXG4rXHQgKiB0cmlnZ2VyZWQsIHNvIGRvaW5nIHRoaXMgc3luY2hyb25vdXNseSBoZXJlIChpbiB0aGUgc2xlZXBhYmxlXG4rXHQgKiB0aHJlYWRlZCBJUlEpIGNsZWFycyB0aGUgc291cmNlIGJlZm9yZSB0aGUgbmV4dCBkYXRhIGNodW5rLlxuK1x0ICovXG4rXHRpZiAoKHRjNi1cdTAwM2VxdWlya19mbGFncyBcdTAwMjYgT0FfVEM2X1BIWV9JTlQpIFx1MDAyNlx1MDAyNlxuK1x0ICAgIEZJRUxEX0dFVChPQV9UQzZfU1RBVFVTMF9QSFlfSU5ULCB2YWx1ZSkpXG4rXHRcdGhhbmRsZV9uZXN0ZWRfaXJxKHRjNi1cdTAwM2VwaHlfdmlycSk7XG4rXG4gXHRpZiAoRklFTERfR0VUKE9BX1RDNl9TVEFUVVMwX1JYX0JVRkZFUl9PVkVSRkxPV19FUlJPUiwgdmFsdWUpKSB7XG4gXHRcdG9hX3RjNl9sb29rX2Zvcl9uZXdfZnJhbWUodGM2KTtcbiBcdFx0bmV0X2Vycl9yYXRlbGltaXRlZChcIiVzOiBSZWNlaXZlIGJ1ZmZlciBvdmVyZmxvdyBlcnJvclxcblwiLFxuQEAgLTE1MTgsNyArMTU4OCw3IEBAIHN0cnVjdCBvYV90YzYgKm9hX3RjNl9pbml0KHN0cnVjdCBzcGlfZGV2aWNlICpzcGksIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuLVx0cmV0ID0gb2FfdGM2X3VubWFza19tYWNwaHlfZXJyb3JfaW50ZXJydXB0cyh0YzYpO1xuK1x0cmV0ID0gb2FfdGM2X3VubWFza19pbnRlcnJ1cHRzKHRjNik7XG4gXHRpZiAocmV0KSB7XG4gXHRcdGRldl9lcnIoXHUwMDI2dGM2LVx1MDAzZXNwaS1cdTAwM2VkZXYsXG4gXHRcdFx0XCJNQUMtUEhZIGVycm9yIGludGVycnVwdHMgdW5tYXNrIGZhaWxlZDogJWRcXG5cIiwgcmV0KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jIGIvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuY1xuaW5kZXggNzNjMjNkMzExZDcyYS4uYzNhNzM4Yzc0MjViZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmNcbkBAIC0yNywxMSArMjcsMjMgQEBcbiAjZGVmaW5lIExBTjg2NVhfUkVHX0NGR1BBUkFNX0NUUkwgMHgwMERBXG4gI2RlZmluZSBMQU44NjVYX1JFR19TVFMyIDB4MDAxOVxuIFxuKy8qIFBIWSBpbnRlcnJ1cHQgc3RhdHVzIGFuZCBtYXNrIHJlZ2lzdGVycyAoTURJT19NTURfVkVORDIpLiBUaGUgc3RhdHVzIGJpdHNcbisgKiBhcmUgcmVhZC10by1jbGVhcjsgYSBtYXNrIGJpdCBpcyBlbmFibGVkIGJ5IHdyaXRpbmcgMC5cbisgKi9cbisjZGVmaW5lIExBTjg2WFhfUkVHX1NUUzFcdFx0MHgwMDE4XG4rI2RlZmluZSBMQU44NlhYX1JFR19JTVNLMVx0XHQweDAwMUNcbitcbisjZGVmaW5lIExBTjg2WFhfU1RTMV9MSU5LX1NUU19DSEFOR0VEXHRCSVQoMTMpXG4rI2RlZmluZSBMQU44NlhYX1NUUzFfUExDQV9TVFNfQ0hBTkdFRFx0QklUKDExKVxuK1xuIC8qIENvbGxpc2lvbiBEZXRlY3RvciBDb250cm9sIDAgUmVnaXN0ZXIgKi9cbiAjZGVmaW5lIExBTjg2WFhfUkVHX0NPTF9ERVRfQ1RSTDBcdDB4MDA4N1xuICNkZWZpbmUgQ09MX0RFVF9DVFJMMF9FTkFCTEVfQklUX01BU0tcdEJJVCgxNSlcbiAjZGVmaW5lIENPTF9ERVRfRU5BQkxFXHRcdFx0QklUKDE1KVxuICNkZWZpbmUgQ09MX0RFVF9ESVNBQkxFXHRcdFx0MHgwMDAwXG4rI2RlZmluZSBDT0xfREVUX0NUUkwwX0NDTUZDX01BU0tcdEdFTk1BU0soMTAsIDkpXG4rLyogT0EgZGVmYXVsdDogY29sbGlzaW9ucyBnYXRlZCBieSBQTENBX1N0YXR1cyBpbiBoYXJkd2FyZSAqL1xuKyNkZWZpbmUgQ09MX0RFVF9DVFJMMF9DQ01GQ19PQV9ERUZBVUxUXHRCSVQoOSlcbiBcbiAvKiBMQU44NjcwLzEvMiBSZXYuRDAgTGluayBTdGF0dXMgU2VsZWN0aW9uIFJlZ2lzdGVyICovXG4gI2RlZmluZSBMQU44NjdYX1JFR19MSU5LX1NUQVRVU19DVFJMXHQweDAwMTJcbkBAIC00NTgsNiArNDcwLDE2IEBAIHN0YXRpYyBpbnQgbGFuODZ4eF9wbGNhX3NldF9jZmcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4rXHQvKiBQSFlzIHdpdGggcm91dGVkIGludGVycnVwdHMgaGFuZGxlIENERU4gZHluYW1pY2FsbHkgdmlhIHRoZSBpbnRlcnJ1cHRcbitcdCAqIGhhbmRsZXIsIHNvIHNraXAgdGhlIHN0YXRpYyB3cml0ZS4gUEhZcyBydW5uaW5nIHdpdGggUEhZX1BPTEwgaGF2ZSBub1xuK1x0ICogaW50ZXJydXB0IGhhbmRsZXIsIHNvIGFwcGx5IHRoZSBzdGF0aWMgQ0RFTiB3cml0ZSBhcyBhIGJhc2VsaW5lIG9uXG4rXHQgKiBldmVyeSBldGh0b29sIFBMQ0EgcmVjb25maWd1cmF0aW9uLiBUaGUgbGltaXRhdGlvbiBpcyB0aGF0IGF1dG9ub21vdXNcbitcdCAqIFBMQ0EgbW9kZSB0cmFuc2l0aW9ucyBiZXR3ZWVuIGV0aHRvb2wgcmVjb25maWd1cmF0aW9ucyBhcmUgbm90XG4rXHQgKiB0cmFja2VkIG9uIHN1Y2ggYm9hcmRzLlxuK1x0ICovXG4rXHRpZiAocGh5ZGV2LVx1MDAzZWlycSAhPSBQSFlfUE9MTClcbitcdFx0cmV0dXJuIDA7XG4rXG4gXHRpZiAocGxjYV9jZmctXHUwMDNlZW5hYmxlZClcbiBcdFx0cmV0dXJuIHBoeV9tb2RpZnlfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXG4gXHRcdFx0XHQgICAgICBMQU44NlhYX1JFR19DT0xfREVUX0NUUkwwLFxuQEAgLTQ4NCw2ICs1MDYsMTggQEAgc3RhdGljIGludCBsYW44Njd4X3JldmQwX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRcdFx0cmV0dXJuIHJldDtcbiBcdH1cbiBcbitcdC8qIEFOMTc2MDogY29uZmlndXJlIENDTUZDIHRvIE9BIGRlZmF1bHQgc28gdGhhdCB0aGUgaGFyZHdhcmVcbitcdCAqIGF1dG9tYXRpY2FsbHkgZ2F0ZXMgY29sbGlzaW9uIGZvcndhcmRpbmcgdG8gdGhlIE1BQyBiYXNlZCBvblxuK1x0ICogUExDQV9TdGF0dXMuIENvbGxpc2lvbnMgYXJlIG5laXRoZXIgY291bnRlZCBub3IgZm9yd2FyZGVkIHdoZW5cbitcdCAqIFBMQ0FfU3RhdHVzID0gT0ssIGVsaW1pbmF0aW5nIHRoZSBuZWVkIGZvciBzb2Z0d2FyZS1kcml2ZW4gQ0RFTlxuK1x0ICogdG9nZ2xpbmcgaW4gdGhlIGludGVycnVwdCBoYW5kbGVyLiBDREVOIHJlbWFpbnMgZW5hYmxlZC5cbitcdCAqL1xuK1x0cmV0ID0gcGh5X21vZGlmeV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTEFOODZYWF9SRUdfQ09MX0RFVF9DVFJMMCxcbitcdFx0XHQgICAgIENPTF9ERVRfQ1RSTDBfQ0NNRkNfTUFTSyxcbitcdFx0XHQgICAgIENPTF9ERVRfQ1RSTDBfQ0NNRkNfT0FfREVGQVVMVCk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuIFx0LyogSW5pdGlhbGx5IHRoZSBQSFkgd2lsbCBiZSBpbiBDU01BL0NEIG1vZGUgYnkgZGVmYXVsdC4gU28gaXQgaXNcbiBcdCAqIHJlcXVpcmVkIHRvIHNldCB0aGUgbGluayBhbHdheXMgYWN0aXZlIGFzIGl0IGRvZXNuJ3Qgc3VwcG9ydFxuIFx0ICogYXV0b25lZy5cbkBAIC01MDYsNiArNTQwLDEyMSBAQCBzdGF0aWMgaW50IGxhbjg2eHhfcmVhZF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdHJldHVybiAwO1xuIH1cbiBcbitzdGF0aWMgaW50IGxhbjg2eHhfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbit7XG4rXHR1MTYgbWFzayA9IExBTjg2WFhfU1RTMV9QTENBX1NUU19DSEFOR0VEO1xuK1x0aW50IHJldDtcbitcbitcdGlmIChwaHlkZXYtXHUwMDNlcGh5X2lkID09IFBIWV9JRF9MQU44NjdYX1JFVkQwKVxuK1x0XHRtYXNrIHw9IExBTjg2WFhfU1RTMV9MSU5LX1NUU19DSEFOR0VEO1xuK1xuK1x0aWYgKHBoeWRldi1cdTAwM2VpbnRlcnJ1cHRzID09IFBIWV9JTlRFUlJVUFRfRU5BQkxFRCkge1xuK1x0XHQvKiBSZWFkIHRvIGNsZWFyIGFueSBwZW5kaW5nIHN0YXR1cyBiZWZvcmUgZW5hYmxpbmcuICovXG4rXHRcdHJldCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBMQU44NlhYX1JFR19TVFMxKTtcbitcdFx0aWYgKHJldCBcdTAwM2MgMClcbitcdFx0XHRyZXR1cm4gcmV0O1xuK1xuK1x0XHQvKiBBIG1hc2sgYml0IG9mIDAgZW5hYmxlcyB0aGUgY29ycmVzcG9uZGluZyBpbnRlcnJ1cHQuICovXG4rXHRcdHJldHVybiBwaHlfY2xlYXJfYml0c19tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcbitcdFx0XHRcdFx0ICBMQU44NlhYX1JFR19JTVNLMSwgbWFzayk7XG4rXHR9XG4rXG4rXHRyZXQgPSBwaHlfc2V0X2JpdHNfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIExBTjg2WFhfUkVHX0lNU0sxLFxuK1x0XHRcdCAgICAgICBtYXNrKTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHQvKiBSZWFkIHRvIGNsZWFyIGFueSBwZW5kaW5nIHN0YXR1cyBhZnRlciBkaXNhYmxpbmcuICovXG4rXHRyZXQgPSBwaHlfcmVhZF9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTEFOODZYWF9SRUdfU1RTMSk7XG4rXHRpZiAocmV0IFx1MDAzYyAwKVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyBpcnFyZXR1cm5fdCBsYW44Nnh4X2hhbmRsZV9pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbit7XG4rXHRzdHJ1Y3QgcGh5X3BsY2Ffc3RhdHVzIHBsY2Ffc3Q7XG4rXHRpcnFyZXR1cm5fdCByZXRfaXJxID0gSVJRX05PTkU7XG4rXHRpbnQgc3RzMSwgcmV0O1xuK1xuK1x0LyogUmVhZGluZyB0aGUgc3RhdHVzIHJlZ2lzdGVyIGNsZWFycyB0aGUgbGF0Y2hlZCBldmVudCBiaXRzLiAqL1xuK1x0c3RzMSA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBMQU44NlhYX1JFR19TVFMxKTtcbitcdGlmIChzdHMxIFx1MDAzYyAwKSB7XG4rXHRcdHBoeV9lcnJvcihwaHlkZXYpO1xuK1x0XHRyZXR1cm4gSVJRX05PTkU7XG4rXHR9XG4rXG4rXHRpZiAoc3RzMSBcdTAwMjYgTEFOODZYWF9TVFMxX1BMQ0FfU1RTX0NIQU5HRUQpIHtcbitcdFx0cmV0ID0gZ2VucGh5X2M0NV9wbGNhX2dldF9zdGF0dXMocGh5ZGV2LCBcdTAwMjZwbGNhX3N0KTtcbitcdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuK1x0XHRcdHBoeV9lcnJvcihwaHlkZXYpO1xuK1x0XHRcdHJldHVybiBJUlFfTk9ORTtcbitcdFx0fVxuK1xuK1x0XHQvKiBBTjE3NjAvQU4xNjk5OiBkaXNhYmxlIGNvbGxpc2lvbiBkZXRlY3Rpb24gaW4gUExDQSBtb2RlIHRvXG4rXHRcdCAqIGltcHJvdmUgc2lnbmFsIHF1YWxpdHk7IHJlLWVuYWJsZSBpdCBpbiBDU01BL0NEIG1vZGUuXG4rXHRcdCAqXG4rXHRcdCAqIGh0dHBzOi8vd3d3Lm1pY3JvY2hpcC5jb20vZW4tdXMvYXBwbGljYXRpb24tbm90ZXMvYW4xNzYwXG4rXHRcdCAqIGh0dHBzOi8vd3d3Lm1pY3JvY2hpcC5jb20vZW4tdXMvYXBwbGljYXRpb24tbm90ZXMvYW4xNjk5XG4rXHRcdCAqL1xuK1x0XHRyZXQgPSBwaHlfbW9kaWZ5X21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLFxuK1x0XHRcdFx0ICAgICBMQU44NlhYX1JFR19DT0xfREVUX0NUUkwwLFxuK1x0XHRcdFx0ICAgICBDT0xfREVUX0NUUkwwX0VOQUJMRV9CSVRfTUFTSyxcbitcdFx0XHRcdCAgICAgcGxjYV9zdC5wc3QgPyBDT0xfREVUX0RJU0FCTEUgOlxuK1x0XHRcdFx0ICAgICBDT0xfREVUX0VOQUJMRSk7XG4rXHRcdGlmIChyZXQgXHUwMDNjIDApIHtcbitcdFx0XHRwaHlfZXJyb3IocGh5ZGV2KTtcbitcdFx0XHRyZXR1cm4gSVJRX05PTkU7XG4rXHRcdH1cbitcbitcdFx0cmV0X2lycSA9IElSUV9IQU5ETEVEO1xuK1x0fVxuK1xuK1x0cmV0dXJuIHJldF9pcnE7XG4rfVxuK1xuK3N0YXRpYyBpcnFyZXR1cm5fdCBsYW44Njd4X3JldmQwX2hhbmRsZV9pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbit7XG4rXHRzdHJ1Y3QgcGh5X3BsY2Ffc3RhdHVzIHBsY2Ffc3Q7XG4rXHRpcnFyZXR1cm5fdCByZXRfaXJxID0gSVJRX05PTkU7XG4rXHRpbnQgc3RzMSwgcmV0O1xuK1xuK1x0LyogUmVhZGluZyB0aGUgc3RhdHVzIHJlZ2lzdGVyIGNsZWFycyB0aGUgbGF0Y2hlZCBldmVudCBiaXRzLiAqL1xuK1x0c3RzMSA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBMQU44NlhYX1JFR19TVFMxKTtcbitcdGlmIChzdHMxIFx1MDAzYyAwKSB7XG4rXHRcdHBoeV9lcnJvcihwaHlkZXYpO1xuK1x0XHRyZXR1cm4gSVJRX05PTkU7XG4rXHR9XG4rXG4rXHRpZiAoc3RzMSBcdTAwMjYgTEFOODZYWF9TVFMxX0xJTktfU1RTX0NIQU5HRUQpIHtcbitcdFx0cGh5X3RyaWdnZXJfbWFjaGluZShwaHlkZXYpO1xuK1x0XHRyZXRfaXJxID0gSVJRX0hBTkRMRUQ7XG4rXHR9XG4rXG4rXHRpZiAoc3RzMSBcdTAwMjYgTEFOODZYWF9TVFMxX1BMQ0FfU1RTX0NIQU5HRUQpIHtcbitcdFx0cmV0ID0gZ2VucGh5X2M0NV9wbGNhX2dldF9zdGF0dXMocGh5ZGV2LCBcdTAwMjZwbGNhX3N0KTtcbitcdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuK1x0XHRcdHBoeV9lcnJvcihwaHlkZXYpO1xuK1x0XHRcdHJldHVybiBJUlFfTk9ORTtcbitcdFx0fVxuK1xuK1x0XHQvKiBDb2xsaXNpb24gZGV0ZWN0aW9uIGlzIGhhbmRsZWQgYXV0b25vbW91c2x5IGJ5IHRoZSBoYXJkd2FyZVxuK1x0XHQgKiB2aWEgQ0NNRkMuIE9ubHkgdGhlIGxpbmsgc3RhdHVzIHNlbGVjdGlvbiBuZWVkcyB0byBiZSB1cGRhdGVkXG4rXHRcdCAqIG9uIGVhY2ggUExDQSBzdGF0dXMgdHJhbnNpdGlvbi5cbitcdFx0ICovXG4rXHRcdHJldCA9IGxhbjg2N3hfcmV2ZDBfbGlua19hY3RpdmVfc2VsZWN0aW9uKHBoeWRldiwgcGxjYV9zdC5wc3QpO1xuK1x0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4rXHRcdFx0cGh5X2Vycm9yKHBoeWRldik7XG4rXHRcdFx0cmV0dXJuIElSUV9OT05FO1xuK1x0XHR9XG4rXG4rXHRcdHJldF9pcnEgPSBJUlFfSEFORExFRDtcbitcdH1cbitcbitcdHJldHVybiByZXRfaXJxO1xuK31cbitcbiBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbWljcm9jaGlwX3Qxc19kcml2ZXJbXSA9IHtcbiBcdHtcbiBcdFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9MQU44NjdYX1JFVkIxKSxcbkBAIC01MTMsNiArNjYyLDggQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MXNfZHJpdmVyW10gPSB7XG4gXHRcdC5mZWF0dXJlcyAgICAgICAgICAgPSBQSFlfQkFTSUNfVDFTX1AyTVBfRkVBVFVSRVMsXG4gXHRcdC5jb25maWdfaW5pdCAgICAgICAgPSBsYW44Njd4X3JldmIxX2NvbmZpZ19pbml0LFxuIFx0XHQucmVhZF9zdGF0dXMgICAgICAgID0gbGFuODZ4eF9yZWFkX3N0YXR1cyxcbitcdFx0LmNvbmZpZ19pbnRyICAgICAgICA9IGxhbjg2eHhfY29uZmlnX2ludHIsXG4rXHRcdC5oYW5kbGVfaW50ZXJydXB0ICAgPSBsYW44Nnh4X2hhbmRsZV9pbnRlcnJ1cHQsXG4gXHRcdC5nZXRfcGxjYV9jZmdcdCAgICA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfY2ZnLFxuIFx0XHQuc2V0X3BsY2FfY2ZnXHQgICAgPSBnZW5waHlfYzQ1X3BsY2Ffc2V0X2NmZyxcbiBcdFx0LmdldF9wbGNhX3N0YXR1cyAgICA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfc3RhdHVzLFxuQEAgLTUyMyw2ICs2NzQsOCBAQCBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbWljcm9jaGlwX3Qxc19kcml2ZXJbXSA9IHtcbiBcdFx0LmZlYXR1cmVzICAgICAgICAgICA9IFBIWV9CQVNJQ19UMVNfUDJNUF9GRUFUVVJFUyxcbiBcdFx0LmNvbmZpZ19pbml0ICAgICAgICA9IGxhbjg2N3hfcmV2Y19jb25maWdfaW5pdCxcbiBcdFx0LnJlYWRfc3RhdHVzICAgICAgICA9IGxhbjg2eHhfcmVhZF9zdGF0dXMsXG4rXHRcdC5jb25maWdfaW50ciAgICAgICAgPSBsYW44Nnh4X2NvbmZpZ19pbnRyLFxuK1x0XHQuaGFuZGxlX2ludGVycnVwdCAgID0gbGFuODZ4eF9oYW5kbGVfaW50ZXJydXB0LFxuIFx0XHQuZ2V0X3BsY2FfY2ZnXHQgICAgPSBnZW5waHlfYzQ1X3BsY2FfZ2V0X2NmZyxcbiBcdFx0LnNldF9wbGNhX2NmZ1x0ICAgID0gbGFuODZ4eF9wbGNhX3NldF9jZmcsXG4gXHRcdC5nZXRfcGxjYV9zdGF0dXMgICAgPSBnZW5waHlfYzQ1X3BsY2FfZ2V0X3N0YXR1cyxcbkBAIC01MzMsNiArNjg2LDggQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MXNfZHJpdmVyW10gPSB7XG4gXHRcdC5mZWF0dXJlcyAgICAgICAgICAgPSBQSFlfQkFTSUNfVDFTX1AyTVBfRkVBVFVSRVMsXG4gXHRcdC5jb25maWdfaW5pdCAgICAgICAgPSBsYW44Njd4X3JldmNfY29uZmlnX2luaXQsXG4gXHRcdC5yZWFkX3N0YXR1cyAgICAgICAgPSBsYW44Nnh4X3JlYWRfc3RhdHVzLFxuK1x0XHQuY29uZmlnX2ludHIgICAgICAgID0gbGFuODZ4eF9jb25maWdfaW50cixcbitcdFx0LmhhbmRsZV9pbnRlcnJ1cHQgICA9IGxhbjg2eHhfaGFuZGxlX2ludGVycnVwdCxcbiBcdFx0LmdldF9wbGNhX2NmZ1x0ICAgID0gZ2VucGh5X2M0NV9wbGNhX2dldF9jZmcsXG4gXHRcdC5zZXRfcGxjYV9jZmdcdCAgICA9IGxhbjg2eHhfcGxjYV9zZXRfY2ZnLFxuIFx0XHQuZ2V0X3BsY2Ffc3RhdHVzICAgID0gZ2VucGh5X2M0NV9wbGNhX2dldF9zdGF0dXMsXG5AQCAtNTQyLDYgKzY5Nyw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtaWNyb2NoaXBfdDFzX2RyaXZlcltdID0ge1xuIFx0XHQubmFtZSAgICAgICAgICAgICAgID0gXCJMQU44NjdYIFJldi5EMFwiLFxuIFx0XHQuZmVhdHVyZXMgICAgICAgICAgID0gUEhZX0JBU0lDX1QxU19QMk1QX0ZFQVRVUkVTLFxuIFx0XHQuY29uZmlnX2luaXQgICAgICAgID0gbGFuODY3eF9yZXZkMF9jb25maWdfaW5pdCxcbitcdFx0LmNvbmZpZ19pbnRyICAgICAgICA9IGxhbjg2eHhfY29uZmlnX2ludHIsXG4rXHRcdC5oYW5kbGVfaW50ZXJydXB0ICAgPSBsYW44Njd4X3JldmQwX2hhbmRsZV9pbnRlcnJ1cHQsXG4gXHRcdC5nZXRfcGxjYV9jZmdcdCAgICA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfY2ZnLFxuIFx0XHQuc2V0X3BsY2FfY2ZnXHQgICAgPSBsYW44Nnh4X3BsY2Ffc2V0X2NmZyxcbiBcdFx0LmdldF9wbGNhX3N0YXR1cyAgICA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfc3RhdHVzLFxuQEAgLTU1Niw2ICs3MTMsOCBAQCBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbWljcm9jaGlwX3Qxc19kcml2ZXJbXSA9IHtcbiBcdFx0LmZlYXR1cmVzICAgICAgICAgICA9IFBIWV9CQVNJQ19UMVNfUDJNUF9GRUFUVVJFUyxcbiBcdFx0LmNvbmZpZ19pbml0ICAgICAgICA9IGxhbjg2NXhfcmV2Yl9jb25maWdfaW5pdCxcbiBcdFx0LnJlYWRfc3RhdHVzICAgICAgICA9IGxhbjg2eHhfcmVhZF9zdGF0dXMsXG4rXHRcdC5jb25maWdfaW50ciAgICAgICAgPSBsYW44Nnh4X2NvbmZpZ19pbnRyLFxuK1x0XHQuaGFuZGxlX2ludGVycnVwdCAgID0gbGFuODZ4eF9oYW5kbGVfaW50ZXJydXB0LFxuIFx0XHQucmVhZF9tbWQgICAgICAgICAgID0gZ2VucGh5X3JlYWRfbW1kX2M0NSxcbiBcdFx0LndyaXRlX21tZCAgICAgICAgICA9IGdlbnBoeV93cml0ZV9tbWRfYzQ1LFxuIFx0XHQuZ2V0X3BsY2FfY2ZnXHQgICAgPSBnZW5waHlfYzQ1X3BsY2FfZ2V0X2NmZyxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L29hX3RjNi5oIGIvaW5jbHVkZS9saW51eC9vYV90YzYuaFxuaW5kZXggMjdmNjUyZDQ5MjBiMi4uMWM4Y2MyNjNjNWU1MyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvb2FfdGM2LmhcbisrKyBiL2luY2x1ZGUvbGludXgvb2FfdGM2LmhcbkBAIC0zMCw2ICszMCw3IEBAXG4gXG4gLyogU3RhdHVzIFJlZ2lzdGVyICMwICovXG4gI2RlZmluZSBPQV9UQzZfUkVHX1NUQVRVUzBcdFx0XHQweDAwMDhcbisjZGVmaW5lIE9BX1RDNl9TVEFUVVMwX1BIWV9JTlRcdFx0XHRCSVQoNylcbiAjZGVmaW5lIE9BX1RDNl9TVEFUVVMwX1JFU0VUQ1x0XHRcdEJJVCg2KVx0LyogUmVzZXQgQ29tcGxldGUgKi9cbiAjZGVmaW5lIE9BX1RDNl9TVEFUVVMwX0hFQURFUl9FUlJPUlx0XHRCSVQoNSlcbiAjZGVmaW5lIE9BX1RDNl9TVEFUVVMwX0xPU1NfT0ZfRlJBTUVfRVJST1JcdEJJVCg0KVxuQEAgLTQzLDYgKzQ0LDcgQEBcbiBcbiAvKiBJbnRlcnJ1cHQgTWFzayBSZWdpc3RlciAjMCAqL1xuICNkZWZpbmUgT0FfVEM2X1JFR19JTlRfTUFTSzBcdFx0XHRcdDB4MDAwQ1xuKyNkZWZpbmUgT0FfVEM2X0lOVF9NQVNLMF9QSFlfSU5UX01BU0tcdFx0XHRCSVQoNylcbiAjZGVmaW5lIE9BX1RDNl9JTlRfTUFTSzBfSEVBREVSX0VSUl9NQVNLXHRcdEJJVCg1KVxuICNkZWZpbmUgT0FfVEM2X0lOVF9NQVNLMF9MT1NTX09GX0ZSQU1FX0VSUl9NQVNLXHRcdEJJVCg0KVxuICNkZWZpbmUgT0FfVEM2X0lOVF9NQVNLMF9SWF9CVUZGRVJfT1ZFUkZMT1dfRVJSX01BU0tcdEJJVCgzKVxuQEAgLTY4LDYgKzcwLDcgQEAgc3RydWN0IG9hX3RjNjtcbiBcbiBlbnVtIG9hX3RjNl9xdWlya19mbGFnIHtcbiBcdE9BX1RDNl9CUk9LRU5fUEhZID0gQklUKDApLFxuK1x0T0FfVEM2X1BIWV9JTlQgICAgPSBCSVQoMSksXG4gfTtcbiBcbiBzdHJ1Y3Qgb2FfdGM2X3F1aXJrcyB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODoyMjowNS40OTMyODQwNDlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNTkyMTg4MzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgRmVhc2liaWxpdHkgQW5hbHlzaXMqKlxuXG5Pa2F5LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGlzIHBhdGNoIGFuZCBkZWNpZGUgaWYgZnV6emluZyBpdCBpcyBhIHdvcnRod2hpbGUgZW5kZWF2b3IuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZSBjb2RlIG1vZGlmaWNhdGlvbnMuIEkgc2VlIGNoYW5nZXMgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguY2AsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuY2AsIGBkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jYCwgYW5kIGBpbmNsdWRlL2xpbnV4L29hX3RjNi5oYC4gVGltZSB0byBxdWlja2x5IGlkZW50aWZ5IHdoYXQgd2UncmUgZGVhbGluZyB3aXRoLlxuXG5BaCwgYGxhbjg2NXhgIGlzIGEgU1BJIEV0aGVybmV0IGNvbnRyb2xsZXIgZnJvbSBNaWNyb2NoaXAsIHNwZWNpZmljYWxseSB0aGUgTEFOODY1MC8xIDEwQkFTRS1UMVMgTUFDLVBIWS4gYG9hX3RjNmAgaXMgdGhlIE9wZW4gQWxsaWFuY2UgVEM2IDEwQkFTRS1UMVMgTUFDLVBIWSBwcm90b2NvbCBkcml2ZXIsIGFsc28gb3BlcmF0aW5nIG92ZXIgU1BJLCBpdCBsb29rcyBsaWtlLiBBbmQgYG1pY3JvY2hpcF90MXNgIGlzIGEgUEhZIGRyaXZlciBmb3IgTWljcm9jaGlwJ3MgTEFOODY3eC9MQU44NjV4IDEwQkFTRS1UMVMgUEhZcy5cblxuTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogY2FuIHdlIHJlYWNoIHRoZXNlIGRyaXZlcnMgaW4gYSBzdGFuZGFyZCBmdXp6aW5nIGVudmlyb25tZW50LCBsaWtlIFFFTVUgb3IgR0NFIHg4Nl82NCwgd2l0aG91dCBuZWVkaW5nIGFjdHVhbCBwaHlzaWNhbCBoYXJkd2FyZT8gTXkgZ3V0IGZlZWxpbmcgdGVsbHMgbWUgdGhpcyBtaWdodCBiZSB0cmlja3ksIGJlY2F1c2Ugb2YgdGhlIFNQSSBpbnRlcmFjdGlvbi4gSXQncyBsaWtlbHkgdGhhdCBTUEkgZGV2aWNlcyBhbmQgUEhZIGRldmljZXMgZ2V0IGluc3RhbnRpYXRlZCBpbiBhIHNwZWNpZmljIHdheSwgcG90ZW50aWFsbHkgcmVseWluZyBvbiBhIGRldmljZSB0cmVlIG9yIHNwZWNpZmljIHBoeXNpY2FsIFNQSSBoYXJkd2FyZS4gTGV0J3Mgc2VlIGlmIHRoZXJlIGlzIGEgdmlydHVhbCBidXMgb3IgZW11bGF0ZWQgZGV2aWNlIHRoYXQgd2UgY2FuIGxldmVyYWdlLlxuXG5TbywgbGV0J3MgZmlyZSB1cCBteSBwcmVmZXJyZWQgdG9vbHMgYW5kIHNlYXJjaCB0aGUga2VybmVsIHRyZWUgZm9yIGBsYW44NjV4YCwgYG9hX3RjNmAsIGFuZCBgbWljcm9jaGlwX3Qxc2AuIFRoaXMgc2hvdWxkIGdpdmUgdXMgc29tZSBjcml0aWNhbCBpbnNpZ2h0IGludG8gaG93IHRoZXNlIGRyaXZlcnMgYXJlIGluaXRpYWxpemVkIGFuZCB1c2VkLiBGcm9tIHRoZXJlLCB3ZSBjYW4gdGhlbiBkZXRlcm1pbmUgdGhlIGZlYXNpYmlsaXR5IG9mIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkxNTYsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODoyMjowOS4wODU0NzYwNjhaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU2NzYyNTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxhbjg2NXhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWc9NDU9Y29uZmlnIExBTjc0M1hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnLTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnOjYwOnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZy02MS1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWdcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvTWFrZWZpbGU9MTA9bGFuNzQzeC1vYmpzIDo9IGxhbjc0M3hfbWFpbi5vIGxhbjc0M3hfZXRodG9vbC5vIGxhbjc0M3hfcHRwLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvTWFrZWZpbGUtMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19MQU44NjVYKSArPSBsYW44NjV4L1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9NYWtlZmlsZS0xMy1vYmotJChDT05GSUdfTEFOOTY2WF9TV0lUQ0gpICs9IGxhbjk2NngvXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9LY29uZmlnPTg9Y29uZmlnIExBTjg2NVhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L0tjb25maWctMTYtXFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlIHdpbGwgYmVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9LY29uZmlnOjE3OlxcdCAgY2FsbGVkIGxhbjg2NXguXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvS2NvbmZpZy0xOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L01ha2VmaWxlLTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfTEFOODY1WCkgKz0gbGFuODY1eC5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjM5OnN0cnVjdCBsYW44NjV4X3ByaXYge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00MC1cXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgbXVsdGljYXN0X3dvcms7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ2OnN0YXRpYyBpbnQgbGFuODY1eF9zZXRfaHdfbWFjYWRkcl9sb3dfYnl0ZXMoc3RydWN0IG9hX3RjNiAqdGM2LCBjb25zdCB1OCAqbWFjKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjU1OnN0YXRpYyBpbnQgbGFuODY1eF9zZXRfaHdfbWFjYWRkcihzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2LCBjb25zdCB1OCAqbWFjKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy01Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNjEtXFx0LyogQ29uZmlndXJlIE1BQyBhZGRyZXNzIGxvdyBieXRlcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo2MjpcXHRyZXQgPSBsYW44NjV4X3NldF9od19tYWNhZGRyX2xvd19ieXRlcyhwcml2LVxcdTAwM2V0YzYsIG1hYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTYzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNzUtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjc2OlxcdHJlc3RvcmVfcmV0ID0gbGFuODY1eF9zZXRfaHdfbWFjYWRkcl9sb3dfYnl0ZXMocHJpdi1cXHUwMDNldGM2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy03Ny1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgcHJpdi1cXHUwMDNlbmV0ZGV2LVxcdTAwM2VkZXZfYWRkcik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtODMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjg0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgbGFuODY1eF9ldGh0b29sX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtODUtXFx0LmdldF9saW5rX2tzZXR0aW5ncyA9IHBoeV9ldGh0b29sX2dldF9saW5rX2tzZXR0aW5ncyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy04OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6ODk6c3RhdGljIGludCBsYW44NjV4X3NldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB2b2lkICphZGRyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy05MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjkxOlxcdHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy05Mi1cXHRzdHJ1Y3Qgc29ja2FkZHIgKmFkZHJlc3MgPSBhZGRyO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTEwMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MTAyOlxcdHJldCA9IGxhbjg2NXhfc2V0X2h3X21hY2FkZHIocHJpdiwgYWRkcmVzcy1cXHUwMDNlc2FfZGF0YSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTEwMy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jPTExMT1zdGF0aWMgdTMyIGdldF9hZGRyZXNzX2JpdCh1OCBhZGRyW0VUSF9BTEVOXSwgdTMyIGJpdClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xMTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjExNjpzdGF0aWMgdTMyIGxhbjg2NXhfaGFzaCh1OCBhZGRyW0VUSF9BTEVOXSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTE3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xMzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjEzMjpzdGF0aWMgaW50IGxhbjg2NXhfc2V0X3NwZWNpZmljX211bHRpY2FzdF9hZGRyKHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTEzMy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTM5LVxcdG5ldGRldl9mb3JfZWFjaF9tY19hZGRyKGhhLCBwcml2LVxcdTAwM2VuZXRkZXYpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MTQwOlxcdFxcdHUzMiBiaXRfbnVtID0gbGFuODY1eF9oYXNoKGhhLVxcdTAwM2VhZGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTQxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTE2My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MTY0OnN0YXRpYyBpbnQgbGFuODY1eF9zZXRfYWxsX211bHRpY2FzdF9hZGRyKHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTE2NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoxODY6c3RhdGljIGludCBsYW44NjV4X2NsZWFyX2FsbF9tdWx0aWNhc3RfYWRkcihzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xODcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTIwNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjA1OnN0YXRpYyB2b2lkIGxhbjg2NXhfbXVsdGljYXN0X3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTIwNi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjIwNzpcXHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBsYW44NjV4X3ByaXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTIwOC1cXHRcXHRcXHRcXHRcXHRcXHQgbXVsdGljYXN0X3dvcmspO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTIxOC1cXHRcXHQvKiBFbmFibGluZyBhbGwgbXVsdGljYXN0IG1vZGUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjE5OlxcdFxcdGlmIChsYW44NjV4X3NldF9hbGxfbXVsdGljYXN0X2FkZHIocHJpdikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTIyMC1cXHRcXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjI2LVxcdFxcdC8qIEVuYWJsaW5nIHNwZWNpZmljIG11bHRpY2FzdCBtb2RlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjIyNzpcXHRcXHRpZiAobGFuODY1eF9zZXRfc3BlY2lmaWNfbXVsdGljYXN0X2FkZHIocHJpdikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTIyOC1cXHRcXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjM0LVxcdFxcdC8qIEVuYWJsaW5nIGxvY2FsIG1hYyBhZGRyZXNzIG9ubHkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjM1OlxcdFxcdGlmIChsYW44NjV4X2NsZWFyX2FsbF9tdWx0aWNhc3RfYWRkcihwcml2KSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjM2LVxcdFxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjI0NDpzdGF0aWMgdm9pZCBsYW44NjV4X3NldF9tdWx0aWNhc3RfbGlzdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNDUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyNDY6XFx0c3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI0Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjI1MTpzdGF0aWMgbmV0ZGV2X3R4X3QgbGFuODY1eF9zZW5kX3BhY2tldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNTItXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI1My17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjI1NDpcXHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjU1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI1OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjU5OnN0YXRpYyBpbnQgbGFuODY1eF9od19kaXNhYmxlKHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI2MC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjczLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyNzQ6c3RhdGljIGludCBsYW44NjV4X25ldF9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNzUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyNzY6XFx0c3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI3Ny1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI4MC1cXHRwaHlfc3RvcChuZXRkZXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjI4MTpcXHRyZXQgPSBsYW44NjV4X2h3X2Rpc2FibGUocHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI4Mi1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjg5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyOTA6c3RhdGljIGludCBsYW44NjV4X2h3X2VuYWJsZShzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yOTEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMwNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzA1OnN0YXRpYyBpbnQgbGFuODY1eF9uZXRfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMDYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMDc6XFx0c3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMwOC1cXHRpbnQgcmV0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMxMDpcXHRyZXQgPSBsYW44NjV4X2h3X2VuYWJsZShwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzExLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMyMzpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGxhbjg2NXhfbmV0ZGV2X29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzI0OlxcdC5uZG9fb3BlblxcdFxcdD0gbGFuODY1eF9uZXRfb3BlbixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzI1OlxcdC5uZG9fc3RvcFxcdFxcdD0gbGFuODY1eF9uZXRfY2xvc2UsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMyNjpcXHQubmRvX3N0YXJ0X3htaXRcXHRcXHQ9IGxhbjg2NXhfc2VuZF9wYWNrZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMyNzpcXHQubmRvX3NldF9yeF9tb2RlXFx0PSBsYW44NjV4X3NldF9tdWx0aWNhc3RfbGlzdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzI4OlxcdC5uZG9fc2V0X21hY19hZGRyZXNzXFx0PSBsYW44NjV4X3NldF9tYWNfYWRkcmVzcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzI5LVxcdC5uZG9fdmFsaWRhdGVfYWRkclxcdD0gZXRoX3ZhbGlkYXRlX2FkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzMyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMzM6c3RhdGljIGludCBsYW44NjV4X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMzNC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzM2LVxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMzNzpcXHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMzgtXFx0aW50IHJldDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzM5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozNDA6XFx0bmV0ZGV2ID0gYWxsb2NfZXRoZXJkZXYoc2l6ZW9mKHN0cnVjdCBsYW44NjV4X3ByaXYpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzQxLVxcdGlmICghbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM0Ny1cXHRzcGlfc2V0X2RydmRhdGEoc3BpLCBwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzQ4OlxcdElOSVRfV09SSyhcXHUwMDI2cHJpdi1cXHUwMDNlbXVsdGljYXN0X3dvcmssIGxhbjg2NXhfbXVsdGljYXN0X3dvcmtfaGFuZGxlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM0OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zOTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjM5NDpcXHRyZXQgPSBsYW44NjV4X3NldF9od19tYWNhZGRyKHByaXYsIG5ldGRldi1cXHUwMDNlZGV2X2FkZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zOTUtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQwMS1cXHRuZXRkZXYtXFx1MDAzZWlycSA9IHNwaS1cXHUwMDNlaXJxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0MDI6XFx0bmV0ZGV2LVxcdTAwM2VuZXRkZXZfb3BzID0gXFx1MDAyNmxhbjg2NXhfbmV0ZGV2X29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDAzOlxcdG5ldGRldi1cXHUwMDNlZXRodG9vbF9vcHMgPSBcXHUwMDI2bGFuODY1eF9ldGh0b29sX29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDA0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQxOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDIwOnN0YXRpYyB2b2lkIGxhbjg2NXhfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQyMS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQyMjpcXHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2ID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQyMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00MjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQzMDpzdGF0aWMgY29uc3Qgc3RydWN0IHNwaV9kZXZpY2VfaWQgbGFuODY1eF9pZHNbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDMxLVxcdHsgLm5hbWUgPSBcXFwibGFuODY1MFxcXCIgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00MzQtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDM1Ok1PRFVMRV9ERVZJQ0VfVEFCTEUoc3BpLCBsYW44NjV4X2lkcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDM3OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGxhbjg2NXhfZHRfaWRzW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQzOC1cXHR7IC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxsYW44NjUwXFxcIiB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ0MS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0NDI6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbGFuODY1eF9kdF9pZHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ0NDpzdGF0aWMgc3RydWN0IHNwaV9kcml2ZXIgbGFuODY1eF9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ0NS1cXHQuZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NDYtXFx0XFx0Lm5hbWUgPSBEUlZfTkFNRSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDQ3OlxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IGxhbjg2NXhfZHRfaWRzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NDgtXFx0IH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ0OTpcXHQucHJvYmUgPSBsYW44NjV4X3Byb2JlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0NTA6XFx0LnJlbW92ZSA9IGxhbjg2NXhfcmVtb3ZlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0NTE6XFx0LmlkX3RhYmxlID0gbGFuODY1eF9pZHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ1Mi19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0NTM6bW9kdWxlX3NwaV9kcml2ZXIobGFuODY1eF9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NTQtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jPTg5PXN0YXRpYyBjb25zdCB1MTYgbGFuODY3eF9yZXZiMV9maXh1cF9tYXNrc1sxMl0gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTk5LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MTAwOnN0YXRpYyBjb25zdCB1MzIgbGFuODY1eF9yZXZiX2ZpeHVwX3JlZ2lzdGVyc1sxN10gPSB7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xMDEtXFx0MHgwMEQwLCAweDAwRTAsIDB4MDBFOSwgMHgwMEY1LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xMDctXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoxMDg6c3RhdGljIGNvbnN0IHUxNiBsYW44NjV4X3JldmJfZml4dXBfdmFsdWVzWzE3XSA9IHtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTEwOS1cXHQweDNGMzEsIDB4QzAwMCwgMHg5RTUwLCAweDFDRjgsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTExNS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjExNjpzdGF0aWMgY29uc3QgdTE2IGxhbjg2NXhfcmV2Yl9maXh1cF9jZmdfcmVnc1syXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTExNy1cXHQweDAwODQsIDB4MDA4QSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTE5LVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MTIwOnN0YXRpYyBjb25zdCB1MzIgbGFuODY1eF9yZXZiX3NxaV9maXh1cF9yZWdzWzEyXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTEyMS1cXHQweDAwQjAsIDB4MDBCMSwgMHgwMEIyLCAweDAwQjMsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTEyNS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjEyNjpzdGF0aWMgY29uc3QgdTE2IGxhbjg2NXhfcmV2Yl9zcWlfZml4dXBfdmFsdWVzWzEyXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTEyNy1cXHQweDAxMDMsIDB4MDkxMCwgMHgxRDI2LCAweDAwMkEsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTEzMS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjEzMjpzdGF0aWMgY29uc3QgdTE2IGxhbjg2NXhfcmV2Yl9zcWlfZml4dXBfY2ZnX3JlZ3NbM10gPSB7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xMzMtXFx0MHgwMEFELCAweDAwQUUsIDB4MDBBRixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM9MTQ2PXN0YXRpYyBjb25zdCB1MTYgbGFuODY3eF9yZXZkMF9maXh1cF92YWx1ZXNbOF0gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTE1OC0gKi9cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjE1OTpzdGF0aWMgaW50IGxhbjg2NXhfcmV2Yl9pbmRpcmVjdF9yZWFkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiBhZGRyKVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTYwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTc4LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MTc5OnN0YXRpYyBpbnQgbGFuODY1eF9nZW5lcmF0ZV9jZmdfb2Zmc2V0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBzOCBvZmZzZXRzW10pXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xODAte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xODQtXFx0Zm9yIChpbnQgaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGZpeHVwX3JlZ3MpOyBpKyspIHtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjE4NTpcXHRcXHRyZXQgPSBsYW44NjV4X3JldmJfaW5kaXJlY3RfcmVhZChwaHlkZXYsIGZpeHVwX3JlZ3NbaV0pO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTg2LVxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xOTktXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyMDA6c3RhdGljIGludCBsYW44NjV4X3JlYWRfY2ZnX3BhcmFtcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjAxLVxcdFxcdFxcdFxcdCAgIGNvbnN0IHUxNiBjZmdfcmVnc1tdLCB1MTYgY2ZnX3BhcmFtc1tdLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yMTYtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyMTc6c3RhdGljIGludCBsYW44NjV4X3dyaXRlX2NmZ19wYXJhbXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTIxOC1cXHRcXHRcXHRcXHQgICAgY29uc3QgdTE2IGNmZ19yZWdzW10sIHUxNiBjZmdfcGFyYW1zW10sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTIzMi1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjIzMzpzdGF0aWMgaW50IGxhbjg2NXhfc2V0dXBfY2ZncGFyYW0oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgczggb2Zmc2V0c1tdKVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjM0LXtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjIzNTpcXHR1MTYgY2ZnX3Jlc3VsdHNbQVJSQVlfU0laRShsYW44NjV4X3JldmJfZml4dXBfY2ZnX3JlZ3MpXTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjIzNjpcXHR1MTYgY2ZnX3BhcmFtc1tBUlJBWV9TSVpFKGxhbjg2NXhfcmV2Yl9maXh1cF9jZmdfcmVncyldO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjM3LVxcdGludCByZXQ7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yMzgtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyMzk6XFx0cmV0ID0gbGFuODY1eF9yZWFkX2NmZ19wYXJhbXMocGh5ZGV2LCBsYW44NjV4X3JldmJfZml4dXBfY2ZnX3JlZ3MsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNDAtXFx0XFx0XFx0XFx0ICAgICAgY2ZnX3BhcmFtcywgQVJSQVlfU0laRShjZmdfcGFyYW1zKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI0OC1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI0OTpcXHRyZXR1cm4gbGFuODY1eF93cml0ZV9jZmdfcGFyYW1zKHBoeWRldiwgbGFuODY1eF9yZXZiX2ZpeHVwX2NmZ19yZWdzLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjUwLVxcdFxcdFxcdFxcdFxcdGNmZ19yZXN1bHRzLCBBUlJBWV9TSVpFKGNmZ19yZXN1bHRzKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI1Mi1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI1MzpzdGF0aWMgaW50IGxhbjg2NXhfc2V0dXBfc3FpX2NmZ3BhcmFtKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHM4IG9mZnNldHNbXSlcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI1NC17XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyNTU6XFx0dTE2IGNmZ19yZXN1bHRzW0FSUkFZX1NJWkUobGFuODY1eF9yZXZiX3NxaV9maXh1cF9jZmdfcmVncyldO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MjU2OlxcdHUxNiBjZmdfcGFyYW1zW0FSUkFZX1NJWkUobGFuODY1eF9yZXZiX3NxaV9maXh1cF9jZmdfcmVncyldO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjU3LVxcdGludCByZXQ7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNTgtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyNTk6XFx0cmV0ID0gbGFuODY1eF9yZWFkX2NmZ19wYXJhbXMocGh5ZGV2LCBsYW44NjV4X3JldmJfc3FpX2ZpeHVwX2NmZ19yZWdzLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjYwLVxcdFxcdFxcdFxcdCAgICAgIGNmZ19wYXJhbXMsIEFSUkFZX1NJWkUoY2ZnX3BhcmFtcykpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNzAtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyNzE6XFx0cmV0dXJuIGxhbjg2NXhfd3JpdGVfY2ZnX3BhcmFtcyhwaHlkZXYsIGxhbjg2NXhfcmV2Yl9zcWlfZml4dXBfY2ZnX3JlZ3MsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNzItXFx0XFx0XFx0XFx0XFx0Y2ZnX3Jlc3VsdHMsIEFSUkFZX1NJWkUoY2ZnX3Jlc3VsdHMpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjc0LVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6Mjc1OnN0YXRpYyBpbnQgbGFuODY1eF9yZXZiX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNzYte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yODItXFx0ICovXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyODM6XFx0cmV0ID0gbGFuODY1eF9nZW5lcmF0ZV9jZmdfb2Zmc2V0cyhwaHlkZXYsIG9mZnNldHMpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjg0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI4Ni1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI4NzpcXHRmb3IgKGludCBpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUobGFuODY1eF9yZXZiX2ZpeHVwX3JlZ2lzdGVycyk7IGkrKykge1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjg4LVxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI4OTpcXHRcXHRcXHRcXHQgICAgbGFuODY1eF9yZXZiX2ZpeHVwX3JlZ2lzdGVyc1tpXSxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI5MDpcXHRcXHRcXHRcXHQgICAgbGFuODY1eF9yZXZiX2ZpeHVwX3ZhbHVlc1tpXSk7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yOTEtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjk0LVxcdFxcdGlmIChpID09IDEpIHtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI5NTpcXHRcXHRcXHRyZXQgPSBsYW44NjV4X3NldHVwX2NmZ3BhcmFtKHBoeWRldiwgb2Zmc2V0cyk7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yOTYtXFx0XFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMzAwLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MzAxOlxcdHJldCA9IGxhbjg2NXhfc2V0dXBfc3FpX2NmZ3BhcmFtKHBoeWRldiwgb2Zmc2V0cyk7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zMDItXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMzA0LVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MzA1OlxcdGZvciAoaW50IGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShsYW44NjV4X3JldmJfc3FpX2ZpeHVwX3JlZ3MpOyBpKyspIHtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTMwNi1cXHRcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzozMDc6XFx0XFx0XFx0XFx0ICAgIGxhbjg2NXhfcmV2Yl9zcWlfZml4dXBfcmVnc1tpXSxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjMwODpcXHRcXHRcXHRcXHQgICAgbGFuODY1eF9yZXZiX3NxaV9maXh1cF92YWx1ZXNbaV0pO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMzA5LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jPTM0MT1zdGF0aWMgaW50IGxhbjg2N3hfcmV2Y19jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zNDktXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzozNTA6XFx0cmV0ID0gbGFuODY1eF9nZW5lcmF0ZV9jZmdfb2Zmc2V0cyhwaHlkZXYsIG9mZnNldHMpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMzUxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTM2NS1cXHRcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzozNjY6XFx0XFx0XFx0XFx0ICAgIGxhbjg2NXhfcmV2Yl9maXh1cF9yZWdpc3RlcnNbaV0sXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzozNjc6XFx0XFx0XFx0XFx0ICAgIGxhbjg2NXhfcmV2Yl9maXh1cF92YWx1ZXNbaV0pO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMzY4LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTM3MS1cXHRcXHRpZiAoaSA9PSAxKSB7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzozNzI6XFx0XFx0XFx0cmV0ID0gbGFuODY1eF9zZXR1cF9jZmdwYXJhbShwaHlkZXYsIG9mZnNldHMpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMzczLVxcdFxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTM3Ny1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjM3ODpcXHRyZXQgPSBsYW44NjV4X3NldHVwX3NxaV9jZmdwYXJhbShwaHlkZXYsIG9mZnNldHMpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMzc5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTM4MS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjM4MjpcXHRmb3IgKGludCBpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUobGFuODY1eF9yZXZiX3NxaV9maXh1cF9yZWdzKTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zODMtXFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6Mzg0OlxcdFxcdFxcdFxcdCAgICBsYW44NjV4X3JldmJfc3FpX2ZpeHVwX3JlZ3NbaV0sXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzozODU6XFx0XFx0XFx0XFx0ICAgIGxhbjg2NXhfcmV2Yl9zcWlfZml4dXBfdmFsdWVzW2ldKTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTM4Ni1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYz02NTg9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MXNfZHJpdmVyW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTcxMy1cXHRcXHQuZmVhdHVyZXMgICAgICAgICAgID0gUEhZX0JBU0lDX1QxU19QMk1QX0ZFQVRVUkVTLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6NzE0OlxcdFxcdC5jb25maWdfaW5pdCAgICAgICAgPSBsYW44NjV4X3JldmJfY29uZmlnX2luaXQsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy03MTUtXFx0XFx0LnJlYWRfc3RhdHVzICAgICAgICA9IGxhbjg2eHhfcmVhZF9zdGF0dXMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjIyOjA5LjI0MjI0NjQ1NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIxODU2MTczMzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6XG5cbioqQ2hlY2tpbmcgdGhlIE9BX1RDNiBJbXBsZW1lbnRhdGlvbiBhbmQgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBsZXQncyBkaXZlIGludG8gYG9hX3RjNi5jYCBhbmQgaXRzIGFzc29jaWF0ZWQgS2NvbmZpZyBmaWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gT0FfVEM2LiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgS2NvbmZpZyBlbnRyaWVzIHRoYXQgY29udHJvbCB3aGV0aGVyIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBpbmNsdWRlZCBpbiB0aGUgYnVpbGQuIEknbSBsb29raW5nIGZvciB0aGUgZGVmaW5pdGlvbnMgcmVsYXRlZCB0byBgT0FfVEM2YCBpdHNlbGYsIG9mIGNvdXJzZSwgYnV0IEkgc2hvdWxkIGFsc28gc2VlIGhvdyB0aGUgYE1JQ1JPQ0hJUF9UMVNgIGRyaXZlciBpbnRlcmFjdHMgd2l0aCBpdCwgaWYgYXQgYWxsLiBJdCdzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJlbGF0aW9uc2hpcHMsIGFuZCB3aGV0aGVyIHRoZXNlIGZlYXR1cmVzIGFyZSBtdXR1YWxseSBleGNsdXNpdmUsIG9yIGhhdmUgc3BlY2lmaWMgY29uZGl0aW9ucyBhdHRhY2hlZC4gSSdtIG1lbnRhbGx5IHBhcnNpbmcgdGhlIEtjb25maWcgZW50cmllcyB0byBxdWlja2x5IGdyYXNwIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoaXMgd2lsbCBoZWxwIG1lIHF1aWNrbHkgdW5kZXJzdGFuZCBob3cgdG8gZW5hYmxlIG9yIGRpc2FibGUgdGhlIHJlbGV2YW50IGNvZGUgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTgzOSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjIyOjExLjQyNzg2NTkzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMTUyMzcxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJPQV9UQzZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA2MTIgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L0tjb25maWc9MTM5PWNvbmZpZyBFVEhPQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvS2NvbmZpZy0xNDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvS2NvbmZpZzoxNDk6Y29uZmlnIE9BX1RDNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L0tjb25maWctMTUwLVxcdHRyaXN0YXRlIFxcXCJPUEVOIEFsbGlhbmNlIFRDNiAxMEJBU0UtVDF4IE1BQy1QSFkgc3VwcG9ydFxcXCIgaWYgQ09NUElMRV9URVNUXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9NYWtlZmlsZT0xMDY9b2JqLSQoQ09ORklHX05FVF9WRU5ET1JfUEVOU0FORE8pICs9IHBlbnNhbmRvL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L01ha2VmaWxlOjEwNzpvYmotJChDT05GSUdfT0FfVEM2KSArPSBvYV90YzYub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L01ha2VmaWxlLTEwOC1vYmotJChDT05GSUdfTkVUX1ZFTkRPUl9aVEUpICs9IHp0ZS9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9LY29uZmlnPTI5PWNvbmZpZyBBRElOMTE0MFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL0tjb25maWctMzItXFx0c2VsZWN0IEFESU4xMTQwX1BIWVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9LY29uZmlnOjMzOlxcdHNlbGVjdCBPQV9UQzZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvS2NvbmZpZy0zNC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYz0xNDM9c3RhdGljIGludCBhZGluMTE0MF9tYWNfZmlsdGVyX3NldChzdHJ1Y3QgYWRpbjExNDBfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTE1NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYzoxNTY6XFx0cmV0ID0gb2FfdGM2X3dyaXRlX3JlZ2lzdGVyX21tcyhwcml2LVxcdTAwM2V0YzYsIE9BX1RDNl9NQUNfTU1TMSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy0xNTctXFx0XFx0XFx0XFx0XFx0cmVnX2FkZHJlc3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy0xNjQtXFx0cmVnX2FkZHJlc3MgPSBBRElOMTE0MF9NQUNfQUREUl9GSUxUX0xXUl9SRUcgKyAyICogc2xvdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYzoxNjU6XFx0cmV0ID0gb2FfdGM2X3dyaXRlX3JlZ2lzdGVyX21tcyhwcml2LVxcdTAwM2V0YzYsIE9BX1RDNl9NQUNfTU1TMSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy0xNjYtXFx0XFx0XFx0XFx0XFx0cmVnX2FkZHJlc3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy0xODAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM6MTgxOlxcdHJldCA9IG9hX3RjNl93cml0ZV9yZWdpc3Rlcl9tbXMocHJpdi1cXHUwMDNldGM2LCBPQV9UQzZfTUFDX01NUzEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtMTgyLVxcdFxcdFxcdFxcdFxcdHJlZ19hZGRyZXNzLCB2YWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtMTg4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jOjE4OTpcXHRyZXR1cm4gb2FfdGM2X3dyaXRlX3JlZ2lzdGVyX21tcyhwcml2LVxcdTAwM2V0YzYsIE9BX1RDNl9NQUNfTU1TMSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy0xOTAtXFx0XFx0XFx0XFx0XFx0IHJlZ19hZGRyZXNzLCB2YWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM9MjUwPXN0YXRpYyBpbnQgYWRpbjExNDBfcHJvbWlzY3VvdXNfbW9kZShzdHJ1Y3QgYWRpbjExNDBfcHJpdiAqcHJpdiwgYm9vbCBlbmFibGVkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtMjU0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jOjI1NTpcXHRyZXQgPSBvYV90YzZfcmVhZF9yZWdpc3Rlcihwcml2LVxcdTAwM2V0YzYsIE9BX1RDNl9SRUdfQ09ORklHMiwgXFx1MDAyNnZhbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtMjU2LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy0yNjMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM6MjY0OlxcdHJldHVybiBvYV90YzZfd3JpdGVfcmVnaXN0ZXIocHJpdi1cXHUwMDNldGM2LCBPQV9UQzZfUkVHX0NPTkZJRzIsIHZhbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtMjY1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jPTM0MT1zdGF0aWMgdm9pZCBhZGluMTE0MF9zdGF0c193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTM1MS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShhZGluMTE0MF9zdGF0X3JlZ3MpOyBpKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYzozNTI6XFx0XFx0cmV0ID0gb2FfdGM2X3JlYWRfcmVnaXN0ZXJfbW1zKHByaXYtXFx1MDAzZXRjNiwgT0FfVEM2X01BQ19NTVMxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTM1My1cXHRcXHRcXHRcXHRcXHQgICAgICAgYWRpbjExNDBfc3RhdF9yZWdzW2ldLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM9MzY2PXN0YXRpYyBpbnQgYWRpbjExNDBfY29uZmlndXJlKHN0cnVjdCBhZGluMTE0MF9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtMzc1LVxcdC8qIERpc2FibGUgTUFDIGxvb3BiYWNrICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM6Mzc2OlxcdHJldCA9IG9hX3RjNl93cml0ZV9yZWdpc3Rlcl9tbXMocHJpdi1cXHUwMDNldGM2LCBPQV9UQzZfTUFDX01NUzEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtMzc3LVxcdFxcdFxcdFxcdFxcdEFESU4xMTQwX01BQ19QMV9MT09QX0FERFJfUkVHLCAweDApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtMzgwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jOjM4MTpcXHRyZXQgPSBvYV90YzZfcmVhZF9yZWdpc3Rlcihwcml2LVxcdTAwM2V0YzYsIE9BX1RDNl9SRUdfQ09ORklHMiwgXFx1MDAyNnJlZ192YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTM4Mi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtMzg2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jOjM4NzpcXHRyZXQgPSBvYV90YzZfd3JpdGVfcmVnaXN0ZXIocHJpdi1cXHUwMDNldGM2LCBPQV9UQzZfUkVHX0NPTkZJRzIsIHJlZ192YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTM4OC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM9NzA5PXN0YXRpYyBpbnQgYWRpbjExNDBfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTcyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYzo3MjU6XFx0dGM2X3F1aXJrcy5xdWlya19mbGFncyA9IE9BX1RDNl9CUk9LRU5fUEhZO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTcyNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L0tjb25maWc9OD1jb25maWcgTEFOODY1WFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvS2NvbmZpZy0xMC1cXHRkZXBlbmRzIG9uIFNQSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L0tjb25maWc6MTE6XFx0c2VsZWN0IE9BX1RDNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L0tjb25maWctMTItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jPTMzMz1zdGF0aWMgaW50IGxhbjg2NXhfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjM1MDpcXHR0YzZfcXVpcmtzLnF1aXJrX2ZsYWdzID0gT0FfVEM2X1BIWV9JTlQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM1MS1cXHRwcml2LVxcdTAwM2V0YzYgPSBvYV90YzZfaW5pdChzcGksIG5ldGRldiwgXFx1MDAyNnRjNl9xdWlya3MpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTctLyogQ29udHJvbCBjb21tYW5kIGhlYWRlciAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjE4OiNkZWZpbmUgT0FfVEM2X0NUUkxfSEVBREVSX0RBVEFfTk9UX0NUUkxcXHRCSVQoMzEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTk6I2RlZmluZSBPQV9UQzZfQ1RSTF9IRUFERVJfV1JJVEVfTk9UX1JFQURcXHRCSVQoMjkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MjA6I2RlZmluZSBPQV9UQzZfQ1RSTF9IRUFERVJfTUVNX01BUF9TRUxFQ1RPUlxcdEdFTk1BU0soMjcsIDI0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjIxOiNkZWZpbmUgT0FfVEM2X0NUUkxfSEVBREVSX0FERFJcXHRcXHRcXHRHRU5NQVNLKDIzLCA4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjIyOiNkZWZpbmUgT0FfVEM2X0NUUkxfSEVBREVSX0xFTkdUSFxcdFxcdEdFTk1BU0soNywgMSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoyMzojZGVmaW5lIE9BX1RDNl9DVFJMX0hFQURFUl9QQVJJVFlcXHRcXHRCSVQoMClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0yNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0yNS0vKiBEYXRhIGhlYWRlciAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjI2OiNkZWZpbmUgT0FfVEM2X0RBVEFfSEVBREVSX0RBVEFfTk9UX0NUUkxcXHRCSVQoMzEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6Mjc6I2RlZmluZSBPQV9UQzZfREFUQV9IRUFERVJfREFUQV9WQUxJRFxcdFxcdEJJVCgyMSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoyODojZGVmaW5lIE9BX1RDNl9EQVRBX0hFQURFUl9TVEFSVF9WQUxJRFxcdFxcdEJJVCgyMClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoyOTojZGVmaW5lIE9BX1RDNl9EQVRBX0hFQURFUl9TVEFSVF9XT1JEX09GRlNFVFxcdEdFTk1BU0soMTksIDE2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjMwOiNkZWZpbmUgT0FfVEM2X0RBVEFfSEVBREVSX0VORF9WQUxJRFxcdFxcdEJJVCgxNClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzozMTojZGVmaW5lIE9BX1RDNl9EQVRBX0hFQURFUl9FTkRfQllURV9PRkZTRVRcXHRHRU5NQVNLKDEzLCA4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjMyOiNkZWZpbmUgT0FfVEM2X0RBVEFfSEVBREVSX1BBUklUWVxcdFxcdEJJVCgwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTM0LS8qIERhdGEgZm9vdGVyICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MzU6I2RlZmluZSBPQV9UQzZfREFUQV9GT09URVJfRVhURU5ERURfU1RTXFx0XFx0QklUKDMxKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjM2OiNkZWZpbmUgT0FfVEM2X0RBVEFfRk9PVEVSX1JYRF9IRUFERVJfQkFEXFx0QklUKDMwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjM3OiNkZWZpbmUgT0FfVEM2X0RBVEFfRk9PVEVSX0NPTkZJR19TWU5DXFx0XFx0QklUKDI5KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjM4OiNkZWZpbmUgT0FfVEM2X0RBVEFfRk9PVEVSX1JYX0NIVU5LU1xcdFxcdEdFTk1BU0soMjgsIDI0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjM5OiNkZWZpbmUgT0FfVEM2X0RBVEFfRk9PVEVSX0RBVEFfVkFMSURcXHRcXHRCSVQoMjEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NDA6I2RlZmluZSBPQV9UQzZfREFUQV9GT09URVJfU1RBUlRfVkFMSURcXHRcXHRCSVQoMjApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NDE6I2RlZmluZSBPQV9UQzZfREFUQV9GT09URVJfU1RBUlRfV09SRF9PRkZTRVRcXHRHRU5NQVNLKDE5LCAxNilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo0MjojZGVmaW5lIE9BX1RDNl9EQVRBX0ZPT1RFUl9FTkRfVkFMSURcXHRcXHRCSVQoMTQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NDM6I2RlZmluZSBPQV9UQzZfREFUQV9GT09URVJfRU5EX0JZVEVfT0ZGU0VUXFx0R0VOTUFTSygxMywgOClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo0NDojZGVmaW5lIE9BX1RDNl9EQVRBX0ZPT1RFUl9UWF9DUkVESVRTXFx0XFx0R0VOTUFTSyg1LCAxKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTQ1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjQ2OiNkZWZpbmUgT0FfVEM2X0NUUkxfUFJPVF9SRVBMWV9TSVpFXFx0XFx0NFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjQ3OiNkZWZpbmUgT0FfVEM2X0NUUkxfSEVBREVSX1NJWkVcXHRcXHRcXHQ0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NDg6I2RlZmluZSBPQV9UQzZfQ1RSTF9SRUdfVkFMVUVfU0laRVxcdFxcdDRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo0OTojZGVmaW5lIE9BX1RDNl9DVFJMX0lHTk9SRURfU0laRVxcdFxcdDRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo1MDojZGVmaW5lIE9BX1RDNl9DVFJMX01BWF9SRUdJU1RFUlNcXHRcXHQxMjhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo1MTojZGVmaW5lIE9BX1RDNl9DVFJMX1NQSV9CVUZfU0laRVxcdChPQV9UQzZfQ1RSTF9IRUFERVJfU0laRSArXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjUyOlxcdFxcdFxcdFxcdFxcdChPQV9UQzZfQ1RSTF9NQVhfUkVHSVNURVJTICpcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NTM6XFx0XFx0XFx0XFx0XFx0KE9BX1RDNl9DVFJMX1JFR19WQUxVRV9TSVpFICtcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NTQ6XFx0XFx0XFx0XFx0XFx0T0FfVEM2X0NUUkxfUFJPVF9SRVBMWV9TSVpFKSkgK1xcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo1NTpcXHRcXHRcXHRcXHRcXHRPQV9UQzZfQ1RSTF9JR05PUkVEX1NJWkUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NTc6I2RlZmluZSBPQV9UQzZfQ0hVTktfUEFZTE9BRF9TSVpFXFx0XFx0NjRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo1ODojZGVmaW5lIE9BX1RDNl9EQVRBX0hFQURFUl9TSVpFXFx0XFx0XFx0NFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjU5OiNkZWZpbmUgT0FfVEM2X0NIVU5LX1NJWkVcXHRcXHRcXHQoT0FfVEM2X0RBVEFfSEVBREVSX1NJWkUgK1xcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo2MDpcXHRcXHRcXHRcXHRcXHRcXHRPQV9UQzZfQ0hVTktfUEFZTE9BRF9TSVpFKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjYxOiNkZWZpbmUgT0FfVEM2X01BWF9UWF9DSFVOS1NcXHRcXHRcXHQ0OFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjYyOiNkZWZpbmUgT0FfVEM2X1NQSV9EQVRBX0JVRl9TSVpFXFx0XFx0KE9BX1RDNl9NQVhfVFhfQ0hVTktTICpcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NjM6XFx0XFx0XFx0XFx0XFx0XFx0T0FfVEM2X0NIVU5LX1NJWkUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNjQtI2RlZmluZSBTVEFUVVMwX1JFU0VUQ19QT0xMX0RFTEFZXFx0XFx0MTAwMFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6Njc6I2RlZmluZSBPQV9UQzZfUkVHX01NU19NQVNLXFx0XFx0R0VOTUFTSygxOSwgMTYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNjgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz05Nz1lbnVtIG9hX3RjNl9oZWFkZXJfdHlwZSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6OTg6XFx0T0FfVEM2X0NUUkxfSEVBREVSLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjk5OlxcdE9BX1RDNl9EQVRBX0hFQURFUixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMDAtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTEwMj1lbnVtIG9hX3RjNl9yZWdpc3Rlcl9vcCB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTAzOlxcdE9BX1RDNl9DVFJMX1JFR19SRUFEID0gMCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMDQ6XFx0T0FfVEM2X0NUUkxfUkVHX1dSSVRFID0gMSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMDUtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTEwNz1lbnVtIG9hX3RjNl9kYXRhX3ZhbGlkX2luZm8ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjEwODpcXHRPQV9UQzZfREFUQV9JTlZBTElELFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjEwOTpcXHRPQV9UQzZfREFUQV9WQUxJRCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMTAtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTExMj1lbnVtIG9hX3RjNl9kYXRhX3N0YXJ0X3ZhbGlkX2luZm8ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjExMzpcXHRPQV9UQzZfREFUQV9TVEFSVF9JTlZBTElELFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjExNDpcXHRPQV9UQzZfREFUQV9TVEFSVF9WQUxJRCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMTUtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTExNz1lbnVtIG9hX3RjNl9kYXRhX2VuZF92YWxpZF9pbmZvIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMTg6XFx0T0FfVEM2X0RBVEFfRU5EX0lOVkFMSUQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTE5OlxcdE9BX1RDNl9EQVRBX0VORF9WQUxJRCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMjAtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTEyMj1zdGF0aWMgaW50IG9hX3RjNl9zcGlfdHJhbnNmZXIoc3RydWN0IG9hX3RjNiAqdGM2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTI3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjEyODpcXHRpZiAoaGVhZGVyX3R5cGUgPT0gT0FfVEM2X0RBVEFfSEVBREVSKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTI5LVxcdFxcdHhmZXIudHhfYnVmID0gdGM2LVxcdTAwM2VzcGlfZGF0YV90eF9idWY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz0xNTY9c3RhdGljIF9fYmUzMiBvYV90YzZfcHJlcGFyZV9jdHJsX2hlYWRlcih1MzIgYWRkciwgdTggbGVuZ3RoLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTYwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjE2MTpcXHRoZWFkZXIgPSBGSUVMRF9QUkVQKE9BX1RDNl9DVFJMX0hFQURFUl9EQVRBX05PVF9DVFJMLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjE2MjpcXHRcXHRcXHQgICAgT0FfVEM2X0NUUkxfSEVBREVSKSB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTYzOlxcdFxcdCBGSUVMRF9QUkVQKE9BX1RDNl9DVFJMX0hFQURFUl9XUklURV9OT1RfUkVBRCwgcmVnX29wKSB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTY0OlxcdFxcdCBGSUVMRF9QUkVQKE9BX1RDNl9DVFJMX0hFQURFUl9NRU1fTUFQX1NFTEVDVE9SLCBhZGRyIFxcdTAwM2VcXHUwMDNlIDE2KSB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTY1OlxcdFxcdCBGSUVMRF9QUkVQKE9BX1RDNl9DVFJMX0hFQURFUl9BRERSLCBhZGRyKSB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTY2OlxcdFxcdCBGSUVMRF9QUkVQKE9BX1RDNl9DVFJMX0hFQURFUl9MRU5HVEgsIGxlbmd0aCAtIDEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjE2NzpcXHRoZWFkZXIgfD0gRklFTERfUFJFUChPQV9UQzZfQ1RSTF9IRUFERVJfUEFSSVRZLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTE2OC1cXHRcXHRcXHQgICAgIG9hX3RjNl9nZXRfcGFyaXR5KGhlYWRlcikpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9MTczPXN0YXRpYyB2b2lkIG9hX3RjNl91cGRhdGVfY3RybF93cml0ZV9kYXRhKHN0cnVjdCBvYV90YzYgKnRjNiwgdTMyIHZhbHVlW10sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xNzUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjE3NjpcXHRfX2JlMzIgKnR4X2J1ZiA9IHRjNi1cXHUwMDNlc3BpX2N0cmxfdHhfYnVmICsgT0FfVEM2X0NUUkxfSEVBREVSX1NJWkU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTc3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9MTg1PXN0YXRpYyB1MTYgb2FfdGM2X2NhbGN1bGF0ZV9jdHJsX2J1Zl9zaXplKHU4IGxlbmd0aCwgYm9vbCBjdHJsX3Byb3QpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTg2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxODc6XFx0dTMyIHJlcGx5X3NpemUgPSBPQV9UQzZfQ1RSTF9SRUdfVkFMVUVfU0laRTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xODgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTg5LVxcdGlmIChjdHJsX3Byb3QpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTkwOlxcdFxcdHJlcGx5X3NpemUgKz0gT0FfVEM2X0NUUkxfUFJPVF9SRVBMWV9TSVpFO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTE5MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTE5NS1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxOTY6XFx0cmV0dXJuIE9BX1RDNl9DVFJMX0hFQURFUl9TSVpFICsgcmVwbHlfc2l6ZSAqIGxlbmd0aCArXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTk3OlxcdCAgICAgICBPQV9UQzZfQ1RSTF9JR05PUkVEX1NJWkU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTk4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTIwMD1zdGF0aWMgdm9pZCBvYV90YzZfcHJlcGFyZV9jdHJsX3NwaV9idWYoc3RydWN0IG9hX3RjNiAqdGM2LCB1MzIgYWRkcmVzcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTIwOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoyMTA6XFx0aWYgKHJlZ19vcCA9PSBPQV9UQzZfQ1RSTF9SRUdfV1JJVEUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMjExLVxcdFxcdG9hX3RjNl91cGRhdGVfY3RybF93cml0ZV9kYXRhKHRjNiwgdmFsdWUsIGxlbmd0aCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz0yMTQ9c3RhdGljIGludCBvYV90YzZfY2hlY2tfY3RybF93cml0ZV9yZXBseShzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4IHNpemUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0yMTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MjE5OlxcdHJ4X2J1ZiArPSBPQV9UQzZfQ1RSTF9JR05PUkVEX1NJWkU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMjIwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMjIzLVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjIyNDpcXHRpZiAobWVtY21wKHR4X2J1ZiwgcnhfYnVmLCBzaXplIC0gT0FfVEM2X0NUUkxfSUdOT1JFRF9TSVpFKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0yMjUtXFx0XFx0cmV0dXJuIC1FUFJPVE87XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz0yMzA9c3RhdGljIGludCBvYV90YzZfY2hlY2tfY3RybF9yZWFkX3JlcGx5KHN0cnVjdCBvYV90YzYgKnRjNiwgdTggbGVuZ3RoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTIzMS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MjMyOlxcdF9fYmUzMiAqcnhfYnVmID0gdGM2LVxcdTAwM2VzcGlfY3RybF9yeF9idWYgKyBPQV9UQzZfQ1RSTF9JR05PUkVEX1NJWkU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMjMzLVxcdF9fYmUzMiAqdHhfYnVmID0gdGM2LVxcdTAwM2VzcGlfY3RybF90eF9idWY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz0yNjA9c3RhdGljIHZvaWQgb2FfdGM2X2NvcHlfY3RybF9yZWFkX2RhdGEoc3RydWN0IG9hX3RjNiAqdGM2LCB1MzIgdmFsdWVbXSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTI2Mi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MjYzOlxcdF9fYmUzMiAqcnhfYnVmID0gdGM2LVxcdTAwM2VzcGlfY3RybF9yeF9idWYgKyBPQV9UQzZfQ1RSTF9JR05PUkVEX1NJWkUgK1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjI2NDpcXHRcXHRcXHQgT0FfVEM2X0NUUkxfSEVBREVSX1NJWkU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMjY1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9Mjc1PXN0YXRpYyBpbnQgb2FfdGM2X3BlcmZvcm1fY3RybChzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHUzMiBhZGRyZXNzLCB1MzIgdmFsdWVbXSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTI4Ni1cXHQvKiBQZXJmb3JtIFNQSSB0cmFuc2ZlciAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjI4NzpcXHRyZXQgPSBvYV90YzZfc3BpX3RyYW5zZmVyKHRjNiwgT0FfVEM2X0NUUkxfSEVBREVSLCBzaXplKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0yODgtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMjk0LVxcdC8qIENoZWNrIGVjaG9lZC9yZWNlaXZlZCBjb250cm9sIHdyaXRlIGNvbW1hbmQgcmVwbHkgZm9yIGVycm9ycyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjI5NTpcXHRpZiAocmVnX29wID09IE9BX1RDNl9DVFJMX1JFR19XUklURSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0yOTYtXFx0XFx0cmV0dXJuIG9hX3RjNl9jaGVja19jdHJsX3dyaXRlX3JlcGx5KHRjNiwgc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz0zMTk9aW50IG9hX3RjNl9yZWFkX3JlZ2lzdGVycyhzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHUzMiBhZGRyZXNzLCB1MzIgdmFsdWVbXSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTMyMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzozMjQ6XFx0aWYgKCFsZW5ndGggfHwgbGVuZ3RoIFxcdTAwM2UgT0FfVEM2X0NUUkxfTUFYX1JFR0lTVEVSUykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTMyNS1cXHRcXHRkZXZfZXJyKFxcdTAwMjZ0YzYtXFx1MDAzZXNwaS1cXHUwMDNlZGV2LCBcXFwiSW52YWxpZCByZWdpc3RlciBsZW5ndGggcGFyYW1ldGVyXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTMzMC1cXHRyZXQgPSBvYV90YzZfcGVyZm9ybV9jdHJsKHRjNiwgYWRkcmVzcywgdmFsdWUsIGxlbmd0aCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzozMzE6XFx0XFx0XFx0XFx0ICBPQV9UQzZfQ1RSTF9SRUdfUkVBRCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMzMyLVxcdG11dGV4X3VubG9jayhcXHUwMDI2dGM2LVxcdTAwM2VzcGlfY3RybF9sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTM2Mj1pbnQgb2FfdGM2X3JlYWRfcmVnaXN0ZXJfbW1zKHN0cnVjdCBvYV90YzYgKnRjNiwgdTggbW1zLCB1MTYgYWRkcmVzcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTM2Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzozNjc6XFx0bW1zX3JlZyA9IEZJRUxEX1BSRVAoT0FfVEM2X1JFR19NTVNfTUFTSywgbW1zKSB8IGFkZHJlc3M7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMzY4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9Mzg0PWludCBvYV90YzZfd3JpdGVfcmVnaXN0ZXJzKHN0cnVjdCBvYV90YzYgKnRjNiwgdTMyIGFkZHJlc3MsIHUzMiB2YWx1ZVtdLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMzg4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjM4OTpcXHRpZiAoIWxlbmd0aCB8fCBsZW5ndGggXFx1MDAzZSBPQV9UQzZfQ1RSTF9NQVhfUkVHSVNURVJTKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMzkwLVxcdFxcdGRldl9lcnIoXFx1MDAyNnRjNi1cXHUwMDNlc3BpLVxcdTAwM2VkZXYsIFxcXCJJbnZhbGlkIHJlZ2lzdGVyIGxlbmd0aCBwYXJhbWV0ZXJcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMzk1LVxcdHJldCA9IG9hX3RjNl9wZXJmb3JtX2N0cmwodGM2LCBhZGRyZXNzLCB2YWx1ZSwgbGVuZ3RoLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjM5NjpcXHRcXHRcXHRcXHQgIE9BX1RDNl9DVFJMX1JFR19XUklURSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMzk3LVxcdG11dGV4X3VubG9jayhcXHUwMDI2dGM2LVxcdTAwM2VzcGlfY3RybF9sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTQyNz1pbnQgb2FfdGM2X3dyaXRlX3JlZ2lzdGVyX21tcyhzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4IG1tcywgdTE2IGFkZHJlc3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy00MzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NDMyOlxcdG1tc19yZWcgPSBGSUVMRF9QUkVQKE9BX1RDNl9SRUdfTU1TX01BU0ssIG1tcykgfCBhZGRyZXNzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTQzMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTQzOD1zdGF0aWMgaW50IG9hX3RjNl9jaGVja19waHlfcmVnX2RpcmVjdF9hY2Nlc3NfY2FwYWJpbGl0eShzdHJ1Y3Qgb2FfdGM2ICp0YzYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy00NDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NDQzOlxcdHJldCA9IG9hX3RjNl9yZWFkX3JlZ2lzdGVyKHRjNiwgT0FfVEM2X1JFR19TVERDQVAsIFxcdTAwMjZyZWd2YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTQ0NC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNDQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjQ0NzpcXHRpZiAoIShyZWd2YWwgXFx1MDAyNiBPQV9UQzZfU1REQ0FQX0RJUkVDVF9QSFlfUkVHX0FDQ0VTUykpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNDQ4LVxcdFxcdHJldHVybiAtRU5PREVWO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9NDU4PXN0YXRpYyBpbnQgb2FfdGM2X21kaW9idXNfcmVhZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZ251bSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTQ2My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo0NjQ6XFx0cmV0ID0gb2FfdGM2X3JlYWRfcmVnaXN0ZXIodGM2LCBPQV9UQzZfUEhZX1NURF9SRUdfQUREUl9CQVNFIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo0NjU6XFx0XFx0XFx0XFx0ICAgKHJlZ251bSBcXHUwMDI2IE9BX1RDNl9QSFlfU1REX1JFR19BRERSX01BU0spLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTQ2Ni1cXHRcXHRcXHRcXHQgICBcXHUwMDI2cmVndmFsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTQ3Mz1zdGF0aWMgaW50IG9hX3RjNl9tZGlvYnVzX3dyaXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgcmVnbnVtLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNDc3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjQ3ODpcXHRyZXR1cm4gb2FfdGM2X3dyaXRlX3JlZ2lzdGVyKHRjNiwgT0FfVEM2X1BIWV9TVERfUkVHX0FERFJfQkFTRSB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NDc5OlxcdFxcdFxcdFxcdCAgICAgKHJlZ251bSBcXHUwMDI2IE9BX1RDNl9QSFlfU1REX1JFR19BRERSX01BU0spLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTQ4MC1cXHRcXHRcXHRcXHQgICAgIHZhbCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz00ODM9c3RhdGljIGludCBvYV90YzZfZ2V0X3BoeV9jNDVfbW1zKGludCBkZXZudW0pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy00ODYtXFx0Y2FzZSBNRElPX01NRF9QQ1M6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NDg3OlxcdFxcdHJldHVybiBPQV9UQzZfUEhZX0M0NV9QQ1NfTU1TMjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy00ODgtXFx0Y2FzZSBNRElPX01NRF9QTUFQTUQ6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NDg5OlxcdFxcdHJldHVybiBPQV9UQzZfUEhZX0M0NV9QTUFfUE1EX01NUzM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNDkwLVxcdGNhc2UgTURJT19NTURfVkVORDI6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NDkxOlxcdFxcdHJldHVybiBPQV9UQzZfUEhZX0M0NV9WU19QTENBX01NUzQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNDkyLVxcdGNhc2UgTURJT19NTURfQU46XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NDkzOlxcdFxcdHJldHVybiBPQV9UQzZfUEhZX0M0NV9BVVRPX05FR19NTVM1O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTQ5NC1cXHRjYXNlIE1ESU9fTU1EX1BPV0VSX1VOSVQ6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NDk1OlxcdFxcdHJldHVybiBPQV9UQzZfUEhZX0M0NV9QT1dFUl9VTklUX01NUzY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNDk2LVxcdGRlZmF1bHQ6XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz01NzM9c3RhdGljIGludCBvYV90YzZfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3Qgb2FfdGM2ICp0YzYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy02MDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NjA0OlxcdGlmICh0YzYtXFx1MDAzZXF1aXJrX2ZsYWdzIFxcdTAwMjYgT0FfVEM2X1BIWV9JTlQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy02MDUtXFx0XFx0cmV0ID0gb2FfdGM2X3BoeV9pcnFfc2V0dXAodGM2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTYyMC1cXHRcXHRuZXRkZXZfZXJyKHRjNi1cXHUwMDNlbmV0ZGV2LCBcXFwiQ291bGQgbm90IHJlZ2lzdGVyIE1ESU8gYnVzXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo2MjE6XFx0XFx0aWYgKHRjNi1cXHUwMDNlcXVpcmtfZmxhZ3MgXFx1MDAyNiBPQV9UQzZfUEhZX0lOVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy02MjItXFx0XFx0XFx0b2FfdGM2X3BoeV9pcnFfdGVhcmRvd24odGM2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTYzMD1zdGF0aWMgdm9pZCBvYV90YzZfbWRpb2J1c191bnJlZ2lzdGVyKHN0cnVjdCBvYV90YzYgKnRjNilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTYzMi1cXHRtZGlvYnVzX3VucmVnaXN0ZXIodGM2LVxcdTAwM2VtZGlvYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo2MzM6XFx0aWYgKHRjNi1cXHUwMDNlcXVpcmtfZmxhZ3MgXFx1MDAyNiBPQV9UQzZfUEhZX0lOVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy02MzQtXFx0XFx0b2FfdGM2X3BoeV9pcnFfdGVhcmRvd24odGM2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTYzOD1zdGF0aWMgaW50IG9hX3RjNl9waHlfaW5pdChzdHJ1Y3Qgb2FfdGM2ICp0YzYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy02NDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NjQyOlxcdGlmICh0YzYtXFx1MDAzZXF1aXJrX2ZsYWdzIFxcdTAwMjYgT0FfVEM2X0JST0tFTl9QSFkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNjQzLVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9Njc5PXN0YXRpYyB2b2lkIG9hX3RjNl9waHlfZXhpdChzdHJ1Y3Qgb2FfdGM2ICp0YzYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNjgwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo2ODE6XFx0aWYgKHRjNi1cXHUwMDNlcXVpcmtfZmxhZ3MgXFx1MDAyNiBPQV9UQzZfQlJPS0VOX1BIWSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy02ODItXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9Njg4PXN0YXRpYyBpbnQgb2FfdGM2X3JlYWRfc3RhdHVzMChzdHJ1Y3Qgb2FfdGM2ICp0YzYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy02OTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NjkzOlxcdHJldCA9IG9hX3RjNl9yZWFkX3JlZ2lzdGVyKHRjNiwgT0FfVEM2X1JFR19TVEFUVVMwLCBcXHUwMDI2cmVndmFsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy02OTQtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9NzAzPXN0YXRpYyBpbnQgb2FfdGM2X3N3X3Jlc2V0X21hY3BoeShzdHJ1Y3Qgb2FfdGM2ICp0YzYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNzA0LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo3MDU6XFx0dTMyIHJlZ3ZhbCA9IE9BX1RDNl9SRVNFVF9TV1JFU0VUO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTcwNi1cXHRpbnQgcmV0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTcwNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo3MDg6XFx0cmV0ID0gb2FfdGM2X3dyaXRlX3JlZ2lzdGVyKHRjNiwgT0FfVEM2X1JFR19SRVNFVCwgcmVndmFsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy03MDktXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTcxMy1cXHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQob2FfdGM2X3JlYWRfc3RhdHVzMCwgdGM2LCByZWd2YWwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NzE0OlxcdFxcdFxcdFxcdCByZWd2YWwgXFx1MDAyNiBPQV9UQzZfU1RBVFVTMF9SRVNFVEMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNzE1LVxcdFxcdFxcdFxcdCBTVEFUVVMwX1JFU0VUQ19QT0xMX0RFTEFZLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNzIwLVxcdC8qIENsZWFyIHRoZSByZXNldCBjb21wbGV0ZSBzdGF0dXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo3MjE6XFx0cmV0dXJuIG9hX3RjNl93cml0ZV9yZWdpc3Rlcih0YzYsIE9BX1RDNl9SRUdfU1RBVFVTMCwgcmVndmFsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy03MjItfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9NzI0PXN0YXRpYyBpbnQgb2FfdGM2X3VubWFza19pbnRlcnJ1cHRzKHN0cnVjdCBvYV90YzYgKnRjNilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTcyOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo3Mjk6XFx0cmV0ID0gb2FfdGM2X3JlYWRfcmVnaXN0ZXIodGM2LCBPQV9UQzZfUkVHX0lOVF9NQVNLMCwgXFx1MDAyNnJlZ3ZhbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNzMwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy03MzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NzMzOlxcdHJlZ3ZhbCBcXHUwMDI2PSB+KE9BX1RDNl9JTlRfTUFTSzBfUEhZX0lOVF9NQVNLIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo3MzQ6XFx0XFx0ICAgIE9BX1RDNl9JTlRfTUFTSzBfVFhfUFJPVE9DT0xfRVJSX01BU0sgfFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjczNTpcXHRcXHQgICAgT0FfVEM2X0lOVF9NQVNLMF9SWF9CVUZGRVJfT1ZFUkZMT1dfRVJSX01BU0sgfFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjczNjpcXHRcXHQgICAgT0FfVEM2X0lOVF9NQVNLMF9MT1NTX09GX0ZSQU1FX0VSUl9NQVNLIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo3Mzc6XFx0XFx0ICAgIE9BX1RDNl9JTlRfTUFTSzBfSEVBREVSX0VSUl9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy03MzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NzM5OlxcdHJldHVybiBvYV90YzZfd3JpdGVfcmVnaXN0ZXIodGM2LCBPQV9UQzZfUkVHX0lOVF9NQVNLMCwgcmVndmFsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy03NDAtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9NzQyPXN0YXRpYyBpbnQgb2FfdGM2X2VuYWJsZV9kYXRhX3RyYW5zZmVyKHN0cnVjdCBvYV90YzYgKnRjNilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTc0Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo3NDc6XFx0cmV0ID0gb2FfdGM2X3JlYWRfcmVnaXN0ZXIodGM2LCBPQV9UQzZfUkVHX0NPTkZJRzAsIFxcdTAwMjZ2YWx1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNzQ4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy03NTEtXFx0LyogRW5hYmxlIGNvbmZpZ3VyYXRpb24gc3luY2hyb25pemF0aW9uIGZvciBkYXRhIHRyYW5zZmVyICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NzUyOlxcdHZhbHVlIHw9IE9BX1RDNl9DT05GSUcwX1NZTkM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNzUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjc1NDpcXHRyZXR1cm4gb2FfdGM2X3dyaXRlX3JlZ2lzdGVyKHRjNiwgT0FfVEM2X1JFR19DT05GSUcwLCB2YWx1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNzU1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTgyNT1zdGF0aWMgdm9pZCBvYV90YzZfZGlzYWJsZV90cmFmZmljKHN0cnVjdCBvYV90YzYgKnRjNilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy04MjYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjgyNzpcXHR1MzIgcmVndmFsID0gT0FfVEM2X0lOVF9NQVNLMF9BTExfSU5URVJSVVBUUztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy04MjgtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTg0MC1cXHRvYV90YzZfZnJlZV9vbmdvaW5nX3NrYnModGM2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo4NDE6XFx0b2FfdGM2X3dyaXRlX3JlZ2lzdGVyKHRjNiwgT0FfVEM2X1JFR19JTlRfTUFTSzAsIHJlZ3ZhbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6ODQyOlxcdG9hX3RjNl9yZWFkX3JlZ2lzdGVyKHRjNiwgT0FfVEM2X1JFR19TVEFUVVMwLCBcXHUwMDI2cmVndmFsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo4NDM6XFx0b2FfdGM2X3dyaXRlX3JlZ2lzdGVyKHRjNiwgT0FfVEM2X1JFR19TVEFUVVMwLCByZWd2YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTg0NC1cXHRkZXZfZXJyKFxcdTAwMjZ0YzYtXFx1MDAzZXNwaS1cXHUwMDNlZGV2LCBcXFwiRGV2aWNlIGludGVycnVwdCBkaXNhYmxlZCB0byBhdm9pZCBpbnRlcnJ1cHQgc3Rvcm1cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTg0Nz1zdGF0aWMgaW50IG9hX3RjNl9wcm9jZXNzX2V4dGVuZGVkX3N0YXR1cyhzdHJ1Y3Qgb2FfdGM2ICp0YzYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy04NTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6ODUyOlxcdHJldCA9IG9hX3RjNl9yZWFkX3JlZ2lzdGVyKHRjNiwgT0FfVEM2X1JFR19TVEFUVVMwLCBcXHUwMDI2dmFsdWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTg1My1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy04NjYtXFx0LyogQ2xlYXIgdGhlIGVycm9yIGludGVycnVwdHMgc3RhdHVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6ODY3OlxcdHJldCA9IG9hX3RjNl93cml0ZV9yZWdpc3Rlcih0YzYsIE9BX1RDNl9SRUdfU1RBVFVTMCwgdmFsdWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTg2OC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy04NzgtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6ODc5OlxcdGlmICgodGM2LVxcdTAwM2VxdWlya19mbGFncyBcXHUwMDI2IE9BX1RDNl9QSFlfSU5UKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjg4MDpcXHQgICAgRklFTERfR0VUKE9BX1RDNl9TVEFUVVMwX1BIWV9JTlQsIHZhbHVlKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy04ODEtXFx0XFx0aGFuZGxlX25lc3RlZF9pcnEodGM2LVxcdTAwM2VwaHlfdmlycSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtODgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjg4MzpcXHRpZiAoRklFTERfR0VUKE9BX1RDNl9TVEFUVVMwX1JYX0JVRkZFUl9PVkVSRkxPV19FUlJPUiwgdmFsdWUpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtODg0LVxcdFxcdG9hX3RjNl9sb29rX2Zvcl9uZXdfZnJhbWUodGM2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTg4OC1cXHR9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6ODg5OlxcdGlmIChGSUVMRF9HRVQoT0FfVEM2X1NUQVRVUzBfVFhfUFJPVE9DT0xfRVJST1IsIHZhbHVlKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTg5MC1cXHRcXHRuZXRkZXZfZXJyKHRjNi1cXHUwMDNlbmV0ZGV2LCBcXFwiVHJhbnNtaXQgcHJvdG9jb2wgZXJyb3JcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtODk1LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjg5NjpcXHRpZiAoRklFTERfR0VUKE9BX1RDNl9TVEFUVVMwX0xPU1NfT0ZfRlJBTUVfRVJST1IsIHZhbHVlKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTg5Ny1cXHRcXHRuZXRkZXZfZXJyKHRjNi1cXHUwMDNlbmV0ZGV2LCBcXFwiTG9zcyBvZiBmcmFtZSBlcnJvclxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy04OTktXFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjkwMDpcXHRpZiAoRklFTERfR0VUKE9BX1RDNl9TVEFUVVMwX0hFQURFUl9FUlJPUiwgdmFsdWUpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtOTAxLVxcdFxcdG5ldGRldl9lcnIodGM2LVxcdTAwM2VuZXRkZXYsIFxcXCJIZWFkZXIgZXJyb3JcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9OTA4PXN0YXRpYyBpbnQgb2FfdGM2X3Byb2Nlc3NfcnhfY2h1bmtfZm9vdGVyKHN0cnVjdCBvYV90YzYgKnRjNiwgdTMyIGZvb3RlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTkxNi1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo5MTc6XFx0dGM2LVxcdTAwM2V0eF9jcmVkaXRzID0gRklFTERfR0VUKE9BX1RDNl9EQVRBX0ZPT1RFUl9UWF9DUkVESVRTLCBmb290ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjkxODpcXHR0YzYtXFx1MDAzZXJ4X2NodW5rc19hdmFpbGFibGUgPSBGSUVMRF9HRVQoT0FfVEM2X0RBVEFfRk9PVEVSX1JYX0NIVU5LUyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy05MTktXFx0XFx0XFx0XFx0XFx0ICAgICBmb290ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTkyMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo5MjE6XFx0aWYgKEZJRUxEX0dFVChPQV9UQzZfREFUQV9GT09URVJfRVhURU5ERURfU1RTLCBmb290ZXIpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtOTIyLVxcdFxcdHJldCA9IG9hX3RjNl9wcm9jZXNzX2V4dGVuZGVkX3N0YXR1cyh0YzYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtOTMzLVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjkzNDpcXHRpZiAoRklFTERfR0VUKE9BX1RDNl9EQVRBX0ZPT1RFUl9SWERfSEVBREVSX0JBRCwgZm9vdGVyKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTkzNS1cXHRcXHRuZXRkZXZfZXJyKHRjNi1cXHUwMDNlbmV0ZGV2LCBcXFwiUnhkIGhlYWRlciBiYWQgZXJyb3JcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtOTM4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjkzOTpcXHRpZiAoIUZJRUxEX0dFVChPQV9UQzZfREFUQV9GT09URVJfQ09ORklHX1NZTkMsIGZvb3RlcikpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy05NDAtXFx0XFx0bmV0ZGV2X2Vycih0YzYtXFx1MDAzZW5ldGRldiwgXFxcIkNvbmZpZyB1bnN5bmMgZXJyb3JcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9MTA0Nz1zdGF0aWMgaW50IG9hX3RjNl9wcmNzX29uZ29pbmdfcnhfZnJhbWUoc3RydWN0IG9hX3RjNiAqdGM2LCB1OCAqcGF5bG9hZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTEwNTAtXFx0cmV0dXJuIG9hX3RjNl91cGRhdGVfcnhfc2tiKHRjNiwgcGF5bG9hZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMDUxOlxcdFxcdFxcdFxcdCAgICBPQV9UQzZfQ0hVTktfUEFZTE9BRF9TSVpFKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMDUyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTEwNTQ9c3RhdGljIGludCBvYV90YzZfcHJjc19yeF9jaHVua19wYXlsb2FkKHN0cnVjdCBvYV90YzYgKnRjNiwgdTggKmRhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMDU2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMDU3OlxcdHU4IHN0YXJ0X2J5dGVfb2Zmc2V0ID0gRklFTERfR0VUKE9BX1RDNl9EQVRBX0ZPT1RFUl9TVEFSVF9XT1JEX09GRlNFVCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMDU4LVxcdFxcdFxcdFxcdFxcdCBmb290ZXIpICogc2l6ZW9mKHUzMik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTA1OTpcXHR1OCBlbmRfYnl0ZV9vZmZzZXQgPSBGSUVMRF9HRVQoT0FfVEM2X0RBVEFfRk9PVEVSX0VORF9CWVRFX09GRlNFVCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMDYwLVxcdFxcdFxcdFxcdCAgICAgICBmb290ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjEwNjE6XFx0Ym9vbCBzdGFydF92YWxpZCA9IEZJRUxEX0dFVChPQV9UQzZfREFUQV9GT09URVJfU1RBUlRfVkFMSUQsIGZvb3Rlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTA2MjpcXHRib29sIGVuZF92YWxpZCA9IEZJRUxEX0dFVChPQV9UQzZfREFUQV9GT09URVJfRU5EX1ZBTElELCBmb290ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTEwNjMtXFx0dTE2IHNpemU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMDgxLVxcdGlmIChzdGFydF92YWxpZCBcXHUwMDI2XFx1MDAyNiAhZW5kX3ZhbGlkKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTA4MjpcXHRcXHRzaXplID0gT0FfVEM2X0NIVU5LX1BBWUxPQURfU0laRSAtIHN0YXJ0X2J5dGVfb2Zmc2V0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTEwODMtXFx0XFx0cmV0dXJuIG9hX3RjNl9wcmNzX3J4X2ZyYW1lX3N0YXJ0KHRjNixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTExMTQtXFx0XFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjExMTU6XFx0XFx0c2l6ZSA9IE9BX1RDNl9DSFVOS19QQVlMT0FEX1NJWkUgLSBzdGFydF9ieXRlX29mZnNldDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMTE2LVxcdFxcdHJldHVybiBvYV90YzZfcHJjc19yeF9mcmFtZV9zdGFydCh0YzYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz0xMTM1PXN0YXRpYyBpbnQgb2FfdGM2X3Byb2Nlc3Nfc3BpX2RhdGFfcnhfYnVmKHN0cnVjdCBvYV90YzYgKnRjNiwgdTE2IGxlbmd0aClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMTM2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMTM3OlxcdHUxNiBub19vZl9yeF9jaHVua3MgPSBsZW5ndGggLyBPQV9UQzZfQ0hVTktfU0laRTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMTM4LVxcdGJvb2wgcmV0cnkgPSBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTExNDQtXFx0XFx0LyogTGFzdCA0IGJ5dGVzIGluIGVhY2ggcmVjZWl2ZWQgY2h1bmsgY29uc2lzdCBmb290ZXIgaW5mbyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjExNDU6XFx0XFx0Zm9vdGVyID0gb2FfdGM2X2dldF9yeF9jaHVua19mb290ZXIodGM2LCBpICogT0FfVEM2X0NIVU5LX1NJWkUgK1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjExNDY6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIE9BX1RDNl9DSFVOS19QQVlMT0FEX1NJWkUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTExNDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMTU4LVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjExNTk6XFx0XFx0aWYgKEZJRUxEX0dFVChPQV9UQzZfREFUQV9GT09URVJfREFUQV9WQUxJRCwgZm9vdGVyKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTExNjAtXFx0XFx0XFx0dTggKnBheWxvYWQgPSB0YzYtXFx1MDAzZXNwaV9kYXRhX3J4X2J1ZiArIGkgKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjExNjE6XFx0XFx0XFx0XFx0ICAgICAgT0FfVEM2X0NIVU5LX1NJWkU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTE2Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTExOTY9c3RhdGljIF9fYmUzMiBvYV90YzZfcHJlcGFyZV9kYXRhX2hlYWRlcihib29sIGRhdGFfdmFsaWQsIGJvb2wgc3RhcnRfdmFsaWQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMTk4LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMTk5OlxcdHUzMiBoZWFkZXIgPSBGSUVMRF9QUkVQKE9BX1RDNl9EQVRBX0hFQURFUl9EQVRBX05PVF9DVFJMLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjEyMDA6XFx0XFx0XFx0XFx0T0FfVEM2X0RBVEFfSEVBREVSKSB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTIwMTpcXHRcXHQgICAgIEZJRUxEX1BSRVAoT0FfVEM2X0RBVEFfSEVBREVSX0RBVEFfVkFMSUQsIGRhdGFfdmFsaWQpIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMjAyOlxcdFxcdCAgICAgRklFTERfUFJFUChPQV9UQzZfREFUQV9IRUFERVJfU1RBUlRfVkFMSUQsIHN0YXJ0X3ZhbGlkKSB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTIwMzpcXHRcXHQgICAgIEZJRUxEX1BSRVAoT0FfVEM2X0RBVEFfSEVBREVSX0VORF9WQUxJRCwgZW5kX3ZhbGlkKSB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTIwNDpcXHRcXHQgICAgIEZJRUxEX1BSRVAoT0FfVEM2X0RBVEFfSEVBREVSX0VORF9CWVRFX09GRlNFVCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMjA1LVxcdFxcdFxcdFxcdGVuZF9ieXRlX29mZnNldCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTIwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMjA3OlxcdGhlYWRlciB8PSBGSUVMRF9QUkVQKE9BX1RDNl9EQVRBX0hFQURFUl9QQVJJVFksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTIwOC1cXHRcXHRcXHQgICAgIG9hX3RjNl9nZXRfcGFyaXR5KGhlYWRlcikpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9MTIxMz1zdGF0aWMgdm9pZCBvYV90YzZfYWRkX3R4X3NrYl90b19zcGlfYnVmKHN0cnVjdCBvYV90YzYgKnRjNilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMjE0LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMjE1OlxcdGVudW0gb2FfdGM2X2RhdGFfZW5kX3ZhbGlkX2luZm8gZW5kX3ZhbGlkID0gT0FfVEM2X0RBVEFfRU5EX0lOVkFMSUQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTIxNi1cXHRfX2JlMzIgKnR4X2J1ZiA9IHRjNi1cXHUwMDNlc3BpX2RhdGFfdHhfYnVmICsgdGM2LVxcdTAwM2VzcGlfZGF0YV90eF9idWZfb2Zmc2V0O1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODoyMjoxMS41NTkzOTM1NjVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTY1OTc5Mjg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgTUlDUk9DSElQX1QxU19QSFkgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiBgTUlDUk9DSElQX1QxU19QSFlgIGlzIGRlZmluZWQuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiBpdHMgbmF0dXJlIGFzIGEgUEhZIChwaHlzaWNhbCBsYXllcikgZHJpdmVyLCBpcyB0byBjaGVjayB0aGUgYEtjb25maWdgIGZpbGUgd2l0aGluIHRoZSBuZXR3b3JrIGRyaXZlcidzIGRpcmVjdG9yeS4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBsb29rIGluIGBkcml2ZXJzL25ldC9waHkvS2NvbmZpZ2AuIFRoaXMgZmlsZSB1c3VhbGx5IGhhbmRsZXMgYWxsIHRoZSBQSFktcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoYXQncyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgZm9yIHRoZSBgTUlDUk9DSElQX1QxU19QSFlgIGRlZmluaXRpb24uIExldCdzIHNlZSB3aGF0J3MgaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNTk1LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDg6MjI6MTQuMTI1Mzc3MDNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgzMjI4MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTUlDUk9DSElQX1QxU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWc9MzIzPWNvbmZpZyBNSUNSRUxfUEhZXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0zMjktXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6MzMwOmNvbmZpZyBNSUNST0NISVBfVDFTX1BIWVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTMzMS1cXHR0cmlzdGF0ZSBcXFwiTWljcm9jaGlwIDEwQkFTRS1UMVMgRXRoZXJuZXQgUEhZc1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT04Mj1vYmotJChDT05GSUdfTUlDUk9DSElQX1QxX1BIWSlcXHQrPSBtaWNyb2NoaXBfdDEub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo4MzpvYmotJChDT05GSUdfTUlDUk9DSElQX1QxU19QSFkpICs9IG1pY3JvY2hpcF90MXMub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS04NC1vYmotJChDT05GSUdfTUlDUk9TRU1JX1BIWSlcXHQrPSBtc2NjL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODoyMjoxNC4xNzM3MDU0MDZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMDgyOTQ2Njk4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2NvbmZpZyBEaXZlIGZvciBMQU44NjV4IEV0aGVybmV0IERyaXZlcnMqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gTGV0J3Mgc3RhcnQgd2l0aCB0aGUgYEtjb25maWdgIGZpbGUgZm9yIHRoZSBMQU44NjV4IEV0aGVybmV0IGRyaXZlcnMuIFRoYXQncyB0aGUgbG9naWNhbCBmaXJzdCBzdG9wLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgYXZhaWxhYmxlIGFuZCBob3cgdGhleSdyZSBzdHJ1Y3R1cmVkIHdpdGhpbiB0aGUgYnVpbGQgc3lzdGVtLiBJJ20gbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6XG5cbiogICAqKkZlYXR1cmUgRmxhZ3M6KiogQXJlIHRoZXJlIGNvbmRpdGlvbmFsIGJ1aWxkIG9wdGlvbnMgZm9yIHRoaW5ncyBsaWtlIHNwZWNpZmljIFBIWSBjb25maWd1cmF0aW9ucywgaW50ZXJydXB0IG1vZGVzIChwb2xsaW5nLCBpbnRlcnJ1cHQtZHJpdmVuLCBldGMuKSwgb3IgRE1BIHN1cHBvcnQ/XG4qICAgKipEZXBlbmRlbmNpZXM6KiogV2hhdCBvdGhlciBrZXJuZWwgY29tcG9uZW50cyBvciBkcml2ZXJzIG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgdGhlIExBTjg2NXggZHJpdmVyIHRvIGZ1bmN0aW9uIGNvcnJlY3RseT8gQXJlIHRoZXJlIHNwZWNpZmljIGRlcGVuZGVuY2llcyBvbiBuZXR3b3JrIHN0YWNrIGZlYXR1cmVzIG9yIE1BQyBhZGRyZXNzIG1hbmFnZW1lbnQ/XG4qICAgKipEZWZhdWx0cyBhbmQgSGVscCBUZXh0OioqIFdoYXQgYXJlIHRoZSBkZWZhdWx0IHNldHRpbmdzIGZvciBlYWNoIG9wdGlvbj8gQW5kLCBvZiBjb3Vyc2UsIHRoZSBoZWxwZnVsIGRlc2NyaXB0aW9ucyB0aGF0IHdpbGwgZ3VpZGUgZGV2ZWxvcGVycy4gVGhlIGNvbW1lbnRzIGhhdmUgdG8gYmUgY2xlYXIgYW5kIGNvbmNpc2UuXG4qICAgKipBcmNoaXRlY3R1cmUtU3BlY2lmaWMgU2VsZWN0aW9uczoqKiBEb2VzIHRoZSBLY29uZmlnIGV4cG9zZSBhbnkgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIHNlbGVjdGlvbnMgbGlrZSBjYWNoZSBsaW5lIHNpemVzIG9yIG1lbW9yeSByZWdpb25zP1xuXG5JJ20gaG9waW5nIHRoaXMgS2NvbmZpZyBpcyB3ZWxsLW9yZ2FuaXplZCwgd2l0aCBhIGNsZWFyIGhpZXJhcmNoeSB0aGF0IHJlZmxlY3RzIHRoZSBsb2dpY2FsIHN0cnVjdHVyZSBvZiB0aGUgZHJpdmVyIGFuZCBpdHMgY2FwYWJpbGl0aWVzLiBJdCdzIG9mdGVuIHdoZXJlIHRoZSBzdG9yeSBvZiB0aGUgZHJpdmVyJ3MgY29uZmlndXJhdGlvbiBiZWdpbnMuIEknbSBrZWVuIHRvIHNlZSBpZiBhbnkgbmV3IGZlYXR1cmVzIGhhdmUgYmVlbiBhZGRlZCBvciBpZiBzb21lIG9mIHRoZSBleGlzdGluZyBvcHRpb25zIGhhdmUgY2hhbmdlZC4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDAxMiwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjIyOjI1LjAwMzE3NDg1MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjQ5MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBNaWNyb2NoaXAgTEFOODY1eCBEcml2ZXIgU3VwcG9ydFxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRpZiBORVRfVkVORE9SX01JQ1JPQ0hJUFxcbiAgIDc6XFx0XFxuICAgODpcXHRjb25maWcgTEFOODY1WFxcbiAgIDk6XFx0XFx0dHJpc3RhdGUgXFxcIkxBTjg2NXggc3VwcG9ydFxcXCJcXG4gIDEwOlxcdFxcdGRlcGVuZHMgb24gU1BJXFxuICAxMTpcXHRcXHRzZWxlY3QgT0FfVEM2XFxuICAxMjpcXHRcXHRoZWxwXFxuICAxMzpcXHRcXHQgIFN1cHBvcnQgZm9yIHRoZSBNaWNyb2NoaXAgTEFOODY1MC8xIFJldi5CMC9CMSBNQUNQSFkgRXRoZXJuZXQgY2hpcC4gSXRcXG4gIDE0OlxcdFxcdCAgdXNlcyBPUEVOIEFsbGlhbmNlIDEwQkFTRS1UMXggU2VyaWFsIEludGVyZmFjZSBzcGVjaWZpY2F0aW9uLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGUgd2lsbCBiZVxcbiAgMTc6XFx0XFx0ICBjYWxsZWQgbGFuODY1eC5cXG4gIDE4OlxcdFxcbiAgMTk6XFx0ZW5kaWYgIyBORVRfVkVORE9SX01JQ1JPQ0hJUFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODoyMjoyNS4wMDMzMDI1MzJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTk3NzIzNTQ2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIEtjb25maWcgTGFieXJpbnRoKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIE9BX1RDNi4gTXkgaW5zdGluY3QgaXMgdG8gaGVhZCBzdHJhaWdodCB0byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvS2NvbmZpZ2AsIGFzIHRoYXQncyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgZm9yIEV0aGVybmV0LXJlbGF0ZWQgY29uZmlndXJhdGlvbnMuIEkgdmFndWVseSByZWNhbGwgdGhhdCB0eXBlIG9mIG9wdGlvbiBvZnRlbiBiZWluZyBkZWZpbmVkIGFyb3VuZCBsaW5lIDE0OS4gVGltZSB0byBmaXJlIHVwIG15IGVkaXRvciBhbmQgdGFrZSBhIGxvb2suIExldCdzIHNlZSB3aGF0IGdlbXMgYXJlIGhpZGRlbiBpbiB0aGF0IHBhcnRpY3VsYXIgc2VjdGlvbi4uLmhvcGVmdWxseSB0aGUgYXV0aG9yIHdhcyBraW5kIGVub3VnaCB0byBvcmdhbml6ZSB0aGluZ3MgaW4gYSBjbGVhciBtYW5uZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NjUwLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODoyMjoyNi45ODA1NDAzMThaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk0NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNDUsXG4gIFwiTGluZUNvdW50XCI6IDI1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNDU6XFx0XFx0c2VsZWN0IEJJVFJFVkVSU0VcXG4gMTQ2OlxcdFxcdGhlbHBcXG4gMTQ3OlxcdFxcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIE9wZW5Db3JlcyAxMC8xMDAgTWJwcyBFdGhlcm5ldCBNQUMuXFxuIDE0ODpcXHRcXG4gMTQ5OlxcdGNvbmZpZyBPQV9UQzZcXG4gMTUwOlxcdFxcdHRyaXN0YXRlIFxcXCJPUEVOIEFsbGlhbmNlIFRDNiAxMEJBU0UtVDF4IE1BQy1QSFkgc3VwcG9ydFxcXCIgaWYgQ09NUElMRV9URVNUXFxuIDE1MTpcXHRcXHRkZXBlbmRzIG9uIFNQSVxcbiAxNTI6XFx0XFx0c2VsZWN0IFBIWUxJQlxcbiAxNTM6XFx0XFx0aGVscFxcbiAxNTQ6XFx0XFx0ICBUaGlzIGxpYnJhcnkgaW1wbGVtZW50cyBPUEVOIEFsbGlhbmNlIFRDNiAxMEJBU0UtVDF4IE1BQy1QSFlcXG4gMTU1OlxcdFxcdCAgU2VyaWFsIEludGVyZmFjZSBwcm90b2NvbCBmb3Igc3VwcG9ydGluZyAxMEJBU0UtVDF4IE1BQy1QSFlzLlxcbiAxNTY6XFx0XFxuIDE1NzpcXHRcXHQgIFRvIGtub3cgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMsIHJlZmVyIGRvY3VtZW50YXRpb24gaW5cXG4gMTU4OlxcdFxcdCAgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL29hLXRjNi1mcmFtZXdvcmsucnN0XFx1MDAzZS5cXG4gMTU5OlxcdFxcbiAxNjA6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9wYXNlbWkvS2NvbmZpZ1xcXCJcXG4gMTYxOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcGVuc2FuZG8vS2NvbmZpZ1xcXCJcXG4gMTYyOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL0tjb25maWdcXFwiXFxuIDE2MzpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvS2NvbmZpZ1xcXCJcXG4gMTY0OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vS2NvbmZpZ1xcXCJcXG4gMTY1OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmRjL0tjb25maWdcXFwiXFxuIDE2NjpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ1xcXCJcXG4gMTY3OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnXFxcIlxcbiAxNjg6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yb2NrZXIvS2NvbmZpZ1xcXCJcXG4gMTY5OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc2Ftc3VuZy9LY29uZmlnXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODoyMjoyNi45ODA2MDA4ODhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTk2NTQ0NDU1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIExBTjg2NVgvT0FfVEM2L01JQ1JPQ0hJUF9UMVMgUmVhY2hhYmlsaXR5IGluIFN5emthbGxlcioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgZ29hbCBpcyB0byBkZXRlcm1pbmUgaWYgSSBjYW4gYWN0dWFsbHkgZnV6eiB0aGVzZSBkcml2ZXJzIOKAkyBMQU44NjVYLCBPQV9UQzYsIGFuZCBNSUNST0NISVBfVDFTIOKAkyB1c2luZyBzeXprYWxsZXIuIFRoZSBjb3JlIHF1ZXN0aW9uIGlzOiBhcmUgdGhleSByZWFjaGFibGUgd2l0aGluIHRoZSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIGFuZCBHQ0UgdGhhdCBzeXprYWxsZXIgbGV2ZXJhZ2VzPyBUaGlzIFwicmVhY2hhYmlsaXR5XCIgaXMgdGhlIGtleS4gRnV6emluZyB1bnJlYWNoYWJsZSBjb2RlIGlzIGEgd2FzdGUgb2YgcmVzb3VyY2VzLlxuXG5GaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGVzZSBkcml2ZXJzICphcmUqLiBMQU44NjVYIGlzIGEgU1BJIGRyaXZlciAoYHN0cnVjdCBzcGlfZHJpdmVyYCksIGBsYW44NjV4X2RyaXZlcmAuIE1JQ1JPQ0hJUF9UMVMgaXMgYSBQSFkgZHJpdmVyIChgc3RydWN0IHBoeV9kcml2ZXJgLCBgbWljcm9jaGlwX3Qxc19kcml2ZXJbXWApLiBPQV9UQzYgaXMgYSBzdXBwb3J0aW5nIGxpYnJhcnkgZm9yIFNQSSBNQUMtUEhZcyB1c2VkIGJ5IGBsYW44NjV4YCBhbmQgYGFkaW4xMTQwYC5cblxuTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogY2FuIEkgaW5zdGFudGlhdGUgb3IgcHJvYmUgU1BJIGFuZCBQSFkgZGV2aWNlcyB3aXRoaW4gYSB0eXBpY2FsIFFFTVUgeDg2XzY0IGVudmlyb25tZW50PyBUaGF0J3MgdGhlIGdhdGVrZWVwZXIuIFN0YW5kYXJkIFFFTVUgZG9lc24ndCBzZWVtIHRvIGhhdmUgYSBnZW5lcmljIFNQSSBidXMgaW5zdGFudGlhdGlvbi4gVW5sZXNzLCB0aGVyZSdzIHNvbWUga2luZCBvZiBtb2NrIFNQSSBjb250cm9sbGVyLCBVU0ItdG8tU1BJIGFkYXB0ZXIsIHBsYXRmb3JtIGRldmljZSwgb3IgbWF5YmUgZXZlbiBhIGNvbmZpZ2ZzIFNQSSBkZXZpY2UuIEhtbSwgZG9lcyBMaW51eCBldmVuIGxldCB5b3UgaW5zdGFudGlhdGUgU1BJIGRldmljZXMgZnJvbSB1c2Vyc3BhY2UgZGlyZWN0bHk/IERvZXMgUUVNVSBldmVuICpoYXZlKiBTUEkgc3VwcG9ydCBieSBkZWZhdWx0P1xuXG5MZXQgbWUgc3RlcCBiYWNrIGFuZCBjaGVjayBzeXprYWxsZXIncyBkb2N1bWVudGF0aW9uIG9yIGV4YW1wbGVzLiBIYXMgaXQgYmVlbiB1c2VkIHRvIHRlc3QgU1BJIGRldmljZXMgYmVmb3JlPyBXaGF0IGFib3V0IGhvdyBTUEkgZGV2aWNlcyBhcmUgdGVzdGVkIGluIGdlbmVyYWw/IFdhaXQsIHRoZXJlJ3MgdGhhdCBwcmluY2lwbGU6IFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGUgY29kZSAqY2FuKiBleGVjdXRlIGluIHRoZXNlIGVudmlyb25tZW50cy4gSWYgaXQncyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUsIGRvbid0IGZ1enogaXQuXG5cblRoaXMgYnJpbmdzIG1lIHRvIFNlY3Rpb24gMi4gVGhhdCBsaXN0cyBleGFtcGxlcyBvZiBcInN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZVwiIGhhcmR3YXJlLiBUaGluZ3MgbGlrZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyB0aGF0IG5lZWQgZGVkaWNhdGVkIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBBbHNvIHVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRocywgbGlrZSBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBgLnJlbW92ZWAsIGAuc2h1dGRvd25gLCBgcGNpX3VucmVnaXN0ZXJfZHJpdmVyYCkgZXhlY3V0ZWQgb25seSBkdXJpbmcgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIHVuYmluZGluZywgYW5kIGNvZGUgcGF0aHMgc3BlY2lmaWMgdG8gbm9uLXRhcmdldCBhcmNoaXRlY3R1cmVzLlxuXG5Tbywgd2hlcmUgZG8gU1BJIGFuZCBQSFkgZHJpdmVycyBmaXQgaW4/IENhbiBJIGV2ZW4gcmVhY2ggb3IgcHJvYmUgTEFOODY1eCBvciBNaWNyb2NoaXAgUEhZcz8gSSBoYXZlIHRvIGZpZ3VyZSBvdXQgaWYgc3l6a2FsbGVyIG9yIHN0YW5kYXJkIFFFTVUgY2FuIGRvIHRoYXQuIElzIHRoZXJlIGEgXCJzcGktbW9jayxcIiBhIFwic3BpLWNvbnRyb2xsZXIsXCIgb3Igc29tZSBuZXRsaW5rIG9yIE1ESU8gdHJpY2s/IEkgYmV0dGVyIHNlYXJjaCB0aGUga2VybmVsIGZvciBhbnkgbWVudGlvbiBvZiBTUEkgY29udHJvbGxlcnMgb3IgTURJTy4gVGltZSB0byBkaWcgaW4gYW5kIGZpbmQgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTMxMywiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYxMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjIyOjMyLjk0NjA0NzkwOVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTI1NDQzMDc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxhbjg2NTBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVyc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjEzOiNkZWZpbmUgRFJWX05BTUVcXHRcXHRcXHRcXFwibGFuODY1MFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM9NDMwPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3BpX2RldmljZV9pZCBsYW44NjV4X2lkc1tdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0MzE6XFx0eyAubmFtZSA9IFxcXCJsYW44NjUwXFxcIiB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00MzItXFx0eyAubmFtZSA9IFxcXCJsYW44NjUxXFxcIiB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jPTQzNz1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBsYW44NjV4X2R0X2lkc1tdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0Mzg6XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJtaWNyb2NoaXAsbGFuODY1MFxcXCIgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDM5LVxcdHsgLmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGxhbjg2NTFcXFwiIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTYtICogIGxhbjg2NzAvMS8yIFJldi5CMS9DMS9DMi9EMFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6NzogKiAgbGFuODY1MC8xIFJldi5CMC9CMSBJbnRlcm5hbCBQSFlzXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy04LSAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODoyMjozMy44NzE0OTU4MzdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6OTc5MDEwMTMzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIExBTjg2NXggRHJpdmVycyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBsYW44NjV4YCwgd2hpY2ggaXMgY2xlYXJseSBhbiBTUEkgZHJpdmVyIHRhaWxvcmVkIGZvciB0aG9zZSBNaWNyb2NoaXAgTEFOODY1MC8xIGNoaXBzLiBUaGVuIHRoZXJlJ3MgYG1pY3JvY2hpcF90MXNgLCB3aGljaCBJIGltbWVkaWF0ZWx5IHJlY29nbml6ZSBhcyBhbiBNRElPIFBIWSBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgdGhlIExBTjg2N3gvTEFOODY1eCBldGhlcm5ldCBQSFlzLiBBbmQgZmluYWxseSwgYG9hX3RjNmAg4oCTIHRoYXQncyB0aGUgT1BFTiBBbGxpYW5jZSBUQzYgbGlicmFyeTsgdGhlIDEwQkFTRS1UMXggTUFDLVBIWSBzdXBwb3J0IHRoYXQgYm90aCBgbGFuODY1eGAgYW5kIHRoZSBgYWRpbjExNDBgIFNQSSBldGhlcm5ldCBjb250cm9sbGVycyBsZXZlcmFnZS5cblxuTm93LCBteSBtaW5kIHN0YXJ0cyB0byB3YW5kZXIuIEkgaGF2ZSB0byB0aGluayBhYm91dCBwb3RlbnRpYWwgc2NlbmFyaW9zLiBBcmUgd2UgdGFsa2luZyBzdHJpY3RseSBwaHlzaWNhbCBoYXJkd2FyZSBoZXJlLCBvciBhcmUgdGhlcmUgdmlydHVhbCBkZXZpY2VzIGluIHBsYXk/IENhbiB3ZSBwb3NzaWJseSBoYXZlIHZpcnR1YWwgU1BJIG9yIE1ESU8gZGV2aWNlcyB0aGF0ICphdHRhY2gqIHRvIHRoaXMsIG9yIGNvdWxkIHdlIHNvbWVob3cgY3JlYXRlIGEgdmlydHVhbCBpbnN0YW5jZSBvZiBgbGFuODY1MGAgb3IgYG1pY3JvY2hpcF90MXNgPyBUaGF0IHdvdWxkIGRlZmluaXRlbHkgY2hhbmdlIHRoZSBsYW5kc2NhcGUuXG5cbk15IG5leHQgc3RlcCBoYXMgdG8gYmUgYSBkZWVwZXIgaW52ZXN0aWdhdGlvbi4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgc3l6a2FsbGVyIGhhcyBhbnkgcHNldWRvLXN5c2NhbGxzIG9yIGlmIHRoZXJlIGFyZSBhbnkgb2J2aW91cyB1c2Vyc3BhY2UgaW50ZXJmYWNlcyB0aGF0IGFsbG93IHVzIHRvIGJpbmQgU1BJIG9yIFBIWSBkZXZpY2VzLiBJIG5lZWQgdG8ga25vdyBpZiB0aGlzIGlzIGZ1bmRhbWVudGFsbHkgbGltaXRlZCB0byBwaHlzaWNhbCBoYXJkd2FyZSBvciBpZiB0aGVyZSdzIGFueSBmbGV4aWJpbGl0eS4gSSBoYXZlIHRvIHRoaW5rIGFib3V0IGhvdyBTUEkgZGV2aWNlcyBhcmUgdHlwaWNhbGx5IG1hbmFnZWQgYW5kIGNyZWF0ZWQgaW4gdGhlIGtlcm5lbCDigJMgYXJlIHRoZXJlIHN5c2ZzLCBjb25maWdmcywgaW9jdGwgbWVjaGFuaXNtcywgb3Igc2ltaWxhciBtZXRob2RzIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQ/IFRpbWUgdG8gZGl2ZSBpbnRvIGBkcml2ZXJzL3NwaS9gIGFuZCBzdGFydCBkaWdnaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzA0MiwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODoyMjo0My42NjE2MDAyMjdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4OTI5ODQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5ld19kZXZpY2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zcGlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1kZmwuYz0xMjQ9c3RhdGljIGludCBkZmxfc3BpX2FsdGVyYV9wcm9iZShzdHJ1Y3QgZGZsX2RldmljZSAqZGZsX2RldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtZGZsLmMtMTc0LVxcbmRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtZGZsLmM6MTc1OlxcdGlmICghc3BpX25ld19kZXZpY2UoaG9zdCwgXFx1MDAyNmJvYXJkX2luZm8pKSB7XFxuZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1kZmwuYy0xNzYtXFx0XFx0ZGV2X2VycihkZXYsIFxcXCIlcyBmYWlsZWQgdG8gY3JlYXRlIFNQSSBkZXZpY2U6ICVzXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1wbGF0Zm9ybS5jPTM1PXN0YXRpYyBpbnQgYWx0ZXJhX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1wbGF0Zm9ybS5jLTExNi1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcGRhdGEtXFx1MDAzZW51bV9kZXZpY2VzOyBpKyspIHtcXG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLXBsYXRmb3JtLmM6MTE3OlxcdFxcdFxcdGlmICghc3BpX25ld19kZXZpY2UoaG9zdCwgcGRhdGEtXFx1MDAzZWRldmljZXMgKyBpKSlcXG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLXBsYXRmb3JtLmMtMTE4LVxcdFxcdFxcdFxcdGRldl93YXJuKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYnV0dGVyZmx5LmM9MTc2PXN0YXRpYyB2b2lkIGJ1dHRlcmZseV9hdHRhY2goc3RydWN0IHBhcnBvcnQgKnApXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYnV0dGVyZmx5LmMtMjY1LVxcdHBwLVxcdTAwM2VpbmZvWzBdLmNvbnRyb2xsZXJfZGF0YSA9IHBwO1xcbmRyaXZlcnMvc3BpL3NwaS1idXR0ZXJmbHkuYzoyNjY6XFx0cHAtXFx1MDAzZWRhdGFmbGFzaCA9IHNwaV9uZXdfZGV2aWNlKHBwLVxcdTAwM2ViaXRiYW5nLmN0bHIsIFxcdTAwMjZwcC1cXHUwMDNlaW5mb1swXSk7XFxuZHJpdmVycy9zcGkvc3BpLWJ1dHRlcmZseS5jLTI2Ny1cXHRpZiAocHAtXFx1MDAzZWRhdGFmbGFzaClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jaDM0MS5jPTE0MT1zdGF0aWMgaW50IGNoMzQxX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNoMzQxLmMtMjA2LVxcbmRyaXZlcnMvc3BpL3NwaS1jaDM0MS5jOjIwNzpcXHRjaDM0MS1cXHUwMDNlc3BpZGV2ID0gc3BpX25ld19kZXZpY2UoY3RybCwgXFx1MDAyNmNoaXApO1xcbmRyaXZlcnMvc3BpL3NwaS1jaDM0MS5jLTIwOC1cXHRpZiAoIWNoMzQxLVxcdTAwM2VzcGlkZXYpIHtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jczQybDQzLmM9MzEyPXN0YXRpYyBpbnQgY3M0Mmw0M19zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jczQybDQzLmMtNDI2LVxcbmRyaXZlcnMvc3BpL3NwaS1jczQybDQzLmM6NDI3OlxcdFxcdGlmICghc3BpX25ld19kZXZpY2UocHJpdi1cXHUwMDNlY3RsciwgYW1wbF9pbmZvKSlcXG5kcml2ZXJzL3NwaS9zcGktY3M0Mmw0My5jLTQyOC1cXHRcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShwcml2LVxcdTAwM2VkZXYsIC1FTk9ERVYsXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktY3M0Mmw0My5jLTQzMC1cXG5kcml2ZXJzL3NwaS9zcGktY3M0Mmw0My5jOjQzMTpcXHRcXHRpZiAoIXNwaV9uZXdfZGV2aWNlKHByaXYtXFx1MDAzZWN0bHIsIGFtcHJfaW5mbykpXFxuZHJpdmVycy9zcGkvc3BpLWNzNDJsNDMuYy00MzItXFx0XFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUocHJpdi1cXHUwMDNlZGV2LCAtRU5PREVWLFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWludGVsLmM9MTM3NT1zdGF0aWMgaW50IGludGVsX3NwaV9wb3B1bGF0ZV9jaGlwKHN0cnVjdCBpbnRlbF9zcGkgKmlzcGkpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktaW50ZWwuYy0xNDAxLVxcbmRyaXZlcnMvc3BpL3NwaS1pbnRlbC5jOjE0MDI6XFx0aWYgKCFzcGlfbmV3X2RldmljZShpc3BpLVxcdTAwM2Vob3N0LCBcXHUwMDI2Y2hpcCkpXFxuZHJpdmVycy9zcGkvc3BpLWludGVsLmMtMTQwMy1cXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1pbnRlbC5jLTE0MzAtXFxuZHJpdmVycy9zcGkvc3BpLWludGVsLmM6MTQzMTpcXHRpZiAoIXNwaV9uZXdfZGV2aWNlKGlzcGktXFx1MDAzZWhvc3QsIFxcdTAwMjZjaGlwKSlcXG5kcml2ZXJzL3NwaS9zcGktaW50ZWwuYy0xNDMyLVxcdFxcdHJldHVybiAtRU5PREVWO1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWtzcGkyLmM9MzEwPXN0YXRpYyBpbnQga3NwaTJfcmVnaXN0ZXJfZGV2aWNlcyhzdHJ1Y3Qga3NwaTIgKmtzcGkpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkta3NwaTIuYy0zMTYtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGtzcGktXFx1MDAzZWF1eGRldi1cXHUwMDNlaW5mb19zaXplOyBpKyspIHtcXG5kcml2ZXJzL3NwaS9zcGkta3NwaTIuYzozMTc6XFx0XFx0c3RydWN0IHNwaV9kZXZpY2UgKmRldmljZSA9IHNwaV9uZXdfZGV2aWNlKGtzcGktXFx1MDAzZWhvc3QsIFxcdTAwMjZpbmZvW2ldKTtcXG5kcml2ZXJzL3NwaS9zcGkta3NwaTIuYy0zMTgtXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbG03MGxscC5jPTE4OD1zdGF0aWMgdm9pZCBzcGlfbG03MGxscF9hdHRhY2goc3RydWN0IHBhcnBvcnQgKnApXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbG03MGxscC5jLTI2Ni1cXHRwcC1cXHUwMDNlaW5mby5jb250cm9sbGVyX2RhdGEgPSBwcDtcXG5kcml2ZXJzL3NwaS9zcGktbG03MGxscC5jOjI2NzpcXHRwcC1cXHUwMDNlc3BpZGV2X2xtNzAgPSBzcGlfbmV3X2RldmljZShwcC1cXHUwMDNlYml0YmFuZy5jdGxyLCBcXHUwMDI2cHAtXFx1MDAzZWluZm8pO1xcbmRyaXZlcnMvc3BpL3NwaS1sbTcwbGxwLmMtMjY4LVxcdGlmIChwcC1cXHUwMDNlc3BpZGV2X2xtNzApXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbG03MGxscC5jLTI3MS1cXHRlbHNlIHtcXG5kcml2ZXJzL3NwaS9zcGktbG03MGxscC5jOjI3MjpcXHRcXHRkZXZfd2FybihcXHUwMDI2cGQtXFx1MDAzZWRldiwgXFxcInNwaV9uZXdfZGV2aWNlIGZhaWxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9zcGkvc3BpLWxtNzBsbHAuYy0yNzMtXFx0XFx0c3RhdHVzID0gLUVOT0RFVjtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS14aWxpbnguYz00MDI9c3RhdGljIGludCB4aWxpbnhfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkteGlsaW54LmMtNTA5LVxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBwZGF0YS1cXHUwMDNlbnVtX2RldmljZXM7IGkrKylcXG5kcml2ZXJzL3NwaS9zcGkteGlsaW54LmM6NTEwOlxcdFxcdFxcdHNwaV9uZXdfZGV2aWNlKGhvc3QsIHBkYXRhLVxcdTAwM2VkZXZpY2VzICsgaSk7XFxuZHJpdmVycy9zcGkvc3BpLXhpbGlueC5jLTUxMS1cXHR9XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkuYz0yOTc9c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgc3BpX2NvbnRyb2xsZXJfc3RhdGlzdGljc19ncm91cCA9IHtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS5jLTMwNC0vKlxcbmRyaXZlcnMvc3BpL3NwaS5jOjMwNTogKiBuZXdfZGV2aWNlX3N0b3JlIC0gaW5zdGFudGlhdGUgYSBuZXcgU1BJIGRldmljZSBmcm9tIHVzZXJzcGFjZVxcbmRyaXZlcnMvc3BpL3NwaS5jLTMwNi0gKlxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLmMtMzA5LSAqIEV4YW1wbGVzOlxcbmRyaXZlcnMvc3BpL3NwaS5jOjMxMDogKiAgIGVjaG8gc3BpZGV2IDAgXFx1MDAzZSBuZXdfZGV2aWNlXFxuZHJpdmVycy9zcGkvc3BpLmM6MzExOiAqICAgZWNobyBzcGlkZXYgMCAxMDAwMDAwMCBcXHUwMDNlIG5ld19kZXZpY2VcXG5kcml2ZXJzL3NwaS9zcGkuYzozMTI6ICogICBlY2hvIHNwaWRldiAwIDEwMDAwMDAwIDMgXFx1MDAzZSBuZXdfZGV2aWNlXFxuZHJpdmVycy9zcGkvc3BpLmMtMzEzLSAqL1xcbmRyaXZlcnMvc3BpL3NwaS5jPTMxND1zdGF0aWMgc3NpemVfdFxcbmRyaXZlcnMvc3BpL3NwaS5jOjMxNTpuZXdfZGV2aWNlX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXFxuZHJpdmVycy9zcGkvc3BpLmMtMzE2LVxcdFxcdCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS5jLTMyOS1cXHRpZiAoIWJsYW5rKSB7XFxuZHJpdmVycy9zcGkvc3BpLmM6MzMwOlxcdFxcdGRldl9lcnIoZGV2LCBcXFwibmV3X2RldmljZTogTWlzc2luZyBwYXJhbWV0ZXJzXFxcXG5cXFwiKTtcXG5kcml2ZXJzL3NwaS9zcGkuYy0zMzEtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkuYy0zMzQtXFx0aWYgKGJsYW5rID09IGJ1ZiB8fCBibGFuayAtIGJ1ZiBcXHUwMDNlIFNQSV9OQU1FX1NJWkUgLSAxKSB7XFxuZHJpdmVycy9zcGkvc3BpLmM6MzM1OlxcdFxcdGRldl9lcnIoZGV2LCBcXFwibmV3X2RldmljZTogSW52YWxpZCBkZXZpY2UgbmFtZVxcXFxuXFxcIik7XFxuZHJpdmVycy9zcGkvc3BpLmMtMzM2LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLmMtMzQ4LVxcdGlmIChzc2NhbmYoKytibGFuaywgXFxcIiV1ICV1ICV1XFxcIiwgXFx1MDAyNmNoaXBfc2VsZWN0LCBcXHUwMDI2bWF4X3NwZWVkX2h6LCBcXHUwMDI2bW9kZSkgXFx1MDAzYyAxKSB7XFxuZHJpdmVycy9zcGkvc3BpLmM6MzQ5OlxcdFxcdGRldl9lcnIoZGV2LCBcXFwibmV3X2RldmljZTogQ2FuJ3QgcGFyc2UgY2hpcCBzZWxlY3RcXFxcblxcXCIpO1xcbmRyaXZlcnMvc3BpL3NwaS5jLTM1MC1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS5jLTM1OS1cXHRpZiAoY2hpcF9zZWxlY3QgXFx1MDAzZSBVOF9NQVggfHwgY2hpcF9zZWxlY3QgXFx1MDAzZT0gY3Rsci1cXHUwMDNlbnVtX2NoaXBzZWxlY3QpIHtcXG5kcml2ZXJzL3NwaS9zcGkuYzozNjA6XFx0XFx0ZGV2X2VycihkZXYsIFxcXCJuZXdfZGV2aWNlOiBDaGlwIHNlbGVjdCAldSBvdXQgb2YgcmFuZ2UgKG51bV9jaGlwc2VsZWN0PSV1KVxcXFxuXFxcIixcXG5kcml2ZXJzL3NwaS9zcGkuYy0zNjEtXFx0XFx0XFx0Y2hpcF9zZWxlY3QsIGN0bHItXFx1MDAzZW51bV9jaGlwc2VsZWN0KTtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS5jLTM3Mi1cXHRpZiAobW9kZSBcXHUwMDI2IH4odTMyKVNQSV9NT0RFX1VTRVJfTUFTSykge1xcbmRyaXZlcnMvc3BpL3NwaS5jOjM3MzpcXHRcXHRkZXZfZXJyKGRldiwgXFxcIm5ld19kZXZpY2U6IEludmFsaWQgbW9kZSBiaXRzIDB4JXhcXFxcblxcXCIsXFxuZHJpdmVycy9zcGkvc3BpLmMtMzc0LVxcdFxcdFxcdG1vZGUgXFx1MDAyNiB+KHUzMilTUElfTU9ERV9VU0VSX01BU0spO1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLmMtNDAxLVxcdC8qXFxuZHJpdmVycy9zcGkvc3BpLmM6NDAyOlxcdCAqIHNwaV91bnJlZ2lzdGVyX2NvbnRyb2xsZXIoKSByZW1vdmVzIHRoZSBuZXdfZGV2aWNlL2RlbGV0ZV9kZXZpY2VcXG5kcml2ZXJzL3NwaS9zcGkuYy00MDMtXFx0ICogc3lzZnMgZ3JvdXAgYmVmb3JlIHRha2luZyBhZGRfbG9jaywgc28ga2VybmZzX2RyYWluKCkgaGFzIGFscmVhZHlcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS5jLTQyMS1cXG5kcml2ZXJzL3NwaS9zcGkuYzo0MjI6XFx0ZGV2X2luZm8oZGV2LCBcXFwibmV3X2RldmljZTogSW5zdGFudGlhdGVkIGRldmljZSAlcyBhdCBDUyV1XFxcXG5cXFwiLFxcbmRyaXZlcnMvc3BpL3NwaS5jLTQyMy1cXHRcXHQgbW9kYWxpYXMsIGNoaXBfc2VsZWN0KTtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS5jLTQyNS19XFxuZHJpdmVycy9zcGkvc3BpLmM6NDI2OnN0YXRpYyBERVZJQ0VfQVRUUl9JR05PUkVfTE9DS0RFUChuZXdfZGV2aWNlLCAwMjAwLCBOVUxMLCBuZXdfZGV2aWNlX3N0b3JlKTtcXG5kcml2ZXJzL3NwaS9zcGkuYy00MjctXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkuYz00NzE9c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKnNwaV9jb250cm9sbGVyX3VzZXJzcGFjZV9hdHRyc1tdID0ge1xcbmRyaXZlcnMvc3BpL3NwaS5jOjQ3MjpcXHRcXHUwMDI2ZGV2X2F0dHJfbmV3X2RldmljZS5hdHRyLFxcbmRyaXZlcnMvc3BpL3NwaS5jLTQ3My1cXHRcXHUwMDI2ZGV2X2F0dHJfZGVsZXRlX2RldmljZS5hdHRyLFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLmM9NDc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIHNwaV9jb250cm9sbGVyX3VzZXJzcGFjZV9ncm91cCA9IHtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS5jLTQ4NC0gKiBzcGlfY29udHJvbGxlcl91c2Vyc3BhY2VfZ3JvdXAgaXMgcmVnaXN0ZXJlZCBtYW51YWxseSBmb3IgaG9zdCBjb250cm9sbGVyc1xcbmRyaXZlcnMvc3BpL3NwaS5jOjQ4NTogKiBhdCB0aGUgZW5kIG9mIHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKCkgc28gbmV3X2RldmljZS9kZWxldGVfZGV2aWNlIG9ubHlcXG5kcml2ZXJzL3NwaS9zcGkuYy00ODYtICogYXBwZWFyIGFmdGVyIERUL0FDUEkgY2hpbGRyZW4gYW5kIHRoZSBxdWV1ZSBhcmUgc2V0IHVwLlxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLmM9OTc5PUVYUE9SVF9TWU1CT0xfR1BMKHNwaV9hZGRfZGV2aWNlKTtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS5jLTk4MS0vKipcXG5kcml2ZXJzL3NwaS9zcGkuYzo5ODI6ICogc3BpX25ld19kZXZpY2UgLSBpbnN0YW50aWF0ZSBvbmUgbmV3IFNQSSBkZXZpY2VcXG5kcml2ZXJzL3NwaS9zcGkuYy05ODMtICogQGN0bHI6IENvbnRyb2xsZXIgdG8gd2hpY2ggZGV2aWNlIGlzIGNvbm5lY3RlZFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLmMtOTk0LSAqL1xcbmRyaXZlcnMvc3BpL3NwaS5jOjk5NTpzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpX25ld19kZXZpY2Uoc3RydWN0IHNwaV9jb250cm9sbGVyICpjdGxyLFxcbmRyaXZlcnMvc3BpL3NwaS5jLTk5Ni1cXHRcXHRcXHRcXHQgIHN0cnVjdCBzcGlfYm9hcmRfaW5mbyAqY2hpcClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS5jLTEwNTAtfVxcbmRyaXZlcnMvc3BpL3NwaS5jOjEwNTE6RVhQT1JUX1NZTUJPTF9HUEwoc3BpX25ld19kZXZpY2UpO1xcbmRyaXZlcnMvc3BpL3NwaS5jLTEwNTItXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkuYz0xMDgxPXN0YXRpYyB2b2lkIHNwaV9tYXRjaF9jb250cm9sbGVyX3RvX2JvYXJkaW5mbyhzdHJ1Y3Qgc3BpX2NvbnRyb2xsZXIgKmN0bHIsXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkuYy0xMDg4LVxcbmRyaXZlcnMvc3BpL3NwaS5jOjEwODk6XFx0ZGV2ID0gc3BpX25ld19kZXZpY2UoY3RsciwgYmkpO1xcbmRyaXZlcnMvc3BpL3NwaS5jLTEwOTAtXFx0aWYgKCFkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkuYz0zNjUyPWludCBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihzdHJ1Y3Qgc3BpX2NvbnRyb2xsZXIgKmN0bHIpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkuYy0zNzU3LVxcdC8qXFxuZHJpdmVycy9zcGkvc3BpLmM6Mzc1ODpcXHQgKiBSZWdpc3RlciB0aGUgbmV3X2RldmljZS9kZWxldGVfZGV2aWNlIHN5c2ZzIGludGVyZmFjZSBhcyB0aGVcXG5kcml2ZXJzL3NwaS9zcGkuYy0zNzU5LVxcdCAqIGZpbmFsIHN0ZXAgb2YgaG9zdCBjb250cm9sbGVyIGJyaW5ndXAsIG9ubHkgYWZ0ZXIgdGhlIHF1ZXVlLFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLmM9MzgzOD12b2lkIHNwaV91bnJlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IHNwaV9jb250cm9sbGVyICpjdGxyKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLmMtMzg0My1cXHQvKlxcbmRyaXZlcnMvc3BpL3NwaS5jOjM4NDQ6XFx0ICogRHJhaW4gaW4tZmxpZ2h0IG5ld19kZXZpY2UvZGVsZXRlX2RldmljZSBzeXNmcyBzdG9yZXMgYW5kXFxuZHJpdmVycy9zcGkvc3BpLmMtMzg0NS1cXHQgKiBwcmV2ZW50IG5ldyBvbmVzIGZyb20gc3RhcnRpbmcuICBNdXN0IGhhcHBlbiBiZWZvcmUgd2UgdGFrZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODoyMjo0My43MTA1MzM1MTNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjk5ODUwMTA5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIFRob3VnaHRzIG9uIFNQSSBEZXZpY2UgSW5zdGFudGlhdGlvbiBhbmQgdGhlIExBTjg2NXggRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbmV3X2RldmljZWAgZW50cnkgaW4gc3lzZnMgZm9yIFNQSS4gUmlnaHQsIHRoaXMgaXMgaG93IHlvdSBjYW4gZHluYW1pY2FsbHkgaW5zdGFudGlhdGUgYSBuZXcgU1BJIGRldmljZSBmcm9tIHVzZXJzcGFjZS4gSSBzZWUgaXQncyBzb21ldGhpbmcgbGlrZSBgZWNobyBsYW44NjUwIDAgXHUwMDNlIC9zeXMvY2xhc3Mvc3BpX21hc3Rlci9zcGlYL25ld19kZXZpY2VgLiBNYWtlcyBzZW5zZS4gQnV0IEknbSBpbW1lZGlhdGVseSB3b25kZXJpbmcgYWJvdXQgdGhlIGVudmlyb25tZW50IOKAkyBzcGVjaWZpY2FsbHksIFFFTVUuIERvZXMgUUVNVSBldmVuIGhhdmUgbmF0aXZlIFNQSSBjb250cm9sbGVyIHN1cHBvcnQsIG9yIHdpbGwgSSBuZWVkIHRvIHNpbXVsYXRlIGl0IHdpdGggc29tZXRoaW5nIGxpa2UgYHNwaS1sb29wYmFjay10ZXN0YCwgYHNwaS1tb2NrYCwgYHNwaS1ncGlvYCwgb3IgbWF5YmUgZXZlbiBgc3BpLWJ1dHRlcmZseWA/IEFuZCwgaXMgU3l6a2FsbGVyIGhpdHRpbmcgU1BJLCBvciBpcyB0aGlzIGEgZGVhZCBlbmQ/XG5cbk9rYXksIGhvbGQgb24uIEJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGUgc2V0dXAsIGxldCdzIGJhY2sgdXAgYW5kIHVuZGVyc3RhbmQgdGhlIGFjdHVhbCBkZXZpY2UgZHJpdmVyJ3MgYmVoYXZpb3IuIEkgbmVlZCB0byBzZWUgd2hhdCBoYXBwZW5zICp3aGVuKiB0aGlzIGBsYW44NjV4YCBkZXZpY2UgaXMgcHJvYmVkLiBJIHNob3VsZCBjaGVjayB0aGUgcHJvYmUgZnVuY3Rpb24sIHN0YXJ0aW5nIHdpdGggdGhlIGBsYW44NjV4X3Byb2JlYCBmdW5jdGlvbi4gSSB3aWxsIGdvIGRpcmVjdGx5IHRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmNgIGFuZCBhbmFseXplIGZyb20gbGluZSAzMzAgdG8gYWJvdXQgNDIwLiBUaGF0J3Mgd2hlcmUgdGhlIGludGVyZXN0aW5nIHN0dWZmIGxpa2VseSBpcy4gVGhhdCBzaG91bGQgdGVsbCBtZSB3aGF0J3MgYWN0dWFsbHkgaGFwcGVuaW5nIG9uIGluc3RhbnRpYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwODEyLCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjIyOjQ2LjcwOTAzNzg1OVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTUwODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMzMCxcbiAgXCJMaW5lQ291bnRcIjogODVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDMzMDpcXHRcXHQubmRvX2V0aF9pb2N0bCAgICAgICAgICA9IHBoeV9kb19pb2N0bF9ydW5uaW5nLFxcbiAzMzE6XFx0fTtcXG4gMzMyOlxcdFxcbiAzMzM6XFx0c3RhdGljIGludCBsYW44NjV4X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuIDMzNDpcXHR7XFxuIDMzNTpcXHRcXHRzdHJ1Y3Qgb2FfdGM2X3F1aXJrcyB0YzZfcXVpcmtzID0ge307XFxuIDMzNjpcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbiAzMzc6XFx0XFx0c3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdjtcXG4gMzM4OlxcdFxcdGludCByZXQ7XFxuIDMzOTpcXHRcXG4gMzQwOlxcdFxcdG5ldGRldiA9IGFsbG9jX2V0aGVyZGV2KHNpemVvZihzdHJ1Y3QgbGFuODY1eF9wcml2KSk7XFxuIDM0MTpcXHRcXHRpZiAoIW5ldGRldilcXG4gMzQyOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAzNDM6XFx0XFxuIDM0NDpcXHRcXHRwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG4gMzQ1OlxcdFxcdHByaXYtXFx1MDAzZW5ldGRldiA9IG5ldGRldjtcXG4gMzQ2OlxcdFxcdHByaXYtXFx1MDAzZXNwaSA9IHNwaTtcXG4gMzQ3OlxcdFxcdHNwaV9zZXRfZHJ2ZGF0YShzcGksIHByaXYpO1xcbiAzNDg6XFx0XFx0SU5JVF9XT1JLKFxcdTAwMjZwcml2LVxcdTAwM2VtdWx0aWNhc3Rfd29yaywgbGFuODY1eF9tdWx0aWNhc3Rfd29ya19oYW5kbGVyKTtcXG4gMzQ5OlxcdFxcbiAzNTA6XFx0XFx0dGM2X3F1aXJrcy5xdWlya19mbGFncyA9IE9BX1RDNl9QSFlfSU5UO1xcbiAzNTE6XFx0XFx0cHJpdi1cXHUwMDNldGM2ID0gb2FfdGM2X2luaXQoc3BpLCBuZXRkZXYsIFxcdTAwMjZ0YzZfcXVpcmtzKTtcXG4gMzUyOlxcdFxcdGlmICghcHJpdi1cXHUwMDNldGM2KSB7XFxuIDM1MzpcXHRcXHRcXHRyZXQgPSAtRU5PREVWO1xcbiAzNTQ6XFx0XFx0XFx0Z290byBmcmVlX25ldGRldjtcXG4gMzU1OlxcdFxcdH1cXG4gMzU2OlxcdFxcbiAzNTc6XFx0XFx0LyogTEFOODY1eCBSZXYuQjAvQjEgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGZyb20gQU4xNzYwXFxuIDM1ODpcXHRcXHQgKiBBcyBwZXIgdGhlIENvbmZpZ3VyYXRpb24gQXBwbGljYXRpb24gTm90ZSBBTjE3NjAgcHVibGlzaGVkIGluIHRoZVxcbiAzNTk6XFx0XFx0ICogbGluaywgaHR0cHM6Ly93d3cubWljcm9jaGlwLmNvbS9lbi11cy9hcHBsaWNhdGlvbi1ub3Rlcy9hbjE3NjBcXG4gMzYwOlxcdFxcdCAqIFJldmlzaW9uIEYgKERTNjAwMDE3NjBHIC0gSnVuZSAyMDI0KSwgY29uZmlndXJlIHRoZSBNQUMgdG8gc2V0IHRpbWVcXG4gMzYxOlxcdFxcdCAqIHN0YW1waW5nIGF0IHRoZSBlbmQgb2YgdGhlIFN0YXJ0IG9mIEZyYW1lIERlbGltaXRlciAoU0ZEKSBhbmQgc2V0IHRoZVxcbiAzNjI6XFx0XFx0ICogVGltZXIgSW5jcmVtZW50IHJlZyB0byA0MCBucyB0byBiZSB1c2VkIGFzIGEgMjUgTUh6IGludGVybmFsIGNsb2NrLlxcbiAzNjM6XFx0XFx0ICovXFxuIDM2NDpcXHRcXHRyZXQgPSBvYV90YzZfd3JpdGVfcmVnaXN0ZXIocHJpdi1cXHUwMDNldGM2LCBMQU44NjVYX1JFR19NQUNfVFNVX1RJTUVSX0lOQ1IsXFxuIDM2NTpcXHRcXHRcXHRcXHRcXHQgICAgTUFDX1RTVV9USU1FUl9JTkNSX0NPVU5UX05BTk9TRUNPTkRTKTtcXG4gMzY2OlxcdFxcdGlmIChyZXQpIHtcXG4gMzY3OlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnNwaS1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIGNvbmZpZyBUU1UgVGltZXIgSW5jciByZWc6ICVkXFxcXG5cXFwiLFxcbiAzNjg6XFx0XFx0XFx0XFx0cmV0KTtcXG4gMzY5OlxcdFxcdFxcdGdvdG8gb2FfdGM2X2V4aXQ7XFxuIDM3MDpcXHRcXHR9XFxuIDM3MTpcXHRcXG4gMzcyOlxcdFxcdC8qIEFzIHBlciB0aGUgcG9pbnQgczMgaW4gdGhlIGJlbG93IGVycmF0YSwgU1BJIHJlY2VpdmUgRXRoZXJuZXQgZnJhbWVcXG4gMzczOlxcdFxcdCAqIHRyYW5zZmVyIG1heSBoYWx0IHdoZW4gc3RhcnRpbmcgdGhlIG5leHQgZnJhbWUgaW4gdGhlIHNhbWUgZGF0YSBibG9ja1xcbiAzNzQ6XFx0XFx0ICogKGNodW5rKSBhcyB0aGUgZW5kIG9mIGEgcHJldmlvdXMgZnJhbWUuIFRoZSBSRkEgZmllbGQgc2hvdWxkIGJlXFxuIDM3NTpcXHRcXHQgKiBjb25maWd1cmVkIHRvIDAxYiBvciAxMGIgZm9yIHByb3BlciBvcGVyYXRpb24uIEluIHRoZXNlIG1vZGVzLCBvbmx5XFxuIDM3NjpcXHRcXHQgKiBvbmUgcmVjZWl2ZSBFdGhlcm5ldCBmcmFtZSB3aWxsIGJlIHBsYWNlZCBpbiBhIHNpbmdsZSBkYXRhIGJsb2NrLlxcbiAzNzc6XFx0XFx0ICogV2hlbiB0aGUgUkZBIGZpZWxkIGlzIHdyaXR0ZW4gdG8gMDFiLCByZWNlaXZlZCBmcmFtZXMgd2lsbCBiZSBmb3JjZWRcXG4gMzc4OlxcdFxcdCAqIHRvIG9ubHkgc3RhcnQgaW4gdGhlIGZpcnN0IHdvcmQgb2YgdGhlIGRhdGEgYmxvY2sgcGF5bG9hZCAoU1dPPTApLiBBc1xcbiAzNzk6XFx0XFx0ICogcmVjb21tZW5kZWQsIGVuYWJsZSB6ZXJvIGFsaWduIHJlY2VpdmUgZnJhbWUgZmVhdHVyZSBmb3IgcHJvcGVyXFxuIDM4MDpcXHRcXHQgKiBvcGVyYXRpb24uXFxuIDM4MTpcXHRcXHQgKlxcbiAzODI6XFx0XFx0ICogaHR0cHM6Ly93dzEubWljcm9jaGlwLmNvbS9kb3dubG9hZHMvYWVtRG9jdW1lbnRzL2RvY3VtZW50cy9BSVMvUHJvZHVjdERvY3VtZW50cy9FcnJhdGEvTEFOODY1MC0xLUVycmF0YS04MDAwMTA3NS5wZGZcXG4gMzgzOlxcdFxcdCAqL1xcbiAzODQ6XFx0XFx0cmV0ID0gb2FfdGM2X3plcm9fYWxpZ25fcmVjZWl2ZV9mcmFtZV9lbmFibGUocHJpdi1cXHUwMDNldGM2KTtcXG4gMzg1OlxcdFxcdGlmIChyZXQpIHtcXG4gMzg2OlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnNwaS1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIHNldCBaQVJGRTogJWRcXFxcblxcXCIsIHJldCk7XFxuIDM4NzpcXHRcXHRcXHRnb3RvIG9hX3RjNl9leGl0O1xcbiAzODg6XFx0XFx0fVxcbiAzODk6XFx0XFxuIDM5MDpcXHRcXHQvKiBHZXQgdGhlIE1BQyBhZGRyZXNzIGZyb20gdGhlIFNQSSBkZXZpY2UgdHJlZSBub2RlICovXFxuIDM5MTpcXHRcXHRpZiAoZGV2aWNlX2dldF9ldGhkZXZfYWRkcmVzcyhcXHUwMDI2c3BpLVxcdTAwM2VkZXYsIG5ldGRldikpXFxuIDM5MjpcXHRcXHRcXHRldGhfaHdfYWRkcl9yYW5kb20obmV0ZGV2KTtcXG4gMzkzOlxcdFxcbiAzOTQ6XFx0XFx0cmV0ID0gbGFuODY1eF9zZXRfaHdfbWFjYWRkcihwcml2LCBuZXRkZXYtXFx1MDAzZWRldl9hZGRyKTtcXG4gMzk1OlxcdFxcdGlmIChyZXQpIHtcXG4gMzk2OlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnNwaS1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIGNvbmZpZ3VyZSBNQUM6ICVkXFxcXG5cXFwiLCByZXQpO1xcbiAzOTc6XFx0XFx0XFx0Z290byBvYV90YzZfZXhpdDtcXG4gMzk4OlxcdFxcdH1cXG4gMzk5OlxcdFxcbiA0MDA6XFx0XFx0bmV0ZGV2LVxcdTAwM2VpZl9wb3J0ID0gSUZfUE9SVF8xMEJBU0VUO1xcbiA0MDE6XFx0XFx0bmV0ZGV2LVxcdTAwM2VpcnEgPSBzcGktXFx1MDAzZWlycTtcXG4gNDAyOlxcdFxcdG5ldGRldi1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZsYW44NjV4X25ldGRldl9vcHM7XFxuIDQwMzpcXHRcXHRuZXRkZXYtXFx1MDAzZWV0aHRvb2xfb3BzID0gXFx1MDAyNmxhbjg2NXhfZXRodG9vbF9vcHM7XFxuIDQwNDpcXHRcXG4gNDA1OlxcdFxcdHJldCA9IHJlZ2lzdGVyX25ldGRldihuZXRkZXYpO1xcbiA0MDY6XFx0XFx0aWYgKHJldCkge1xcbiA0MDc6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2c3BpLVxcdTAwM2VkZXYsIFxcXCJSZWdpc3RlciBuZXRkZXYgZmFpbGVkIChyZXQgPSAlZClcXFwiLCByZXQpO1xcbiA0MDg6XFx0XFx0XFx0Z290byBvYV90YzZfZXhpdDtcXG4gNDA5OlxcdFxcdH1cXG4gNDEwOlxcdFxcbiA0MTE6XFx0XFx0cmV0dXJuIDA7XFxuIDQxMjpcXHRcXG4gNDEzOlxcdG9hX3RjNl9leGl0OlxcbiA0MTQ6XFx0XFx0b2FfdGM2X2V4aXQocHJpdi1cXHUwMDNldGM2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDg6MjI6NDYuNzA5MTU1MDI5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU1MTAzMDU4MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBGZWFzaWJpbGl0eSBBc3Nlc3NtZW50KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgaW52b2x2ZXMgdGhlIGBsYW44NjV4YCwgYG9hX3RjNmAsIGFuZCBgbWljcm9jaGlwX3Qxc2AgY29tcG9uZW50cy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRldGVybWluZSBpZiB0aGlzIGNvZGUgaXMgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnQuIFRoZSB0cmlhZ2UgcGhpbG9zb3BoeSBwcmlvcml0aXplcyByZWFjaGFiaWxpdHkgYXMgdGhlIHByaW1hcnkgZ2F0ZS5cblxuRmlyc3QsIEkgcmVtZW1iZXIgdGhhdCBgbGFuODY1eGAgaXMgYSBNQUMtUEhZIGNvbm5lY3RlZCB2aWEgU1BJLiBUaGUgY3JpdGljYWwgcXVlc3Rpb24gaGVyZSBpcyB3aGV0aGVyIHRoaXMgaGFyZHdhcmUgb3IgYW55dGhpbmcgc2ltaWxhciBjYW4gYmUgZW11bGF0ZWQgd2l0aGluIHRoZSBzdGFuZGFyZCBRRU1VIHNldHVwIHdlJ3JlIHVzaW5nLiBTYWRseSwgUUVNVSdzIGRvY3VtZW50YXRpb24gYW5kIG15IHByaW9yIGtub3dsZWRnZSB0ZWxsIG1lIGl0IGRvZXNuJ3QgZW11bGF0ZSB0aGUgTEFOODY1MCwgTEFOODY1MSwgb3IgYW55IE1pY3JvY2hpcCBUMVMgUEhZLCBub3IgZG9lcyBpdCBoYXZlIGFuIE9BLVRDNiBjaGlwIGVtdWxhdGlvbi5cblxuTm93LCBsZXQncyBhcHBseSB0aGUgdHJpYWdlIHBoaWxvc29waHkuIFNlY3Rpb24gMSBzdHJlc3NlcyB0aGF0IGZ1enppbmcgc2hvdWxkIG9ubHkgdGFyZ2V0IGNvZGUgdGhhdCAqZXhlY3V0ZXMqIGluIGEgc3RhbmRhcmQgdmlydHVhbCBlbnZpcm9ubWVudC4gU2VjdGlvbiAyIGxheXMgb3V0IHRoZSBcIm5lZ2F0aXZlIGNyaXRlcmlhXCIgZm9yIGRldGVybWluaW5nIHdoZW4gdG8gKm5vdCogZnV6ei4gTXkgcHJpbWFyeSBjb25jZXJuIGlzIGlmIHRoZSBtb2RpZmllZCBjb2RlIGZhbGxzIGludG8gdGhpcyBjYXRlZ29yeSwgc3BlY2lmaWNhbGx5OiBcIlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZVwiIC0gbGlrZSB2ZW5kb3Itc3BlY2lmaWMgZGV2aWNlcyByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQyBjYXJkcyB1bmF2YWlsYWJsZSBpbiBRRU1VLiBBbHNvLCBkcml2ZXJzIHRoYXQgYXJlIG9ubHkgdXNlZCBkdXJpbmcgcGh5c2ljYWwgZGV2aWNlIHJlbW92YWwsIG9yIGFyZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMsIGFyZSB0byBiZSBpZ25vcmVkLlxuXG5TZWN0aW9uIDMgb3V0bGluZXMgdGhlIFwicG9zaXRpdmUgY3JpdGVyaWEsXCIgY29kZSB0aGF0ICpzaG91bGQqIGJlIGZ1enplZC4gVGhhdCBpbmNsdWRlcyBhbnl0aGluZyBpbiBjb3JlIHN1YnN5c3RlbXMsIHJlZmFjdG9yaW5ncywgcnVudGltZSBhc3NlcnRpb25zLCBvciBkcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgc3VjaCBhcyB2aXJ0aW8sIFVTQiBnYWRnZXQsIGV0Yy5cblxuSSd2ZSBnb3QgZm91ciBmaWxlcyBpbiB0aGUgbW9kaWZpZWQgY29kZTogYGxhbjg2NXguY2AsIGBvYV90YzYuY2AsIGBtaWNyb2NoaXBfdDFzLmNgLCBhbmQgYG9hX3RjNi5oYC4gTXkgYW5hbHlzaXMgc2F5cyB0aGF0OlxuXG4xLiAgYGxhbjg2NXguY2AgaXMgdGhlIEV0aGVybmV0IGNvbnRyb2xsZXIgZHJpdmVyIGZvciB0aGUgTWljcm9jaGlwIExBTjg2NXggZmFtaWx5LCB1c2luZyBTUEkuXG4yLiAgYG9hX3RjNi5jYCBpcyB0aGUgT3BlbiBBbGxpYW5jZSBUQzYgMTBCQVNFLVQxUyBNQUMtUEhZIHByb3RvY29sIGxpYnJhcnksIGFsc28gZm9yIFNQSS5cbjMuICBgbWljcm9jaGlwX3Qxcy5jYCBpcyB0aGUgRXRoZXJuZXQgUEhZIGRyaXZlciBmb3IgTEFOODY3eC9MQU44NjV4LlxuNC4gIGBvYV90YzYuaGAgaXMgdGhlIGFzc29jaWF0ZWQgaGVhZGVyLlxuXG5HaXZlbiB0aGF0IHRoZXNlIGFyZSBTUEkgZHJpdmVycyBmb3IgcGh5c2ljYWwgTUFDLVBIWSBjaGlwcywgdGhlIGtleSBxdWVzdGlvbiBpczogYXJlIGFueSBvZiB0aGVzZSBjb21wb25lbnRzIHVzYWJsZSB3aXRoIHZpcnR1YWwgZHJpdmVycyBvciBlbXVsYXRlZCBoYXJkd2FyZT8gVGhlIGFuc3dlciBsb29rcyB0byBiZSBuby4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gY2hlY2sgYWxsIHRoZSBrZXJuZWwgdXNlcyBvZiBgb2FfdGM2YCBhbmQgZGVjaWRlIGlmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI4ODksIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODoyMjo1Mi4yMTk0NjQzODdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5OTg0NTg2MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib2FfdGM2X2luaXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL29hLXRjNi1mcmFtZXdvcmsucnN0PTQ1ND1UaGUgaW5jbHVkZS9saW51eC9vYV90YzYuaCBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9vYS10YzYtZnJhbWV3b3JrLnJzdC00NTUtXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL29hLXRjNi1mcmFtZXdvcmsucnN0OjQ1NjouLiBjOmZ1bmN0aW9uOjogc3RydWN0IG9hX3RjNiAqb2FfdGM2X2luaXQoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSwgXFxcXFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9vYS10YzYtZnJhbWV3b3JrLnJzdC00NTctICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jPTcwOT1zdGF0aWMgaW50IGFkaW4xMTQwX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy03MjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM6NzI3OlxcdHByaXYtXFx1MDAzZXRjNiA9IG9hX3RjNl9pbml0KHNwaSwgbmV0ZGV2LCBcXHUwMDI2dGM2X3F1aXJrcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtNzI4LVxcdGlmICghcHJpdi1cXHUwMDNldGM2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jPTMzMz1zdGF0aWMgaW50IGxhbjg2NXhfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zNTAtXFx0dGM2X3F1aXJrcy5xdWlya19mbGFncyA9IE9BX1RDNl9QSFlfSU5UO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozNTE6XFx0cHJpdi1cXHUwMDNldGM2ID0gb2FfdGM2X2luaXQoc3BpLCBuZXRkZXYsIFxcdTAwMjZ0YzZfcXVpcmtzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzUyLVxcdGlmICghcHJpdi1cXHUwMDNldGM2KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz0xNTA1PXN0YXRpYyBpbnQgb2FfdGM2X2NoZWNrX2N0cmxfcHJvdGVjdGlvbihzdHJ1Y3Qgb2FfdGM2ICp0YzYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xNTE5LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjE1MjA6ICogb2FfdGM2X2luaXQgLSBhbGxvY2F0ZXMgYW5kIGluaXRpYWxpemVzIG9hX3RjNiBzdHJ1Y3R1cmUuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTUyMS0gKiBAc3BpOiBkZXZpY2Ugd2l0aCB3aGljaCBkYXRhIHdpbGwgYmUgZXhjaGFuZ2VkLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTUyNy0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxNTI4OnN0cnVjdCBvYV90YzYgKm9hX3RjNl9pbml0KHN0cnVjdCBzcGlfZGV2aWNlICpzcGksIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTUyOS1cXHRcXHRcXHQgICBzdHJ1Y3Qgb2FfdGM2X3F1aXJrcyAqcXVpcmtzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTY0NC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTY0NTpFWFBPUlRfU1lNQk9MX0dQTChvYV90YzZfaW5pdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTY0Ni1cXG4tLVxcbmluY2x1ZGUvbGludXgvb2FfdGM2Lmg9NzY9c3RydWN0IG9hX3RjNl9xdWlya3Mge1xcbi0tXFxuaW5jbHVkZS9saW51eC9vYV90YzYuaC03OS1cXG5pbmNsdWRlL2xpbnV4L29hX3RjNi5oOjgwOnN0cnVjdCBvYV90YzYgKm9hX3RjNl9pbml0KHN0cnVjdCBzcGlfZGV2aWNlICpzcGksIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuaW5jbHVkZS9saW51eC9vYV90YzYuaC04MS1cXHRcXHRcXHQgICBzdHJ1Y3Qgb2FfdGM2X3F1aXJrcyAqcXVpcmtzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDg6MjI6NTQuMjE3OTMyODg0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ5MTA0OTYzODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgVW5yZWFjaGFiaWxpdHkgb2YgdGhlIE1vZGlmaWVkIENvZGUqKlxuXG5Pa2F5LCBoZXJlJ3MgdGhlIGRlYWw6IEkndmUgbG9va2VkIGF0IHRoZSBjYWxscyB0byBgb2FfdGM2X2luaXRgLiBJIHNlZSB0aGF0IGl0J3Mgb25seSBjYWxsZWQgYnkgYGFkaW4xMTQwX3Byb2JlYCBhbmQgYGxhbjg2NXhfcHJvYmVgLiBUaGVzZSBhcmUgU1BJIEV0aGVybmV0IGNvbnRyb2xsZXIgZHJpdmVycywgc3BlY2lmaWNhbGx5IGZvciB0aGUgQW5hbG9nIERldmljZXMgQURJTjExNDAgYW5kIHRoZSBNaWNyb2NoaXAgTEFOODY1MC8xIGNoaXBzLiBUaGVuIHRoZXJlJ3MgYG1pY3JvY2hpcF90MXNgLCBhIFBIWSBkcml2ZXIgZm9yIHRoZSBNaWNyb2NoaXAgTEFOODY3eCAvIExBTjg2NXggUEhZIGhhcmR3YXJlIGNoaXBzLlxuXG5UaGVzZSBhcmUgbm90IGdlbmVyaWMgZGV2aWNlcy4gVGhleSdyZSBwaHlzaWNhbCBJQ3Mg4oCTIDEwQkFTRS1UMVMgc2luZ2xlLXBhaXIgRXRoZXJuZXQgTUFDLVBIWXMgb3IgUEhZcyB0aGF0IGNvbm5lY3Qgb3ZlciBTUEkvTURJTy4gQW5kLCBhcyBmYXIgYXMgSSBrbm93LCB0aGVzZSBhcmVuJ3QgZW11bGF0ZWQgYnkgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgVk1zLCB3aGljaCBhcmUgc3RhbmRhcmQgZW52aXJvbm1lbnRzIGZvciBvdXIgZnV6emluZyBlZmZvcnRzLiBXaXRob3V0IHRoYXQgYWN0dWFsIGhhcmR3YXJlIG9yIGEgdXNhYmxlIFNQSSBkZXZpY2UsIG5laXRoZXIgYGxhbjg2NXhfcHJvYmVgLCBgYWRpbjExNDBfcHJvYmVgLCBgb2FfdGM2YCwgbm9yIGBtaWNyb2NoaXBfdDFzX2RyaXZlcmAgY2FuIGJlIHByb2JlZCBvciBydW4uXG5cblNvLCBpbiBlc3NlbmNlLCBhbGwgb2YgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiBJdCdzIGVzc2VudGlhbGx5IGRlYWQgY29kZSBpbiBvdXIgY3VycmVudCBmdXp6aW5nIHNldHVwLlxuXG5Ob3csIGxldCdzIHZlcmlmeSBpZiBhbGwgdGhlIHByZS1yZXF1aXNpdGVzIGFyZSBtZXQ6XG5cbjEuICAqKklzIGBXb3J0aEZ1enppbmdgIGZhbHNlPyoqIFllcywgYWJzb2x1dGVseS4gVGhlIGNoYW5nZXMgYXJlIGFsbCBzcGVjaWZpYyB0byBoYXJkd2FyZSAodGhlIGBsYW44NjV4YCwgYG9hX3RjNmAsIGFuZCBgbWljcm9jaGlwX3Qxc2AgZHJpdmVycykgdGhhdCB3ZSBjYW4ndCBlbXVsYXRlIGluIG91ciB0eXBpY2FsIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlxuXG4yLiAgKipBcmUgYEZvY3VzU3ltYm9sc2AgYW5kIGBFbmFibGVDb25maWdzYCBhcHByb3ByaWF0ZWx5IHNldCB3aGVuIGBXb3J0aEZ1enppbmdgIGlzIGZhbHNlPyoqIFRoZXkgc2hvdWxkIGJlIG51bGwgb3IgYW4gZW1wdHkgbGlzdC4gU28sIGxldCdzIGRvdWJsZS1jaGVjayB0aGUgcGFyYW1ldGVyIGZvcm1hdHRpbmcgZm9yIGBzZXQtcmVzdWx0c2A6IGBFbmFibGVDb25maWdzYCBzaG91bGQgYmUgYSBsaXN0IG9mIHN0cmluZ3Mgb3IgbnVsbC4gYEZvY3VzU3ltYm9sc2AgYXMgd2VsbCwgc2hvdWxkIGJlIGEgbGlzdCBvZiBzdHJpbmdzIG9yIG51bGwuIEkgd2lsbCBwcm92aWRlIGEgY2xlYXIgYW5kIGNvbmNpc2UgYFJlYXNvbmluZ2AgYW5kIHNldCBgV29ydGhGdXp6aW5nYCB0byBib29sZWFuLlxuXG5JIHRoaW5rIGEgY2xlYXIsIGNvbmNpc2UgcmVhc29uaW5nIHN0YXRlbWVudCB3b3VsZCBiZTogXCJUaGUgY2hhbmdlcyBtb2RpZnkgdGhlIE1pY3JvY2hpcCBMQU44NjV4IEV0aGVybmV0IGRyaXZlciwgdGhlIE9wZW4gQWxsaWFuY2UgVEM2IFNQSSBNQUMtUEhZIHN1cHBvcnQgbGlicmFyeSwgYW5kIHRoZSBNaWNyb2NoaXAgMTBCQVNFLVQxUyBQSFkgZHJpdmVyLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgc3BlY2lmaWMgcGh5c2ljYWwgMTBCQVNFLVQxUyBFdGhlcm5ldCAvIE1BQy1QSFkgaGFyZHdhcmUgYXR0YWNoZWQgdmlhIFNQSS9NRElPIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCJcblxuQWxyaWdodCwgdGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MjU5LCJPdXRwdXRUb2tlbnMiOjE3NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODoyMjo1OS4xMjg0MzI2ODNaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDYyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWljcm9jaGlwIExBTjg2NXggU1BJIEV0aGVybmV0IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jKSwgdGhlIE9wZW4gQWxsaWFuY2UgVEM2IE1BQy1QSFkgcHJvdG9jb2wgbGF5ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jKSwgYW5kIHRoZSBNaWNyb2NoaXAgMTBCQVNFLVQxUyBQSFkgZHJpdmVyIChkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jKS4gVGhlc2UgZHJpdmVycyBvcGVyYXRlIG9uIHNwZWNpZmljIHBoeXNpY2FsIDEwQkFTRS1UMVMgc2luZ2xlLXBhaXIgRXRoZXJuZXQgaGFyZHdhcmUgY29ubmVjdGVkIG92ZXIgU1BJL01ESU8gdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWljcm9jaGlwIExBTjg2NXggU1BJIEV0aGVybmV0IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jKSwgdGhlIE9wZW4gQWxsaWFuY2UgVEM2IE1BQy1QSFkgcHJvdG9jb2wgbGF5ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jKSwgYW5kIHRoZSBNaWNyb2NoaXAgMTBCQVNFLVQxUyBQSFkgZHJpdmVyIChkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jKS4gVGhlc2UgZHJpdmVycyBvcGVyYXRlIG9uIHNwZWNpZmljIHBoeXNpY2FsIDEwQkFTRS1UMVMgc2luZ2xlLXBhaXIgRXRoZXJuZXQgaGFyZHdhcmUgY29ubmVjdGVkIG92ZXIgU1BJL01ESU8gdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODoyMjo1OS4xMjg0NjIwMzRaIiwiU2VxIjoyMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowc5vbn[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-07 08:20:27 +0000 UTC FinishedAt: 2026-09-07 08:23:00 +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+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjIyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBMQU44NjV4IFNQSSBFdGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYyksIHRoZSBPcGVuIEFsbGlhbmNlIFRDNiBNQUMtUEhZIHByb3RvY29sIGxheWVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYyksIGFuZCB0aGUgTWljcm9jaGlwIDEwQkFTRS1UMVMgUEhZIGRyaXZlciAoZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYykuIFRoZXNlIGRyaXZlcnMgb3BlcmF0ZSBvbiBzcGVjaWZpYyBwaHlzaWNhbCAxMEJBU0UtVDFTIHNpbmdsZS1wYWlyIEV0aGVybmV0IGhhcmR3YXJlIGNvbm5lY3RlZCBvdmVyIFNQSS9NRElPIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODoyMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQ0YmMxYzM3ZjdlODY2ZWI5OTdkODg3OGE1ZjZlN2Y3MDUwYjdkMWZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCA3IDA4OjIyOjA0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguY1xuaW5kZXggMjZhMjc2MTMzMmE1YS4uMDQzYTNkYzNmOTY1NyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jXG5AQCAtMzMyLDYgJiM0MzszMzIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGxhbjg2NXhfbmV0ZGV2X29wcyA9IHtcbiBcbiBzdGF0aWMgaW50IGxhbjg2NXhfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbiB7XG4mIzQzO1x0c3RydWN0IG9hX3RjNl9xdWlya3MgdGM2X3F1aXJrcyA9IHt9O1xuIFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbiBcdHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXY7XG4gXHRpbnQgcmV0O1xuQEAgLTM0Niw3ICYjNDM7MzQ3LDggQEAgc3RhdGljIGludCBsYW44NjV4X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4gXHRzcGlfc2V0X2RydmRhdGEoc3BpLCBwcml2KTtcbiBcdElOSVRfV09SSyhcdTAwMjZwcml2LVx1MDAzZW11bHRpY2FzdF93b3JrLCBsYW44NjV4X211bHRpY2FzdF93b3JrX2hhbmRsZXIpO1xuIFxuLVx0cHJpdi1cdTAwM2V0YzYgPSBvYV90YzZfaW5pdChzcGksIG5ldGRldiwgTlVMTCk7XG4mIzQzO1x0dGM2X3F1aXJrcy5xdWlya19mbGFncyA9IE9BX1RDNl9QSFlfSU5UO1xuJiM0MztcdHByaXYtXHUwMDNldGM2ID0gb2FfdGM2X2luaXQoc3BpLCBuZXRkZXYsIFx1MDAyNnRjNl9xdWlya3MpO1xuIFx0aWYgKCFwcml2LVx1MDAzZXRjNikge1xuIFx0XHRyZXQgPSAtRU5PREVWO1xuIFx0XHRnb3RvIGZyZWVfbmV0ZGV2O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmNcbmluZGV4IDZmY2M1ZjU2MWQ1NjAuLjAwYjAxNzZjMWZlN2EgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmNcbkBAIC04LDYgJiM0Mzs4LDggQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRmaWVsZC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW9wb2xsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pbnRlcnJ1cHQuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9pcnEuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9pcnFkb21haW4uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21kaW8uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2FfdGM2LmhcdTAwM2VcbkBAIC03MCw2ICYjNDM7NzIsOCBAQCBzdHJ1Y3Qgb2FfdGM2IHtcbiBcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXY7XG4gXHRzdHJ1Y3QgbWlpX2J1cyAqbWRpb2J1cztcbiBcdHN0cnVjdCBzcGlfZGV2aWNlICpzcGk7XG4mIzQzO1x0c3RydWN0IGlycV9kb21haW4gKnBoeV9pcnFfZG9tYWluO1xuJiM0MztcdGludCBwaHlfdmlycTtcbiBcdHN0cnVjdCBtdXRleCBzcGlfY3RybF9sb2NrOyAvKiBQcm90ZWN0cyBzcGkgY29udHJvbCB0cmFuc2ZlciAqL1xuIFx0c3BpbmxvY2tfdCB0eF9za2JfbG9jazsgLyogUHJvdGVjdHMgdHggc2tiIGhhbmRsaW5nICovXG4gXHR2b2lkICpzcGlfY3RybF90eF9idWY7XG5AQCAtNTI4LDYgJiM0Mzs1MzIsNDQgQEAgaW50IG9hX3RjNl9tZGlvYnVzX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IGRldm51bSxcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwob2FfdGM2X21kaW9idXNfd3JpdGVfYzQ1KTtcbiBcbiYjNDM7c3RhdGljIGludCBvYV90YzZfcGh5X2lycV9tYXAoc3RydWN0IGlycV9kb21haW4gKmRvbWFpbiwgdW5zaWduZWQgaW50IGlycSxcbiYjNDM7XHRcdFx0ICAgICAgaXJxX2h3X251bWJlcl90IGh3aXJxKVxuJiM0Mzt7XG4mIzQzO1x0aXJxX3NldF9jaGlwX2RhdGEoaXJxLCBkb21haW4tXHUwMDNlaG9zdF9kYXRhKTtcbiYjNDM7XHRpcnFfc2V0X2NoaXBfYW5kX2hhbmRsZXIoaXJxLCBcdTAwMjZkdW1teV9pcnFfY2hpcCwgaGFuZGxlX3NpbXBsZV9pcnEpO1xuJiM0MztcdGlycV9zZXRfbmVzdGVkX3RocmVhZChpcnEsIHRydWUpO1xuJiM0MztcdGlycV9zZXRfbm9wcm9iZShpcnEpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfZG9tYWluX29wcyBvYV90YzZfcGh5X2lycV9kb21haW5fb3BzID0ge1xuJiM0MztcdC5tYXAgPSBvYV90YzZfcGh5X2lycV9tYXAsXG4mIzQzO307XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IG9hX3RjNl9waHlfaXJxX3NldHVwKHN0cnVjdCBvYV90YzYgKnRjNilcbiYjNDM7e1xuJiM0MztcdHRjNi1cdTAwM2VwaHlfaXJxX2RvbWFpbiA9XG4mIzQzO1x0XHRpcnFfZG9tYWluX2NyZWF0ZV9saW5lYXIoTlVMTCwgMSxcbiYjNDM7XHRcdFx0XHRcdCBcdTAwMjZvYV90YzZfcGh5X2lycV9kb21haW5fb3BzLCB0YzYpO1xuJiM0MztcdGlmICghdGM2LVx1MDAzZXBoeV9pcnFfZG9tYWluKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1xuJiM0MztcdHRjNi1cdTAwM2VwaHlfdmlycSA9IGlycV9jcmVhdGVfbWFwcGluZyh0YzYtXHUwMDNlcGh5X2lycV9kb21haW4sIDApO1xuJiM0MztcdGlmICghdGM2LVx1MDAzZXBoeV92aXJxKSB7XG4mIzQzO1x0XHRpcnFfZG9tYWluX3JlbW92ZSh0YzYtXHUwMDNlcGh5X2lycV9kb21haW4pO1xuJiM0MztcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgb2FfdGM2X3BoeV9pcnFfdGVhcmRvd24oc3RydWN0IG9hX3RjNiAqdGM2KVxuJiM0Mzt7XG4mIzQzO1x0aXJxX2Rpc3Bvc2VfbWFwcGluZyh0YzYtXHUwMDNlcGh5X3ZpcnEpO1xuJiM0MztcdGlycV9kb21haW5fcmVtb3ZlKHRjNi1cdTAwM2VwaHlfaXJxX2RvbWFpbik7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBvYV90YzZfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3Qgb2FfdGM2ICp0YzYpXG4ge1xuIFx0aW50IHJldDtcbkBAIC01NTksOSAmIzQzOzYwMSwyNSBAQCBzdGF0aWMgaW50IG9hX3RjNl9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBvYV90YzYgKnRjNilcbiBcdHNucHJpbnRmKHRjNi1cdTAwM2VtZGlvYnVzLVx1MDAzZWlkLCBBUlJBWV9TSVpFKHRjNi1cdTAwM2VtZGlvYnVzLVx1MDAzZWlkKSwgXCYjMzQ7JXNcJiMzNDssXG4gXHRcdCBkZXZfbmFtZShcdTAwMjZ0YzYtXHUwMDNlc3BpLVx1MDAzZWRldikpO1xuIFxuJiM0MztcdGlmICh0YzYtXHUwMDNlcXVpcmtfZmxhZ3MgXHUwMDI2IE9BX1RDNl9QSFlfSU5UKSB7XG4mIzQzO1x0XHRyZXQgPSBvYV90YzZfcGh5X2lycV9zZXR1cCh0YzYpO1xuJiM0MztcdFx0aWYgKHJldCkge1xuJiM0MztcdFx0XHRtZGlvYnVzX2ZyZWUodGM2LVx1MDAzZW1kaW9idXMpO1xuJiM0MztcdFx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdFx0fVxuJiM0MztcdFx0LyogUG9wdWxhdGUgYWxsIGlycVtdIGVudHJpZXMgYmVmb3JlIHJlZ2lzdHJhdGlvbiBzb1xuJiM0MztcdFx0ICogcGh5X2RldmljZV9jcmVhdGUoKSBwaWNrcyB1cCB0aGUgdmlydHVhbCBJUlEgcmVnYXJkbGVzcyBvZlxuJiM0MztcdFx0ICogdGhlIFBIWSYjMzk7cyBNRElPIGFkZHJlc3MuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBQSFlfTUFYX0FERFI7IGkmIzQzOyYjNDM7KVxuJiM0MztcdFx0XHR0YzYtXHUwMDNlbWRpb2J1cy1cdTAwM2VpcnFbaV0gPSB0YzYtXHUwMDNlcGh5X3ZpcnE7XG4mIzQzO1x0fVxuJiM0MztcbiBcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIodGM2LVx1MDAzZW1kaW9idXMpO1xuIFx0aWYgKHJldCkge1xuIFx0XHRuZXRkZXZfZXJyKHRjNi1cdTAwM2VuZXRkZXYsIFwmIzM0O0NvdWxkIG5vdCByZWdpc3RlciBNRElPIGJ1c1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRpZiAodGM2LVx1MDAzZXF1aXJrX2ZsYWdzIFx1MDAyNiBPQV9UQzZfUEhZX0lOVClcbiYjNDM7XHRcdFx0b2FfdGM2X3BoeV9pcnFfdGVhcmRvd24odGM2KTtcbiBcdFx0bWRpb2J1c19mcmVlKHRjNi1cdTAwM2VtZGlvYnVzKTtcbiBcdFx0cmV0dXJuIHJldDtcbiBcdH1cbkBAIC01NzIsNiAmIzQzOzYzMCw4IEBAIHN0YXRpYyBpbnQgb2FfdGM2X21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG9hX3RjNiAqdGM2KVxuIHN0YXRpYyB2b2lkIG9hX3RjNl9tZGlvYnVzX3VucmVnaXN0ZXIoc3RydWN0IG9hX3RjNiAqdGM2KVxuIHtcbiBcdG1kaW9idXNfdW5yZWdpc3Rlcih0YzYtXHUwMDNlbWRpb2J1cyk7XG4mIzQzO1x0aWYgKHRjNi1cdTAwM2VxdWlya19mbGFncyBcdTAwMjYgT0FfVEM2X1BIWV9JTlQpXG4mIzQzO1x0XHRvYV90YzZfcGh5X2lycV90ZWFyZG93bih0YzYpO1xuIFx0bWRpb2J1c19mcmVlKHRjNi1cdTAwM2VtZGlvYnVzKTtcbiB9XG4gXG5AQCAtNjYxLDcgJiM0Mzs3MjEsNyBAQCBzdGF0aWMgaW50IG9hX3RjNl9zd19yZXNldF9tYWNwaHkoc3RydWN0IG9hX3RjNiAqdGM2KVxuIFx0cmV0dXJuIG9hX3RjNl93cml0ZV9yZWdpc3Rlcih0YzYsIE9BX1RDNl9SRUdfU1RBVFVTMCwgcmVndmFsKTtcbiB9XG4gXG4tc3RhdGljIGludCBvYV90YzZfdW5tYXNrX21hY3BoeV9lcnJvcl9pbnRlcnJ1cHRzKHN0cnVjdCBvYV90YzYgKnRjNilcbiYjNDM7c3RhdGljIGludCBvYV90YzZfdW5tYXNrX2ludGVycnVwdHMoc3RydWN0IG9hX3RjNiAqdGM2KVxuIHtcbiBcdHUzMiByZWd2YWw7XG4gXHRpbnQgcmV0O1xuQEAgLTY3MCw3ICYjNDM7NzMwLDggQEAgc3RhdGljIGludCBvYV90YzZfdW5tYXNrX21hY3BoeV9lcnJvcl9pbnRlcnJ1cHRzKHN0cnVjdCBvYV90YzYgKnRjNilcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4tXHRyZWd2YWwgXHUwMDI2PSB+KE9BX1RDNl9JTlRfTUFTSzBfVFhfUFJPVE9DT0xfRVJSX01BU0sgfFxuJiM0MztcdHJlZ3ZhbCBcdTAwMjY9IH4oT0FfVEM2X0lOVF9NQVNLMF9QSFlfSU5UX01BU0sgfFxuJiM0MztcdFx0ICAgIE9BX1RDNl9JTlRfTUFTSzBfVFhfUFJPVE9DT0xfRVJSX01BU0sgfFxuIFx0XHQgICAgT0FfVEM2X0lOVF9NQVNLMF9SWF9CVUZGRVJfT1ZFUkZMT1dfRVJSX01BU0sgfFxuIFx0XHQgICAgT0FfVEM2X0lOVF9NQVNLMF9MT1NTX09GX0ZSQU1FX0VSUl9NQVNLIHxcbiBcdFx0ICAgIE9BX1RDNl9JTlRfTUFTSzBfSEVBREVSX0VSUl9NQVNLKTtcbkBAIC04MTAsNiAmIzQzOzg3MSwxNSBAQCBzdGF0aWMgaW50IG9hX3RjNl9wcm9jZXNzX2V4dGVuZGVkX3N0YXR1cyhzdHJ1Y3Qgb2FfdGM2ICp0YzYpXG4gXHRcdHJldHVybiByZXQ7XG4gXHR9XG4gXG4mIzQzO1x0LyogRGlzcGF0Y2ggdGhlIFBIWSBpbnRlcnJ1cHQgdG8gcGh5bGliIHZpYSB0aGUgbmVzdGVkIHZpcnR1YWwgSVJRIHNvXG4mIzQzO1x0ICogdGhlIFBIWSBkcml2ZXIgcmVhZHMgYW5kIGFja25vd2xlZGdlcyBpdHMgc3RhdHVzLiBQSFlJTlQgaXMgbGV2ZWxcbiYjNDM7XHQgKiB0cmlnZ2VyZWQsIHNvIGRvaW5nIHRoaXMgc3luY2hyb25vdXNseSBoZXJlIChpbiB0aGUgc2xlZXBhYmxlXG4mIzQzO1x0ICogdGhyZWFkZWQgSVJRKSBjbGVhcnMgdGhlIHNvdXJjZSBiZWZvcmUgdGhlIG5leHQgZGF0YSBjaHVuay5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoKHRjNi1cdTAwM2VxdWlya19mbGFncyBcdTAwMjYgT0FfVEM2X1BIWV9JTlQpIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICBGSUVMRF9HRVQoT0FfVEM2X1NUQVRVUzBfUEhZX0lOVCwgdmFsdWUpKVxuJiM0MztcdFx0aGFuZGxlX25lc3RlZF9pcnEodGM2LVx1MDAzZXBoeV92aXJxKTtcbiYjNDM7XG4gXHRpZiAoRklFTERfR0VUKE9BX1RDNl9TVEFUVVMwX1JYX0JVRkZFUl9PVkVSRkxPV19FUlJPUiwgdmFsdWUpKSB7XG4gXHRcdG9hX3RjNl9sb29rX2Zvcl9uZXdfZnJhbWUodGM2KTtcbiBcdFx0bmV0X2Vycl9yYXRlbGltaXRlZChcJiMzNDslczogUmVjZWl2ZSBidWZmZXIgb3ZlcmZsb3cgZXJyb3JcXG5cJiMzNDssXG5AQCAtMTUxOCw3ICYjNDM7MTU4OCw3IEBAIHN0cnVjdCBvYV90YzYgKm9hX3RjNl9pbml0KHN0cnVjdCBzcGlfZGV2aWNlICpzcGksIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuLVx0cmV0ID0gb2FfdGM2X3VubWFza19tYWNwaHlfZXJyb3JfaW50ZXJydXB0cyh0YzYpO1xuJiM0MztcdHJldCA9IG9hX3RjNl91bm1hc2tfaW50ZXJydXB0cyh0YzYpO1xuIFx0aWYgKHJldCkge1xuIFx0XHRkZXZfZXJyKFx1MDAyNnRjNi1cdTAwM2VzcGktXHUwMDNlZGV2LFxuIFx0XHRcdFwmIzM0O01BQy1QSFkgZXJyb3IgaW50ZXJydXB0cyB1bm1hc2sgZmFpbGVkOiAlZFxcblwmIzM0OywgcmV0KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jIGIvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuY1xuaW5kZXggNzNjMjNkMzExZDcyYS4uYzNhNzM4Yzc0MjViZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmNcbkBAIC0yNywxMSAmIzQzOzI3LDIzIEBAXG4gI2RlZmluZSBMQU44NjVYX1JFR19DRkdQQVJBTV9DVFJMIDB4MDBEQVxuICNkZWZpbmUgTEFOODY1WF9SRUdfU1RTMiAweDAwMTlcbiBcbiYjNDM7LyogUEhZIGludGVycnVwdCBzdGF0dXMgYW5kIG1hc2sgcmVnaXN0ZXJzIChNRElPX01NRF9WRU5EMikuIFRoZSBzdGF0dXMgYml0c1xuJiM0MzsgKiBhcmUgcmVhZC10by1jbGVhcjsgYSBtYXNrIGJpdCBpcyBlbmFibGVkIGJ5IHdyaXRpbmcgMC5cbiYjNDM7ICovXG4mIzQzOyNkZWZpbmUgTEFOODZYWF9SRUdfU1RTMVx0XHQweDAwMThcbiYjNDM7I2RlZmluZSBMQU44NlhYX1JFR19JTVNLMVx0XHQweDAwMUNcbiYjNDM7XG4mIzQzOyNkZWZpbmUgTEFOODZYWF9TVFMxX0xJTktfU1RTX0NIQU5HRURcdEJJVCgxMylcbiYjNDM7I2RlZmluZSBMQU44NlhYX1NUUzFfUExDQV9TVFNfQ0hBTkdFRFx0QklUKDExKVxuJiM0MztcbiAvKiBDb2xsaXNpb24gRGV0ZWN0b3IgQ29udHJvbCAwIFJlZ2lzdGVyICovXG4gI2RlZmluZSBMQU44NlhYX1JFR19DT0xfREVUX0NUUkwwXHQweDAwODdcbiAjZGVmaW5lIENPTF9ERVRfQ1RSTDBfRU5BQkxFX0JJVF9NQVNLXHRCSVQoMTUpXG4gI2RlZmluZSBDT0xfREVUX0VOQUJMRVx0XHRcdEJJVCgxNSlcbiAjZGVmaW5lIENPTF9ERVRfRElTQUJMRVx0XHRcdDB4MDAwMFxuJiM0MzsjZGVmaW5lIENPTF9ERVRfQ1RSTDBfQ0NNRkNfTUFTS1x0R0VOTUFTSygxMCwgOSlcbiYjNDM7LyogT0EgZGVmYXVsdDogY29sbGlzaW9ucyBnYXRlZCBieSBQTENBX1N0YXR1cyBpbiBoYXJkd2FyZSAqL1xuJiM0MzsjZGVmaW5lIENPTF9ERVRfQ1RSTDBfQ0NNRkNfT0FfREVGQVVMVFx0QklUKDkpXG4gXG4gLyogTEFOODY3MC8xLzIgUmV2LkQwIExpbmsgU3RhdHVzIFNlbGVjdGlvbiBSZWdpc3RlciAqL1xuICNkZWZpbmUgTEFOODY3WF9SRUdfTElOS19TVEFUVVNfQ1RSTFx0MHgwMDEyXG5AQCAtNDU4LDYgJiM0Mzs0NzAsMTYgQEAgc3RhdGljIGludCBsYW44Nnh4X3BsY2Ffc2V0X2NmZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbiYjNDM7XHQvKiBQSFlzIHdpdGggcm91dGVkIGludGVycnVwdHMgaGFuZGxlIENERU4gZHluYW1pY2FsbHkgdmlhIHRoZSBpbnRlcnJ1cHRcbiYjNDM7XHQgKiBoYW5kbGVyLCBzbyBza2lwIHRoZSBzdGF0aWMgd3JpdGUuIFBIWXMgcnVubmluZyB3aXRoIFBIWV9QT0xMIGhhdmUgbm9cbiYjNDM7XHQgKiBpbnRlcnJ1cHQgaGFuZGxlciwgc28gYXBwbHkgdGhlIHN0YXRpYyBDREVOIHdyaXRlIGFzIGEgYmFzZWxpbmUgb25cbiYjNDM7XHQgKiBldmVyeSBldGh0b29sIFBMQ0EgcmVjb25maWd1cmF0aW9uLiBUaGUgbGltaXRhdGlvbiBpcyB0aGF0IGF1dG9ub21vdXNcbiYjNDM7XHQgKiBQTENBIG1vZGUgdHJhbnNpdGlvbnMgYmV0d2VlbiBldGh0b29sIHJlY29uZmlndXJhdGlvbnMgYXJlIG5vdFxuJiM0MztcdCAqIHRyYWNrZWQgb24gc3VjaCBib2FyZHMuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKHBoeWRldi1cdTAwM2VpcnEgIT0gUEhZX1BPTEwpXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4gXHRpZiAocGxjYV9jZmctXHUwMDNlZW5hYmxlZClcbiBcdFx0cmV0dXJuIHBoeV9tb2RpZnlfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXG4gXHRcdFx0XHQgICAgICBMQU44NlhYX1JFR19DT0xfREVUX0NUUkwwLFxuQEAgLTQ4NCw2ICYjNDM7NTA2LDE4IEBAIHN0YXRpYyBpbnQgbGFuODY3eF9yZXZkMF9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0XHRcdHJldHVybiByZXQ7XG4gXHR9XG4gXG4mIzQzO1x0LyogQU4xNzYwOiBjb25maWd1cmUgQ0NNRkMgdG8gT0EgZGVmYXVsdCBzbyB0aGF0IHRoZSBoYXJkd2FyZVxuJiM0MztcdCAqIGF1dG9tYXRpY2FsbHkgZ2F0ZXMgY29sbGlzaW9uIGZvcndhcmRpbmcgdG8gdGhlIE1BQyBiYXNlZCBvblxuJiM0MztcdCAqIFBMQ0FfU3RhdHVzLiBDb2xsaXNpb25zIGFyZSBuZWl0aGVyIGNvdW50ZWQgbm9yIGZvcndhcmRlZCB3aGVuXG4mIzQzO1x0ICogUExDQV9TdGF0dXMgPSBPSywgZWxpbWluYXRpbmcgdGhlIG5lZWQgZm9yIHNvZnR3YXJlLWRyaXZlbiBDREVOXG4mIzQzO1x0ICogdG9nZ2xpbmcgaW4gdGhlIGludGVycnVwdCBoYW5kbGVyLiBDREVOIHJlbWFpbnMgZW5hYmxlZC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRyZXQgPSBwaHlfbW9kaWZ5X21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBMQU44NlhYX1JFR19DT0xfREVUX0NUUkwwLFxuJiM0MztcdFx0XHQgICAgIENPTF9ERVRfQ1RSTDBfQ0NNRkNfTUFTSyxcbiYjNDM7XHRcdFx0ICAgICBDT0xfREVUX0NUUkwwX0NDTUZDX09BX0RFRkFVTFQpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiBcdC8qIEluaXRpYWxseSB0aGUgUEhZIHdpbGwgYmUgaW4gQ1NNQS9DRCBtb2RlIGJ5IGRlZmF1bHQuIFNvIGl0IGlzXG4gXHQgKiByZXF1aXJlZCB0byBzZXQgdGhlIGxpbmsgYWx3YXlzIGFjdGl2ZSBhcyBpdCBkb2VzbiYjMzk7dCBzdXBwb3J0XG4gXHQgKiBhdXRvbmVnLlxuQEAgLTUwNiw2ICYjNDM7NTQwLDEyMSBAQCBzdGF0aWMgaW50IGxhbjg2eHhfcmVhZF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7c3RhdGljIGludCBsYW44Nnh4X2NvbmZpZ19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4mIzQzO3tcbiYjNDM7XHR1MTYgbWFzayA9IExBTjg2WFhfU1RTMV9QTENBX1NUU19DSEFOR0VEO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdGlmIChwaHlkZXYtXHUwMDNlcGh5X2lkID09IFBIWV9JRF9MQU44NjdYX1JFVkQwKVxuJiM0MztcdFx0bWFzayB8PSBMQU44NlhYX1NUUzFfTElOS19TVFNfQ0hBTkdFRDtcbiYjNDM7XG4mIzQzO1x0aWYgKHBoeWRldi1cdTAwM2VpbnRlcnJ1cHRzID09IFBIWV9JTlRFUlJVUFRfRU5BQkxFRCkge1xuJiM0MztcdFx0LyogUmVhZCB0byBjbGVhciBhbnkgcGVuZGluZyBzdGF0dXMgYmVmb3JlIGVuYWJsaW5nLiAqL1xuJiM0MztcdFx0cmV0ID0gcGh5X3JlYWRfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIExBTjg2WFhfUkVHX1NUUzEpO1xuJiM0MztcdFx0aWYgKHJldCBcdTAwM2MgMClcbiYjNDM7XHRcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0XHQvKiBBIG1hc2sgYml0IG9mIDAgZW5hYmxlcyB0aGUgY29ycmVzcG9uZGluZyBpbnRlcnJ1cHQuICovXG4mIzQzO1x0XHRyZXR1cm4gcGh5X2NsZWFyX2JpdHNfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXG4mIzQzO1x0XHRcdFx0XHQgIExBTjg2WFhfUkVHX0lNU0sxLCBtYXNrKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldCA9IHBoeV9zZXRfYml0c19tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTEFOODZYWF9SRUdfSU1TSzEsXG4mIzQzO1x0XHRcdCAgICAgICBtYXNrKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0LyogUmVhZCB0byBjbGVhciBhbnkgcGVuZGluZyBzdGF0dXMgYWZ0ZXIgZGlzYWJsaW5nLiAqL1xuJiM0MztcdHJldCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBMQU44NlhYX1JFR19TVFMxKTtcbiYjNDM7XHRpZiAocmV0IFx1MDAzYyAwKVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpcnFyZXR1cm5fdCBsYW44Nnh4X2hhbmRsZV9pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBwaHlfcGxjYV9zdGF0dXMgcGxjYV9zdDtcbiYjNDM7XHRpcnFyZXR1cm5fdCByZXRfaXJxID0gSVJRX05PTkU7XG4mIzQzO1x0aW50IHN0czEsIHJldDtcbiYjNDM7XG4mIzQzO1x0LyogUmVhZGluZyB0aGUgc3RhdHVzIHJlZ2lzdGVyIGNsZWFycyB0aGUgbGF0Y2hlZCBldmVudCBiaXRzLiAqL1xuJiM0MztcdHN0czEgPSBwaHlfcmVhZF9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTEFOODZYWF9SRUdfU1RTMSk7XG4mIzQzO1x0aWYgKHN0czEgXHUwMDNjIDApIHtcbiYjNDM7XHRcdHBoeV9lcnJvcihwaHlkZXYpO1xuJiM0MztcdFx0cmV0dXJuIElSUV9OT05FO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKHN0czEgXHUwMDI2IExBTjg2WFhfU1RTMV9QTENBX1NUU19DSEFOR0VEKSB7XG4mIzQzO1x0XHRyZXQgPSBnZW5waHlfYzQ1X3BsY2FfZ2V0X3N0YXR1cyhwaHlkZXYsIFx1MDAyNnBsY2Ffc3QpO1xuJiM0MztcdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuJiM0MztcdFx0XHRwaHlfZXJyb3IocGh5ZGV2KTtcbiYjNDM7XHRcdFx0cmV0dXJuIElSUV9OT05FO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdC8qIEFOMTc2MC9BTjE2OTk6IGRpc2FibGUgY29sbGlzaW9uIGRldGVjdGlvbiBpbiBQTENBIG1vZGUgdG9cbiYjNDM7XHRcdCAqIGltcHJvdmUgc2lnbmFsIHF1YWxpdHk7IHJlLWVuYWJsZSBpdCBpbiBDU01BL0NEIG1vZGUuXG4mIzQzO1x0XHQgKlxuJiM0MztcdFx0ICogaHR0cHM6Ly93d3cubWljcm9jaGlwLmNvbS9lbi11cy9hcHBsaWNhdGlvbi1ub3Rlcy9hbjE3NjBcbiYjNDM7XHRcdCAqIGh0dHBzOi8vd3d3Lm1pY3JvY2hpcC5jb20vZW4tdXMvYXBwbGljYXRpb24tbm90ZXMvYW4xNjk5XG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdHJldCA9IHBoeV9tb2RpZnlfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXG4mIzQzO1x0XHRcdFx0ICAgICBMQU44NlhYX1JFR19DT0xfREVUX0NUUkwwLFxuJiM0MztcdFx0XHRcdCAgICAgQ09MX0RFVF9DVFJMMF9FTkFCTEVfQklUX01BU0ssXG4mIzQzO1x0XHRcdFx0ICAgICBwbGNhX3N0LnBzdCA/IENPTF9ERVRfRElTQUJMRSA6XG4mIzQzO1x0XHRcdFx0ICAgICBDT0xfREVUX0VOQUJMRSk7XG4mIzQzO1x0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4mIzQzO1x0XHRcdHBoeV9lcnJvcihwaHlkZXYpO1xuJiM0MztcdFx0XHRyZXR1cm4gSVJRX05PTkU7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0cmV0X2lycSA9IElSUV9IQU5ETEVEO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldF9pcnE7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpcnFyZXR1cm5fdCBsYW44Njd4X3JldmQwX2hhbmRsZV9pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBwaHlfcGxjYV9zdGF0dXMgcGxjYV9zdDtcbiYjNDM7XHRpcnFyZXR1cm5fdCByZXRfaXJxID0gSVJRX05PTkU7XG4mIzQzO1x0aW50IHN0czEsIHJldDtcbiYjNDM7XG4mIzQzO1x0LyogUmVhZGluZyB0aGUgc3RhdHVzIHJlZ2lzdGVyIGNsZWFycyB0aGUgbGF0Y2hlZCBldmVudCBiaXRzLiAqL1xuJiM0MztcdHN0czEgPSBwaHlfcmVhZF9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTEFOODZYWF9SRUdfU1RTMSk7XG4mIzQzO1x0aWYgKHN0czEgXHUwMDNjIDApIHtcbiYjNDM7XHRcdHBoeV9lcnJvcihwaHlkZXYpO1xuJiM0MztcdFx0cmV0dXJuIElSUV9OT05FO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKHN0czEgXHUwMDI2IExBTjg2WFhfU1RTMV9MSU5LX1NUU19DSEFOR0VEKSB7XG4mIzQzO1x0XHRwaHlfdHJpZ2dlcl9tYWNoaW5lKHBoeWRldik7XG4mIzQzO1x0XHRyZXRfaXJxID0gSVJRX0hBTkRMRUQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAoc3RzMSBcdTAwMjYgTEFOODZYWF9TVFMxX1BMQ0FfU1RTX0NIQU5HRUQpIHtcbiYjNDM7XHRcdHJldCA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfc3RhdHVzKHBoeWRldiwgXHUwMDI2cGxjYV9zdCk7XG4mIzQzO1x0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4mIzQzO1x0XHRcdHBoeV9lcnJvcihwaHlkZXYpO1xuJiM0MztcdFx0XHRyZXR1cm4gSVJRX05PTkU7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0LyogQ29sbGlzaW9uIGRldGVjdGlvbiBpcyBoYW5kbGVkIGF1dG9ub21vdXNseSBieSB0aGUgaGFyZHdhcmVcbiYjNDM7XHRcdCAqIHZpYSBDQ01GQy4gT25seSB0aGUgbGluayBzdGF0dXMgc2VsZWN0aW9uIG5lZWRzIHRvIGJlIHVwZGF0ZWRcbiYjNDM7XHRcdCAqIG9uIGVhY2ggUExDQSBzdGF0dXMgdHJhbnNpdGlvbi5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0cmV0ID0gbGFuODY3eF9yZXZkMF9saW5rX2FjdGl2ZV9zZWxlY3Rpb24ocGh5ZGV2LCBwbGNhX3N0LnBzdCk7XG4mIzQzO1x0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4mIzQzO1x0XHRcdHBoeV9lcnJvcihwaHlkZXYpO1xuJiM0MztcdFx0XHRyZXR1cm4gSVJRX05PTkU7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0cmV0X2lycSA9IElSUV9IQU5ETEVEO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldF9pcnE7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MXNfZHJpdmVyW10gPSB7XG4gXHR7XG4gXHRcdFBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfTEFOODY3WF9SRVZCMSksXG5AQCAtNTEzLDYgJiM0Mzs2NjIsOCBAQCBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbWljcm9jaGlwX3Qxc19kcml2ZXJbXSA9IHtcbiBcdFx0LmZlYXR1cmVzICAgICAgICAgICA9IFBIWV9CQVNJQ19UMVNfUDJNUF9GRUFUVVJFUyxcbiBcdFx0LmNvbmZpZ19pbml0ICAgICAgICA9IGxhbjg2N3hfcmV2YjFfY29uZmlnX2luaXQsXG4gXHRcdC5yZWFkX3N0YXR1cyAgICAgICAgPSBsYW44Nnh4X3JlYWRfc3RhdHVzLFxuJiM0MztcdFx0LmNvbmZpZ19pbnRyICAgICAgICA9IGxhbjg2eHhfY29uZmlnX2ludHIsXG4mIzQzO1x0XHQuaGFuZGxlX2ludGVycnVwdCAgID0gbGFuODZ4eF9oYW5kbGVfaW50ZXJydXB0LFxuIFx0XHQuZ2V0X3BsY2FfY2ZnXHQgICAgPSBnZW5waHlfYzQ1X3BsY2FfZ2V0X2NmZyxcbiBcdFx0LnNldF9wbGNhX2NmZ1x0ICAgID0gZ2VucGh5X2M0NV9wbGNhX3NldF9jZmcsXG4gXHRcdC5nZXRfcGxjYV9zdGF0dXMgICAgPSBnZW5waHlfYzQ1X3BsY2FfZ2V0X3N0YXR1cyxcbkBAIC01MjMsNiAmIzQzOzY3NCw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtaWNyb2NoaXBfdDFzX2RyaXZlcltdID0ge1xuIFx0XHQuZmVhdHVyZXMgICAgICAgICAgID0gUEhZX0JBU0lDX1QxU19QMk1QX0ZFQVRVUkVTLFxuIFx0XHQuY29uZmlnX2luaXQgICAgICAgID0gbGFuODY3eF9yZXZjX2NvbmZpZ19pbml0LFxuIFx0XHQucmVhZF9zdGF0dXMgICAgICAgID0gbGFuODZ4eF9yZWFkX3N0YXR1cyxcbiYjNDM7XHRcdC5jb25maWdfaW50ciAgICAgICAgPSBsYW44Nnh4X2NvbmZpZ19pbnRyLFxuJiM0MztcdFx0LmhhbmRsZV9pbnRlcnJ1cHQgICA9IGxhbjg2eHhfaGFuZGxlX2ludGVycnVwdCxcbiBcdFx0LmdldF9wbGNhX2NmZ1x0ICAgID0gZ2VucGh5X2M0NV9wbGNhX2dldF9jZmcsXG4gXHRcdC5zZXRfcGxjYV9jZmdcdCAgICA9IGxhbjg2eHhfcGxjYV9zZXRfY2ZnLFxuIFx0XHQuZ2V0X3BsY2Ffc3RhdHVzICAgID0gZ2VucGh5X2M0NV9wbGNhX2dldF9zdGF0dXMsXG5AQCAtNTMzLDYgJiM0Mzs2ODYsOCBAQCBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbWljcm9jaGlwX3Qxc19kcml2ZXJbXSA9IHtcbiBcdFx0LmZlYXR1cmVzICAgICAgICAgICA9IFBIWV9CQVNJQ19UMVNfUDJNUF9GRUFUVVJFUyxcbiBcdFx0LmNvbmZpZ19pbml0ICAgICAgICA9IGxhbjg2N3hfcmV2Y19jb25maWdfaW5pdCxcbiBcdFx0LnJlYWRfc3RhdHVzICAgICAgICA9IGxhbjg2eHhfcmVhZF9zdGF0dXMsXG4mIzQzO1x0XHQuY29uZmlnX2ludHIgICAgICAgID0gbGFuODZ4eF9jb25maWdfaW50cixcbiYjNDM7XHRcdC5oYW5kbGVfaW50ZXJydXB0ICAgPSBsYW44Nnh4X2hhbmRsZV9pbnRlcnJ1cHQsXG4gXHRcdC5nZXRfcGxjYV9jZmdcdCAgICA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfY2ZnLFxuIFx0XHQuc2V0X3BsY2FfY2ZnXHQgICAgPSBsYW44Nnh4X3BsY2Ffc2V0X2NmZyxcbiBcdFx0LmdldF9wbGNhX3N0YXR1cyAgICA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfc3RhdHVzLFxuQEAgLTU0Miw2ICYjNDM7Njk3LDggQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MXNfZHJpdmVyW10gPSB7XG4gXHRcdC5uYW1lICAgICAgICAgICAgICAgPSBcJiMzNDtMQU44NjdYIFJldi5EMFwmIzM0OyxcbiBcdFx0LmZlYXR1cmVzICAgICAgICAgICA9IFBIWV9CQVNJQ19UMVNfUDJNUF9GRUFUVVJFUyxcbiBcdFx0LmNvbmZpZ19pbml0ICAgICAgICA9IGxhbjg2N3hfcmV2ZDBfY29uZmlnX2luaXQsXG4mIzQzO1x0XHQuY29uZmlnX2ludHIgICAgICAgID0gbGFuODZ4eF9jb25maWdfaW50cixcbiYjNDM7XHRcdC5oYW5kbGVfaW50ZXJydXB0ICAgPSBsYW44Njd4X3JldmQwX2hhbmRsZV9pbnRlcnJ1cHQsXG4gXHRcdC5nZXRfcGxjYV9jZmdcdCAgICA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfY2ZnLFxuIFx0XHQuc2V0X3BsY2FfY2ZnXHQgICAgPSBsYW44Nnh4X3BsY2Ffc2V0X2NmZyxcbiBcdFx0LmdldF9wbGNhX3N0YXR1cyAgICA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfc3RhdHVzLFxuQEAgLTU1Niw2ICYjNDM7NzEzLDggQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MXNfZHJpdmVyW10gPSB7XG4gXHRcdC5mZWF0dXJlcyAgICAgICAgICAgPSBQSFlfQkFTSUNfVDFTX1AyTVBfRkVBVFVSRVMsXG4gXHRcdC5jb25maWdfaW5pdCAgICAgICAgPSBsYW44NjV4X3JldmJfY29uZmlnX2luaXQsXG4gXHRcdC5yZWFkX3N0YXR1cyAgICAgICAgPSBsYW44Nnh4X3JlYWRfc3RhdHVzLFxuJiM0MztcdFx0LmNvbmZpZ19pbnRyICAgICAgICA9IGxhbjg2eHhfY29uZmlnX2ludHIsXG4mIzQzO1x0XHQuaGFuZGxlX2ludGVycnVwdCAgID0gbGFuODZ4eF9oYW5kbGVfaW50ZXJydXB0LFxuIFx0XHQucmVhZF9tbWQgICAgICAgICAgID0gZ2VucGh5X3JlYWRfbW1kX2M0NSxcbiBcdFx0LndyaXRlX21tZCAgICAgICAgICA9IGdlbnBoeV93cml0ZV9tbWRfYzQ1LFxuIFx0XHQuZ2V0X3BsY2FfY2ZnXHQgICAgPSBnZW5waHlfYzQ1X3BsY2FfZ2V0X2NmZyxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L29hX3RjNi5oIGIvaW5jbHVkZS9saW51eC9vYV90YzYuaFxuaW5kZXggMjdmNjUyZDQ5MjBiMi4uMWM4Y2MyNjNjNWU1MyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvb2FfdGM2LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvb2FfdGM2LmhcbkBAIC0zMCw2ICYjNDM7MzAsNyBAQFxuIFxuIC8qIFN0YXR1cyBSZWdpc3RlciAjMCAqL1xuICNkZWZpbmUgT0FfVEM2X1JFR19TVEFUVVMwXHRcdFx0MHgwMDA4XG4mIzQzOyNkZWZpbmUgT0FfVEM2X1NUQVRVUzBfUEhZX0lOVFx0XHRcdEJJVCg3KVxuICNkZWZpbmUgT0FfVEM2X1NUQVRVUzBfUkVTRVRDXHRcdFx0QklUKDYpXHQvKiBSZXNldCBDb21wbGV0ZSAqL1xuICNkZWZpbmUgT0FfVEM2X1NUQVRVUzBfSEVBREVSX0VSUk9SXHRcdEJJVCg1KVxuICNkZWZpbmUgT0FfVEM2X1NUQVRVUzBfTE9TU19PRl9GUkFNRV9FUlJPUlx0QklUKDQpXG5AQCAtNDMsNiAmIzQzOzQ0LDcgQEBcbiBcbiAvKiBJbnRlcnJ1cHQgTWFzayBSZWdpc3RlciAjMCAqL1xuICNkZWZpbmUgT0FfVEM2X1JFR19JTlRfTUFTSzBcdFx0XHRcdDB4MDAwQ1xuJiM0MzsjZGVmaW5lIE9BX1RDNl9JTlRfTUFTSzBfUEhZX0lOVF9NQVNLXHRcdFx0QklUKDcpXG4gI2RlZmluZSBPQV9UQzZfSU5UX01BU0swX0hFQURFUl9FUlJfTUFTS1x0XHRCSVQoNSlcbiAjZGVmaW5lIE9BX1RDNl9JTlRfTUFTSzBfTE9TU19PRl9GUkFNRV9FUlJfTUFTS1x0XHRCSVQoNClcbiAjZGVmaW5lIE9BX1RDNl9JTlRfTUFTSzBfUlhfQlVGRkVSX09WRVJGTE9XX0VSUl9NQVNLXHRCSVQoMylcbkBAIC02OCw2ICYjNDM7NzAsNyBAQCBzdHJ1Y3Qgb2FfdGM2O1xuIFxuIGVudW0gb2FfdGM2X3F1aXJrX2ZsYWcge1xuIFx0T0FfVEM2X0JST0tFTl9QSFkgPSBCSVQoMCksXG4mIzQzO1x0T0FfVEM2X1BIWV9JTlQgICAgPSBCSVQoMSksXG4gfTtcbiBcbiBzdHJ1Y3Qgb2FfdGM2X3F1aXJrcyB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MjI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBMQU44NjV4IFNQSSBFdGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYyksIHRoZSBPcGVuIEFsbGlhbmNlIFRDNiBNQUMtUEhZIHByb3RvY29sIGxheWVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYyksIGFuZCB0aGUgTWljcm9jaGlwIDEwQkFTRS1UMVMgUEhZIGRyaXZlciAoZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYykuIFRoZXNlIGRyaXZlcnMgb3BlcmF0ZSBvbiBzcGVjaWZpYyBwaHlzaWNhbCAxMEJBU0UtVDFTIHNpbmdsZS1wYWlyIEV0aGVybmV0IGhhcmR3YXJlIGNvbm5lY3RlZCBvdmVyIFNQSS9NRElPIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDQ0YmMxYzM3ZjdlODY2ZWI5OTdkODg3OGE1ZjZlN2Y3MDUwYjdkMWYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIFNlcCA3IDA4OjIyOjA0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jCmluZGV4IDI2YTI3NjEzMzJhNWEuLjA0M2EzZGMzZjk2NTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMKQEAgLTMzMiw2ICYjNDM7MzMyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBsYW44NjV4X25ldGRldl9vcHMgPSB7CiAKIHN0YXRpYyBpbnQgbGFuODY1eF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewomIzQzOwlzdHJ1Y3Qgb2FfdGM2X3F1aXJrcyB0YzZfcXVpcmtzID0ge307CiAJc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjsKIAlzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2OwogCWludCByZXQ7CkBAIC0zNDYsNyAmIzQzOzM0Nyw4IEBAIHN0YXRpYyBpbnQgbGFuODY1eF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCXNwaV9zZXRfZHJ2ZGF0YShzcGksIHByaXYpOwogCUlOSVRfV09SSygmYW1wO3ByaXYtJmd0O211bHRpY2FzdF93b3JrLCBsYW44NjV4X211bHRpY2FzdF93b3JrX2hhbmRsZXIpOwogCi0JcHJpdi0mZ3Q7dGM2ID0gb2FfdGM2X2luaXQoc3BpLCBuZXRkZXYsIE5VTEwpOwomIzQzOwl0YzZfcXVpcmtzLnF1aXJrX2ZsYWdzID0gT0FfVEM2X1BIWV9JTlQ7CiYjNDM7CXByaXYtJmd0O3RjNiA9IG9hX3RjNl9pbml0KHNwaSwgbmV0ZGV2LCAmYW1wO3RjNl9xdWlya3MpOwogCWlmICghcHJpdi0mZ3Q7dGM2KSB7CiAJCXJldCA9IC1FTk9ERVY7CiAJCWdvdG8gZnJlZV9uZXRkZXY7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jCmluZGV4IDZmY2M1ZjU2MWQ1NjAuLjAwYjAxNzZjMWZlN2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jCkBAIC04LDYgJiM0Mzs4LDggQEAKICNpbmNsdWRlICZsdDtsaW51eC9iaXRmaWVsZC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2lvcG9sbC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2ludGVycnVwdC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9pcnEuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvaXJxZG9tYWluLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbWRpby5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BoeS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L29hX3RjNi5oJmd0OwpAQCAtNzAsNiAmIzQzOzcyLDggQEAgc3RydWN0IG9hX3RjNiB7CiAJc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldjsKIAlzdHJ1Y3QgbWlpX2J1cyAqbWRpb2J1czsKIAlzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpOwomIzQzOwlzdHJ1Y3QgaXJxX2RvbWFpbiAqcGh5X2lycV9kb21haW47CiYjNDM7CWludCBwaHlfdmlycTsKIAlzdHJ1Y3QgbXV0ZXggc3BpX2N0cmxfbG9jazsgLyogUHJvdGVjdHMgc3BpIGNvbnRyb2wgdHJhbnNmZXIgKi8KIAlzcGlubG9ja190IHR4X3NrYl9sb2NrOyAvKiBQcm90ZWN0cyB0eCBza2IgaGFuZGxpbmcgKi8KIAl2b2lkICpzcGlfY3RybF90eF9idWY7CkBAIC01MjgsNiAmIzQzOzUzMiw0NCBAQCBpbnQgb2FfdGM2X21kaW9idXNfd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgZGV2bnVtLAogfQogRVhQT1JUX1NZTUJPTF9HUEwob2FfdGM2X21kaW9idXNfd3JpdGVfYzQ1KTsKIAomIzQzO3N0YXRpYyBpbnQgb2FfdGM2X3BoeV9pcnFfbWFwKHN0cnVjdCBpcnFfZG9tYWluICpkb21haW4sIHVuc2lnbmVkIGludCBpcnEsCiYjNDM7CQkJICAgICAgaXJxX2h3X251bWJlcl90IGh3aXJxKQomIzQzO3sKJiM0MzsJaXJxX3NldF9jaGlwX2RhdGEoaXJxLCBkb21haW4tJmd0O2hvc3RfZGF0YSk7CiYjNDM7CWlycV9zZXRfY2hpcF9hbmRfaGFuZGxlcihpcnEsICZhbXA7ZHVtbXlfaXJxX2NoaXAsIGhhbmRsZV9zaW1wbGVfaXJxKTsKJiM0MzsJaXJxX3NldF9uZXN0ZWRfdGhyZWFkKGlycSwgdHJ1ZSk7CiYjNDM7CWlycV9zZXRfbm9wcm9iZShpcnEpOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfZG9tYWluX29wcyBvYV90YzZfcGh5X2lycV9kb21haW5fb3BzID0gewomIzQzOwkubWFwID0gb2FfdGM2X3BoeV9pcnFfbWFwLAomIzQzO307CiYjNDM7CiYjNDM7c3RhdGljIGludCBvYV90YzZfcGh5X2lycV9zZXR1cChzdHJ1Y3Qgb2FfdGM2ICp0YzYpCiYjNDM7ewomIzQzOwl0YzYtJmd0O3BoeV9pcnFfZG9tYWluID0KJiM0MzsJCWlycV9kb21haW5fY3JlYXRlX2xpbmVhcihOVUxMLCAxLAomIzQzOwkJCQkJICZhbXA7b2FfdGM2X3BoeV9pcnFfZG9tYWluX29wcywgdGM2KTsKJiM0MzsJaWYgKCF0YzYtJmd0O3BoeV9pcnFfZG9tYWluKQomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiYjNDM7CXRjNi0mZ3Q7cGh5X3ZpcnEgPSBpcnFfY3JlYXRlX21hcHBpbmcodGM2LSZndDtwaHlfaXJxX2RvbWFpbiwgMCk7CiYjNDM7CWlmICghdGM2LSZndDtwaHlfdmlycSkgewomIzQzOwkJaXJxX2RvbWFpbl9yZW1vdmUodGM2LSZndDtwaHlfaXJxX2RvbWFpbik7CiYjNDM7CQlyZXR1cm4gLUVOT01FTTsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgb2FfdGM2X3BoeV9pcnFfdGVhcmRvd24oc3RydWN0IG9hX3RjNiAqdGM2KQomIzQzO3sKJiM0MzsJaXJxX2Rpc3Bvc2VfbWFwcGluZyh0YzYtJmd0O3BoeV92aXJxKTsKJiM0MzsJaXJxX2RvbWFpbl9yZW1vdmUodGM2LSZndDtwaHlfaXJxX2RvbWFpbik7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBvYV90YzZfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3Qgb2FfdGM2ICp0YzYpCiB7CiAJaW50IHJldDsKQEAgLTU1OSw5ICYjNDM7NjAxLDI1IEBAIHN0YXRpYyBpbnQgb2FfdGM2X21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG9hX3RjNiAqdGM2KQogCXNucHJpbnRmKHRjNi0mZ3Q7bWRpb2J1cy0mZ3Q7aWQsIEFSUkFZX1NJWkUodGM2LSZndDttZGlvYnVzLSZndDtpZCksICYjMzQ7JXMmIzM0OywKIAkJIGRldl9uYW1lKCZhbXA7dGM2LSZndDtzcGktJmd0O2RldikpOwogCiYjNDM7CWlmICh0YzYtJmd0O3F1aXJrX2ZsYWdzICZhbXA7IE9BX1RDNl9QSFlfSU5UKSB7CiYjNDM7CQlyZXQgPSBvYV90YzZfcGh5X2lycV9zZXR1cCh0YzYpOwomIzQzOwkJaWYgKHJldCkgewomIzQzOwkJCW1kaW9idXNfZnJlZSh0YzYtJmd0O21kaW9idXMpOwomIzQzOwkJCXJldHVybiByZXQ7CiYjNDM7CQl9CiYjNDM7CQkvKiBQb3B1bGF0ZSBhbGwgaXJxW10gZW50cmllcyBiZWZvcmUgcmVnaXN0cmF0aW9uIHNvCiYjNDM7CQkgKiBwaHlfZGV2aWNlX2NyZWF0ZSgpIHBpY2tzIHVwIHRoZSB2aXJ0dWFsIElSUSByZWdhcmRsZXNzIG9mCiYjNDM7CQkgKiB0aGUgUEhZJiMzOTtzIE1ESU8gYWRkcmVzcy4KJiM0MzsJCSAqLwomIzQzOwkJZm9yIChpbnQgaSA9IDA7IGkgJmx0OyBQSFlfTUFYX0FERFI7IGkmIzQzOyYjNDM7KQomIzQzOwkJCXRjNi0mZ3Q7bWRpb2J1cy0mZ3Q7aXJxW2ldID0gdGM2LSZndDtwaHlfdmlycTsKJiM0MzsJfQomIzQzOwogCXJldCA9IG1kaW9idXNfcmVnaXN0ZXIodGM2LSZndDttZGlvYnVzKTsKIAlpZiAocmV0KSB7CiAJCW5ldGRldl9lcnIodGM2LSZndDtuZXRkZXYsICYjMzQ7Q291bGQgbm90IHJlZ2lzdGVyIE1ESU8gYnVzXG4mIzM0Oyk7CiYjNDM7CQlpZiAodGM2LSZndDtxdWlya19mbGFncyAmYW1wOyBPQV9UQzZfUEhZX0lOVCkKJiM0MzsJCQlvYV90YzZfcGh5X2lycV90ZWFyZG93bih0YzYpOwogCQltZGlvYnVzX2ZyZWUodGM2LSZndDttZGlvYnVzKTsKIAkJcmV0dXJuIHJldDsKIAl9CkBAIC01NzIsNiAmIzQzOzYzMCw4IEBAIHN0YXRpYyBpbnQgb2FfdGM2X21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG9hX3RjNiAqdGM2KQogc3RhdGljIHZvaWQgb2FfdGM2X21kaW9idXNfdW5yZWdpc3RlcihzdHJ1Y3Qgb2FfdGM2ICp0YzYpCiB7CiAJbWRpb2J1c191bnJlZ2lzdGVyKHRjNi0mZ3Q7bWRpb2J1cyk7CiYjNDM7CWlmICh0YzYtJmd0O3F1aXJrX2ZsYWdzICZhbXA7IE9BX1RDNl9QSFlfSU5UKQomIzQzOwkJb2FfdGM2X3BoeV9pcnFfdGVhcmRvd24odGM2KTsKIAltZGlvYnVzX2ZyZWUodGM2LSZndDttZGlvYnVzKTsKIH0KIApAQCAtNjYxLDcgJiM0Mzs3MjEsNyBAQCBzdGF0aWMgaW50IG9hX3RjNl9zd19yZXNldF9tYWNwaHkoc3RydWN0IG9hX3RjNiAqdGM2KQogCXJldHVybiBvYV90YzZfd3JpdGVfcmVnaXN0ZXIodGM2LCBPQV9UQzZfUkVHX1NUQVRVUzAsIHJlZ3ZhbCk7CiB9CiAKLXN0YXRpYyBpbnQgb2FfdGM2X3VubWFza19tYWNwaHlfZXJyb3JfaW50ZXJydXB0cyhzdHJ1Y3Qgb2FfdGM2ICp0YzYpCiYjNDM7c3RhdGljIGludCBvYV90YzZfdW5tYXNrX2ludGVycnVwdHMoc3RydWN0IG9hX3RjNiAqdGM2KQogewogCXUzMiByZWd2YWw7CiAJaW50IHJldDsKQEAgLTY3MCw3ICYjNDM7NzMwLDggQEAgc3RhdGljIGludCBvYV90YzZfdW5tYXNrX21hY3BoeV9lcnJvcl9pbnRlcnJ1cHRzKHN0cnVjdCBvYV90YzYgKnRjNikKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JcmVndmFsICZhbXA7PSB+KE9BX1RDNl9JTlRfTUFTSzBfVFhfUFJPVE9DT0xfRVJSX01BU0sgfAomIzQzOwlyZWd2YWwgJmFtcDs9IH4oT0FfVEM2X0lOVF9NQVNLMF9QSFlfSU5UX01BU0sgfAomIzQzOwkJICAgIE9BX1RDNl9JTlRfTUFTSzBfVFhfUFJPVE9DT0xfRVJSX01BU0sgfAogCQkgICAgT0FfVEM2X0lOVF9NQVNLMF9SWF9CVUZGRVJfT1ZFUkZMT1dfRVJSX01BU0sgfAogCQkgICAgT0FfVEM2X0lOVF9NQVNLMF9MT1NTX09GX0ZSQU1FX0VSUl9NQVNLIHwKIAkJICAgIE9BX1RDNl9JTlRfTUFTSzBfSEVBREVSX0VSUl9NQVNLKTsKQEAgLTgxMCw2ICYjNDM7ODcxLDE1IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3Byb2Nlc3NfZXh0ZW5kZWRfc3RhdHVzKHN0cnVjdCBvYV90YzYgKnRjNikKIAkJcmV0dXJuIHJldDsKIAl9CiAKJiM0MzsJLyogRGlzcGF0Y2ggdGhlIFBIWSBpbnRlcnJ1cHQgdG8gcGh5bGliIHZpYSB0aGUgbmVzdGVkIHZpcnR1YWwgSVJRIHNvCiYjNDM7CSAqIHRoZSBQSFkgZHJpdmVyIHJlYWRzIGFuZCBhY2tub3dsZWRnZXMgaXRzIHN0YXR1cy4gUEhZSU5UIGlzIGxldmVsCiYjNDM7CSAqIHRyaWdnZXJlZCwgc28gZG9pbmcgdGhpcyBzeW5jaHJvbm91c2x5IGhlcmUgKGluIHRoZSBzbGVlcGFibGUKJiM0MzsJICogdGhyZWFkZWQgSVJRKSBjbGVhcnMgdGhlIHNvdXJjZSBiZWZvcmUgdGhlIG5leHQgZGF0YSBjaHVuay4KJiM0MzsJICovCiYjNDM7CWlmICgodGM2LSZndDtxdWlya19mbGFncyAmYW1wOyBPQV9UQzZfUEhZX0lOVCkgJmFtcDsmYW1wOwomIzQzOwkgICAgRklFTERfR0VUKE9BX1RDNl9TVEFUVVMwX1BIWV9JTlQsIHZhbHVlKSkKJiM0MzsJCWhhbmRsZV9uZXN0ZWRfaXJxKHRjNi0mZ3Q7cGh5X3ZpcnEpOwomIzQzOwogCWlmIChGSUVMRF9HRVQoT0FfVEM2X1NUQVRVUzBfUlhfQlVGRkVSX09WRVJGTE9XX0VSUk9SLCB2YWx1ZSkpIHsKIAkJb2FfdGM2X2xvb2tfZm9yX25ld19mcmFtZSh0YzYpOwogCQluZXRfZXJyX3JhdGVsaW1pdGVkKCYjMzQ7JXM6IFJlY2VpdmUgYnVmZmVyIG92ZXJmbG93IGVycm9yXG4mIzM0OywKQEAgLTE1MTgsNyAmIzQzOzE1ODgsNyBAQCBzdHJ1Y3Qgb2FfdGM2ICpvYV90YzZfaW5pdChzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LAogCQlyZXR1cm4gTlVMTDsKIAl9CiAKLQlyZXQgPSBvYV90YzZfdW5tYXNrX21hY3BoeV9lcnJvcl9pbnRlcnJ1cHRzKHRjNik7CiYjNDM7CXJldCA9IG9hX3RjNl91bm1hc2tfaW50ZXJydXB0cyh0YzYpOwogCWlmIChyZXQpIHsKIAkJZGV2X2VycigmYW1wO3RjNi0mZ3Q7c3BpLSZndDtkZXYsCiAJCQkmIzM0O01BQy1QSFkgZXJyb3IgaW50ZXJydXB0cyB1bm1hc2sgZmFpbGVkOiAlZFxuJiMzNDssIHJldCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jIGIvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYwppbmRleCA3M2MyM2QzMTFkNzJhLi5jM2E3MzhjNzQyNWJmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMKQEAgLTI3LDExICYjNDM7MjcsMjMgQEAKICNkZWZpbmUgTEFOODY1WF9SRUdfQ0ZHUEFSQU1fQ1RSTCAweDAwREEKICNkZWZpbmUgTEFOODY1WF9SRUdfU1RTMiAweDAwMTkKIAomIzQzOy8qIFBIWSBpbnRlcnJ1cHQgc3RhdHVzIGFuZCBtYXNrIHJlZ2lzdGVycyAoTURJT19NTURfVkVORDIpLiBUaGUgc3RhdHVzIGJpdHMKJiM0MzsgKiBhcmUgcmVhZC10by1jbGVhcjsgYSBtYXNrIGJpdCBpcyBlbmFibGVkIGJ5IHdyaXRpbmcgMC4KJiM0MzsgKi8KJiM0MzsjZGVmaW5lIExBTjg2WFhfUkVHX1NUUzEJCTB4MDAxOAomIzQzOyNkZWZpbmUgTEFOODZYWF9SRUdfSU1TSzEJCTB4MDAxQwomIzQzOwomIzQzOyNkZWZpbmUgTEFOODZYWF9TVFMxX0xJTktfU1RTX0NIQU5HRUQJQklUKDEzKQomIzQzOyNkZWZpbmUgTEFOODZYWF9TVFMxX1BMQ0FfU1RTX0NIQU5HRUQJQklUKDExKQomIzQzOwogLyogQ29sbGlzaW9uIERldGVjdG9yIENvbnRyb2wgMCBSZWdpc3RlciAqLwogI2RlZmluZSBMQU44NlhYX1JFR19DT0xfREVUX0NUUkwwCTB4MDA4NwogI2RlZmluZSBDT0xfREVUX0NUUkwwX0VOQUJMRV9CSVRfTUFTSwlCSVQoMTUpCiAjZGVmaW5lIENPTF9ERVRfRU5BQkxFCQkJQklUKDE1KQogI2RlZmluZSBDT0xfREVUX0RJU0FCTEUJCQkweDAwMDAKJiM0MzsjZGVmaW5lIENPTF9ERVRfQ1RSTDBfQ0NNRkNfTUFTSwlHRU5NQVNLKDEwLCA5KQomIzQzOy8qIE9BIGRlZmF1bHQ6IGNvbGxpc2lvbnMgZ2F0ZWQgYnkgUExDQV9TdGF0dXMgaW4gaGFyZHdhcmUgKi8KJiM0MzsjZGVmaW5lIENPTF9ERVRfQ1RSTDBfQ0NNRkNfT0FfREVGQVVMVAlCSVQoOSkKIAogLyogTEFOODY3MC8xLzIgUmV2LkQwIExpbmsgU3RhdHVzIFNlbGVjdGlvbiBSZWdpc3RlciAqLwogI2RlZmluZSBMQU44NjdYX1JFR19MSU5LX1NUQVRVU19DVFJMCTB4MDAxMgpAQCAtNDU4LDYgJiM0Mzs0NzAsMTYgQEAgc3RhdGljIGludCBsYW44Nnh4X3BsY2Ffc2V0X2NmZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKJiM0MzsJLyogUEhZcyB3aXRoIHJvdXRlZCBpbnRlcnJ1cHRzIGhhbmRsZSBDREVOIGR5bmFtaWNhbGx5IHZpYSB0aGUgaW50ZXJydXB0CiYjNDM7CSAqIGhhbmRsZXIsIHNvIHNraXAgdGhlIHN0YXRpYyB3cml0ZS4gUEhZcyBydW5uaW5nIHdpdGggUEhZX1BPTEwgaGF2ZSBubwomIzQzOwkgKiBpbnRlcnJ1cHQgaGFuZGxlciwgc28gYXBwbHkgdGhlIHN0YXRpYyBDREVOIHdyaXRlIGFzIGEgYmFzZWxpbmUgb24KJiM0MzsJICogZXZlcnkgZXRodG9vbCBQTENBIHJlY29uZmlndXJhdGlvbi4gVGhlIGxpbWl0YXRpb24gaXMgdGhhdCBhdXRvbm9tb3VzCiYjNDM7CSAqIFBMQ0EgbW9kZSB0cmFuc2l0aW9ucyBiZXR3ZWVuIGV0aHRvb2wgcmVjb25maWd1cmF0aW9ucyBhcmUgbm90CiYjNDM7CSAqIHRyYWNrZWQgb24gc3VjaCBib2FyZHMuCiYjNDM7CSAqLwomIzQzOwlpZiAocGh5ZGV2LSZndDtpcnEgIT0gUEhZX1BPTEwpCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKIAlpZiAocGxjYV9jZmctJmd0O2VuYWJsZWQpCiAJCXJldHVybiBwaHlfbW9kaWZ5X21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLAogCQkJCSAgICAgIExBTjg2WFhfUkVHX0NPTF9ERVRfQ1RSTDAsCkBAIC00ODQsNiAmIzQzOzUwNiwxOCBAQCBzdGF0aWMgaW50IGxhbjg2N3hfcmV2ZDBfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAkJCXJldHVybiByZXQ7CiAJfQogCiYjNDM7CS8qIEFOMTc2MDogY29uZmlndXJlIENDTUZDIHRvIE9BIGRlZmF1bHQgc28gdGhhdCB0aGUgaGFyZHdhcmUKJiM0MzsJICogYXV0b21hdGljYWxseSBnYXRlcyBjb2xsaXNpb24gZm9yd2FyZGluZyB0byB0aGUgTUFDIGJhc2VkIG9uCiYjNDM7CSAqIFBMQ0FfU3RhdHVzLiBDb2xsaXNpb25zIGFyZSBuZWl0aGVyIGNvdW50ZWQgbm9yIGZvcndhcmRlZCB3aGVuCiYjNDM7CSAqIFBMQ0FfU3RhdHVzID0gT0ssIGVsaW1pbmF0aW5nIHRoZSBuZWVkIGZvciBzb2Z0d2FyZS1kcml2ZW4gQ0RFTgomIzQzOwkgKiB0b2dnbGluZyBpbiB0aGUgaW50ZXJydXB0IGhhbmRsZXIuIENERU4gcmVtYWlucyBlbmFibGVkLgomIzQzOwkgKi8KJiM0MzsJcmV0ID0gcGh5X21vZGlmeV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTEFOODZYWF9SRUdfQ09MX0RFVF9DVFJMMCwKJiM0MzsJCQkgICAgIENPTF9ERVRfQ1RSTDBfQ0NNRkNfTUFTSywKJiM0MzsJCQkgICAgIENPTF9ERVRfQ1RSTDBfQ0NNRkNfT0FfREVGQVVMVCk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwogCS8qIEluaXRpYWxseSB0aGUgUEhZIHdpbGwgYmUgaW4gQ1NNQS9DRCBtb2RlIGJ5IGRlZmF1bHQuIFNvIGl0IGlzCiAJICogcmVxdWlyZWQgdG8gc2V0IHRoZSBsaW5rIGFsd2F5cyBhY3RpdmUgYXMgaXQgZG9lc24mIzM5O3Qgc3VwcG9ydAogCSAqIGF1dG9uZWcuCkBAIC01MDYsNiAmIzQzOzU0MCwxMjEgQEAgc3RhdGljIGludCBsYW44Nnh4X3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiAJcmV0dXJuIDA7CiB9CiAKJiM0MztzdGF0aWMgaW50IGxhbjg2eHhfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKJiM0Mzt7CiYjNDM7CXUxNiBtYXNrID0gTEFOODZYWF9TVFMxX1BMQ0FfU1RTX0NIQU5HRUQ7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CWlmIChwaHlkZXYtJmd0O3BoeV9pZCA9PSBQSFlfSURfTEFOODY3WF9SRVZEMCkKJiM0MzsJCW1hc2sgfD0gTEFOODZYWF9TVFMxX0xJTktfU1RTX0NIQU5HRUQ7CiYjNDM7CiYjNDM7CWlmIChwaHlkZXYtJmd0O2ludGVycnVwdHMgPT0gUEhZX0lOVEVSUlVQVF9FTkFCTEVEKSB7CiYjNDM7CQkvKiBSZWFkIHRvIGNsZWFyIGFueSBwZW5kaW5nIHN0YXR1cyBiZWZvcmUgZW5hYmxpbmcuICovCiYjNDM7CQlyZXQgPSBwaHlfcmVhZF9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTEFOODZYWF9SRUdfU1RTMSk7CiYjNDM7CQlpZiAocmV0ICZsdDsgMCkKJiM0MzsJCQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwkJLyogQSBtYXNrIGJpdCBvZiAwIGVuYWJsZXMgdGhlIGNvcnJlc3BvbmRpbmcgaW50ZXJydXB0LiAqLwomIzQzOwkJcmV0dXJuIHBoeV9jbGVhcl9iaXRzX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLAomIzQzOwkJCQkJICBMQU44NlhYX1JFR19JTVNLMSwgbWFzayk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0ID0gcGh5X3NldF9iaXRzX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBMQU44NlhYX1JFR19JTVNLMSwKJiM0MzsJCQkgICAgICAgbWFzayk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwkvKiBSZWFkIHRvIGNsZWFyIGFueSBwZW5kaW5nIHN0YXR1cyBhZnRlciBkaXNhYmxpbmcuICovCiYjNDM7CXJldCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBMQU44NlhYX1JFR19TVFMxKTsKJiM0MzsJaWYgKHJldCAmbHQ7IDApCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGlycXJldHVybl90IGxhbjg2eHhfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQomIzQzO3sKJiM0MzsJc3RydWN0IHBoeV9wbGNhX3N0YXR1cyBwbGNhX3N0OwomIzQzOwlpcnFyZXR1cm5fdCByZXRfaXJxID0gSVJRX05PTkU7CiYjNDM7CWludCBzdHMxLCByZXQ7CiYjNDM7CiYjNDM7CS8qIFJlYWRpbmcgdGhlIHN0YXR1cyByZWdpc3RlciBjbGVhcnMgdGhlIGxhdGNoZWQgZXZlbnQgYml0cy4gKi8KJiM0MzsJc3RzMSA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBMQU44NlhYX1JFR19TVFMxKTsKJiM0MzsJaWYgKHN0czEgJmx0OyAwKSB7CiYjNDM7CQlwaHlfZXJyb3IocGh5ZGV2KTsKJiM0MzsJCXJldHVybiBJUlFfTk9ORTsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAoc3RzMSAmYW1wOyBMQU44NlhYX1NUUzFfUExDQV9TVFNfQ0hBTkdFRCkgewomIzQzOwkJcmV0ID0gZ2VucGh5X2M0NV9wbGNhX2dldF9zdGF0dXMocGh5ZGV2LCAmYW1wO3BsY2Ffc3QpOwomIzQzOwkJaWYgKHJldCAmbHQ7IDApIHsKJiM0MzsJCQlwaHlfZXJyb3IocGh5ZGV2KTsKJiM0MzsJCQlyZXR1cm4gSVJRX05PTkU7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQkvKiBBTjE3NjAvQU4xNjk5OiBkaXNhYmxlIGNvbGxpc2lvbiBkZXRlY3Rpb24gaW4gUExDQSBtb2RlIHRvCiYjNDM7CQkgKiBpbXByb3ZlIHNpZ25hbCBxdWFsaXR5OyByZS1lbmFibGUgaXQgaW4gQ1NNQS9DRCBtb2RlLgomIzQzOwkJICoKJiM0MzsJCSAqIGh0dHBzOi8vd3d3Lm1pY3JvY2hpcC5jb20vZW4tdXMvYXBwbGljYXRpb24tbm90ZXMvYW4xNzYwCiYjNDM7CQkgKiBodHRwczovL3d3dy5taWNyb2NoaXAuY29tL2VuLXVzL2FwcGxpY2F0aW9uLW5vdGVzL2FuMTY5OQomIzQzOwkJICovCiYjNDM7CQlyZXQgPSBwaHlfbW9kaWZ5X21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLAomIzQzOwkJCQkgICAgIExBTjg2WFhfUkVHX0NPTF9ERVRfQ1RSTDAsCiYjNDM7CQkJCSAgICAgQ09MX0RFVF9DVFJMMF9FTkFCTEVfQklUX01BU0ssCiYjNDM7CQkJCSAgICAgcGxjYV9zdC5wc3QgPyBDT0xfREVUX0RJU0FCTEUgOgomIzQzOwkJCQkgICAgIENPTF9ERVRfRU5BQkxFKTsKJiM0MzsJCWlmIChyZXQgJmx0OyAwKSB7CiYjNDM7CQkJcGh5X2Vycm9yKHBoeWRldik7CiYjNDM7CQkJcmV0dXJuIElSUV9OT05FOwomIzQzOwkJfQomIzQzOwomIzQzOwkJcmV0X2lycSA9IElSUV9IQU5ETEVEOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiByZXRfaXJxOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaXJxcmV0dXJuX3QgbGFuODY3eF9yZXZkMF9oYW5kbGVfaW50ZXJydXB0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgcGh5X3BsY2Ffc3RhdHVzIHBsY2Ffc3Q7CiYjNDM7CWlycXJldHVybl90IHJldF9pcnEgPSBJUlFfTk9ORTsKJiM0MzsJaW50IHN0czEsIHJldDsKJiM0MzsKJiM0MzsJLyogUmVhZGluZyB0aGUgc3RhdHVzIHJlZ2lzdGVyIGNsZWFycyB0aGUgbGF0Y2hlZCBldmVudCBiaXRzLiAqLwomIzQzOwlzdHMxID0gcGh5X3JlYWRfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIExBTjg2WFhfUkVHX1NUUzEpOwomIzQzOwlpZiAoc3RzMSAmbHQ7IDApIHsKJiM0MzsJCXBoeV9lcnJvcihwaHlkZXYpOwomIzQzOwkJcmV0dXJuIElSUV9OT05FOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChzdHMxICZhbXA7IExBTjg2WFhfU1RTMV9MSU5LX1NUU19DSEFOR0VEKSB7CiYjNDM7CQlwaHlfdHJpZ2dlcl9tYWNoaW5lKHBoeWRldik7CiYjNDM7CQlyZXRfaXJxID0gSVJRX0hBTkRMRUQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJaWYgKHN0czEgJmFtcDsgTEFOODZYWF9TVFMxX1BMQ0FfU1RTX0NIQU5HRUQpIHsKJiM0MzsJCXJldCA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfc3RhdHVzKHBoeWRldiwgJmFtcDtwbGNhX3N0KTsKJiM0MzsJCWlmIChyZXQgJmx0OyAwKSB7CiYjNDM7CQkJcGh5X2Vycm9yKHBoeWRldik7CiYjNDM7CQkJcmV0dXJuIElSUV9OT05FOwomIzQzOwkJfQomIzQzOwomIzQzOwkJLyogQ29sbGlzaW9uIGRldGVjdGlvbiBpcyBoYW5kbGVkIGF1dG9ub21vdXNseSBieSB0aGUgaGFyZHdhcmUKJiM0MzsJCSAqIHZpYSBDQ01GQy4gT25seSB0aGUgbGluayBzdGF0dXMgc2VsZWN0aW9uIG5lZWRzIHRvIGJlIHVwZGF0ZWQKJiM0MzsJCSAqIG9uIGVhY2ggUExDQSBzdGF0dXMgdHJhbnNpdGlvbi4KJiM0MzsJCSAqLwomIzQzOwkJcmV0ID0gbGFuODY3eF9yZXZkMF9saW5rX2FjdGl2ZV9zZWxlY3Rpb24ocGh5ZGV2LCBwbGNhX3N0LnBzdCk7CiYjNDM7CQlpZiAocmV0ICZsdDsgMCkgewomIzQzOwkJCXBoeV9lcnJvcihwaHlkZXYpOwomIzQzOwkJCXJldHVybiBJUlFfTk9ORTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCXJldF9pcnEgPSBJUlFfSEFORExFRDsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gcmV0X2lycTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbWljcm9jaGlwX3Qxc19kcml2ZXJbXSA9IHsKIAl7CiAJCVBIWV9JRF9NQVRDSF9FWEFDVChQSFlfSURfTEFOODY3WF9SRVZCMSksCkBAIC01MTMsNiAmIzQzOzY2Miw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtaWNyb2NoaXBfdDFzX2RyaXZlcltdID0gewogCQkuZmVhdHVyZXMgICAgICAgICAgID0gUEhZX0JBU0lDX1QxU19QMk1QX0ZFQVRVUkVTLAogCQkuY29uZmlnX2luaXQgICAgICAgID0gbGFuODY3eF9yZXZiMV9jb25maWdfaW5pdCwKIAkJLnJlYWRfc3RhdHVzICAgICAgICA9IGxhbjg2eHhfcmVhZF9zdGF0dXMsCiYjNDM7CQkuY29uZmlnX2ludHIgICAgICAgID0gbGFuODZ4eF9jb25maWdfaW50ciwKJiM0MzsJCS5oYW5kbGVfaW50ZXJydXB0ICAgPSBsYW44Nnh4X2hhbmRsZV9pbnRlcnJ1cHQsCiAJCS5nZXRfcGxjYV9jZmcJICAgID0gZ2VucGh5X2M0NV9wbGNhX2dldF9jZmcsCiAJCS5zZXRfcGxjYV9jZmcJICAgID0gZ2VucGh5X2M0NV9wbGNhX3NldF9jZmcsCiAJCS5nZXRfcGxjYV9zdGF0dXMgICAgPSBnZW5waHlfYzQ1X3BsY2FfZ2V0X3N0YXR1cywKQEAgLTUyMyw2ICYjNDM7Njc0LDggQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MXNfZHJpdmVyW10gPSB7CiAJCS5mZWF0dXJlcyAgICAgICAgICAgPSBQSFlfQkFTSUNfVDFTX1AyTVBfRkVBVFVSRVMsCiAJCS5jb25maWdfaW5pdCAgICAgICAgPSBsYW44Njd4X3JldmNfY29uZmlnX2luaXQsCiAJCS5yZWFkX3N0YXR1cyAgICAgICAgPSBsYW44Nnh4X3JlYWRfc3RhdHVzLAomIzQzOwkJLmNvbmZpZ19pbnRyICAgICAgICA9IGxhbjg2eHhfY29uZmlnX2ludHIsCiYjNDM7CQkuaGFuZGxlX2ludGVycnVwdCAgID0gbGFuODZ4eF9oYW5kbGVfaW50ZXJydXB0LAogCQkuZ2V0X3BsY2FfY2ZnCSAgICA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfY2ZnLAogCQkuc2V0X3BsY2FfY2ZnCSAgICA9IGxhbjg2eHhfcGxjYV9zZXRfY2ZnLAogCQkuZ2V0X3BsY2Ffc3RhdHVzICAgID0gZ2VucGh5X2M0NV9wbGNhX2dldF9zdGF0dXMsCkBAIC01MzMsNiAmIzQzOzY4Niw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtaWNyb2NoaXBfdDFzX2RyaXZlcltdID0gewogCQkuZmVhdHVyZXMgICAgICAgICAgID0gUEhZX0JBU0lDX1QxU19QMk1QX0ZFQVRVUkVTLAogCQkuY29uZmlnX2luaXQgICAgICAgID0gbGFuODY3eF9yZXZjX2NvbmZpZ19pbml0LAogCQkucmVhZF9zdGF0dXMgICAgICAgID0gbGFuODZ4eF9yZWFkX3N0YXR1cywKJiM0MzsJCS5jb25maWdfaW50ciAgICAgICAgPSBsYW44Nnh4X2NvbmZpZ19pbnRyLAomIzQzOwkJLmhhbmRsZV9pbnRlcnJ1cHQgICA9IGxhbjg2eHhfaGFuZGxlX2ludGVycnVwdCwKIAkJLmdldF9wbGNhX2NmZwkgICAgPSBnZW5waHlfYzQ1X3BsY2FfZ2V0X2NmZywKIAkJLnNldF9wbGNhX2NmZwkgICAgPSBsYW44Nnh4X3BsY2Ffc2V0X2NmZywKIAkJLmdldF9wbGNhX3N0YXR1cyAgICA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfc3RhdHVzLApAQCAtNTQyLDYgJiM0Mzs2OTcsOCBAQCBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbWljcm9jaGlwX3Qxc19kcml2ZXJbXSA9IHsKIAkJLm5hbWUgICAgICAgICAgICAgICA9ICYjMzQ7TEFOODY3WCBSZXYuRDAmIzM0OywKIAkJLmZlYXR1cmVzICAgICAgICAgICA9IFBIWV9CQVNJQ19UMVNfUDJNUF9GRUFUVVJFUywKIAkJLmNvbmZpZ19pbml0ICAgICAgICA9IGxhbjg2N3hfcmV2ZDBfY29uZmlnX2luaXQsCiYjNDM7CQkuY29uZmlnX2ludHIgICAgICAgID0gbGFuODZ4eF9jb25maWdfaW50ciwKJiM0MzsJCS5oYW5kbGVfaW50ZXJydXB0ICAgPSBsYW44Njd4X3JldmQwX2hhbmRsZV9pbnRlcnJ1cHQsCiAJCS5nZXRfcGxjYV9jZmcJICAgID0gZ2VucGh5X2M0NV9wbGNhX2dldF9jZmcsCiAJCS5zZXRfcGxjYV9jZmcJICAgID0gbGFuODZ4eF9wbGNhX3NldF9jZmcsCiAJCS5nZXRfcGxjYV9zdGF0dXMgICAgPSBnZW5waHlfYzQ1X3BsY2FfZ2V0X3N0YXR1cywKQEAgLTU1Niw2ICYjNDM7NzEzLDggQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MXNfZHJpdmVyW10gPSB7CiAJCS5mZWF0dXJlcyAgICAgICAgICAgPSBQSFlfQkFTSUNfVDFTX1AyTVBfRkVBVFVSRVMsCiAJCS5jb25maWdfaW5pdCAgICAgICAgPSBsYW44NjV4X3JldmJfY29uZmlnX2luaXQsCiAJCS5yZWFkX3N0YXR1cyAgICAgICAgPSBsYW44Nnh4X3JlYWRfc3RhdHVzLAomIzQzOwkJLmNvbmZpZ19pbnRyICAgICAgICA9IGxhbjg2eHhfY29uZmlnX2ludHIsCiYjNDM7CQkuaGFuZGxlX2ludGVycnVwdCAgID0gbGFuODZ4eF9oYW5kbGVfaW50ZXJydXB0LAogCQkucmVhZF9tbWQgICAgICAgICAgID0gZ2VucGh5X3JlYWRfbW1kX2M0NSwKIAkJLndyaXRlX21tZCAgICAgICAgICA9IGdlbnBoeV93cml0ZV9tbWRfYzQ1LAogCQkuZ2V0X3BsY2FfY2ZnCSAgICA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfY2ZnLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9vYV90YzYuaCBiL2luY2x1ZGUvbGludXgvb2FfdGM2LmgKaW5kZXggMjdmNjUyZDQ5MjBiMi4uMWM4Y2MyNjNjNWU1MyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9vYV90YzYuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L29hX3RjNi5oCkBAIC0zMCw2ICYjNDM7MzAsNyBAQAogCiAvKiBTdGF0dXMgUmVnaXN0ZXIgIzAgKi8KICNkZWZpbmUgT0FfVEM2X1JFR19TVEFUVVMwCQkJMHgwMDA4CiYjNDM7I2RlZmluZSBPQV9UQzZfU1RBVFVTMF9QSFlfSU5UCQkJQklUKDcpCiAjZGVmaW5lIE9BX1RDNl9TVEFUVVMwX1JFU0VUQwkJCUJJVCg2KQkvKiBSZXNldCBDb21wbGV0ZSAqLwogI2RlZmluZSBPQV9UQzZfU1RBVFVTMF9IRUFERVJfRVJST1IJCUJJVCg1KQogI2RlZmluZSBPQV9UQzZfU1RBVFVTMF9MT1NTX09GX0ZSQU1FX0VSUk9SCUJJVCg0KQpAQCAtNDMsNiAmIzQzOzQ0LDcgQEAKIAogLyogSW50ZXJydXB0IE1hc2sgUmVnaXN0ZXIgIzAgKi8KICNkZWZpbmUgT0FfVEM2X1JFR19JTlRfTUFTSzAJCQkJMHgwMDBDCiYjNDM7I2RlZmluZSBPQV9UQzZfSU5UX01BU0swX1BIWV9JTlRfTUFTSwkJCUJJVCg3KQogI2RlZmluZSBPQV9UQzZfSU5UX01BU0swX0hFQURFUl9FUlJfTUFTSwkJQklUKDUpCiAjZGVmaW5lIE9BX1RDNl9JTlRfTUFTSzBfTE9TU19PRl9GUkFNRV9FUlJfTUFTSwkJQklUKDQpCiAjZGVmaW5lIE9BX1RDNl9JTlRfTUFTSzBfUlhfQlVGRkVSX09WRVJGTE9XX0VSUl9NQVNLCUJJVCgzKQpAQCAtNjgsNiAmIzQzOzcwLDcgQEAgc3RydWN0IG9hX3RjNjsKIAogZW51bSBvYV90YzZfcXVpcmtfZmxhZyB7CiAJT0FfVEM2X0JST0tFTl9QSFkgPSBCSVQoMCksCiYjNDM7CU9BX1RDNl9QSFlfSU5UICAgID0gQklUKDEpLAogfTsKIAogc3RydWN0IG9hX3RjNl9xdWlya3Mgewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTU2CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgRmVhc2liaWxpdHkgQW5hbHlzaXMqKgoKT2theSwgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoaXMgcGF0Y2ggYW5kIGRlY2lkZSBpZiBmdXp6aW5nIGl0IGlzIGEgd29ydGh3aGlsZSBlbmRlYXZvci4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhlIGNvZGUgbW9kaWZpY2F0aW9ucy4gSSBzZWUgY2hhbmdlcyBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jYCwgYGRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmNgLCBhbmQgYGluY2x1ZGUvbGludXgvb2FfdGM2LmhgLiBUaW1lIHRvIHF1aWNrbHkgaWRlbnRpZnkgd2hhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoLgoKQWgsIGBsYW44NjV4YCBpcyBhIFNQSSBFdGhlcm5ldCBjb250cm9sbGVyIGZyb20gTWljcm9jaGlwLCBzcGVjaWZpY2FsbHkgdGhlIExBTjg2NTAvMSAxMEJBU0UtVDFTIE1BQy1QSFkuIGBvYV90YzZgIGlzIHRoZSBPcGVuIEFsbGlhbmNlIFRDNiAxMEJBU0UtVDFTIE1BQy1QSFkgcHJvdG9jb2wgZHJpdmVyLCBhbHNvIG9wZXJhdGluZyBvdmVyIFNQSSwgaXQgbG9va3MgbGlrZS4gQW5kIGBtaWNyb2NoaXBfdDFzYCBpcyBhIFBIWSBkcml2ZXIgZm9yIE1pY3JvY2hpcCYjMzk7cyBMQU44Njd4L0xBTjg2NXggMTBCQVNFLVQxUyBQSFlzLgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogY2FuIHdlIHJlYWNoIHRoZXNlIGRyaXZlcnMgaW4gYSBzdGFuZGFyZCBmdXp6aW5nIGVudmlyb25tZW50LCBsaWtlIFFFTVUgb3IgR0NFIHg4Nl82NCwgd2l0aG91dCBuZWVkaW5nIGFjdHVhbCBwaHlzaWNhbCBoYXJkd2FyZT8gTXkgZ3V0IGZlZWxpbmcgdGVsbHMgbWUgdGhpcyBtaWdodCBiZSB0cmlja3ksIGJlY2F1c2Ugb2YgdGhlIFNQSSBpbnRlcmFjdGlvbi4gSXQmIzM5O3MgbGlrZWx5IHRoYXQgU1BJIGRldmljZXMgYW5kIFBIWSBkZXZpY2VzIGdldCBpbnN0YW50aWF0ZWQgaW4gYSBzcGVjaWZpYyB3YXksIHBvdGVudGlhbGx5IHJlbHlpbmcgb24gYSBkZXZpY2UgdHJlZSBvciBzcGVjaWZpYyBwaHlzaWNhbCBTUEkgaGFyZHdhcmUuIExldCYjMzk7cyBzZWUgaWYgdGhlcmUgaXMgYSB2aXJ0dWFsIGJ1cyBvciBlbXVsYXRlZCBkZXZpY2UgdGhhdCB3ZSBjYW4gbGV2ZXJhZ2UuCgpTbywgbGV0JiMzOTtzIGZpcmUgdXAgbXkgcHJlZmVycmVkIHRvb2xzIGFuZCBzZWFyY2ggdGhlIGtlcm5lbCB0cmVlIGZvciBgbGFuODY1eGAsIGBvYV90YzZgLCBhbmQgYG1pY3JvY2hpcF90MXNgLiBUaGlzIHNob3VsZCBnaXZlIHVzIHNvbWUgY3JpdGljYWwgaW5zaWdodCBpbnRvIGhvdyB0aGVzZSBkcml2ZXJzIGFyZSBpbml0aWFsaXplZCBhbmQgdXNlZC4gRnJvbSB0aGVyZSwgd2UgY2FuIHRoZW4gZGV0ZXJtaW5lIHRoZSBmZWFzaWJpbGl0eSBvZiBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xhbjg2NXgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZz00NT1jb25maWcgTEFONzQzWFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnLTU5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWc6NjA6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnLTYxLXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL01ha2VmaWxlPTEwPWxhbjc0M3gtb2JqcyA6PSBsYW43NDN4X21haW4ubyBsYW43NDN4X2V0aHRvb2wubyBsYW43NDN4X3B0cC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvTWFrZWZpbGUtMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX0xBTjg2NVgpICYjNDM7PSBsYW44NjV4L1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL01ha2VmaWxlLTEzLW9iai0kKENPTkZJR19MQU45NjZYX1NXSVRDSCkgJiM0Mzs9IGxhbjk2NngvXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvS2NvbmZpZz04PWNvbmZpZyBMQU44NjVYXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvS2NvbmZpZy0xNi1cdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZSB3aWxsIGJlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9LY29uZmlnOjE3Olx0ICBjYWxsZWQgbGFuODY1eC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L0tjb25maWctMTgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvTWFrZWZpbGUtNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX0xBTjg2NVgpICYjNDM7PSBsYW44NjV4Lm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6Mzk6c3RydWN0IGxhbjg2NXhfcHJpdiB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDAtXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgbXVsdGljYXN0X3dvcms7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ2OnN0YXRpYyBpbnQgbGFuODY1eF9zZXRfaHdfbWFjYWRkcl9sb3dfYnl0ZXMoc3RydWN0IG9hX3RjNiAqdGM2LCBjb25zdCB1OCAqbWFjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NTU6c3RhdGljIGludCBsYW44NjV4X3NldF9od19tYWNhZGRyKHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYsIGNvbnN0IHU4ICptYWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNTYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy02MS1cdC8qIENvbmZpZ3VyZSBNQUMgYWRkcmVzcyBsb3cgYnl0ZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo2MjpcdHJldCA9IGxhbjg2NXhfc2V0X2h3X21hY2FkZHJfbG93X2J5dGVzKHByaXYtXHUwMDNldGM2LCBtYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTYzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNzUtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo3NjpcdHJlc3RvcmVfcmV0ID0gbGFuODY1eF9zZXRfaHdfbWFjYWRkcl9sb3dfYnl0ZXMocHJpdi1cdTAwM2V0YzYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNzctXHRcdFx0XHRcdFx0ICAgICAgIHByaXYtXHUwMDNlbmV0ZGV2LVx1MDAzZWRldl9hZGRyKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtODMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6ODQ6c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBsYW44NjV4X2V0aHRvb2xfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTg1LVx0LmdldF9saW5rX2tzZXR0aW5ncyA9IHBoeV9ldGh0b29sX2dldF9saW5rX2tzZXR0aW5ncyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtODgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6ODk6c3RhdGljIGludCBsYW44NjV4X3NldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB2b2lkICphZGRyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTkwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo5MTpcdHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTkyLVx0c3RydWN0IHNvY2thZGRyICphZGRyZXNzID0gYWRkcjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTAxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjEwMjpcdHJldCA9IGxhbjg2NXhfc2V0X2h3X21hY2FkZHIocHJpdiwgYWRkcmVzcy1cdTAwM2VzYV9kYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xMDMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYz0xMTE9c3RhdGljIHUzMiBnZXRfYWRkcmVzc19iaXQodTggYWRkcltFVEhfQUxFTl0sIHUzMiBiaXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTExNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoxMTY6c3RhdGljIHUzMiBsYW44NjV4X2hhc2godTggYWRkcltFVEhfQUxFTl0pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTE3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjEzMjpzdGF0aWMgaW50IGxhbjg2NXhfc2V0X3NwZWNpZmljX211bHRpY2FzdF9hZGRyKHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTMzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTM5LVx0bmV0ZGV2X2Zvcl9lYWNoX21jX2FkZHIoaGEsIHByaXYtXHUwMDNlbmV0ZGV2KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MTQwOlx0XHR1MzIgYml0X251bSA9IGxhbjg2NXhfaGFzaChoYS1cdTAwM2VhZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xNDEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTE2My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoxNjQ6c3RhdGljIGludCBsYW44NjV4X3NldF9hbGxfbXVsdGljYXN0X2FkZHIoc3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xNjUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xODUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MTg2OnN0YXRpYyBpbnQgbGFuODY1eF9jbGVhcl9hbGxfbXVsdGljYXN0X2FkZHIoc3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xODcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yMDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjA1OnN0YXRpYyB2b2lkIGxhbjg2NXhfbXVsdGljYXN0X3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjA2LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyMDc6XHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBsYW44NjV4X3ByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjA4LVx0XHRcdFx0XHRcdCBtdWx0aWNhc3Rfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTIxOC1cdFx0LyogRW5hYmxpbmcgYWxsIG11bHRpY2FzdCBtb2RlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjE5Olx0XHRpZiAobGFuODY1eF9zZXRfYWxsX211bHRpY2FzdF9hZGRyKHByaXYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTIyMC1cdFx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTIyNi1cdFx0LyogRW5hYmxpbmcgc3BlY2lmaWMgbXVsdGljYXN0IG1vZGUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyMjc6XHRcdGlmIChsYW44NjV4X3NldF9zcGVjaWZpY19tdWx0aWNhc3RfYWRkcihwcml2KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yMjgtXHRcdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yMzQtXHRcdC8qIEVuYWJsaW5nIGxvY2FsIG1hYyBhZGRyZXNzIG9ubHkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyMzU6XHRcdGlmIChsYW44NjV4X2NsZWFyX2FsbF9tdWx0aWNhc3RfYWRkcihwcml2KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yMzYtXHRcdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjQ0OnN0YXRpYyB2b2lkIGxhbjg2NXhfc2V0X211bHRpY2FzdF9saXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjQ1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyNDY6XHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNDctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyNTE6c3RhdGljIG5ldGRldl90eF90IGxhbjg2NXhfc2VuZF9wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNTItXHRcdFx0XHQgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNTMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjI1NDpcdHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI1NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjU4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjI1OTpzdGF0aWMgaW50IGxhbjg2NXhfaHdfZGlzYWJsZShzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI2MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI3My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyNzQ6c3RhdGljIGludCBsYW44NjV4X25ldF9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI3NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6Mjc2Olx0c3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjc3LVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjgwLVx0cGh5X3N0b3AobmV0ZGV2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjgxOlx0cmV0ID0gbGFuODY1eF9od19kaXNhYmxlKHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI4Mi1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjg5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjI5MDpzdGF0aWMgaW50IGxhbjg2NXhfaHdfZW5hYmxlKHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjkxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzA0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMwNTpzdGF0aWMgaW50IGxhbjg2NXhfbmV0X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMDYte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMwNzpcdHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMwOC1cdGludCByZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzA5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMxMDpcdHJldCA9IGxhbjg2NXhfaHdfZW5hYmxlKHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMxMS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzIyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMyMzpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGxhbjg2NXhfbmV0ZGV2X29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMjQ6XHQubmRvX29wZW5cdFx0PSBsYW44NjV4X25ldF9vcGVuLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMyNTpcdC5uZG9fc3RvcFx0XHQ9IGxhbjg2NXhfbmV0X2Nsb3NlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMyNjpcdC5uZG9fc3RhcnRfeG1pdFx0XHQ9IGxhbjg2NXhfc2VuZF9wYWNrZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzI3Olx0Lm5kb19zZXRfcnhfbW9kZVx0PSBsYW44NjV4X3NldF9tdWx0aWNhc3RfbGlzdCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMjg6XHQubmRvX3NldF9tYWNfYWRkcmVzc1x0PSBsYW44NjV4X3NldF9tYWNfYWRkcmVzcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMjktXHQubmRvX3ZhbGlkYXRlX2FkZHJcdD0gZXRoX3ZhbGlkYXRlX2FkZHIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMzMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMzM6c3RhdGljIGludCBsYW44NjV4X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzM0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzM2LVx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMzc6XHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMzOC1cdGludCByZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzM5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjM0MDpcdG5ldGRldiA9IGFsbG9jX2V0aGVyZGV2KHNpemVvZihzdHJ1Y3QgbGFuODY1eF9wcml2KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzQxLVx0aWYgKCFuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM0Ny1cdHNwaV9zZXRfZHJ2ZGF0YShzcGksIHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjM0ODpcdElOSVRfV09SSyhcdTAwMjZwcml2LVx1MDAzZW11bHRpY2FzdF93b3JrLCBsYW44NjV4X211bHRpY2FzdF93b3JrX2hhbmRsZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM0OS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzkzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjM5NDpcdHJldCA9IGxhbjg2NXhfc2V0X2h3X21hY2FkZHIocHJpdiwgbmV0ZGV2LVx1MDAzZWRldl9hZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zOTUtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQwMS1cdG5ldGRldi1cdTAwM2VpcnEgPSBzcGktXHUwMDNlaXJxO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQwMjpcdG5ldGRldi1cdTAwM2VuZXRkZXZfb3BzID0gXHUwMDI2bGFuODY1eF9uZXRkZXZfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQwMzpcdG5ldGRldi1cdTAwM2VldGh0b29sX29wcyA9IFx1MDAyNmxhbjg2NXhfZXRodG9vbF9vcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDA0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00MTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDIwOnN0YXRpYyB2b2lkIGxhbjg2NXhfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDIxLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0MjI6XHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2ID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDIzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00MjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDMwOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3BpX2RldmljZV9pZCBsYW44NjV4X2lkc1tdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQzMS1cdHsgLm5hbWUgPSBcJiMzNDtsYW44NjUwXCYjMzQ7IH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQzNC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQzNTpNT0RVTEVfREVWSUNFX1RBQkxFKHNwaSwgbGFuODY1eF9pZHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0Mzc6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbGFuODY1eF9kdF9pZHNbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00MzgtXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7bWljcm9jaGlwLGxhbjg2NTBcJiMzNDsgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDQxLX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDQyOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGxhbjg2NXhfZHRfaWRzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDQ0OnN0YXRpYyBzdHJ1Y3Qgc3BpX2RyaXZlciBsYW44NjV4X2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NDUtXHQuZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ0Ni1cdFx0Lm5hbWUgPSBEUlZfTkFNRSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0NDc6XHRcdC5vZl9tYXRjaF90YWJsZSA9IGxhbjg2NXhfZHRfaWRzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ0OC1cdCB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ0OTpcdC5wcm9iZSA9IGxhbjg2NXhfcHJvYmUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDUwOlx0LnJlbW92ZSA9IGxhbjg2NXhfcmVtb3ZlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ1MTpcdC5pZF90YWJsZSA9IGxhbjg2NXhfaWRzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ1Mi19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ1Mzptb2R1bGVfc3BpX2RyaXZlcihsYW44NjV4X2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDU0LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM9ODk9c3RhdGljIGNvbnN0IHUxNiBsYW44Njd4X3JldmIxX2ZpeHVwX21hc2tzWzEyXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTk5LSAqL1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoxMDA6c3RhdGljIGNvbnN0IHUzMiBsYW44NjV4X3JldmJfZml4dXBfcmVnaXN0ZXJzWzE3XSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTAxLVx0MHgwMEQwLCAweDAwRTAsIDB4MDBFOSwgMHgwMEY1LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTA3LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoxMDg6c3RhdGljIGNvbnN0IHUxNiBsYW44NjV4X3JldmJfZml4dXBfdmFsdWVzWzE3XSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTA5LVx0MHgzRjMxLCAweEMwMDAsIDB4OUU1MCwgMHgxQ0Y4LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTE1LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoxMTY6c3RhdGljIGNvbnN0IHUxNiBsYW44NjV4X3JldmJfZml4dXBfY2ZnX3JlZ3NbMl0gPSB7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTExNy1cdDB4MDA4NCwgMHgwMDhBLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTE5LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoxMjA6c3RhdGljIGNvbnN0IHUzMiBsYW44NjV4X3JldmJfc3FpX2ZpeHVwX3JlZ3NbMTJdID0ge1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xMjEtXHQweDAwQjAsIDB4MDBCMSwgMHgwMEIyLCAweDAwQjMsXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xMjUtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjEyNjpzdGF0aWMgY29uc3QgdTE2IGxhbjg2NXhfcmV2Yl9zcWlfZml4dXBfdmFsdWVzWzEyXSA9IHtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTI3LVx0MHgwMTAzLCAweDA5MTAsIDB4MUQyNiwgMHgwMDJBLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTMxLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoxMzI6c3RhdGljIGNvbnN0IHUxNiBsYW44NjV4X3JldmJfc3FpX2ZpeHVwX2NmZ19yZWdzWzNdID0ge1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xMzMtXHQweDAwQUQsIDB4MDBBRSwgMHgwMEFGLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM9MTQ2PXN0YXRpYyBjb25zdCB1MTYgbGFuODY3eF9yZXZkMF9maXh1cF92YWx1ZXNbOF0gPSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xNTgtICovXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjE1OTpzdGF0aWMgaW50IGxhbjg2NXhfcmV2Yl9pbmRpcmVjdF9yZWFkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiBhZGRyKVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xNjAte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTc4LSAqL1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoxNzk6c3RhdGljIGludCBsYW44NjV4X2dlbmVyYXRlX2NmZ19vZmZzZXRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHM4IG9mZnNldHNbXSlcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTgwLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTE4NC1cdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGZpeHVwX3JlZ3MpOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoxODU6XHRcdHJldCA9IGxhbjg2NXhfcmV2Yl9pbmRpcmVjdF9yZWFkKHBoeWRldiwgZml4dXBfcmVnc1tpXSk7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTE4Ni1cdFx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTE5OS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MjAwOnN0YXRpYyBpbnQgbGFuODY1eF9yZWFkX2NmZ19wYXJhbXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjAxLVx0XHRcdFx0ICAgY29uc3QgdTE2IGNmZ19yZWdzW10sIHUxNiBjZmdfcGFyYW1zW10sXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yMTYtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjIxNzpzdGF0aWMgaW50IGxhbjg2NXhfd3JpdGVfY2ZnX3BhcmFtcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yMTgtXHRcdFx0XHQgICAgY29uc3QgdTE2IGNmZ19yZWdzW10sIHUxNiBjZmdfcGFyYW1zW10sXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yMzItXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjIzMzpzdGF0aWMgaW50IGxhbjg2NXhfc2V0dXBfY2ZncGFyYW0oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgczggb2Zmc2V0c1tdKVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yMzQte1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyMzU6XHR1MTYgY2ZnX3Jlc3VsdHNbQVJSQVlfU0laRShsYW44NjV4X3JldmJfZml4dXBfY2ZnX3JlZ3MpXTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MjM2Olx0dTE2IGNmZ19wYXJhbXNbQVJSQVlfU0laRShsYW44NjV4X3JldmJfZml4dXBfY2ZnX3JlZ3MpXTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjM3LVx0aW50IHJldDtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjM4LVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyMzk6XHRyZXQgPSBsYW44NjV4X3JlYWRfY2ZnX3BhcmFtcyhwaHlkZXYsIGxhbjg2NXhfcmV2Yl9maXh1cF9jZmdfcmVncyxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjQwLVx0XHRcdFx0ICAgICAgY2ZnX3BhcmFtcywgQVJSQVlfU0laRShjZmdfcGFyYW1zKSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNDgtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI0OTpcdHJldHVybiBsYW44NjV4X3dyaXRlX2NmZ19wYXJhbXMocGh5ZGV2LCBsYW44NjV4X3JldmJfZml4dXBfY2ZnX3JlZ3MsXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI1MC1cdFx0XHRcdFx0Y2ZnX3Jlc3VsdHMsIEFSUkFZX1NJWkUoY2ZnX3Jlc3VsdHMpKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI1Mi1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MjUzOnN0YXRpYyBpbnQgbGFuODY1eF9zZXR1cF9zcWlfY2ZncGFyYW0oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgczggb2Zmc2V0c1tdKVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNTQte1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyNTU6XHR1MTYgY2ZnX3Jlc3VsdHNbQVJSQVlfU0laRShsYW44NjV4X3JldmJfc3FpX2ZpeHVwX2NmZ19yZWdzKV07XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI1NjpcdHUxNiBjZmdfcGFyYW1zW0FSUkFZX1NJWkUobGFuODY1eF9yZXZiX3NxaV9maXh1cF9jZmdfcmVncyldO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNTctXHRpbnQgcmV0O1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNTgtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI1OTpcdHJldCA9IGxhbjg2NXhfcmVhZF9jZmdfcGFyYW1zKHBoeWRldiwgbGFuODY1eF9yZXZiX3NxaV9maXh1cF9jZmdfcmVncyxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjYwLVx0XHRcdFx0ICAgICAgY2ZnX3BhcmFtcywgQVJSQVlfU0laRShjZmdfcGFyYW1zKSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNzAtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI3MTpcdHJldHVybiBsYW44NjV4X3dyaXRlX2NmZ19wYXJhbXMocGh5ZGV2LCBsYW44NjV4X3JldmJfc3FpX2ZpeHVwX2NmZ19yZWdzLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNzItXHRcdFx0XHRcdGNmZ19yZXN1bHRzLCBBUlJBWV9TSVpFKGNmZ19yZXN1bHRzKSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNzQtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI3NTpzdGF0aWMgaW50IGxhbjg2NXhfcmV2Yl9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNzYte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjgyLVx0ICovXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI4MzpcdHJldCA9IGxhbjg2NXhfZ2VuZXJhdGVfY2ZnX29mZnNldHMocGh5ZGV2LCBvZmZzZXRzKTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjg0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI4Ni1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6Mjg3Olx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUobGFuODY1eF9yZXZiX2ZpeHVwX3JlZ2lzdGVycyk7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI4OC1cdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyODk6XHRcdFx0XHQgICAgbGFuODY1eF9yZXZiX2ZpeHVwX3JlZ2lzdGVyc1tpXSxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MjkwOlx0XHRcdFx0ICAgIGxhbjg2NXhfcmV2Yl9maXh1cF92YWx1ZXNbaV0pO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yOTEtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yOTQtXHRcdGlmIChpID09IDEpIHtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6Mjk1Olx0XHRcdHJldCA9IGxhbjg2NXhfc2V0dXBfY2ZncGFyYW0ocGh5ZGV2LCBvZmZzZXRzKTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjk2LVx0XHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zMDAtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjMwMTpcdHJldCA9IGxhbjg2NXhfc2V0dXBfc3FpX2NmZ3BhcmFtKHBoeWRldiwgb2Zmc2V0cyk7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTMwMi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zMDQtXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjMwNTpcdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGxhbjg2NXhfcmV2Yl9zcWlfZml4dXBfcmVncyk7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTMwNi1cdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzozMDc6XHRcdFx0XHQgICAgbGFuODY1eF9yZXZiX3NxaV9maXh1cF9yZWdzW2ldLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzozMDg6XHRcdFx0XHQgICAgbGFuODY1eF9yZXZiX3NxaV9maXh1cF92YWx1ZXNbaV0pO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zMDktXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYz0zNDE9c3RhdGljIGludCBsYW44Njd4X3JldmNfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTM0OS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MzUwOlx0cmV0ID0gbGFuODY1eF9nZW5lcmF0ZV9jZmdfb2Zmc2V0cyhwaHlkZXYsIG9mZnNldHMpO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zNTEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMzY1LVx0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjM2NjpcdFx0XHRcdCAgICBsYW44NjV4X3JldmJfZml4dXBfcmVnaXN0ZXJzW2ldLFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzozNjc6XHRcdFx0XHQgICAgbGFuODY1eF9yZXZiX2ZpeHVwX3ZhbHVlc1tpXSk7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTM2OC1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTM3MS1cdFx0aWYgKGkgPT0gMSkge1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzozNzI6XHRcdFx0cmV0ID0gbGFuODY1eF9zZXR1cF9jZmdwYXJhbShwaHlkZXYsIG9mZnNldHMpO1xuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zNzMtXHRcdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTM3Ny1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6Mzc4Olx0cmV0ID0gbGFuODY1eF9zZXR1cF9zcWlfY2ZncGFyYW0ocGh5ZGV2LCBvZmZzZXRzKTtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMzc5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTM4MS1cbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MzgyOlx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUobGFuODY1eF9yZXZiX3NxaV9maXh1cF9yZWdzKTsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMzgzLVx0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjM4NDpcdFx0XHRcdCAgICBsYW44NjV4X3JldmJfc3FpX2ZpeHVwX3JlZ3NbaV0sXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjM4NTpcdFx0XHRcdCAgICBsYW44NjV4X3JldmJfc3FpX2ZpeHVwX3ZhbHVlc1tpXSk7XG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTM4Ni1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jPTY1OD1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbWljcm9jaGlwX3Qxc19kcml2ZXJbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTcxMy1cdFx0LmZlYXR1cmVzICAgICAgICAgICA9IFBIWV9CQVNJQ19UMVNfUDJNUF9GRUFUVVJFUyxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6NzE0Olx0XHQuY29uZmlnX2luaXQgICAgICAgID0gbGFuODY1eF9yZXZiX2NvbmZpZ19pbml0LFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy03MTUtXHRcdC5yZWFkX3N0YXR1cyAgICAgICAgPSBsYW44Nnh4X3JlYWRfc3RhdHVzLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5ODM5CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOgoKKipDaGVja2luZyB0aGUgT0FfVEM2IEltcGxlbWVudGF0aW9uIGFuZCBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIGBvYV90YzYuY2AgYW5kIGl0cyBhc3NvY2lhdGVkIEtjb25maWcgZmlsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIE9BX1RDNi4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIEtjb25maWcgZW50cmllcyB0aGF0IGNvbnRyb2wgd2hldGhlciB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgaW5jbHVkZWQgaW4gdGhlIGJ1aWxkLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBkZWZpbml0aW9ucyByZWxhdGVkIHRvIGBPQV9UQzZgIGl0c2VsZiwgb2YgY291cnNlLCBidXQgSSBzaG91bGQgYWxzbyBzZWUgaG93IHRoZSBgTUlDUk9DSElQX1QxU2AgZHJpdmVyIGludGVyYWN0cyB3aXRoIGl0LCBpZiBhdCBhbGwuIEl0JiMzOTtzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJlbGF0aW9uc2hpcHMsIGFuZCB3aGV0aGVyIHRoZXNlIGZlYXR1cmVzIGFyZSBtdXR1YWxseSBleGNsdXNpdmUsIG9yIGhhdmUgc3BlY2lmaWMgY29uZGl0aW9ucyBhdHRhY2hlZC4gSSYjMzk7bSBtZW50YWxseSBwYXJzaW5nIHRoZSBLY29uZmlnIGVudHJpZXMgdG8gcXVpY2tseSBncmFzcCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGlzIHdpbGwgaGVscCBtZSBxdWlja2x5IHVuZGVyc3RhbmQgaG93IHRvIGVuYWJsZSBvciBkaXNhYmxlIHRoZSByZWxldmFudCBjb2RlIGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtPQV9UQzYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNjEyIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9LY29uZmlnPTEzOT1jb25maWcgRVRIT0Ncbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9LY29uZmlnLTE0OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L0tjb25maWc6MTQ5OmNvbmZpZyBPQV9UQzZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L0tjb25maWctMTUwLVx0dHJpc3RhdGUgXCYjMzQ7T1BFTiBBbGxpYW5jZSBUQzYgMTBCQVNFLVQxeCBNQUMtUEhZIHN1cHBvcnRcJiMzNDsgaWYgQ09NUElMRV9URVNUXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvTWFrZWZpbGU9MTA2PW9iai0kKENPTkZJR19ORVRfVkVORE9SX1BFTlNBTkRPKSAmIzQzOz0gcGVuc2FuZG8vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9NYWtlZmlsZToxMDc6b2JqLSQoQ09ORklHX09BX1RDNikgJiM0Mzs9IG9hX3RjNi5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9NYWtlZmlsZS0xMDgtb2JqLSQoQ09ORklHX05FVF9WRU5ET1JfWlRFKSAmIzQzOz0genRlL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9LY29uZmlnPTI5PWNvbmZpZyBBRElOMTE0MFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9LY29uZmlnLTMyLVx0c2VsZWN0IEFESU4xMTQwX1BIWVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL0tjb25maWc6MzM6XHRzZWxlY3QgT0FfVEM2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvS2NvbmZpZy0zNC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYz0xNDM9c3RhdGljIGludCBhZGluMTE0MF9tYWNfZmlsdGVyX3NldChzdHJ1Y3QgYWRpbjExNDBfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy0xNTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYzoxNTY6XHRyZXQgPSBvYV90YzZfd3JpdGVfcmVnaXN0ZXJfbW1zKHByaXYtXHUwMDNldGM2LCBPQV9UQzZfTUFDX01NUzEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy0xNTctXHRcdFx0XHRcdHJlZ19hZGRyZXNzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTE2NC1cdHJlZ19hZGRyZXNzID0gQURJTjExNDBfTUFDX0FERFJfRklMVF9MV1JfUkVHICYjNDM7IDIgKiBzbG90O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM6MTY1Olx0cmV0ID0gb2FfdGM2X3dyaXRlX3JlZ2lzdGVyX21tcyhwcml2LVx1MDAzZXRjNiwgT0FfVEM2X01BQ19NTVMxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtMTY2LVx0XHRcdFx0XHRyZWdfYWRkcmVzcyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy0xODAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYzoxODE6XHRyZXQgPSBvYV90YzZfd3JpdGVfcmVnaXN0ZXJfbW1zKHByaXYtXHUwMDNldGM2LCBPQV9UQzZfTUFDX01NUzEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy0xODItXHRcdFx0XHRcdHJlZ19hZGRyZXNzLCB2YWwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTE4OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jOjE4OTpcdHJldHVybiBvYV90YzZfd3JpdGVfcmVnaXN0ZXJfbW1zKHByaXYtXHUwMDNldGM2LCBPQV9UQzZfTUFDX01NUzEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy0xOTAtXHRcdFx0XHRcdCByZWdfYWRkcmVzcywgdmFsKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYz0yNTA9c3RhdGljIGludCBhZGluMTE0MF9wcm9taXNjdW91c19tb2RlKHN0cnVjdCBhZGluMTE0MF9wcml2ICpwcml2LCBib29sIGVuYWJsZWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtMjU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM6MjU1Olx0cmV0ID0gb2FfdGM2X3JlYWRfcmVnaXN0ZXIocHJpdi1cdTAwM2V0YzYsIE9BX1RDNl9SRUdfQ09ORklHMiwgXHUwMDI2dmFsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTI1Ni1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtMjYzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM6MjY0Olx0cmV0dXJuIG9hX3RjNl93cml0ZV9yZWdpc3Rlcihwcml2LVx1MDAzZXRjNiwgT0FfVEM2X1JFR19DT05GSUcyLCB2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtMjY1LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYz0zNDE9c3RhdGljIHZvaWQgYWRpbjExNDBfc3RhdHNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtMzUxLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShhZGluMTE0MF9zdGF0X3JlZ3MpOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM6MzUyOlx0XHRyZXQgPSBvYV90YzZfcmVhZF9yZWdpc3Rlcl9tbXMocHJpdi1cdTAwM2V0YzYsIE9BX1RDNl9NQUNfTU1TMSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTM1My1cdFx0XHRcdFx0ICAgICAgIGFkaW4xMTQwX3N0YXRfcmVnc1tpXSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYz0zNjY9c3RhdGljIGludCBhZGluMTE0MF9jb25maWd1cmUoc3RydWN0IGFkaW4xMTQwX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtMzc1LVx0LyogRGlzYWJsZSBNQUMgbG9vcGJhY2sgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jOjM3NjpcdHJldCA9IG9hX3RjNl93cml0ZV9yZWdpc3Rlcl9tbXMocHJpdi1cdTAwM2V0YzYsIE9BX1RDNl9NQUNfTU1TMSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTM3Ny1cdFx0XHRcdFx0QURJTjExNDBfTUFDX1AxX0xPT1BfQUREUl9SRUcsIDB4MCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtMzgwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM6MzgxOlx0cmV0ID0gb2FfdGM2X3JlYWRfcmVnaXN0ZXIocHJpdi1cdTAwM2V0YzYsIE9BX1RDNl9SRUdfQ09ORklHMiwgXHUwMDI2cmVnX3ZhbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy0zODItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTM4Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jOjM4NzpcdHJldCA9IG9hX3RjNl93cml0ZV9yZWdpc3Rlcihwcml2LVx1MDAzZXRjNiwgT0FfVEM2X1JFR19DT05GSUcyLCByZWdfdmFsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTM4OC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM9NzA5PXN0YXRpYyBpbnQgYWRpbjExNDBfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy03MjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYzo3MjU6XHR0YzZfcXVpcmtzLnF1aXJrX2ZsYWdzID0gT0FfVEM2X0JST0tFTl9QSFk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy03MjYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvS2NvbmZpZz04PWNvbmZpZyBMQU44NjVYXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvS2NvbmZpZy0xMC1cdGRlcGVuZHMgb24gU1BJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9LY29uZmlnOjExOlx0c2VsZWN0IE9BX1RDNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvS2NvbmZpZy0xMi1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM9MzMzPXN0YXRpYyBpbnQgbGFuODY1eF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzUwOlx0dGM2X3F1aXJrcy5xdWlya19mbGFncyA9IE9BX1RDNl9QSFlfSU5UO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM1MS1cdHByaXYtXHUwMDNldGM2ID0gb2FfdGM2X2luaXQoc3BpLCBuZXRkZXYsIFx1MDAyNnRjNl9xdWlya3MpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTE3LS8qIENvbnRyb2wgY29tbWFuZCBoZWFkZXIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjE4OiNkZWZpbmUgT0FfVEM2X0NUUkxfSEVBREVSX0RBVEFfTk9UX0NUUkxcdEJJVCgzMSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjE5OiNkZWZpbmUgT0FfVEM2X0NUUkxfSEVBREVSX1dSSVRFX05PVF9SRUFEXHRCSVQoMjkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoyMDojZGVmaW5lIE9BX1RDNl9DVFJMX0hFQURFUl9NRU1fTUFQX1NFTEVDVE9SXHRHRU5NQVNLKDI3LCAyNClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjIxOiNkZWZpbmUgT0FfVEM2X0NUUkxfSEVBREVSX0FERFJcdFx0XHRHRU5NQVNLKDIzLCA4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MjI6I2RlZmluZSBPQV9UQzZfQ1RSTF9IRUFERVJfTEVOR1RIXHRcdEdFTk1BU0soNywgMSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjIzOiNkZWZpbmUgT0FfVEM2X0NUUkxfSEVBREVSX1BBUklUWVx0XHRCSVQoMClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTI0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMjUtLyogRGF0YSBoZWFkZXIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjI2OiNkZWZpbmUgT0FfVEM2X0RBVEFfSEVBREVSX0RBVEFfTk9UX0NUUkxcdEJJVCgzMSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjI3OiNkZWZpbmUgT0FfVEM2X0RBVEFfSEVBREVSX0RBVEFfVkFMSURcdFx0QklUKDIxKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6Mjg6I2RlZmluZSBPQV9UQzZfREFUQV9IRUFERVJfU1RBUlRfVkFMSURcdFx0QklUKDIwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6Mjk6I2RlZmluZSBPQV9UQzZfREFUQV9IRUFERVJfU1RBUlRfV09SRF9PRkZTRVRcdEdFTk1BU0soMTksIDE2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MzA6I2RlZmluZSBPQV9UQzZfREFUQV9IRUFERVJfRU5EX1ZBTElEXHRcdEJJVCgxNClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjMxOiNkZWZpbmUgT0FfVEM2X0RBVEFfSEVBREVSX0VORF9CWVRFX09GRlNFVFx0R0VOTUFTSygxMywgOClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjMyOiNkZWZpbmUgT0FfVEM2X0RBVEFfSEVBREVSX1BBUklUWVx0XHRCSVQoMClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTMzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMzQtLyogRGF0YSBmb290ZXIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjM1OiNkZWZpbmUgT0FfVEM2X0RBVEFfRk9PVEVSX0VYVEVOREVEX1NUU1x0XHRCSVQoMzEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzozNjojZGVmaW5lIE9BX1RDNl9EQVRBX0ZPT1RFUl9SWERfSEVBREVSX0JBRFx0QklUKDMwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6Mzc6I2RlZmluZSBPQV9UQzZfREFUQV9GT09URVJfQ09ORklHX1NZTkNcdFx0QklUKDI5KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6Mzg6I2RlZmluZSBPQV9UQzZfREFUQV9GT09URVJfUlhfQ0hVTktTXHRcdEdFTk1BU0soMjgsIDI0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6Mzk6I2RlZmluZSBPQV9UQzZfREFUQV9GT09URVJfREFUQV9WQUxJRFx0XHRCSVQoMjEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo0MDojZGVmaW5lIE9BX1RDNl9EQVRBX0ZPT1RFUl9TVEFSVF9WQUxJRFx0XHRCSVQoMjApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo0MTojZGVmaW5lIE9BX1RDNl9EQVRBX0ZPT1RFUl9TVEFSVF9XT1JEX09GRlNFVFx0R0VOTUFTSygxOSwgMTYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo0MjojZGVmaW5lIE9BX1RDNl9EQVRBX0ZPT1RFUl9FTkRfVkFMSURcdFx0QklUKDE0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NDM6I2RlZmluZSBPQV9UQzZfREFUQV9GT09URVJfRU5EX0JZVEVfT0ZGU0VUXHRHRU5NQVNLKDEzLCA4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NDQ6I2RlZmluZSBPQV9UQzZfREFUQV9GT09URVJfVFhfQ1JFRElUU1x0XHRHRU5NQVNLKDUsIDEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy00NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjQ2OiNkZWZpbmUgT0FfVEM2X0NUUkxfUFJPVF9SRVBMWV9TSVpFXHRcdDRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjQ3OiNkZWZpbmUgT0FfVEM2X0NUUkxfSEVBREVSX1NJWkVcdFx0XHQ0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo0ODojZGVmaW5lIE9BX1RDNl9DVFJMX1JFR19WQUxVRV9TSVpFXHRcdDRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjQ5OiNkZWZpbmUgT0FfVEM2X0NUUkxfSUdOT1JFRF9TSVpFXHRcdDRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjUwOiNkZWZpbmUgT0FfVEM2X0NUUkxfTUFYX1JFR0lTVEVSU1x0XHQxMjhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjUxOiNkZWZpbmUgT0FfVEM2X0NUUkxfU1BJX0JVRl9TSVpFXHQoT0FfVEM2X0NUUkxfSEVBREVSX1NJWkUgJiM0MztcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NTI6XHRcdFx0XHRcdChPQV9UQzZfQ1RSTF9NQVhfUkVHSVNURVJTICpcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NTM6XHRcdFx0XHRcdChPQV9UQzZfQ1RSTF9SRUdfVkFMVUVfU0laRSAmIzQzO1xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo1NDpcdFx0XHRcdFx0T0FfVEM2X0NUUkxfUFJPVF9SRVBMWV9TSVpFKSkgJiM0MztcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NTU6XHRcdFx0XHRcdE9BX1RDNl9DVFJMX0lHTk9SRURfU0laRSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTU2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NTc6I2RlZmluZSBPQV9UQzZfQ0hVTktfUEFZTE9BRF9TSVpFXHRcdDY0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo1ODojZGVmaW5lIE9BX1RDNl9EQVRBX0hFQURFUl9TSVpFXHRcdFx0NFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NTk6I2RlZmluZSBPQV9UQzZfQ0hVTktfU0laRVx0XHRcdChPQV9UQzZfREFUQV9IRUFERVJfU0laRSAmIzQzO1xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo2MDpcdFx0XHRcdFx0XHRPQV9UQzZfQ0hVTktfUEFZTE9BRF9TSVpFKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NjE6I2RlZmluZSBPQV9UQzZfTUFYX1RYX0NIVU5LU1x0XHRcdDQ4XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo2MjojZGVmaW5lIE9BX1RDNl9TUElfREFUQV9CVUZfU0laRVx0XHQoT0FfVEM2X01BWF9UWF9DSFVOS1MgKlxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo2MzpcdFx0XHRcdFx0XHRPQV9UQzZfQ0hVTktfU0laRSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTY0LSNkZWZpbmUgU1RBVFVTMF9SRVNFVENfUE9MTF9ERUxBWVx0XHQxMDAwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo2NzojZGVmaW5lIE9BX1RDNl9SRUdfTU1TX01BU0tcdFx0R0VOTUFTSygxOSwgMTYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy02OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz05Nz1lbnVtIG9hX3RjNl9oZWFkZXJfdHlwZSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo5ODpcdE9BX1RDNl9DVFJMX0hFQURFUixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjk5Olx0T0FfVEM2X0RBVEFfSEVBREVSLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTAwLX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9MTAyPWVudW0gb2FfdGM2X3JlZ2lzdGVyX29wIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjEwMzpcdE9BX1RDNl9DVFJMX1JFR19SRUFEID0gMCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjEwNDpcdE9BX1RDNl9DVFJMX1JFR19XUklURSA9IDEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMDUtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz0xMDc9ZW51bSBvYV90YzZfZGF0YV92YWxpZF9pbmZvIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjEwODpcdE9BX1RDNl9EQVRBX0lOVkFMSUQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMDk6XHRPQV9UQzZfREFUQV9WQUxJRCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTExMC19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTExMj1lbnVtIG9hX3RjNl9kYXRhX3N0YXJ0X3ZhbGlkX2luZm8ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTEzOlx0T0FfVEM2X0RBVEFfU1RBUlRfSU5WQUxJRCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjExNDpcdE9BX1RDNl9EQVRBX1NUQVJUX1ZBTElELFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTE1LX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9MTE3PWVudW0gb2FfdGM2X2RhdGFfZW5kX3ZhbGlkX2luZm8ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTE4Olx0T0FfVEM2X0RBVEFfRU5EX0lOVkFMSUQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMTk6XHRPQV9UQzZfREFUQV9FTkRfVkFMSUQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMjAtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz0xMjI9c3RhdGljIGludCBvYV90YzZfc3BpX3RyYW5zZmVyKHN0cnVjdCBvYV90YzYgKnRjNixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMjg6XHRpZiAoaGVhZGVyX3R5cGUgPT0gT0FfVEM2X0RBVEFfSEVBREVSKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMjktXHRcdHhmZXIudHhfYnVmID0gdGM2LVx1MDAzZXNwaV9kYXRhX3R4X2J1Zjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz0xNTY9c3RhdGljIF9fYmUzMiBvYV90YzZfcHJlcGFyZV9jdHJsX2hlYWRlcih1MzIgYWRkciwgdTggbGVuZ3RoLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTE2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjE2MTpcdGhlYWRlciA9IEZJRUxEX1BSRVAoT0FfVEM2X0NUUkxfSEVBREVSX0RBVEFfTk9UX0NUUkwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxNjI6XHRcdFx0ICAgIE9BX1RDNl9DVFJMX0hFQURFUikgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTYzOlx0XHQgRklFTERfUFJFUChPQV9UQzZfQ1RSTF9IRUFERVJfV1JJVEVfTk9UX1JFQUQsIHJlZ19vcCkgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTY0Olx0XHQgRklFTERfUFJFUChPQV9UQzZfQ1RSTF9IRUFERVJfTUVNX01BUF9TRUxFQ1RPUiwgYWRkciBcdTAwM2VcdTAwM2UgMTYpIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjE2NTpcdFx0IEZJRUxEX1BSRVAoT0FfVEM2X0NUUkxfSEVBREVSX0FERFIsIGFkZHIpIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjE2NjpcdFx0IEZJRUxEX1BSRVAoT0FfVEM2X0NUUkxfSEVBREVSX0xFTkdUSCwgbGVuZ3RoIC0gMSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxNjc6XHRoZWFkZXIgfD0gRklFTERfUFJFUChPQV9UQzZfQ1RSTF9IRUFERVJfUEFSSVRZLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTY4LVx0XHRcdCAgICAgb2FfdGM2X2dldF9wYXJpdHkoaGVhZGVyKSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9MTczPXN0YXRpYyB2b2lkIG9hX3RjNl91cGRhdGVfY3RybF93cml0ZV9kYXRhKHN0cnVjdCBvYV90YzYgKnRjNiwgdTMyIHZhbHVlW10sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTc1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjE3NjpcdF9fYmUzMiAqdHhfYnVmID0gdGM2LVx1MDAzZXNwaV9jdHJsX3R4X2J1ZiAmIzQzOyBPQV9UQzZfQ1RSTF9IRUFERVJfU0laRTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTE3Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz0xODU9c3RhdGljIHUxNiBvYV90YzZfY2FsY3VsYXRlX2N0cmxfYnVmX3NpemUodTggbGVuZ3RoLCBib29sIGN0cmxfcHJvdClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTE4Ni17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxODc6XHR1MzIgcmVwbHlfc2l6ZSA9IE9BX1RDNl9DVFJMX1JFR19WQUxVRV9TSVpFO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTg4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTg5LVx0aWYgKGN0cmxfcHJvdClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjE5MDpcdFx0cmVwbHlfc2l6ZSAmIzQzOz0gT0FfVEM2X0NUUkxfUFJPVF9SRVBMWV9TSVpFO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTkxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTE5NS1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTk2Olx0cmV0dXJuIE9BX1RDNl9DVFJMX0hFQURFUl9TSVpFICYjNDM7IHJlcGx5X3NpemUgKiBsZW5ndGggJiM0MztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjE5NzpcdCAgICAgICBPQV9UQzZfQ1RSTF9JR05PUkVEX1NJWkU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xOTgtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTIwMD1zdGF0aWMgdm9pZCBvYV90YzZfcHJlcGFyZV9jdHJsX3NwaV9idWYoc3RydWN0IG9hX3RjNiAqdGM2LCB1MzIgYWRkcmVzcyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0yMDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoyMTA6XHRpZiAocmVnX29wID09IE9BX1RDNl9DVFJMX1JFR19XUklURSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTIxMS1cdFx0b2FfdGM2X3VwZGF0ZV9jdHJsX3dyaXRlX2RhdGEodGM2LCB2YWx1ZSwgbGVuZ3RoKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz0yMTQ9c3RhdGljIGludCBvYV90YzZfY2hlY2tfY3RybF93cml0ZV9yZXBseShzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4IHNpemUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMjE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MjE5Olx0cnhfYnVmICYjNDM7PSBPQV9UQzZfQ1RSTF9JR05PUkVEX1NJWkU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0yMjAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMjIzLVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoyMjQ6XHRpZiAobWVtY21wKHR4X2J1ZiwgcnhfYnVmLCBzaXplIC0gT0FfVEM2X0NUUkxfSUdOT1JFRF9TSVpFKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTIyNS1cdFx0cmV0dXJuIC1FUFJPVE87XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9MjMwPXN0YXRpYyBpbnQgb2FfdGM2X2NoZWNrX2N0cmxfcmVhZF9yZXBseShzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4IGxlbmd0aClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTIzMS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoyMzI6XHRfX2JlMzIgKnJ4X2J1ZiA9IHRjNi1cdTAwM2VzcGlfY3RybF9yeF9idWYgJiM0MzsgT0FfVEM2X0NUUkxfSUdOT1JFRF9TSVpFO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMjMzLVx0X19iZTMyICp0eF9idWYgPSB0YzYtXHUwMDNlc3BpX2N0cmxfdHhfYnVmO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTI2MD1zdGF0aWMgdm9pZCBvYV90YzZfY29weV9jdHJsX3JlYWRfZGF0YShzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHUzMiB2YWx1ZVtdLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTI2Mi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoyNjM6XHRfX2JlMzIgKnJ4X2J1ZiA9IHRjNi1cdTAwM2VzcGlfY3RybF9yeF9idWYgJiM0MzsgT0FfVEM2X0NUUkxfSUdOT1JFRF9TSVpFICYjNDM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoyNjQ6XHRcdFx0IE9BX1RDNl9DVFJMX0hFQURFUl9TSVpFO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMjY1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTI3NT1zdGF0aWMgaW50IG9hX3RjNl9wZXJmb3JtX2N0cmwoc3RydWN0IG9hX3RjNiAqdGM2LCB1MzIgYWRkcmVzcywgdTMyIHZhbHVlW10sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMjg2LVx0LyogUGVyZm9ybSBTUEkgdHJhbnNmZXIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjI4NzpcdHJldCA9IG9hX3RjNl9zcGlfdHJhbnNmZXIodGM2LCBPQV9UQzZfQ1RSTF9IRUFERVIsIHNpemUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMjg4LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTI5NC1cdC8qIENoZWNrIGVjaG9lZC9yZWNlaXZlZCBjb250cm9sIHdyaXRlIGNvbW1hbmQgcmVwbHkgZm9yIGVycm9ycyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6Mjk1Olx0aWYgKHJlZ19vcCA9PSBPQV9UQzZfQ1RSTF9SRUdfV1JJVEUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0yOTYtXHRcdHJldHVybiBvYV90YzZfY2hlY2tfY3RybF93cml0ZV9yZXBseSh0YzYsIHNpemUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTMxOT1pbnQgb2FfdGM2X3JlYWRfcmVnaXN0ZXJzKHN0cnVjdCBvYV90YzYgKnRjNiwgdTMyIGFkZHJlc3MsIHUzMiB2YWx1ZVtdLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTMyMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjMyNDpcdGlmICghbGVuZ3RoIHx8IGxlbmd0aCBcdTAwM2UgT0FfVEM2X0NUUkxfTUFYX1JFR0lTVEVSUykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMzI1LVx0XHRkZXZfZXJyKFx1MDAyNnRjNi1cdTAwM2VzcGktXHUwMDNlZGV2LCBcJiMzNDtJbnZhbGlkIHJlZ2lzdGVyIGxlbmd0aCBwYXJhbWV0ZXJcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTMzMC1cdHJldCA9IG9hX3RjNl9wZXJmb3JtX2N0cmwodGM2LCBhZGRyZXNzLCB2YWx1ZSwgbGVuZ3RoLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MzMxOlx0XHRcdFx0ICBPQV9UQzZfQ1RSTF9SRUdfUkVBRCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0zMzItXHRtdXRleF91bmxvY2soXHUwMDI2dGM2LVx1MDAzZXNwaV9jdHJsX2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTM2Mj1pbnQgb2FfdGM2X3JlYWRfcmVnaXN0ZXJfbW1zKHN0cnVjdCBvYV90YzYgKnRjNiwgdTggbW1zLCB1MTYgYWRkcmVzcyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0zNjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzozNjc6XHRtbXNfcmVnID0gRklFTERfUFJFUChPQV9UQzZfUkVHX01NU19NQVNLLCBtbXMpIHwgYWRkcmVzcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTM2OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz0zODQ9aW50IG9hX3RjNl93cml0ZV9yZWdpc3RlcnMoc3RydWN0IG9hX3RjNiAqdGM2LCB1MzIgYWRkcmVzcywgdTMyIHZhbHVlW10sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMzg4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6Mzg5Olx0aWYgKCFsZW5ndGggfHwgbGVuZ3RoIFx1MDAzZSBPQV9UQzZfQ1RSTF9NQVhfUkVHSVNURVJTKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0zOTAtXHRcdGRldl9lcnIoXHUwMDI2dGM2LVx1MDAzZXNwaS1cdTAwM2VkZXYsIFwmIzM0O0ludmFsaWQgcmVnaXN0ZXIgbGVuZ3RoIHBhcmFtZXRlclxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMzk1LVx0cmV0ID0gb2FfdGM2X3BlcmZvcm1fY3RybCh0YzYsIGFkZHJlc3MsIHZhbHVlLCBsZW5ndGgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzozOTY6XHRcdFx0XHQgIE9BX1RDNl9DVFJMX1JFR19XUklURSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0zOTctXHRtdXRleF91bmxvY2soXHUwMDI2dGM2LVx1MDAzZXNwaV9jdHJsX2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTQyNz1pbnQgb2FfdGM2X3dyaXRlX3JlZ2lzdGVyX21tcyhzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4IG1tcywgdTE2IGFkZHJlc3MsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNDMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NDMyOlx0bW1zX3JlZyA9IEZJRUxEX1BSRVAoT0FfVEM2X1JFR19NTVNfTUFTSywgbW1zKSB8IGFkZHJlc3M7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy00MzMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9NDM4PXN0YXRpYyBpbnQgb2FfdGM2X2NoZWNrX3BoeV9yZWdfZGlyZWN0X2FjY2Vzc19jYXBhYmlsaXR5KHN0cnVjdCBvYV90YzYgKnRjNilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy00NDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo0NDM6XHRyZXQgPSBvYV90YzZfcmVhZF9yZWdpc3Rlcih0YzYsIE9BX1RDNl9SRUdfU1REQ0FQLCBcdTAwMjZyZWd2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNDQ0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy00NDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo0NDc6XHRpZiAoIShyZWd2YWwgXHUwMDI2IE9BX1RDNl9TVERDQVBfRElSRUNUX1BIWV9SRUdfQUNDRVNTKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTQ0OC1cdFx0cmV0dXJuIC1FTk9ERVY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9NDU4PXN0YXRpYyBpbnQgb2FfdGM2X21kaW9idXNfcmVhZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZ251bSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy00NjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo0NjQ6XHRyZXQgPSBvYV90YzZfcmVhZF9yZWdpc3Rlcih0YzYsIE9BX1RDNl9QSFlfU1REX1JFR19BRERSX0JBU0UgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NDY1Olx0XHRcdFx0ICAgKHJlZ251bSBcdTAwMjYgT0FfVEM2X1BIWV9TVERfUkVHX0FERFJfTUFTSyksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy00NjYtXHRcdFx0XHQgICBcdTAwMjZyZWd2YWwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTQ3Mz1zdGF0aWMgaW50IG9hX3RjNl9tZGlvYnVzX3dyaXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgcmVnbnVtLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTQ3Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjQ3ODpcdHJldHVybiBvYV90YzZfd3JpdGVfcmVnaXN0ZXIodGM2LCBPQV9UQzZfUEhZX1NURF9SRUdfQUREUl9CQVNFIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjQ3OTpcdFx0XHRcdCAgICAgKHJlZ251bSBcdTAwMjYgT0FfVEM2X1BIWV9TVERfUkVHX0FERFJfTUFTSyksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy00ODAtXHRcdFx0XHQgICAgIHZhbCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9NDgzPXN0YXRpYyBpbnQgb2FfdGM2X2dldF9waHlfYzQ1X21tcyhpbnQgZGV2bnVtKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTQ4Ni1cdGNhc2UgTURJT19NTURfUENTOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NDg3Olx0XHRyZXR1cm4gT0FfVEM2X1BIWV9DNDVfUENTX01NUzI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy00ODgtXHRjYXNlIE1ESU9fTU1EX1BNQVBNRDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjQ4OTpcdFx0cmV0dXJuIE9BX1RDNl9QSFlfQzQ1X1BNQV9QTURfTU1TMztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTQ5MC1cdGNhc2UgTURJT19NTURfVkVORDI6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo0OTE6XHRcdHJldHVybiBPQV9UQzZfUEhZX0M0NV9WU19QTENBX01NUzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy00OTItXHRjYXNlIE1ESU9fTU1EX0FOOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NDkzOlx0XHRyZXR1cm4gT0FfVEM2X1BIWV9DNDVfQVVUT19ORUdfTU1TNTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTQ5NC1cdGNhc2UgTURJT19NTURfUE9XRVJfVU5JVDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjQ5NTpcdFx0cmV0dXJuIE9BX1RDNl9QSFlfQzQ1X1BPV0VSX1VOSVRfTU1TNjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTQ5Ni1cdGRlZmF1bHQ6XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9NTczPXN0YXRpYyBpbnQgb2FfdGM2X21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG9hX3RjNiAqdGM2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTYwMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjYwNDpcdGlmICh0YzYtXHUwMDNlcXVpcmtfZmxhZ3MgXHUwMDI2IE9BX1RDNl9QSFlfSU5UKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy02MDUtXHRcdHJldCA9IG9hX3RjNl9waHlfaXJxX3NldHVwKHRjNik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNjIwLVx0XHRuZXRkZXZfZXJyKHRjNi1cdTAwM2VuZXRkZXYsIFwmIzM0O0NvdWxkIG5vdCByZWdpc3RlciBNRElPIGJ1c1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo2MjE6XHRcdGlmICh0YzYtXHUwMDNlcXVpcmtfZmxhZ3MgXHUwMDI2IE9BX1RDNl9QSFlfSU5UKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNjIyLVx0XHRcdG9hX3RjNl9waHlfaXJxX3RlYXJkb3duKHRjNik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9NjMwPXN0YXRpYyB2b2lkIG9hX3RjNl9tZGlvYnVzX3VucmVnaXN0ZXIoc3RydWN0IG9hX3RjNiAqdGM2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTYzMi1cdG1kaW9idXNfdW5yZWdpc3Rlcih0YzYtXHUwMDNlbWRpb2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo2MzM6XHRpZiAodGM2LVx1MDAzZXF1aXJrX2ZsYWdzIFx1MDAyNiBPQV9UQzZfUEhZX0lOVClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTYzNC1cdFx0b2FfdGM2X3BoeV9pcnFfdGVhcmRvd24odGM2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz02Mzg9c3RhdGljIGludCBvYV90YzZfcGh5X2luaXQoc3RydWN0IG9hX3RjNiAqdGM2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTY0MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjY0MjpcdGlmICh0YzYtXHUwMDNlcXVpcmtfZmxhZ3MgXHUwMDI2IE9BX1RDNl9CUk9LRU5fUEhZKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNjQzLVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz02Nzk9c3RhdGljIHZvaWQgb2FfdGM2X3BoeV9leGl0KHN0cnVjdCBvYV90YzYgKnRjNilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTY4MC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo2ODE6XHRpZiAodGM2LVx1MDAzZXF1aXJrX2ZsYWdzIFx1MDAyNiBPQV9UQzZfQlJPS0VOX1BIWSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTY4Mi1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTY4OD1zdGF0aWMgaW50IG9hX3RjNl9yZWFkX3N0YXR1czAoc3RydWN0IG9hX3RjNiAqdGM2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTY5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjY5MzpcdHJldCA9IG9hX3RjNl9yZWFkX3JlZ2lzdGVyKHRjNiwgT0FfVEM2X1JFR19TVEFUVVMwLCBcdTAwMjZyZWd2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNjk0LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTcwMz1zdGF0aWMgaW50IG9hX3RjNl9zd19yZXNldF9tYWNwaHkoc3RydWN0IG9hX3RjNiAqdGM2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNzA0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjcwNTpcdHUzMiByZWd2YWwgPSBPQV9UQzZfUkVTRVRfU1dSRVNFVDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTcwNi1cdGludCByZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy03MDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo3MDg6XHRyZXQgPSBvYV90YzZfd3JpdGVfcmVnaXN0ZXIodGM2LCBPQV9UQzZfUkVHX1JFU0VULCByZWd2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNzA5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy03MTMtXHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQob2FfdGM2X3JlYWRfc3RhdHVzMCwgdGM2LCByZWd2YWwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo3MTQ6XHRcdFx0XHQgcmVndmFsIFx1MDAyNiBPQV9UQzZfU1RBVFVTMF9SRVNFVEMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy03MTUtXHRcdFx0XHQgU1RBVFVTMF9SRVNFVENfUE9MTF9ERUxBWSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy03MjAtXHQvKiBDbGVhciB0aGUgcmVzZXQgY29tcGxldGUgc3RhdHVzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo3MjE6XHRyZXR1cm4gb2FfdGM2X3dyaXRlX3JlZ2lzdGVyKHRjNiwgT0FfVEM2X1JFR19TVEFUVVMwLCByZWd2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNzIyLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz03MjQ9c3RhdGljIGludCBvYV90YzZfdW5tYXNrX2ludGVycnVwdHMoc3RydWN0IG9hX3RjNiAqdGM2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTcyOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjcyOTpcdHJldCA9IG9hX3RjNl9yZWFkX3JlZ2lzdGVyKHRjNiwgT0FfVEM2X1JFR19JTlRfTUFTSzAsIFx1MDAyNnJlZ3ZhbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy03MzAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTczMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjczMzpcdHJlZ3ZhbCBcdTAwMjY9IH4oT0FfVEM2X0lOVF9NQVNLMF9QSFlfSU5UX01BU0sgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NzM0Olx0XHQgICAgT0FfVEM2X0lOVF9NQVNLMF9UWF9QUk9UT0NPTF9FUlJfTUFTSyB8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo3MzU6XHRcdCAgICBPQV9UQzZfSU5UX01BU0swX1JYX0JVRkZFUl9PVkVSRkxPV19FUlJfTUFTSyB8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo3MzY6XHRcdCAgICBPQV9UQzZfSU5UX01BU0swX0xPU1NfT0ZfRlJBTUVfRVJSX01BU0sgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NzM3Olx0XHQgICAgT0FfVEM2X0lOVF9NQVNLMF9IRUFERVJfRVJSX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNzM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NzM5Olx0cmV0dXJuIG9hX3RjNl93cml0ZV9yZWdpc3Rlcih0YzYsIE9BX1RDNl9SRUdfSU5UX01BU0swLCByZWd2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNzQwLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz03NDI9c3RhdGljIGludCBvYV90YzZfZW5hYmxlX2RhdGFfdHJhbnNmZXIoc3RydWN0IG9hX3RjNiAqdGM2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTc0Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjc0NzpcdHJldCA9IG9hX3RjNl9yZWFkX3JlZ2lzdGVyKHRjNiwgT0FfVEM2X1JFR19DT05GSUcwLCBcdTAwMjZ2YWx1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy03NDgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTc1MS1cdC8qIEVuYWJsZSBjb25maWd1cmF0aW9uIHN5bmNocm9uaXphdGlvbiBmb3IgZGF0YSB0cmFuc2ZlciAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NzUyOlx0dmFsdWUgfD0gT0FfVEM2X0NPTkZJRzBfU1lOQztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTc1My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjc1NDpcdHJldHVybiBvYV90YzZfd3JpdGVfcmVnaXN0ZXIodGM2LCBPQV9UQzZfUkVHX0NPTkZJRzAsIHZhbHVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTc1NS19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9ODI1PXN0YXRpYyB2b2lkIG9hX3RjNl9kaXNhYmxlX3RyYWZmaWMoc3RydWN0IG9hX3RjNiAqdGM2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtODI2LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjgyNzpcdHUzMiByZWd2YWwgPSBPQV9UQzZfSU5UX01BU0swX0FMTF9JTlRFUlJVUFRTO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtODI4LVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy04NDAtXHRvYV90YzZfZnJlZV9vbmdvaW5nX3NrYnModGM2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjg0MTpcdG9hX3RjNl93cml0ZV9yZWdpc3Rlcih0YzYsIE9BX1RDNl9SRUdfSU5UX01BU0swLCByZWd2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6ODQyOlx0b2FfdGM2X3JlYWRfcmVnaXN0ZXIodGM2LCBPQV9UQzZfUkVHX1NUQVRVUzAsIFx1MDAyNnJlZ3ZhbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo4NDM6XHRvYV90YzZfd3JpdGVfcmVnaXN0ZXIodGM2LCBPQV9UQzZfUkVHX1NUQVRVUzAsIHJlZ3ZhbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy04NDQtXHRkZXZfZXJyKFx1MDAyNnRjNi1cdTAwM2VzcGktXHUwMDNlZGV2LCBcJiMzNDtEZXZpY2UgaW50ZXJydXB0IGRpc2FibGVkIHRvIGF2b2lkIGludGVycnVwdCBzdG9ybVwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9ODQ3PXN0YXRpYyBpbnQgb2FfdGM2X3Byb2Nlc3NfZXh0ZW5kZWRfc3RhdHVzKHN0cnVjdCBvYV90YzYgKnRjNilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy04NTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo4NTI6XHRyZXQgPSBvYV90YzZfcmVhZF9yZWdpc3Rlcih0YzYsIE9BX1RDNl9SRUdfU1RBVFVTMCwgXHUwMDI2dmFsdWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtODUzLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTg2Ni1cdC8qIENsZWFyIHRoZSBlcnJvciBpbnRlcnJ1cHRzIHN0YXR1cyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6ODY3Olx0cmV0ID0gb2FfdGM2X3dyaXRlX3JlZ2lzdGVyKHRjNiwgT0FfVEM2X1JFR19TVEFUVVMwLCB2YWx1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy04NjgtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtODc4LVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo4Nzk6XHRpZiAoKHRjNi1cdTAwM2VxdWlya19mbGFncyBcdTAwMjYgT0FfVEM2X1BIWV9JTlQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6ODgwOlx0ICAgIEZJRUxEX0dFVChPQV9UQzZfU1RBVFVTMF9QSFlfSU5ULCB2YWx1ZSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy04ODEtXHRcdGhhbmRsZV9uZXN0ZWRfaXJxKHRjNi1cdTAwM2VwaHlfdmlycSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy04ODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo4ODM6XHRpZiAoRklFTERfR0VUKE9BX1RDNl9TVEFUVVMwX1JYX0JVRkZFUl9PVkVSRkxPV19FUlJPUiwgdmFsdWUpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy04ODQtXHRcdG9hX3RjNl9sb29rX2Zvcl9uZXdfZnJhbWUodGM2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy04ODgtXHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo4ODk6XHRpZiAoRklFTERfR0VUKE9BX1RDNl9TVEFUVVMwX1RYX1BST1RPQ09MX0VSUk9SLCB2YWx1ZSkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTg5MC1cdFx0bmV0ZGV2X2Vycih0YzYtXHUwMDNlbmV0ZGV2LCBcJiMzNDtUcmFuc21pdCBwcm90b2NvbCBlcnJvclxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtODk1LVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo4OTY6XHRpZiAoRklFTERfR0VUKE9BX1RDNl9TVEFUVVMwX0xPU1NfT0ZfRlJBTUVfRVJST1IsIHZhbHVlKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtODk3LVx0XHRuZXRkZXZfZXJyKHRjNi1cdTAwM2VuZXRkZXYsIFwmIzM0O0xvc3Mgb2YgZnJhbWUgZXJyb3JcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTg5OS1cdH1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjkwMDpcdGlmIChGSUVMRF9HRVQoT0FfVEM2X1NUQVRVUzBfSEVBREVSX0VSUk9SLCB2YWx1ZSkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTkwMS1cdFx0bmV0ZGV2X2Vycih0YzYtXHUwMDNlbmV0ZGV2LCBcJiMzNDtIZWFkZXIgZXJyb3JcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTkwOD1zdGF0aWMgaW50IG9hX3RjNl9wcm9jZXNzX3J4X2NodW5rX2Zvb3RlcihzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHUzMiBmb290ZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtOTE2LVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo5MTc6XHR0YzYtXHUwMDNldHhfY3JlZGl0cyA9IEZJRUxEX0dFVChPQV9UQzZfREFUQV9GT09URVJfVFhfQ1JFRElUUywgZm9vdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjkxODpcdHRjNi1cdTAwM2VyeF9jaHVua3NfYXZhaWxhYmxlID0gRklFTERfR0VUKE9BX1RDNl9EQVRBX0ZPT1RFUl9SWF9DSFVOS1MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy05MTktXHRcdFx0XHRcdCAgICAgZm9vdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTkyMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjkyMTpcdGlmIChGSUVMRF9HRVQoT0FfVEM2X0RBVEFfRk9PVEVSX0VYVEVOREVEX1NUUywgZm9vdGVyKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtOTIyLVx0XHRyZXQgPSBvYV90YzZfcHJvY2Vzc19leHRlbmRlZF9zdGF0dXModGM2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy05MzMtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjkzNDpcdGlmIChGSUVMRF9HRVQoT0FfVEM2X0RBVEFfRk9PVEVSX1JYRF9IRUFERVJfQkFELCBmb290ZXIpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy05MzUtXHRcdG5ldGRldl9lcnIodGM2LVx1MDAzZW5ldGRldiwgXCYjMzQ7UnhkIGhlYWRlciBiYWQgZXJyb3JcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTkzOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjkzOTpcdGlmICghRklFTERfR0VUKE9BX1RDNl9EQVRBX0ZPT1RFUl9DT05GSUdfU1lOQywgZm9vdGVyKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtOTQwLVx0XHRuZXRkZXZfZXJyKHRjNi1cdTAwM2VuZXRkZXYsIFwmIzM0O0NvbmZpZyB1bnN5bmMgZXJyb3JcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTEwNDc9c3RhdGljIGludCBvYV90YzZfcHJjc19vbmdvaW5nX3J4X2ZyYW1lKHN0cnVjdCBvYV90YzYgKnRjNiwgdTggKnBheWxvYWQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTA1MC1cdHJldHVybiBvYV90YzZfdXBkYXRlX3J4X3NrYih0YzYsIHBheWxvYWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMDUxOlx0XHRcdFx0ICAgIE9BX1RDNl9DSFVOS19QQVlMT0FEX1NJWkUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTA1Mi19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9MTA1ND1zdGF0aWMgaW50IG9hX3RjNl9wcmNzX3J4X2NodW5rX3BheWxvYWQoc3RydWN0IG9hX3RjNiAqdGM2LCB1OCAqZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMDU2LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjEwNTc6XHR1OCBzdGFydF9ieXRlX29mZnNldCA9IEZJRUxEX0dFVChPQV9UQzZfREFUQV9GT09URVJfU1RBUlRfV09SRF9PRkZTRVQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMDU4LVx0XHRcdFx0XHQgZm9vdGVyKSAqIHNpemVvZih1MzIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTA1OTpcdHU4IGVuZF9ieXRlX29mZnNldCA9IEZJRUxEX0dFVChPQV9UQzZfREFUQV9GT09URVJfRU5EX0JZVEVfT0ZGU0VULFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTA2MC1cdFx0XHRcdCAgICAgICBmb290ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTA2MTpcdGJvb2wgc3RhcnRfdmFsaWQgPSBGSUVMRF9HRVQoT0FfVEM2X0RBVEFfRk9PVEVSX1NUQVJUX1ZBTElELCBmb290ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTA2MjpcdGJvb2wgZW5kX3ZhbGlkID0gRklFTERfR0VUKE9BX1RDNl9EQVRBX0ZPT1RFUl9FTkRfVkFMSUQsIGZvb3Rlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMDYzLVx0dTE2IHNpemU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTA4MS1cdGlmIChzdGFydF92YWxpZCBcdTAwMjZcdTAwMjYgIWVuZF92YWxpZCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTA4MjpcdFx0c2l6ZSA9IE9BX1RDNl9DSFVOS19QQVlMT0FEX1NJWkUgLSBzdGFydF9ieXRlX29mZnNldDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTEwODMtXHRcdHJldHVybiBvYV90YzZfcHJjc19yeF9mcmFtZV9zdGFydCh0YzYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTExNC1cdFx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTExNTpcdFx0c2l6ZSA9IE9BX1RDNl9DSFVOS19QQVlMT0FEX1NJWkUgLSBzdGFydF9ieXRlX29mZnNldDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTExMTYtXHRcdHJldHVybiBvYV90YzZfcHJjc19yeF9mcmFtZV9zdGFydCh0YzYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9MTEzNT1zdGF0aWMgaW50IG9hX3RjNl9wcm9jZXNzX3NwaV9kYXRhX3J4X2J1ZihzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHUxNiBsZW5ndGgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMTM2LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjExMzc6XHR1MTYgbm9fb2ZfcnhfY2h1bmtzID0gbGVuZ3RoIC8gT0FfVEM2X0NIVU5LX1NJWkU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMTM4LVx0Ym9vbCByZXRyeSA9IGZhbHNlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTExNDQtXHRcdC8qIExhc3QgNCBieXRlcyBpbiBlYWNoIHJlY2VpdmVkIGNodW5rIGNvbnNpc3QgZm9vdGVyIGluZm8gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjExNDU6XHRcdGZvb3RlciA9IG9hX3RjNl9nZXRfcnhfY2h1bmtfZm9vdGVyKHRjNiwgaSAqIE9BX1RDNl9DSFVOS19TSVpFICYjNDM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMTQ2Olx0XHRcdFx0XHRcdCAgICBPQV9UQzZfQ0hVTktfUEFZTE9BRF9TSVpFKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTExNDctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTE1OC1cdFx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMTU5Olx0XHRpZiAoRklFTERfR0VUKE9BX1RDNl9EQVRBX0ZPT1RFUl9EQVRBX1ZBTElELCBmb290ZXIpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMTYwLVx0XHRcdHU4ICpwYXlsb2FkID0gdGM2LVx1MDAzZXNwaV9kYXRhX3J4X2J1ZiAmIzQzOyBpICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjExNjE6XHRcdFx0XHQgICAgICBPQV9UQzZfQ0hVTktfU0laRTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTExNjItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9MTE5Nj1zdGF0aWMgX19iZTMyIG9hX3RjNl9wcmVwYXJlX2RhdGFfaGVhZGVyKGJvb2wgZGF0YV92YWxpZCwgYm9vbCBzdGFydF92YWxpZCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMTk4LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjExOTk6XHR1MzIgaGVhZGVyID0gRklFTERfUFJFUChPQV9UQzZfREFUQV9IRUFERVJfREFUQV9OT1RfQ1RSTCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjEyMDA6XHRcdFx0XHRPQV9UQzZfREFUQV9IRUFERVIpIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjEyMDE6XHRcdCAgICAgRklFTERfUFJFUChPQV9UQzZfREFUQV9IRUFERVJfREFUQV9WQUxJRCwgZGF0YV92YWxpZCkgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTIwMjpcdFx0ICAgICBGSUVMRF9QUkVQKE9BX1RDNl9EQVRBX0hFQURFUl9TVEFSVF9WQUxJRCwgc3RhcnRfdmFsaWQpIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjEyMDM6XHRcdCAgICAgRklFTERfUFJFUChPQV9UQzZfREFUQV9IRUFERVJfRU5EX1ZBTElELCBlbmRfdmFsaWQpIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjEyMDQ6XHRcdCAgICAgRklFTERfUFJFUChPQV9UQzZfREFUQV9IRUFERVJfRU5EX0JZVEVfT0ZGU0VULFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTIwNS1cdFx0XHRcdGVuZF9ieXRlX29mZnNldCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMjA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTIwNzpcdGhlYWRlciB8PSBGSUVMRF9QUkVQKE9BX1RDNl9EQVRBX0hFQURFUl9QQVJJVFksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMjA4LVx0XHRcdCAgICAgb2FfdGM2X2dldF9wYXJpdHkoaGVhZGVyKSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9MTIxMz1zdGF0aWMgdm9pZCBvYV90YzZfYWRkX3R4X3NrYl90b19zcGlfYnVmKHN0cnVjdCBvYV90YzYgKnRjNilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTEyMTQte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTIxNTpcdGVudW0gb2FfdGM2X2RhdGFfZW5kX3ZhbGlkX2luZm8gZW5kX3ZhbGlkID0gT0FfVEM2X0RBVEFfRU5EX0lOVkFMSUQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMjE2LVx0X19iZTMyICp0eF9idWYgPSB0YzYtXHUwMDNlc3BpX2RhdGFfdHhfYnVmICYjNDM7IHRjNi1cdTAwM2VzcGlfZGF0YV90eF9idWZfb2Zmc2V0O1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM1OTUKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqSW52ZXN0aWdhdGluZyB0aGUgTUlDUk9DSElQX1QxU19QSFkgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gYE1JQ1JPQ0hJUF9UMVNfUEhZYCBpcyBkZWZpbmVkLiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gaXRzIG5hdHVyZSBhcyBhIFBIWSAocGh5c2ljYWwgbGF5ZXIpIGRyaXZlciwgaXMgdG8gY2hlY2sgdGhlIGBLY29uZmlnYCBmaWxlIHdpdGhpbiB0aGUgbmV0d29yayBkcml2ZXImIzM5O3MgZGlyZWN0b3J5LiBTcGVjaWZpY2FsbHksIEkgc2hvdWxkIGxvb2sgaW4gYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYC4gVGhpcyBmaWxlIHVzdWFsbHkgaGFuZGxlcyBhbGwgdGhlIFBIWS1yZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGhhdCYjMzk7cyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgZm9yIHRoZSBgTUlDUk9DSElQX1QxU19QSFlgIGRlZmluaXRpb24uIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtNSUNST0NISVBfVDFTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTMyMz1jb25maWcgTUlDUkVMX1BIWVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTMyOS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjMzMDpjb25maWcgTUlDUk9DSElQX1QxU19QSFlcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTMzMS1cdHRyaXN0YXRlIFwmIzM0O01pY3JvY2hpcCAxMEJBU0UtVDFTIEV0aGVybmV0IFBIWXNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU9ODI9b2JqLSQoQ09ORklHX01JQ1JPQ0hJUF9UMV9QSFkpXHQmIzQzOz0gbWljcm9jaGlwX3QxLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo4MzpvYmotJChDT05GSUdfTUlDUk9DSElQX1QxU19QSFkpICYjNDM7PSBtaWNyb2NoaXBfdDFzLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS04NC1vYmotJChDT05GSUdfTUlDUk9TRU1JX1BIWSlcdCYjNDM7PSBtc2NjL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MDEyCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqS2NvbmZpZyBEaXZlIGZvciBMQU44NjV4IEV0aGVybmV0IERyaXZlcnMqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIExldCYjMzk7cyBzdGFydCB3aXRoIHRoZSBgS2NvbmZpZ2AgZmlsZSBmb3IgdGhlIExBTjg2NXggRXRoZXJuZXQgZHJpdmVycy4gVGhhdCYjMzk7cyB0aGUgbG9naWNhbCBmaXJzdCBzdG9wLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgYXZhaWxhYmxlIGFuZCBob3cgdGhleSYjMzk7cmUgc3RydWN0dXJlZCB3aXRoaW4gdGhlIGJ1aWxkIHN5c3RlbS4gSSYjMzk7bSBsb29raW5nIGZvciB0aGluZ3MgbGlrZToKCiogICAqKkZlYXR1cmUgRmxhZ3M6KiogQXJlIHRoZXJlIGNvbmRpdGlvbmFsIGJ1aWxkIG9wdGlvbnMgZm9yIHRoaW5ncyBsaWtlIHNwZWNpZmljIFBIWSBjb25maWd1cmF0aW9ucywgaW50ZXJydXB0IG1vZGVzIChwb2xsaW5nLCBpbnRlcnJ1cHQtZHJpdmVuLCBldGMuKSwgb3IgRE1BIHN1cHBvcnQ/CiogICAqKkRlcGVuZGVuY2llczoqKiBXaGF0IG90aGVyIGtlcm5lbCBjb21wb25lbnRzIG9yIGRyaXZlcnMgbmVlZCB0byBiZSBlbmFibGVkIGZvciB0aGUgTEFOODY1eCBkcml2ZXIgdG8gZnVuY3Rpb24gY29ycmVjdGx5PyBBcmUgdGhlcmUgc3BlY2lmaWMgZGVwZW5kZW5jaWVzIG9uIG5ldHdvcmsgc3RhY2sgZmVhdHVyZXMgb3IgTUFDIGFkZHJlc3MgbWFuYWdlbWVudD8KKiAgICoqRGVmYXVsdHMgYW5kIEhlbHAgVGV4dDoqKiBXaGF0IGFyZSB0aGUgZGVmYXVsdCBzZXR0aW5ncyBmb3IgZWFjaCBvcHRpb24/IEFuZCwgb2YgY291cnNlLCB0aGUgaGVscGZ1bCBkZXNjcmlwdGlvbnMgdGhhdCB3aWxsIGd1aWRlIGRldmVsb3BlcnMuIFRoZSBjb21tZW50cyBoYXZlIHRvIGJlIGNsZWFyIGFuZCBjb25jaXNlLgoqICAgKipBcmNoaXRlY3R1cmUtU3BlY2lmaWMgU2VsZWN0aW9uczoqKiBEb2VzIHRoZSBLY29uZmlnIGV4cG9zZSBhbnkgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIHNlbGVjdGlvbnMgbGlrZSBjYWNoZSBsaW5lIHNpemVzIG9yIG1lbW9yeSByZWdpb25zPwoKSSYjMzk7bSBob3BpbmcgdGhpcyBLY29uZmlnIGlzIHdlbGwtb3JnYW5pemVkLCB3aXRoIGEgY2xlYXIgaGllcmFyY2h5IHRoYXQgcmVmbGVjdHMgdGhlIGxvZ2ljYWwgc3RydWN0dXJlIG9mIHRoZSBkcml2ZXIgYW5kIGl0cyBjYXBhYmlsaXRpZXMuIEl0JiMzOTtzIG9mdGVuIHdoZXJlIHRoZSBzdG9yeSBvZiB0aGUgZHJpdmVyJiMzOTtzIGNvbmZpZ3VyYXRpb24gYmVnaW5zLiBJJiMzOTttIGtlZW4gdG8gc2VlIGlmIGFueSBuZXcgZmVhdHVyZXMgaGF2ZSBiZWVuIGFkZGVkIG9yIGlmIHNvbWUgb2YgdGhlIGV4aXN0aW5nIG9wdGlvbnMgaGF2ZSBjaGFuZ2VkLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UmIzM5O3ZlIGdvdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgTWljcm9jaGlwIExBTjg2NXggRHJpdmVyIFN1cHBvcnRcbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0aWYgTkVUX1ZFTkRPUl9NSUNST0NISVBcbiAgIDc6XHRcbiAgIDg6XHRjb25maWcgTEFOODY1WFxuICAgOTpcdFx0dHJpc3RhdGUgXCYjMzQ7TEFOODY1eCBzdXBwb3J0XCYjMzQ7XG4gIDEwOlx0XHRkZXBlbmRzIG9uIFNQSVxuICAxMTpcdFx0c2VsZWN0IE9BX1RDNlxuICAxMjpcdFx0aGVscFxuICAxMzpcdFx0ICBTdXBwb3J0IGZvciB0aGUgTWljcm9jaGlwIExBTjg2NTAvMSBSZXYuQjAvQjEgTUFDUEhZIEV0aGVybmV0IGNoaXAuIEl0XG4gIDE0Olx0XHQgIHVzZXMgT1BFTiBBbGxpYW5jZSAxMEJBU0UtVDF4IFNlcmlhbCBJbnRlcmZhY2Ugc3BlY2lmaWNhdGlvbi5cbiAgMTU6XHRcbiAgMTY6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZSB3aWxsIGJlXG4gIDE3Olx0XHQgIGNhbGxlZCBsYW44NjV4LlxuICAxODpcdFxuICAxOTpcdGVuZGlmICMgTkVUX1ZFTkRPUl9NSUNST0NISVBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ2NTAKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgS2NvbmZpZyBMYWJ5cmludGgqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIE9BX1RDNi4gTXkgaW5zdGluY3QgaXMgdG8gaGVhZCBzdHJhaWdodCB0byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvS2NvbmZpZ2AsIGFzIHRoYXQmIzM5O3MgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIGZvciBFdGhlcm5ldC1yZWxhdGVkIGNvbmZpZ3VyYXRpb25zLiBJIHZhZ3VlbHkgcmVjYWxsIHRoYXQgdHlwZSBvZiBvcHRpb24gb2Z0ZW4gYmVpbmcgZGVmaW5lZCBhcm91bmQgbGluZSAxNDkuIFRpbWUgdG8gZmlyZSB1cCBteSBlZGl0b3IgYW5kIHRha2UgYSBsb29rLiBMZXQmIzM5O3Mgc2VlIHdoYXQgZ2VtcyBhcmUgaGlkZGVuIGluIHRoYXQgcGFydGljdWxhciBzZWN0aW9uLi4uaG9wZWZ1bGx5IHRoZSBhdXRob3Igd2FzIGtpbmQgZW5vdWdoIHRvIG9yZ2FuaXplIHRoaW5ncyBpbiBhIGNsZWFyIG1hbm5lci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTQ1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDI1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNDU6XHRcdHNlbGVjdCBCSVRSRVZFUlNFXG4gMTQ2Olx0XHRoZWxwXG4gMTQ3Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBPcGVuQ29yZXMgMTAvMTAwIE1icHMgRXRoZXJuZXQgTUFDLlxuIDE0ODpcdFxuIDE0OTpcdGNvbmZpZyBPQV9UQzZcbiAxNTA6XHRcdHRyaXN0YXRlIFwmIzM0O09QRU4gQWxsaWFuY2UgVEM2IDEwQkFTRS1UMXggTUFDLVBIWSBzdXBwb3J0XCYjMzQ7IGlmIENPTVBJTEVfVEVTVFxuIDE1MTpcdFx0ZGVwZW5kcyBvbiBTUElcbiAxNTI6XHRcdHNlbGVjdCBQSFlMSUJcbiAxNTM6XHRcdGhlbHBcbiAxNTQ6XHRcdCAgVGhpcyBsaWJyYXJ5IGltcGxlbWVudHMgT1BFTiBBbGxpYW5jZSBUQzYgMTBCQVNFLVQxeCBNQUMtUEhZXG4gMTU1Olx0XHQgIFNlcmlhbCBJbnRlcmZhY2UgcHJvdG9jb2wgZm9yIHN1cHBvcnRpbmcgMTBCQVNFLVQxeCBNQUMtUEhZcy5cbiAxNTY6XHRcbiAxNTc6XHRcdCAgVG8ga25vdyB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscywgcmVmZXIgZG9jdW1lbnRhdGlvbiBpblxuIDE1ODpcdFx0ICBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9vYS10YzYtZnJhbWV3b3JrLnJzdFx1MDAzZS5cbiAxNTk6XHRcbiAxNjA6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcGFzZW1pL0tjb25maWdcJiMzNDtcbiAxNjE6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcGVuc2FuZG8vS2NvbmZpZ1wmIzM0O1xuIDE2MjpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZ1wmIzM0O1xuIDE2MzpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL0tjb25maWdcJiMzNDtcbiAxNjQ6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vS2NvbmZpZ1wmIzM0O1xuIDE2NTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZGMvS2NvbmZpZ1wmIzM0O1xuIDE2NjpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWdcJiMzNDtcbiAxNjc6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnXCYjMzQ7XG4gMTY4Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3JvY2tlci9LY29uZmlnXCYjMzQ7XG4gMTY5Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3NhbXN1bmcvS2NvbmZpZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTMxMwoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDYxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIExBTjg2NVgvT0FfVEM2L01JQ1JPQ0hJUF9UMVMgUmVhY2hhYmlsaXR5IGluIFN5emthbGxlcioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBnb2FsIGlzIHRvIGRldGVybWluZSBpZiBJIGNhbiBhY3R1YWxseSBmdXp6IHRoZXNlIGRyaXZlcnMg4oCTIExBTjg2NVgsIE9BX1RDNiwgYW5kIE1JQ1JPQ0hJUF9UMVMg4oCTIHVzaW5nIHN5emthbGxlci4gVGhlIGNvcmUgcXVlc3Rpb24gaXM6IGFyZSB0aGV5IHJlYWNoYWJsZSB3aXRoaW4gdGhlIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgYW5kIEdDRSB0aGF0IHN5emthbGxlciBsZXZlcmFnZXM/IFRoaXMgJiMzNDtyZWFjaGFiaWxpdHkmIzM0OyBpcyB0aGUga2V5LiBGdXp6aW5nIHVucmVhY2hhYmxlIGNvZGUgaXMgYSB3YXN0ZSBvZiByZXNvdXJjZXMuCgpGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGVzZSBkcml2ZXJzICphcmUqLiBMQU44NjVYIGlzIGEgU1BJIGRyaXZlciAoYHN0cnVjdCBzcGlfZHJpdmVyYCksIGBsYW44NjV4X2RyaXZlcmAuIE1JQ1JPQ0hJUF9UMVMgaXMgYSBQSFkgZHJpdmVyIChgc3RydWN0IHBoeV9kcml2ZXJgLCBgbWljcm9jaGlwX3Qxc19kcml2ZXJbXWApLiBPQV9UQzYgaXMgYSBzdXBwb3J0aW5nIGxpYnJhcnkgZm9yIFNQSSBNQUMtUEhZcyB1c2VkIGJ5IGBsYW44NjV4YCBhbmQgYGFkaW4xMTQwYC4KCk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IGNhbiBJIGluc3RhbnRpYXRlIG9yIHByb2JlIFNQSSBhbmQgUEhZIGRldmljZXMgd2l0aGluIGEgdHlwaWNhbCBRRU1VIHg4Nl82NCBlbnZpcm9ubWVudD8gVGhhdCYjMzk7cyB0aGUgZ2F0ZWtlZXBlci4gU3RhbmRhcmQgUUVNVSBkb2VzbiYjMzk7dCBzZWVtIHRvIGhhdmUgYSBnZW5lcmljIFNQSSBidXMgaW5zdGFudGlhdGlvbi4gVW5sZXNzLCB0aGVyZSYjMzk7cyBzb21lIGtpbmQgb2YgbW9jayBTUEkgY29udHJvbGxlciwgVVNCLXRvLVNQSSBhZGFwdGVyLCBwbGF0Zm9ybSBkZXZpY2UsIG9yIG1heWJlIGV2ZW4gYSBjb25maWdmcyBTUEkgZGV2aWNlLiBIbW0sIGRvZXMgTGludXggZXZlbiBsZXQgeW91IGluc3RhbnRpYXRlIFNQSSBkZXZpY2VzIGZyb20gdXNlcnNwYWNlIGRpcmVjdGx5PyBEb2VzIFFFTVUgZXZlbiAqaGF2ZSogU1BJIHN1cHBvcnQgYnkgZGVmYXVsdD8KCkxldCBtZSBzdGVwIGJhY2sgYW5kIGNoZWNrIHN5emthbGxlciYjMzk7cyBkb2N1bWVudGF0aW9uIG9yIGV4YW1wbGVzLiBIYXMgaXQgYmVlbiB1c2VkIHRvIHRlc3QgU1BJIGRldmljZXMgYmVmb3JlPyBXaGF0IGFib3V0IGhvdyBTUEkgZGV2aWNlcyBhcmUgdGVzdGVkIGluIGdlbmVyYWw/IFdhaXQsIHRoZXJlJiMzOTtzIHRoYXQgcHJpbmNpcGxlOiBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURS4gSSBuZWVkIHRvIGJlIHN1cmUgdGhlIGNvZGUgKmNhbiogZXhlY3V0ZSBpbiB0aGVzZSBlbnZpcm9ubWVudHMuIElmIGl0JiMzOTtzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSwgZG9uJiMzOTt0IGZ1enogaXQuCgpUaGlzIGJyaW5ncyBtZSB0byBTZWN0aW9uIDIuIFRoYXQgbGlzdHMgZXhhbXBsZXMgb2YgJiMzNDtzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUmIzM0OyBoYXJkd2FyZS4gVGhpbmdzIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgdGhhdCBuZWVkIGRlZGljYXRlZCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gQWxzbyB1bnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHMsIGxpa2UgZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgYC5yZW1vdmVgLCBgLnNodXRkb3duYCwgYHBjaV91bnJlZ2lzdGVyX2RyaXZlcmApIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyB1bmJpbmRpbmcsIGFuZCBjb2RlIHBhdGhzIHNwZWNpZmljIHRvIG5vbi10YXJnZXQgYXJjaGl0ZWN0dXJlcy4KClNvLCB3aGVyZSBkbyBTUEkgYW5kIFBIWSBkcml2ZXJzIGZpdCBpbj8gQ2FuIEkgZXZlbiByZWFjaCBvciBwcm9iZSBMQU44NjV4IG9yIE1pY3JvY2hpcCBQSFlzPyBJIGhhdmUgdG8gZmlndXJlIG91dCBpZiBzeXprYWxsZXIgb3Igc3RhbmRhcmQgUUVNVSBjYW4gZG8gdGhhdC4gSXMgdGhlcmUgYSAmIzM0O3NwaS1tb2NrLCYjMzQ7IGEgJiMzNDtzcGktY29udHJvbGxlciwmIzM0OyBvciBzb21lIG5ldGxpbmsgb3IgTURJTyB0cmljaz8gSSBiZXR0ZXIgc2VhcmNoIHRoZSBrZXJuZWwgZm9yIGFueSBtZW50aW9uIG9mIFNQSSBjb250cm9sbGVycyBvciBNRElPLiBUaW1lIHRvIGRpZyBpbiBhbmQgZmluZCBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xhbjg2NTAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoxMzojZGVmaW5lIERSVl9OQU1FXHRcdFx0XCYjMzQ7bGFuODY1MFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTE0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYz00MzA9c3RhdGljIGNvbnN0IHN0cnVjdCBzcGlfZGV2aWNlX2lkIGxhbjg2NXhfaWRzW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDMxOlx0eyAubmFtZSA9IFwmIzM0O2xhbjg2NTBcJiMzNDsgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00MzItXHR7IC5uYW1lID0gXCYjMzQ7bGFuODY1MVwmIzM0OyB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYz00Mzc9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbGFuODY1eF9kdF9pZHNbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0Mzg6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7bWljcm9jaGlwLGxhbjg2NTBcJiMzNDsgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00MzktXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7bWljcm9jaGlwLGxhbjg2NTFcJiMzNDsgfSxcbi0tXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTYtICogIGxhbjg2NzAvMS8yIFJldi5CMS9DMS9DMi9EMFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzo3OiAqICBsYW44NjUwLzEgUmV2LkIwL0IxIEludGVybmFsIFBIWXNcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtOC0gKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcwNDIKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAyMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBMQU44NjV4IERyaXZlcnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBsYW44NjV4YCwgd2hpY2ggaXMgY2xlYXJseSBhbiBTUEkgZHJpdmVyIHRhaWxvcmVkIGZvciB0aG9zZSBNaWNyb2NoaXAgTEFOODY1MC8xIGNoaXBzLiBUaGVuIHRoZXJlJiMzOTtzIGBtaWNyb2NoaXBfdDFzYCwgd2hpY2ggSSBpbW1lZGlhdGVseSByZWNvZ25pemUgYXMgYW4gTURJTyBQSFkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBMQU44Njd4L0xBTjg2NXggZXRoZXJuZXQgUEhZcy4gQW5kIGZpbmFsbHksIGBvYV90YzZgIOKAkyB0aGF0JiMzOTtzIHRoZSBPUEVOIEFsbGlhbmNlIFRDNiBsaWJyYXJ5OyB0aGUgMTBCQVNFLVQxeCBNQUMtUEhZIHN1cHBvcnQgdGhhdCBib3RoIGBsYW44NjV4YCBhbmQgdGhlIGBhZGluMTE0MGAgU1BJIGV0aGVybmV0IGNvbnRyb2xsZXJzIGxldmVyYWdlLgoKTm93LCBteSBtaW5kIHN0YXJ0cyB0byB3YW5kZXIuIEkgaGF2ZSB0byB0aGluayBhYm91dCBwb3RlbnRpYWwgc2NlbmFyaW9zLiBBcmUgd2UgdGFsa2luZyBzdHJpY3RseSBwaHlzaWNhbCBoYXJkd2FyZSBoZXJlLCBvciBhcmUgdGhlcmUgdmlydHVhbCBkZXZpY2VzIGluIHBsYXk/IENhbiB3ZSBwb3NzaWJseSBoYXZlIHZpcnR1YWwgU1BJIG9yIE1ESU8gZGV2aWNlcyB0aGF0ICphdHRhY2gqIHRvIHRoaXMsIG9yIGNvdWxkIHdlIHNvbWVob3cgY3JlYXRlIGEgdmlydHVhbCBpbnN0YW5jZSBvZiBgbGFuODY1MGAgb3IgYG1pY3JvY2hpcF90MXNgPyBUaGF0IHdvdWxkIGRlZmluaXRlbHkgY2hhbmdlIHRoZSBsYW5kc2NhcGUuCgpNeSBuZXh0IHN0ZXAgaGFzIHRvIGJlIGEgZGVlcGVyIGludmVzdGlnYXRpb24uIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBpZiBzeXprYWxsZXIgaGFzIGFueSBwc2V1ZG8tc3lzY2FsbHMgb3IgaWYgdGhlcmUgYXJlIGFueSBvYnZpb3VzIHVzZXJzcGFjZSBpbnRlcmZhY2VzIHRoYXQgYWxsb3cgdXMgdG8gYmluZCBTUEkgb3IgUEhZIGRldmljZXMuIEkgbmVlZCB0byBrbm93IGlmIHRoaXMgaXMgZnVuZGFtZW50YWxseSBsaW1pdGVkIHRvIHBoeXNpY2FsIGhhcmR3YXJlIG9yIGlmIHRoZXJlJiMzOTtzIGFueSBmbGV4aWJpbGl0eS4gSSBoYXZlIHRvIHRoaW5rIGFib3V0IGhvdyBTUEkgZGV2aWNlcyBhcmUgdHlwaWNhbGx5IG1hbmFnZWQgYW5kIGNyZWF0ZWQgaW4gdGhlIGtlcm5lbCDigJMgYXJlIHRoZXJlIHN5c2ZzLCBjb25maWdmcywgaW9jdGwgbWVjaGFuaXNtcywgb3Igc2ltaWxhciBtZXRob2RzIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQ/IFRpbWUgdG8gZGl2ZSBpbnRvIGBkcml2ZXJzL3NwaS9gIGFuZCBzdGFydCBkaWdnaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXdfZGV2aWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zcGkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1kZmwuYz0xMjQ9c3RhdGljIGludCBkZmxfc3BpX2FsdGVyYV9wcm9iZShzdHJ1Y3QgZGZsX2RldmljZSAqZGZsX2Rldilcbi0tXG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLWRmbC5jLTE3NC1cbmRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtZGZsLmM6MTc1Olx0aWYgKCFzcGlfbmV3X2RldmljZShob3N0LCBcdTAwMjZib2FyZF9pbmZvKSkge1xuZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1kZmwuYy0xNzYtXHRcdGRldl9lcnIoZGV2LCBcJiMzNDslcyBmYWlsZWQgdG8gY3JlYXRlIFNQSSBkZXZpY2U6ICVzXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtcGxhdGZvcm0uYz0zNT1zdGF0aWMgaW50IGFsdGVyYV9zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLXBsYXRmb3JtLmMtMTE2LVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwZGF0YS1cdTAwM2VudW1fZGV2aWNlczsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtcGxhdGZvcm0uYzoxMTc6XHRcdFx0aWYgKCFzcGlfbmV3X2RldmljZShob3N0LCBwZGF0YS1cdTAwM2VkZXZpY2VzICYjNDM7IGkpKVxuZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1wbGF0Zm9ybS5jLTExOC1cdFx0XHRcdGRldl93YXJuKFx1MDAyNnBkZXYtXHUwMDNlZGV2LFxuLS1cbmRyaXZlcnMvc3BpL3NwaS1idXR0ZXJmbHkuYz0xNzY9c3RhdGljIHZvaWQgYnV0dGVyZmx5X2F0dGFjaChzdHJ1Y3QgcGFycG9ydCAqcClcbi0tXG5kcml2ZXJzL3NwaS9zcGktYnV0dGVyZmx5LmMtMjY1LVx0cHAtXHUwMDNlaW5mb1swXS5jb250cm9sbGVyX2RhdGEgPSBwcDtcbmRyaXZlcnMvc3BpL3NwaS1idXR0ZXJmbHkuYzoyNjY6XHRwcC1cdTAwM2VkYXRhZmxhc2ggPSBzcGlfbmV3X2RldmljZShwcC1cdTAwM2ViaXRiYW5nLmN0bHIsIFx1MDAyNnBwLVx1MDAzZWluZm9bMF0pO1xuZHJpdmVycy9zcGkvc3BpLWJ1dHRlcmZseS5jLTI2Ny1cdGlmIChwcC1cdTAwM2VkYXRhZmxhc2gpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWNoMzQxLmM9MTQxPXN0YXRpYyBpbnQgY2gzNDFfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4tLVxuZHJpdmVycy9zcGkvc3BpLWNoMzQxLmMtMjA2LVxuZHJpdmVycy9zcGkvc3BpLWNoMzQxLmM6MjA3Olx0Y2gzNDEtXHUwMDNlc3BpZGV2ID0gc3BpX25ld19kZXZpY2UoY3RybCwgXHUwMDI2Y2hpcCk7XG5kcml2ZXJzL3NwaS9zcGktY2gzNDEuYy0yMDgtXHRpZiAoIWNoMzQxLVx1MDAzZXNwaWRldikge1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1jczQybDQzLmM9MzEyPXN0YXRpYyBpbnQgY3M0Mmw0M19zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3NwaS9zcGktY3M0Mmw0My5jLTQyNi1cbmRyaXZlcnMvc3BpL3NwaS1jczQybDQzLmM6NDI3Olx0XHRpZiAoIXNwaV9uZXdfZGV2aWNlKHByaXYtXHUwMDNlY3RsciwgYW1wbF9pbmZvKSlcbmRyaXZlcnMvc3BpL3NwaS1jczQybDQzLmMtNDI4LVx0XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKHByaXYtXHUwMDNlZGV2LCAtRU5PREVWLFxuLS1cbmRyaXZlcnMvc3BpL3NwaS1jczQybDQzLmMtNDMwLVxuZHJpdmVycy9zcGkvc3BpLWNzNDJsNDMuYzo0MzE6XHRcdGlmICghc3BpX25ld19kZXZpY2UocHJpdi1cdTAwM2VjdGxyLCBhbXByX2luZm8pKVxuZHJpdmVycy9zcGkvc3BpLWNzNDJsNDMuYy00MzItXHRcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUocHJpdi1cdTAwM2VkZXYsIC1FTk9ERVYsXG4tLVxuZHJpdmVycy9zcGkvc3BpLWludGVsLmM9MTM3NT1zdGF0aWMgaW50IGludGVsX3NwaV9wb3B1bGF0ZV9jaGlwKHN0cnVjdCBpbnRlbF9zcGkgKmlzcGkpXG4tLVxuZHJpdmVycy9zcGkvc3BpLWludGVsLmMtMTQwMS1cbmRyaXZlcnMvc3BpL3NwaS1pbnRlbC5jOjE0MDI6XHRpZiAoIXNwaV9uZXdfZGV2aWNlKGlzcGktXHUwMDNlaG9zdCwgXHUwMDI2Y2hpcCkpXG5kcml2ZXJzL3NwaS9zcGktaW50ZWwuYy0xNDAzLVx0XHRyZXR1cm4gLUVOT0RFVjtcbi0tXG5kcml2ZXJzL3NwaS9zcGktaW50ZWwuYy0xNDMwLVxuZHJpdmVycy9zcGkvc3BpLWludGVsLmM6MTQzMTpcdGlmICghc3BpX25ld19kZXZpY2UoaXNwaS1cdTAwM2Vob3N0LCBcdTAwMjZjaGlwKSlcbmRyaXZlcnMvc3BpL3NwaS1pbnRlbC5jLTE0MzItXHRcdHJldHVybiAtRU5PREVWO1xuLS1cbmRyaXZlcnMvc3BpL3NwaS1rc3BpMi5jPTMxMD1zdGF0aWMgaW50IGtzcGkyX3JlZ2lzdGVyX2RldmljZXMoc3RydWN0IGtzcGkyICprc3BpKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1rc3BpMi5jLTMxNi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGtzcGktXHUwMDNlYXV4ZGV2LVx1MDAzZWluZm9fc2l6ZTsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvc3BpL3NwaS1rc3BpMi5jOjMxNzpcdFx0c3RydWN0IHNwaV9kZXZpY2UgKmRldmljZSA9IHNwaV9uZXdfZGV2aWNlKGtzcGktXHUwMDNlaG9zdCwgXHUwMDI2aW5mb1tpXSk7XG5kcml2ZXJzL3NwaS9zcGkta3NwaTIuYy0zMTgtXG4tLVxuZHJpdmVycy9zcGkvc3BpLWxtNzBsbHAuYz0xODg9c3RhdGljIHZvaWQgc3BpX2xtNzBsbHBfYXR0YWNoKHN0cnVjdCBwYXJwb3J0ICpwKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS1sbTcwbGxwLmMtMjY2LVx0cHAtXHUwMDNlaW5mby5jb250cm9sbGVyX2RhdGEgPSBwcDtcbmRyaXZlcnMvc3BpL3NwaS1sbTcwbGxwLmM6MjY3Olx0cHAtXHUwMDNlc3BpZGV2X2xtNzAgPSBzcGlfbmV3X2RldmljZShwcC1cdTAwM2ViaXRiYW5nLmN0bHIsIFx1MDAyNnBwLVx1MDAzZWluZm8pO1xuZHJpdmVycy9zcGkvc3BpLWxtNzBsbHAuYy0yNjgtXHRpZiAocHAtXHUwMDNlc3BpZGV2X2xtNzApXG4tLVxuZHJpdmVycy9zcGkvc3BpLWxtNzBsbHAuYy0yNzEtXHRlbHNlIHtcbmRyaXZlcnMvc3BpL3NwaS1sbTcwbGxwLmM6MjcyOlx0XHRkZXZfd2FybihcdTAwMjZwZC1cdTAwM2VkZXYsIFwmIzM0O3NwaV9uZXdfZGV2aWNlIGZhaWxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL3NwaS9zcGktbG03MGxscC5jLTI3My1cdFx0c3RhdHVzID0gLUVOT0RFVjtcbi0tXG5kcml2ZXJzL3NwaS9zcGkteGlsaW54LmM9NDAyPXN0YXRpYyBpbnQgeGlsaW54X3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvc3BpL3NwaS14aWxpbnguYy01MDktXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHBkYXRhLVx1MDAzZW51bV9kZXZpY2VzOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvc3BpL3NwaS14aWxpbnguYzo1MTA6XHRcdFx0c3BpX25ld19kZXZpY2UoaG9zdCwgcGRhdGEtXHUwMDNlZGV2aWNlcyAmIzQzOyBpKTtcbmRyaXZlcnMvc3BpL3NwaS14aWxpbnguYy01MTEtXHR9XG4tLVxuZHJpdmVycy9zcGkvc3BpLmM9Mjk3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIHNwaV9jb250cm9sbGVyX3N0YXRpc3RpY3NfZ3JvdXAgPSB7XG4tLVxuZHJpdmVycy9zcGkvc3BpLmMtMzA0LS8qXG5kcml2ZXJzL3NwaS9zcGkuYzozMDU6ICogbmV3X2RldmljZV9zdG9yZSAtIGluc3RhbnRpYXRlIGEgbmV3IFNQSSBkZXZpY2UgZnJvbSB1c2Vyc3BhY2VcbmRyaXZlcnMvc3BpL3NwaS5jLTMwNi0gKlxuLS1cbmRyaXZlcnMvc3BpL3NwaS5jLTMwOS0gKiBFeGFtcGxlczpcbmRyaXZlcnMvc3BpL3NwaS5jOjMxMDogKiAgIGVjaG8gc3BpZGV2IDAgXHUwMDNlIG5ld19kZXZpY2VcbmRyaXZlcnMvc3BpL3NwaS5jOjMxMTogKiAgIGVjaG8gc3BpZGV2IDAgMTAwMDAwMDAgXHUwMDNlIG5ld19kZXZpY2VcbmRyaXZlcnMvc3BpL3NwaS5jOjMxMjogKiAgIGVjaG8gc3BpZGV2IDAgMTAwMDAwMDAgMyBcdTAwM2UgbmV3X2RldmljZVxuZHJpdmVycy9zcGkvc3BpLmMtMzEzLSAqL1xuZHJpdmVycy9zcGkvc3BpLmM9MzE0PXN0YXRpYyBzc2l6ZV90XG5kcml2ZXJzL3NwaS9zcGkuYzozMTU6bmV3X2RldmljZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuZHJpdmVycy9zcGkvc3BpLmMtMzE2LVx0XHQgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpXG4tLVxuZHJpdmVycy9zcGkvc3BpLmMtMzI5LVx0aWYgKCFibGFuaykge1xuZHJpdmVycy9zcGkvc3BpLmM6MzMwOlx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7bmV3X2RldmljZTogTWlzc2luZyBwYXJhbWV0ZXJzXFxuXCYjMzQ7KTtcbmRyaXZlcnMvc3BpL3NwaS5jLTMzMS1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9zcGkvc3BpLmMtMzM0LVx0aWYgKGJsYW5rID09IGJ1ZiB8fCBibGFuayAtIGJ1ZiBcdTAwM2UgU1BJX05BTUVfU0laRSAtIDEpIHtcbmRyaXZlcnMvc3BpL3NwaS5jOjMzNTpcdFx0ZGV2X2VycihkZXYsIFwmIzM0O25ld19kZXZpY2U6IEludmFsaWQgZGV2aWNlIG5hbWVcXG5cJiMzNDspO1xuZHJpdmVycy9zcGkvc3BpLmMtMzM2LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL3NwaS9zcGkuYy0zNDgtXHRpZiAoc3NjYW5mKCYjNDM7JiM0MztibGFuaywgXCYjMzQ7JXUgJXUgJXVcJiMzNDssIFx1MDAyNmNoaXBfc2VsZWN0LCBcdTAwMjZtYXhfc3BlZWRfaHosIFx1MDAyNm1vZGUpIFx1MDAzYyAxKSB7XG5kcml2ZXJzL3NwaS9zcGkuYzozNDk6XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtuZXdfZGV2aWNlOiBDYW4mIzM5O3QgcGFyc2UgY2hpcCBzZWxlY3RcXG5cJiMzNDspO1xuZHJpdmVycy9zcGkvc3BpLmMtMzUwLVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL3NwaS9zcGkuYy0zNTktXHRpZiAoY2hpcF9zZWxlY3QgXHUwMDNlIFU4X01BWCB8fCBjaGlwX3NlbGVjdCBcdTAwM2U9IGN0bHItXHUwMDNlbnVtX2NoaXBzZWxlY3QpIHtcbmRyaXZlcnMvc3BpL3NwaS5jOjM2MDpcdFx0ZGV2X2VycihkZXYsIFwmIzM0O25ld19kZXZpY2U6IENoaXAgc2VsZWN0ICV1IG91dCBvZiByYW5nZSAobnVtX2NoaXBzZWxlY3Q9JXUpXFxuXCYjMzQ7LFxuZHJpdmVycy9zcGkvc3BpLmMtMzYxLVx0XHRcdGNoaXBfc2VsZWN0LCBjdGxyLVx1MDAzZW51bV9jaGlwc2VsZWN0KTtcbi0tXG5kcml2ZXJzL3NwaS9zcGkuYy0zNzItXHRpZiAobW9kZSBcdTAwMjYgfih1MzIpU1BJX01PREVfVVNFUl9NQVNLKSB7XG5kcml2ZXJzL3NwaS9zcGkuYzozNzM6XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtuZXdfZGV2aWNlOiBJbnZhbGlkIG1vZGUgYml0cyAweCV4XFxuXCYjMzQ7LFxuZHJpdmVycy9zcGkvc3BpLmMtMzc0LVx0XHRcdG1vZGUgXHUwMDI2IH4odTMyKVNQSV9NT0RFX1VTRVJfTUFTSyk7XG4tLVxuZHJpdmVycy9zcGkvc3BpLmMtNDAxLVx0LypcbmRyaXZlcnMvc3BpL3NwaS5jOjQwMjpcdCAqIHNwaV91bnJlZ2lzdGVyX2NvbnRyb2xsZXIoKSByZW1vdmVzIHRoZSBuZXdfZGV2aWNlL2RlbGV0ZV9kZXZpY2VcbmRyaXZlcnMvc3BpL3NwaS5jLTQwMy1cdCAqIHN5c2ZzIGdyb3VwIGJlZm9yZSB0YWtpbmcgYWRkX2xvY2ssIHNvIGtlcm5mc19kcmFpbigpIGhhcyBhbHJlYWR5XG4tLVxuZHJpdmVycy9zcGkvc3BpLmMtNDIxLVxuZHJpdmVycy9zcGkvc3BpLmM6NDIyOlx0ZGV2X2luZm8oZGV2LCBcJiMzNDtuZXdfZGV2aWNlOiBJbnN0YW50aWF0ZWQgZGV2aWNlICVzIGF0IENTJXVcXG5cJiMzNDssXG5kcml2ZXJzL3NwaS9zcGkuYy00MjMtXHRcdCBtb2RhbGlhcywgY2hpcF9zZWxlY3QpO1xuLS1cbmRyaXZlcnMvc3BpL3NwaS5jLTQyNS19XG5kcml2ZXJzL3NwaS9zcGkuYzo0MjY6c3RhdGljIERFVklDRV9BVFRSX0lHTk9SRV9MT0NLREVQKG5ld19kZXZpY2UsIDAyMDAsIE5VTEwsIG5ld19kZXZpY2Vfc3RvcmUpO1xuZHJpdmVycy9zcGkvc3BpLmMtNDI3LVxuLS1cbmRyaXZlcnMvc3BpL3NwaS5jPTQ3MT1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqc3BpX2NvbnRyb2xsZXJfdXNlcnNwYWNlX2F0dHJzW10gPSB7XG5kcml2ZXJzL3NwaS9zcGkuYzo0NzI6XHRcdTAwMjZkZXZfYXR0cl9uZXdfZGV2aWNlLmF0dHIsXG5kcml2ZXJzL3NwaS9zcGkuYy00NzMtXHRcdTAwMjZkZXZfYXR0cl9kZWxldGVfZGV2aWNlLmF0dHIsXG4tLVxuZHJpdmVycy9zcGkvc3BpLmM9NDc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIHNwaV9jb250cm9sbGVyX3VzZXJzcGFjZV9ncm91cCA9IHtcbi0tXG5kcml2ZXJzL3NwaS9zcGkuYy00ODQtICogc3BpX2NvbnRyb2xsZXJfdXNlcnNwYWNlX2dyb3VwIGlzIHJlZ2lzdGVyZWQgbWFudWFsbHkgZm9yIGhvc3QgY29udHJvbGxlcnNcbmRyaXZlcnMvc3BpL3NwaS5jOjQ4NTogKiBhdCB0aGUgZW5kIG9mIHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKCkgc28gbmV3X2RldmljZS9kZWxldGVfZGV2aWNlIG9ubHlcbmRyaXZlcnMvc3BpL3NwaS5jLTQ4Ni0gKiBhcHBlYXIgYWZ0ZXIgRFQvQUNQSSBjaGlsZHJlbiBhbmQgdGhlIHF1ZXVlIGFyZSBzZXQgdXAuXG4tLVxuZHJpdmVycy9zcGkvc3BpLmM9OTc5PUVYUE9SVF9TWU1CT0xfR1BMKHNwaV9hZGRfZGV2aWNlKTtcbi0tXG5kcml2ZXJzL3NwaS9zcGkuYy05ODEtLyoqXG5kcml2ZXJzL3NwaS9zcGkuYzo5ODI6ICogc3BpX25ld19kZXZpY2UgLSBpbnN0YW50aWF0ZSBvbmUgbmV3IFNQSSBkZXZpY2VcbmRyaXZlcnMvc3BpL3NwaS5jLTk4My0gKiBAY3RscjogQ29udHJvbGxlciB0byB3aGljaCBkZXZpY2UgaXMgY29ubmVjdGVkXG4tLVxuZHJpdmVycy9zcGkvc3BpLmMtOTk0LSAqL1xuZHJpdmVycy9zcGkvc3BpLmM6OTk1OnN0cnVjdCBzcGlfZGV2aWNlICpzcGlfbmV3X2RldmljZShzdHJ1Y3Qgc3BpX2NvbnRyb2xsZXIgKmN0bHIsXG5kcml2ZXJzL3NwaS9zcGkuYy05OTYtXHRcdFx0XHQgIHN0cnVjdCBzcGlfYm9hcmRfaW5mbyAqY2hpcClcbi0tXG5kcml2ZXJzL3NwaS9zcGkuYy0xMDUwLX1cbmRyaXZlcnMvc3BpL3NwaS5jOjEwNTE6RVhQT1JUX1NZTUJPTF9HUEwoc3BpX25ld19kZXZpY2UpO1xuZHJpdmVycy9zcGkvc3BpLmMtMTA1Mi1cbi0tXG5kcml2ZXJzL3NwaS9zcGkuYz0xMDgxPXN0YXRpYyB2b2lkIHNwaV9tYXRjaF9jb250cm9sbGVyX3RvX2JvYXJkaW5mbyhzdHJ1Y3Qgc3BpX2NvbnRyb2xsZXIgKmN0bHIsXG4tLVxuZHJpdmVycy9zcGkvc3BpLmMtMTA4OC1cbmRyaXZlcnMvc3BpL3NwaS5jOjEwODk6XHRkZXYgPSBzcGlfbmV3X2RldmljZShjdGxyLCBiaSk7XG5kcml2ZXJzL3NwaS9zcGkuYy0xMDkwLVx0aWYgKCFkZXYpXG4tLVxuZHJpdmVycy9zcGkvc3BpLmM9MzY1Mj1pbnQgc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IHNwaV9jb250cm9sbGVyICpjdGxyKVxuLS1cbmRyaXZlcnMvc3BpL3NwaS5jLTM3NTctXHQvKlxuZHJpdmVycy9zcGkvc3BpLmM6Mzc1ODpcdCAqIFJlZ2lzdGVyIHRoZSBuZXdfZGV2aWNlL2RlbGV0ZV9kZXZpY2Ugc3lzZnMgaW50ZXJmYWNlIGFzIHRoZVxuZHJpdmVycy9zcGkvc3BpLmMtMzc1OS1cdCAqIGZpbmFsIHN0ZXAgb2YgaG9zdCBjb250cm9sbGVyIGJyaW5ndXAsIG9ubHkgYWZ0ZXIgdGhlIHF1ZXVlLFxuLS1cbmRyaXZlcnMvc3BpL3NwaS5jPTM4Mzg9dm9pZCBzcGlfdW5yZWdpc3Rlcl9jb250cm9sbGVyKHN0cnVjdCBzcGlfY29udHJvbGxlciAqY3Rscilcbi0tXG5kcml2ZXJzL3NwaS9zcGkuYy0zODQzLVx0LypcbmRyaXZlcnMvc3BpL3NwaS5jOjM4NDQ6XHQgKiBEcmFpbiBpbi1mbGlnaHQgbmV3X2RldmljZS9kZWxldGVfZGV2aWNlIHN5c2ZzIHN0b3JlcyBhbmRcbmRyaXZlcnMvc3BpL3NwaS5jLTM4NDUtXHQgKiBwcmV2ZW50IG5ldyBvbmVzIGZyb20gc3RhcnRpbmcuICBNdXN0IGhhcHBlbiBiZWZvcmUgd2UgdGFrZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDgxMgoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDE3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIFRob3VnaHRzIG9uIFNQSSBEZXZpY2UgSW5zdGFudGlhdGlvbiBhbmQgdGhlIExBTjg2NXggRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBuZXdfZGV2aWNlYCBlbnRyeSBpbiBzeXNmcyBmb3IgU1BJLiBSaWdodCwgdGhpcyBpcyBob3cgeW91IGNhbiBkeW5hbWljYWxseSBpbnN0YW50aWF0ZSBhIG5ldyBTUEkgZGV2aWNlIGZyb20gdXNlcnNwYWNlLiBJIHNlZSBpdCYjMzk7cyBzb21ldGhpbmcgbGlrZSBgZWNobyBsYW44NjUwIDAgJmd0OyAvc3lzL2NsYXNzL3NwaV9tYXN0ZXIvc3BpWC9uZXdfZGV2aWNlYC4gTWFrZXMgc2Vuc2UuIEJ1dCBJJiMzOTttIGltbWVkaWF0ZWx5IHdvbmRlcmluZyBhYm91dCB0aGUgZW52aXJvbm1lbnQg4oCTIHNwZWNpZmljYWxseSwgUUVNVS4gRG9lcyBRRU1VIGV2ZW4gaGF2ZSBuYXRpdmUgU1BJIGNvbnRyb2xsZXIgc3VwcG9ydCwgb3Igd2lsbCBJIG5lZWQgdG8gc2ltdWxhdGUgaXQgd2l0aCBzb21ldGhpbmcgbGlrZSBgc3BpLWxvb3BiYWNrLXRlc3RgLCBgc3BpLW1vY2tgLCBgc3BpLWdwaW9gLCBvciBtYXliZSBldmVuIGBzcGktYnV0dGVyZmx5YD8gQW5kLCBpcyBTeXprYWxsZXIgaGl0dGluZyBTUEksIG9yIGlzIHRoaXMgYSBkZWFkIGVuZD8KCk9rYXksIGhvbGQgb24uIEJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGUgc2V0dXAsIGxldCYjMzk7cyBiYWNrIHVwIGFuZCB1bmRlcnN0YW5kIHRoZSBhY3R1YWwgZGV2aWNlIGRyaXZlciYjMzk7cyBiZWhhdmlvci4gSSBuZWVkIHRvIHNlZSB3aGF0IGhhcHBlbnMgKndoZW4qIHRoaXMgYGxhbjg2NXhgIGRldmljZSBpcyBwcm9iZWQuIEkgc2hvdWxkIGNoZWNrIHRoZSBwcm9iZSBmdW5jdGlvbiwgc3RhcnRpbmcgd2l0aCB0aGUgYGxhbjg2NXhfcHJvYmVgIGZ1bmN0aW9uLiBJIHdpbGwgZ28gZGlyZWN0bHkgdG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguY2AgYW5kIGFuYWx5emUgZnJvbSBsaW5lIDMzMCB0byBhYm91dCA0MjAuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIGludGVyZXN0aW5nIHN0dWZmIGxpa2VseSBpcy4gVGhhdCBzaG91bGQgdGVsbCBtZSB3aGF0JiMzOTtzIGFjdHVhbGx5IGhhcHBlbmluZyBvbiBpbnN0YW50aWF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMzMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4NQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzMwOlx0XHQubmRvX2V0aF9pb2N0bCAgICAgICAgICA9IHBoeV9kb19pb2N0bF9ydW5uaW5nLFxuIDMzMTpcdH07XG4gMzMyOlx0XG4gMzMzOlx0c3RhdGljIGludCBsYW44NjV4X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4gMzM0Olx0e1xuIDMzNTpcdFx0c3RydWN0IG9hX3RjNl9xdWlya3MgdGM2X3F1aXJrcyA9IHt9O1xuIDMzNjpcdFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbiAzMzc6XHRcdHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXY7XG4gMzM4Olx0XHRpbnQgcmV0O1xuIDMzOTpcdFxuIDM0MDpcdFx0bmV0ZGV2ID0gYWxsb2NfZXRoZXJkZXYoc2l6ZW9mKHN0cnVjdCBsYW44NjV4X3ByaXYpKTtcbiAzNDE6XHRcdGlmICghbmV0ZGV2KVxuIDM0MjpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAzNDM6XHRcbiAzNDQ6XHRcdHByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuIDM0NTpcdFx0cHJpdi1cdTAwM2VuZXRkZXYgPSBuZXRkZXY7XG4gMzQ2Olx0XHRwcml2LVx1MDAzZXNwaSA9IHNwaTtcbiAzNDc6XHRcdHNwaV9zZXRfZHJ2ZGF0YShzcGksIHByaXYpO1xuIDM0ODpcdFx0SU5JVF9XT1JLKFx1MDAyNnByaXYtXHUwMDNlbXVsdGljYXN0X3dvcmssIGxhbjg2NXhfbXVsdGljYXN0X3dvcmtfaGFuZGxlcik7XG4gMzQ5Olx0XG4gMzUwOlx0XHR0YzZfcXVpcmtzLnF1aXJrX2ZsYWdzID0gT0FfVEM2X1BIWV9JTlQ7XG4gMzUxOlx0XHRwcml2LVx1MDAzZXRjNiA9IG9hX3RjNl9pbml0KHNwaSwgbmV0ZGV2LCBcdTAwMjZ0YzZfcXVpcmtzKTtcbiAzNTI6XHRcdGlmICghcHJpdi1cdTAwM2V0YzYpIHtcbiAzNTM6XHRcdFx0cmV0ID0gLUVOT0RFVjtcbiAzNTQ6XHRcdFx0Z290byBmcmVlX25ldGRldjtcbiAzNTU6XHRcdH1cbiAzNTY6XHRcbiAzNTc6XHRcdC8qIExBTjg2NXggUmV2LkIwL0IxIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBmcm9tIEFOMTc2MFxuIDM1ODpcdFx0ICogQXMgcGVyIHRoZSBDb25maWd1cmF0aW9uIEFwcGxpY2F0aW9uIE5vdGUgQU4xNzYwIHB1Ymxpc2hlZCBpbiB0aGVcbiAzNTk6XHRcdCAqIGxpbmssIGh0dHBzOi8vd3d3Lm1pY3JvY2hpcC5jb20vZW4tdXMvYXBwbGljYXRpb24tbm90ZXMvYW4xNzYwXG4gMzYwOlx0XHQgKiBSZXZpc2lvbiBGIChEUzYwMDAxNzYwRyAtIEp1bmUgMjAyNCksIGNvbmZpZ3VyZSB0aGUgTUFDIHRvIHNldCB0aW1lXG4gMzYxOlx0XHQgKiBzdGFtcGluZyBhdCB0aGUgZW5kIG9mIHRoZSBTdGFydCBvZiBGcmFtZSBEZWxpbWl0ZXIgKFNGRCkgYW5kIHNldCB0aGVcbiAzNjI6XHRcdCAqIFRpbWVyIEluY3JlbWVudCByZWcgdG8gNDAgbnMgdG8gYmUgdXNlZCBhcyBhIDI1IE1IeiBpbnRlcm5hbCBjbG9jay5cbiAzNjM6XHRcdCAqL1xuIDM2NDpcdFx0cmV0ID0gb2FfdGM2X3dyaXRlX3JlZ2lzdGVyKHByaXYtXHUwMDNldGM2LCBMQU44NjVYX1JFR19NQUNfVFNVX1RJTUVSX0lOQ1IsXG4gMzY1Olx0XHRcdFx0XHQgICAgTUFDX1RTVV9USU1FUl9JTkNSX0NPVU5UX05BTk9TRUNPTkRTKTtcbiAzNjY6XHRcdGlmIChyZXQpIHtcbiAzNjc6XHRcdFx0ZGV2X2VycihcdTAwMjZzcGktXHUwMDNlZGV2LCBcJiMzNDtGYWlsZWQgdG8gY29uZmlnIFRTVSBUaW1lciBJbmNyIHJlZzogJWRcXG5cJiMzNDssXG4gMzY4Olx0XHRcdFx0cmV0KTtcbiAzNjk6XHRcdFx0Z290byBvYV90YzZfZXhpdDtcbiAzNzA6XHRcdH1cbiAzNzE6XHRcbiAzNzI6XHRcdC8qIEFzIHBlciB0aGUgcG9pbnQgczMgaW4gdGhlIGJlbG93IGVycmF0YSwgU1BJIHJlY2VpdmUgRXRoZXJuZXQgZnJhbWVcbiAzNzM6XHRcdCAqIHRyYW5zZmVyIG1heSBoYWx0IHdoZW4gc3RhcnRpbmcgdGhlIG5leHQgZnJhbWUgaW4gdGhlIHNhbWUgZGF0YSBibG9ja1xuIDM3NDpcdFx0ICogKGNodW5rKSBhcyB0aGUgZW5kIG9mIGEgcHJldmlvdXMgZnJhbWUuIFRoZSBSRkEgZmllbGQgc2hvdWxkIGJlXG4gMzc1Olx0XHQgKiBjb25maWd1cmVkIHRvIDAxYiBvciAxMGIgZm9yIHByb3BlciBvcGVyYXRpb24uIEluIHRoZXNlIG1vZGVzLCBvbmx5XG4gMzc2Olx0XHQgKiBvbmUgcmVjZWl2ZSBFdGhlcm5ldCBmcmFtZSB3aWxsIGJlIHBsYWNlZCBpbiBhIHNpbmdsZSBkYXRhIGJsb2NrLlxuIDM3NzpcdFx0ICogV2hlbiB0aGUgUkZBIGZpZWxkIGlzIHdyaXR0ZW4gdG8gMDFiLCByZWNlaXZlZCBmcmFtZXMgd2lsbCBiZSBmb3JjZWRcbiAzNzg6XHRcdCAqIHRvIG9ubHkgc3RhcnQgaW4gdGhlIGZpcnN0IHdvcmQgb2YgdGhlIGRhdGEgYmxvY2sgcGF5bG9hZCAoU1dPPTApLiBBc1xuIDM3OTpcdFx0ICogcmVjb21tZW5kZWQsIGVuYWJsZSB6ZXJvIGFsaWduIHJlY2VpdmUgZnJhbWUgZmVhdHVyZSBmb3IgcHJvcGVyXG4gMzgwOlx0XHQgKiBvcGVyYXRpb24uXG4gMzgxOlx0XHQgKlxuIDM4MjpcdFx0ICogaHR0cHM6Ly93dzEubWljcm9jaGlwLmNvbS9kb3dubG9hZHMvYWVtRG9jdW1lbnRzL2RvY3VtZW50cy9BSVMvUHJvZHVjdERvY3VtZW50cy9FcnJhdGEvTEFOODY1MC0xLUVycmF0YS04MDAwMTA3NS5wZGZcbiAzODM6XHRcdCAqL1xuIDM4NDpcdFx0cmV0ID0gb2FfdGM2X3plcm9fYWxpZ25fcmVjZWl2ZV9mcmFtZV9lbmFibGUocHJpdi1cdTAwM2V0YzYpO1xuIDM4NTpcdFx0aWYgKHJldCkge1xuIDM4NjpcdFx0XHRkZXZfZXJyKFx1MDAyNnNwaS1cdTAwM2VkZXYsIFwmIzM0O0ZhaWxlZCB0byBzZXQgWkFSRkU6ICVkXFxuXCYjMzQ7LCByZXQpO1xuIDM4NzpcdFx0XHRnb3RvIG9hX3RjNl9leGl0O1xuIDM4ODpcdFx0fVxuIDM4OTpcdFxuIDM5MDpcdFx0LyogR2V0IHRoZSBNQUMgYWRkcmVzcyBmcm9tIHRoZSBTUEkgZGV2aWNlIHRyZWUgbm9kZSAqL1xuIDM5MTpcdFx0aWYgKGRldmljZV9nZXRfZXRoZGV2X2FkZHJlc3MoXHUwMDI2c3BpLVx1MDAzZWRldiwgbmV0ZGV2KSlcbiAzOTI6XHRcdFx0ZXRoX2h3X2FkZHJfcmFuZG9tKG5ldGRldik7XG4gMzkzOlx0XG4gMzk0Olx0XHRyZXQgPSBsYW44NjV4X3NldF9od19tYWNhZGRyKHByaXYsIG5ldGRldi1cdTAwM2VkZXZfYWRkcik7XG4gMzk1Olx0XHRpZiAocmV0KSB7XG4gMzk2Olx0XHRcdGRldl9lcnIoXHUwMDI2c3BpLVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIGNvbmZpZ3VyZSBNQUM6ICVkXFxuXCYjMzQ7LCByZXQpO1xuIDM5NzpcdFx0XHRnb3RvIG9hX3RjNl9leGl0O1xuIDM5ODpcdFx0fVxuIDM5OTpcdFxuIDQwMDpcdFx0bmV0ZGV2LVx1MDAzZWlmX3BvcnQgPSBJRl9QT1JUXzEwQkFTRVQ7XG4gNDAxOlx0XHRuZXRkZXYtXHUwMDNlaXJxID0gc3BpLVx1MDAzZWlycTtcbiA0MDI6XHRcdG5ldGRldi1cdTAwM2VuZXRkZXZfb3BzID0gXHUwMDI2bGFuODY1eF9uZXRkZXZfb3BzO1xuIDQwMzpcdFx0bmV0ZGV2LVx1MDAzZWV0aHRvb2xfb3BzID0gXHUwMDI2bGFuODY1eF9ldGh0b29sX29wcztcbiA0MDQ6XHRcbiA0MDU6XHRcdHJldCA9IHJlZ2lzdGVyX25ldGRldihuZXRkZXYpO1xuIDQwNjpcdFx0aWYgKHJldCkge1xuIDQwNzpcdFx0XHRkZXZfZXJyKFx1MDAyNnNwaS1cdTAwM2VkZXYsIFwmIzM0O1JlZ2lzdGVyIG5ldGRldiBmYWlsZWQgKHJldCA9ICVkKVwmIzM0OywgcmV0KTtcbiA0MDg6XHRcdFx0Z290byBvYV90YzZfZXhpdDtcbiA0MDk6XHRcdH1cbiA0MTA6XHRcbiA0MTE6XHRcdHJldHVybiAwO1xuIDQxMjpcdFxuIDQxMzpcdG9hX3RjNl9leGl0OlxuIDQxNDpcdFx0b2FfdGM2X2V4aXQocHJpdi1cdTAwM2V0YzYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Mjg4OQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDg1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEZlYXNpYmlsaXR5IEFzc2Vzc21lbnQqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCBpbnZvbHZlcyB0aGUgYGxhbjg2NXhgLCBgb2FfdGM2YCwgYW5kIGBtaWNyb2NoaXBfdDFzYCBjb21wb25lbnRzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgY29kZSBpcyBldmVuICpyZWFjaGFibGUqIGluIGEgc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudC4gVGhlIHRyaWFnZSBwaGlsb3NvcGh5IHByaW9yaXRpemVzIHJlYWNoYWJpbGl0eSBhcyB0aGUgcHJpbWFyeSBnYXRlLgoKRmlyc3QsIEkgcmVtZW1iZXIgdGhhdCBgbGFuODY1eGAgaXMgYSBNQUMtUEhZIGNvbm5lY3RlZCB2aWEgU1BJLiBUaGUgY3JpdGljYWwgcXVlc3Rpb24gaGVyZSBpcyB3aGV0aGVyIHRoaXMgaGFyZHdhcmUgb3IgYW55dGhpbmcgc2ltaWxhciBjYW4gYmUgZW11bGF0ZWQgd2l0aGluIHRoZSBzdGFuZGFyZCBRRU1VIHNldHVwIHdlJiMzOTtyZSB1c2luZy4gU2FkbHksIFFFTVUmIzM5O3MgZG9jdW1lbnRhdGlvbiBhbmQgbXkgcHJpb3Iga25vd2xlZGdlIHRlbGwgbWUgaXQgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGUgTEFOODY1MCwgTEFOODY1MSwgb3IgYW55IE1pY3JvY2hpcCBUMVMgUEhZLCBub3IgZG9lcyBpdCBoYXZlIGFuIE9BLVRDNiBjaGlwIGVtdWxhdGlvbi4KCk5vdywgbGV0JiMzOTtzIGFwcGx5IHRoZSB0cmlhZ2UgcGhpbG9zb3BoeS4gU2VjdGlvbiAxIHN0cmVzc2VzIHRoYXQgZnV6emluZyBzaG91bGQgb25seSB0YXJnZXQgY29kZSB0aGF0ICpleGVjdXRlcyogaW4gYSBzdGFuZGFyZCB2aXJ0dWFsIGVudmlyb25tZW50LiBTZWN0aW9uIDIgbGF5cyBvdXQgdGhlICYjMzQ7bmVnYXRpdmUgY3JpdGVyaWEmIzM0OyBmb3IgZGV0ZXJtaW5pbmcgd2hlbiB0byAqbm90KiBmdXp6LiBNeSBwcmltYXJ5IGNvbmNlcm4gaXMgaWYgdGhlIG1vZGlmaWVkIGNvZGUgZmFsbHMgaW50byB0aGlzIGNhdGVnb3J5LCBzcGVjaWZpY2FsbHk6ICYjMzQ7U3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlJiMzNDsgLSBsaWtlIHZlbmRvci1zcGVjaWZpYyBkZXZpY2VzIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDIGNhcmRzIHVuYXZhaWxhYmxlIGluIFFFTVUuIEFsc28sIGRyaXZlcnMgdGhhdCBhcmUgb25seSB1c2VkIGR1cmluZyBwaHlzaWNhbCBkZXZpY2UgcmVtb3ZhbCwgb3IgYXJlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYywgYXJlIHRvIGJlIGlnbm9yZWQuCgpTZWN0aW9uIDMgb3V0bGluZXMgdGhlICYjMzQ7cG9zaXRpdmUgY3JpdGVyaWEsJiMzNDsgY29kZSB0aGF0ICpzaG91bGQqIGJlIGZ1enplZC4gVGhhdCBpbmNsdWRlcyBhbnl0aGluZyBpbiBjb3JlIHN1YnN5c3RlbXMsIHJlZmFjdG9yaW5ncywgcnVudGltZSBhc3NlcnRpb25zLCBvciBkcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgc3VjaCBhcyB2aXJ0aW8sIFVTQiBnYWRnZXQsIGV0Yy4KCkkmIzM5O3ZlIGdvdCBmb3VyIGZpbGVzIGluIHRoZSBtb2RpZmllZCBjb2RlOiBgbGFuODY1eC5jYCwgYG9hX3RjNi5jYCwgYG1pY3JvY2hpcF90MXMuY2AsIGFuZCBgb2FfdGM2LmhgLiBNeSBhbmFseXNpcyBzYXlzIHRoYXQ6CgoxLiAgYGxhbjg2NXguY2AgaXMgdGhlIEV0aGVybmV0IGNvbnRyb2xsZXIgZHJpdmVyIGZvciB0aGUgTWljcm9jaGlwIExBTjg2NXggZmFtaWx5LCB1c2luZyBTUEkuCjIuICBgb2FfdGM2LmNgIGlzIHRoZSBPcGVuIEFsbGlhbmNlIFRDNiAxMEJBU0UtVDFTIE1BQy1QSFkgcHJvdG9jb2wgbGlicmFyeSwgYWxzbyBmb3IgU1BJLgozLiAgYG1pY3JvY2hpcF90MXMuY2AgaXMgdGhlIEV0aGVybmV0IFBIWSBkcml2ZXIgZm9yIExBTjg2N3gvTEFOODY1eC4KNC4gIGBvYV90YzYuaGAgaXMgdGhlIGFzc29jaWF0ZWQgaGVhZGVyLgoKR2l2ZW4gdGhhdCB0aGVzZSBhcmUgU1BJIGRyaXZlcnMgZm9yIHBoeXNpY2FsIE1BQy1QSFkgY2hpcHMsIHRoZSBrZXkgcXVlc3Rpb24gaXM6IGFyZSBhbnkgb2YgdGhlc2UgY29tcG9uZW50cyB1c2FibGUgd2l0aCB2aXJ0dWFsIGRyaXZlcnMgb3IgZW11bGF0ZWQgaGFyZHdhcmU/IFRoZSBhbnN3ZXIgbG9va3MgdG8gYmUgbm8uIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGNoZWNrIGFsbCB0aGUga2VybmVsIHVzZXMgb2YgYG9hX3RjNmAgYW5kIGRlY2lkZSBpZiB0aGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O29hX3RjNl9pbml0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9vYS10YzYtZnJhbWV3b3JrLnJzdD00NTQ9VGhlIGluY2x1ZGUvbGludXgvb2FfdGM2LmggZGVmaW5lcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczpcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9vYS10YzYtZnJhbWV3b3JrLnJzdC00NTUtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvb2EtdGM2LWZyYW1ld29yay5yc3Q6NDU2Oi4uIGM6ZnVuY3Rpb246OiBzdHJ1Y3Qgb2FfdGM2ICpvYV90YzZfaW5pdChzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpLCBcXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL29hLXRjNi1mcmFtZXdvcmsucnN0LTQ1Ny0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgXFxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYz03MDk9c3RhdGljIGludCBhZGluMTE0MF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTcyNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jOjcyNzpcdHByaXYtXHUwMDNldGM2ID0gb2FfdGM2X2luaXQoc3BpLCBuZXRkZXYsIFx1MDAyNnRjNl9xdWlya3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtNzI4LVx0aWYgKCFwcml2LVx1MDAzZXRjNilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM9MzMzPXN0YXRpYyBpbnQgbGFuODY1eF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zNTAtXHR0YzZfcXVpcmtzLnF1aXJrX2ZsYWdzID0gT0FfVEM2X1BIWV9JTlQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzUxOlx0cHJpdi1cdTAwM2V0YzYgPSBvYV90YzZfaW5pdChzcGksIG5ldGRldiwgXHUwMDI2dGM2X3F1aXJrcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzUyLVx0aWYgKCFwcml2LVx1MDAzZXRjNikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTE1MDU9c3RhdGljIGludCBvYV90YzZfY2hlY2tfY3RybF9wcm90ZWN0aW9uKHN0cnVjdCBvYV90YzYgKnRjNilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xNTE5LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTUyMDogKiBvYV90YzZfaW5pdCAtIGFsbG9jYXRlcyBhbmQgaW5pdGlhbGl6ZXMgb2FfdGM2IHN0cnVjdHVyZS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTE1MjEtICogQHNwaTogZGV2aWNlIHdpdGggd2hpY2ggZGF0YSB3aWxsIGJlIGV4Y2hhbmdlZC5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xNTI3LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTUyODpzdHJ1Y3Qgb2FfdGM2ICpvYV90YzZfaW5pdChzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTUyOS1cdFx0XHQgICBzdHJ1Y3Qgb2FfdGM2X3F1aXJrcyAqcXVpcmtzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTE2NDQtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTY0NTpFWFBPUlRfU1lNQk9MX0dQTChvYV90YzZfaW5pdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xNjQ2LVxuLS1cbmluY2x1ZGUvbGludXgvb2FfdGM2Lmg9NzY9c3RydWN0IG9hX3RjNl9xdWlya3Mge1xuLS1cbmluY2x1ZGUvbGludXgvb2FfdGM2LmgtNzktXG5pbmNsdWRlL2xpbnV4L29hX3RjNi5oOjgwOnN0cnVjdCBvYV90YzYgKm9hX3RjNl9pbml0KHN0cnVjdCBzcGlfZGV2aWNlICpzcGksIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5pbmNsdWRlL2xpbnV4L29hX3RjNi5oLTgxLVx0XHRcdCAgIHN0cnVjdCBvYV90YzZfcXVpcmtzICpxdWlya3MpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwODoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTI1OQoJCQkJCQkJb3V0cHV0OiAxNzYKCQkJCQkJCXRob3VnaHRzOiA1MjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgVW5yZWFjaGFiaWxpdHkgb2YgdGhlIE1vZGlmaWVkIENvZGUqKgoKT2theSwgaGVyZSYjMzk7cyB0aGUgZGVhbDogSSYjMzk7dmUgbG9va2VkIGF0IHRoZSBjYWxscyB0byBgb2FfdGM2X2luaXRgLiBJIHNlZSB0aGF0IGl0JiMzOTtzIG9ubHkgY2FsbGVkIGJ5IGBhZGluMTE0MF9wcm9iZWAgYW5kIGBsYW44NjV4X3Byb2JlYC4gVGhlc2UgYXJlIFNQSSBFdGhlcm5ldCBjb250cm9sbGVyIGRyaXZlcnMsIHNwZWNpZmljYWxseSBmb3IgdGhlIEFuYWxvZyBEZXZpY2VzIEFESU4xMTQwIGFuZCB0aGUgTWljcm9jaGlwIExBTjg2NTAvMSBjaGlwcy4gVGhlbiB0aGVyZSYjMzk7cyBgbWljcm9jaGlwX3Qxc2AsIGEgUEhZIGRyaXZlciBmb3IgdGhlIE1pY3JvY2hpcCBMQU44Njd4IC8gTEFOODY1eCBQSFkgaGFyZHdhcmUgY2hpcHMuCgpUaGVzZSBhcmUgbm90IGdlbmVyaWMgZGV2aWNlcy4gVGhleSYjMzk7cmUgcGh5c2ljYWwgSUNzIOKAkyAxMEJBU0UtVDFTIHNpbmdsZS1wYWlyIEV0aGVybmV0IE1BQy1QSFlzIG9yIFBIWXMgdGhhdCBjb25uZWN0IG92ZXIgU1BJL01ESU8uIEFuZCwgYXMgZmFyIGFzIEkga25vdywgdGhlc2UgYXJlbiYjMzk7dCBlbXVsYXRlZCBieSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBWTXMsIHdoaWNoIGFyZSBzdGFuZGFyZCBlbnZpcm9ubWVudHMgZm9yIG91ciBmdXp6aW5nIGVmZm9ydHMuIFdpdGhvdXQgdGhhdCBhY3R1YWwgaGFyZHdhcmUgb3IgYSB1c2FibGUgU1BJIGRldmljZSwgbmVpdGhlciBgbGFuODY1eF9wcm9iZWAsIGBhZGluMTE0MF9wcm9iZWAsIGBvYV90YzZgLCBub3IgYG1pY3JvY2hpcF90MXNfZHJpdmVyYCBjYW4gYmUgcHJvYmVkIG9yIHJ1bi4KClNvLCBpbiBlc3NlbmNlLCBhbGwgb2YgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiBJdCYjMzk7cyBlc3NlbnRpYWxseSBkZWFkIGNvZGUgaW4gb3VyIGN1cnJlbnQgZnV6emluZyBzZXR1cC4KCk5vdywgbGV0JiMzOTtzIHZlcmlmeSBpZiBhbGwgdGhlIHByZS1yZXF1aXNpdGVzIGFyZSBtZXQ6CgoxLiAgKipJcyBgV29ydGhGdXp6aW5nYCBmYWxzZT8qKiBZZXMsIGFic29sdXRlbHkuIFRoZSBjaGFuZ2VzIGFyZSBhbGwgc3BlY2lmaWMgdG8gaGFyZHdhcmUgKHRoZSBgbGFuODY1eGAsIGBvYV90YzZgLCBhbmQgYG1pY3JvY2hpcF90MXNgIGRyaXZlcnMpIHRoYXQgd2UgY2FuJiMzOTt0IGVtdWxhdGUgaW4gb3VyIHR5cGljYWwgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuCgoyLiAgKipBcmUgYEZvY3VzU3ltYm9sc2AgYW5kIGBFbmFibGVDb25maWdzYCBhcHByb3ByaWF0ZWx5IHNldCB3aGVuIGBXb3J0aEZ1enppbmdgIGlzIGZhbHNlPyoqIFRoZXkgc2hvdWxkIGJlIG51bGwgb3IgYW4gZW1wdHkgbGlzdC4gU28sIGxldCYjMzk7cyBkb3VibGUtY2hlY2sgdGhlIHBhcmFtZXRlciBmb3JtYXR0aW5nIGZvciBgc2V0LXJlc3VsdHNgOiBgRW5hYmxlQ29uZmlnc2Agc2hvdWxkIGJlIGEgbGlzdCBvZiBzdHJpbmdzIG9yIG51bGwuIGBGb2N1c1N5bWJvbHNgIGFzIHdlbGwsIHNob3VsZCBiZSBhIGxpc3Qgb2Ygc3RyaW5ncyBvciBudWxsLiBJIHdpbGwgcHJvdmlkZSBhIGNsZWFyIGFuZCBjb25jaXNlIGBSZWFzb25pbmdgIGFuZCBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYm9vbGVhbi4KCkkgdGhpbmsgYSBjbGVhciwgY29uY2lzZSByZWFzb25pbmcgc3RhdGVtZW50IHdvdWxkIGJlOiAmIzM0O1RoZSBjaGFuZ2VzIG1vZGlmeSB0aGUgTWljcm9jaGlwIExBTjg2NXggRXRoZXJuZXQgZHJpdmVyLCB0aGUgT3BlbiBBbGxpYW5jZSBUQzYgU1BJIE1BQy1QSFkgc3VwcG9ydCBsaWJyYXJ5LCBhbmQgdGhlIE1pY3JvY2hpcCAxMEJBU0UtVDFTIFBIWSBkcml2ZXIuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBzcGVjaWZpYyBwaHlzaWNhbCAxMEJBU0UtVDFTIEV0aGVybmV0IC8gTUFDLVBIWSBoYXJkd2FyZSBhdHRhY2hlZCB2aWEgU1BJL01ESU8gd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OwoKQWxyaWdodCwgdGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA4OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBMQU44NjV4IFNQSSBFdGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYyksIHRoZSBPcGVuIEFsbGlhbmNlIFRDNiBNQUMtUEhZIHByb3RvY29sIGxheWVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYyksIGFuZCB0aGUgTWljcm9jaGlwIDEwQkFTRS1UMVMgUEhZIGRyaXZlciAoZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYykuIFRoZXNlIGRyaXZlcnMgb3BlcmF0ZSBvbiBzcGVjaWZpYyBwaHlzaWNhbCAxMEJBU0UtVDFTIHNpbmdsZS1wYWlyIEV0aGVybmV0IGhhcmR3YXJlIGNvbm5lY3RlZCBvdmVyIFNQSS9NRElPIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBMQU44NjV4IFNQSSBFdGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYyksIHRoZSBPcGVuIEFsbGlhbmNlIFRDNiBNQUMtUEhZIHByb3RvY29sIGxheWVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYyksIGFuZCB0aGUgTWljcm9jaGlwIDEwQkFTRS1UMVMgUEhZIGRyaXZlciAoZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYykuIFRoZXNlIGRyaXZlcnMgb3BlcmF0ZSBvbiBzcGVjaWZpYyBwaHlzaWNhbCAxMEJBU0UtVDFTIHNpbmdsZS1wYWlyIEV0aGVybmV0IGhhcmR3YXJlIGNvbm5lY3RlZCBvdmVyIFNQSS9NRElPIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDg6MjI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjIyOjA1LjA1MDQ5NTk1OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MDc3OTc3MzI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBMQU44NjV4IFNQSSBFdGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYyksIHRoZSBPcGVuIEFsbGlhbmNlIFRDNiBNQUMtUEhZIHByb3RvY29sIGxheWVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYyksIGFuZCB0aGUgTWljcm9jaGlwIDEwQkFTRS1UMVMgUEhZIGRyaXZlciAoZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYykuIFRoZXNlIGRyaXZlcnMgb3BlcmF0ZSBvbiBzcGVjaWZpYyBwaHlzaWNhbCAxMEJBU0UtVDFTIHNpbmdsZS1wYWlyIEV0aGVybmV0IGhhcmR3YXJlIGNvbm5lY3RlZCBvdmVyIFNQSS9NRElPIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDg6MjI6MDUuMDUwNTAxNTQ5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDIxNzA1MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0NGJjMWMzN2Y3ZTg2NmViOTk3ZDg4NzhhNWY2ZTdmNzA1MGI3ZDFmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gU2VwIDcgMDg6MjI6MDQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jXFxuaW5kZXggMjZhMjc2MTMzMmE1YS4uMDQzYTNkYzNmOTY1NyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmNcXG5AQCAtMzMyLDYgKzMzMiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgbGFuODY1eF9uZXRkZXZfb3BzID0ge1xcbiBcXG4gc3RhdGljIGludCBsYW44NjV4X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuIHtcXG4rXFx0c3RydWN0IG9hX3RjNl9xdWlya3MgdGM2X3F1aXJrcyA9IHt9O1xcbiBcXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbiBcXHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2O1xcbiBcXHRpbnQgcmV0O1xcbkBAIC0zNDYsNyArMzQ3LDggQEAgc3RhdGljIGludCBsYW44NjV4X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuIFxcdHNwaV9zZXRfZHJ2ZGF0YShzcGksIHByaXYpO1xcbiBcXHRJTklUX1dPUksoXFx1MDAyNnByaXYtXFx1MDAzZW11bHRpY2FzdF93b3JrLCBsYW44NjV4X211bHRpY2FzdF93b3JrX2hhbmRsZXIpO1xcbiBcXG4tXFx0cHJpdi1cXHUwMDNldGM2ID0gb2FfdGM2X2luaXQoc3BpLCBuZXRkZXYsIE5VTEwpO1xcbitcXHR0YzZfcXVpcmtzLnF1aXJrX2ZsYWdzID0gT0FfVEM2X1BIWV9JTlQ7XFxuK1xcdHByaXYtXFx1MDAzZXRjNiA9IG9hX3RjNl9pbml0KHNwaSwgbmV0ZGV2LCBcXHUwMDI2dGM2X3F1aXJrcyk7XFxuIFxcdGlmICghcHJpdi1cXHUwMDNldGM2KSB7XFxuIFxcdFxcdHJldCA9IC1FTk9ERVY7XFxuIFxcdFxcdGdvdG8gZnJlZV9uZXRkZXY7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmNcXG5pbmRleCA2ZmNjNWY1NjFkNTYwLi4wMGIwMTc2YzFmZTdhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmNcXG5AQCAtOCw2ICs4LDggQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2JpdGZpZWxkLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9pb3BvbGwuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2ludGVycnVwdC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvaXJxLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9pcnFkb21haW4uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21kaW8uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvb2FfdGM2LmhcXHUwMDNlXFxuQEAgLTcwLDYgKzcyLDggQEAgc3RydWN0IG9hX3RjNiB7XFxuIFxcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXY7XFxuIFxcdHN0cnVjdCBtaWlfYnVzICptZGlvYnVzO1xcbiBcXHRzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpO1xcbitcXHRzdHJ1Y3QgaXJxX2RvbWFpbiAqcGh5X2lycV9kb21haW47XFxuK1xcdGludCBwaHlfdmlycTtcXG4gXFx0c3RydWN0IG11dGV4IHNwaV9jdHJsX2xvY2s7IC8qIFByb3RlY3RzIHNwaSBjb250cm9sIHRyYW5zZmVyICovXFxuIFxcdHNwaW5sb2NrX3QgdHhfc2tiX2xvY2s7IC8qIFByb3RlY3RzIHR4IHNrYiBoYW5kbGluZyAqL1xcbiBcXHR2b2lkICpzcGlfY3RybF90eF9idWY7XFxuQEAgLTUyOCw2ICs1MzIsNDQgQEAgaW50IG9hX3RjNl9tZGlvYnVzX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IGRldm51bSxcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0dQTChvYV90YzZfbWRpb2J1c193cml0ZV9jNDUpO1xcbiBcXG4rc3RhdGljIGludCBvYV90YzZfcGh5X2lycV9tYXAoc3RydWN0IGlycV9kb21haW4gKmRvbWFpbiwgdW5zaWduZWQgaW50IGlycSxcXG4rXFx0XFx0XFx0ICAgICAgaXJxX2h3X251bWJlcl90IGh3aXJxKVxcbit7XFxuK1xcdGlycV9zZXRfY2hpcF9kYXRhKGlycSwgZG9tYWluLVxcdTAwM2Vob3N0X2RhdGEpO1xcbitcXHRpcnFfc2V0X2NoaXBfYW5kX2hhbmRsZXIoaXJxLCBcXHUwMDI2ZHVtbXlfaXJxX2NoaXAsIGhhbmRsZV9zaW1wbGVfaXJxKTtcXG4rXFx0aXJxX3NldF9uZXN0ZWRfdGhyZWFkKGlycSwgdHJ1ZSk7XFxuK1xcdGlycV9zZXRfbm9wcm9iZShpcnEpO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2RvbWFpbl9vcHMgb2FfdGM2X3BoeV9pcnFfZG9tYWluX29wcyA9IHtcXG4rXFx0Lm1hcCA9IG9hX3RjNl9waHlfaXJxX21hcCxcXG4rfTtcXG4rXFxuK3N0YXRpYyBpbnQgb2FfdGM2X3BoeV9pcnFfc2V0dXAoc3RydWN0IG9hX3RjNiAqdGM2KVxcbit7XFxuK1xcdHRjNi1cXHUwMDNlcGh5X2lycV9kb21haW4gPVxcbitcXHRcXHRpcnFfZG9tYWluX2NyZWF0ZV9saW5lYXIoTlVMTCwgMSxcXG4rXFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZvYV90YzZfcGh5X2lycV9kb21haW5fb3BzLCB0YzYpO1xcbitcXHRpZiAoIXRjNi1cXHUwMDNlcGh5X2lycV9kb21haW4pXFxuK1xcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXG4rXFx0dGM2LVxcdTAwM2VwaHlfdmlycSA9IGlycV9jcmVhdGVfbWFwcGluZyh0YzYtXFx1MDAzZXBoeV9pcnFfZG9tYWluLCAwKTtcXG4rXFx0aWYgKCF0YzYtXFx1MDAzZXBoeV92aXJxKSB7XFxuK1xcdFxcdGlycV9kb21haW5fcmVtb3ZlKHRjNi1cXHUwMDNlcGh5X2lycV9kb21haW4pO1xcbitcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIG9hX3RjNl9waHlfaXJxX3RlYXJkb3duKHN0cnVjdCBvYV90YzYgKnRjNilcXG4re1xcbitcXHRpcnFfZGlzcG9zZV9tYXBwaW5nKHRjNi1cXHUwMDNlcGh5X3ZpcnEpO1xcbitcXHRpcnFfZG9tYWluX3JlbW92ZSh0YzYtXFx1MDAzZXBoeV9pcnFfZG9tYWluKTtcXG4rfVxcbitcXG4gc3RhdGljIGludCBvYV90YzZfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3Qgb2FfdGM2ICp0YzYpXFxuIHtcXG4gXFx0aW50IHJldDtcXG5AQCAtNTU5LDkgKzYwMSwyNSBAQCBzdGF0aWMgaW50IG9hX3RjNl9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBvYV90YzYgKnRjNilcXG4gXFx0c25wcmludGYodGM2LVxcdTAwM2VtZGlvYnVzLVxcdTAwM2VpZCwgQVJSQVlfU0laRSh0YzYtXFx1MDAzZW1kaW9idXMtXFx1MDAzZWlkKSwgXFxcIiVzXFxcIixcXG4gXFx0XFx0IGRldl9uYW1lKFxcdTAwMjZ0YzYtXFx1MDAzZXNwaS1cXHUwMDNlZGV2KSk7XFxuIFxcbitcXHRpZiAodGM2LVxcdTAwM2VxdWlya19mbGFncyBcXHUwMDI2IE9BX1RDNl9QSFlfSU5UKSB7XFxuK1xcdFxcdHJldCA9IG9hX3RjNl9waHlfaXJxX3NldHVwKHRjNik7XFxuK1xcdFxcdGlmIChyZXQpIHtcXG4rXFx0XFx0XFx0bWRpb2J1c19mcmVlKHRjNi1cXHUwMDNlbWRpb2J1cyk7XFxuK1xcdFxcdFxcdHJldHVybiByZXQ7XFxuK1xcdFxcdH1cXG4rXFx0XFx0LyogUG9wdWxhdGUgYWxsIGlycVtdIGVudHJpZXMgYmVmb3JlIHJlZ2lzdHJhdGlvbiBzb1xcbitcXHRcXHQgKiBwaHlfZGV2aWNlX2NyZWF0ZSgpIHBpY2tzIHVwIHRoZSB2aXJ0dWFsIElSUSByZWdhcmRsZXNzIG9mXFxuK1xcdFxcdCAqIHRoZSBQSFkncyBNRElPIGFkZHJlc3MuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRmb3IgKGludCBpID0gMDsgaSBcXHUwMDNjIFBIWV9NQVhfQUREUjsgaSsrKVxcbitcXHRcXHRcXHR0YzYtXFx1MDAzZW1kaW9idXMtXFx1MDAzZWlycVtpXSA9IHRjNi1cXHUwMDNlcGh5X3ZpcnE7XFxuK1xcdH1cXG4rXFxuIFxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIodGM2LVxcdTAwM2VtZGlvYnVzKTtcXG4gXFx0aWYgKHJldCkge1xcbiBcXHRcXHRuZXRkZXZfZXJyKHRjNi1cXHUwMDNlbmV0ZGV2LCBcXFwiQ291bGQgbm90IHJlZ2lzdGVyIE1ESU8gYnVzXFxcXG5cXFwiKTtcXG4rXFx0XFx0aWYgKHRjNi1cXHUwMDNlcXVpcmtfZmxhZ3MgXFx1MDAyNiBPQV9UQzZfUEhZX0lOVClcXG4rXFx0XFx0XFx0b2FfdGM2X3BoeV9pcnFfdGVhcmRvd24odGM2KTtcXG4gXFx0XFx0bWRpb2J1c19mcmVlKHRjNi1cXHUwMDNlbWRpb2J1cyk7XFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdH1cXG5AQCAtNTcyLDYgKzYzMCw4IEBAIHN0YXRpYyBpbnQgb2FfdGM2X21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG9hX3RjNiAqdGM2KVxcbiBzdGF0aWMgdm9pZCBvYV90YzZfbWRpb2J1c191bnJlZ2lzdGVyKHN0cnVjdCBvYV90YzYgKnRjNilcXG4ge1xcbiBcXHRtZGlvYnVzX3VucmVnaXN0ZXIodGM2LVxcdTAwM2VtZGlvYnVzKTtcXG4rXFx0aWYgKHRjNi1cXHUwMDNlcXVpcmtfZmxhZ3MgXFx1MDAyNiBPQV9UQzZfUEhZX0lOVClcXG4rXFx0XFx0b2FfdGM2X3BoeV9pcnFfdGVhcmRvd24odGM2KTtcXG4gXFx0bWRpb2J1c19mcmVlKHRjNi1cXHUwMDNlbWRpb2J1cyk7XFxuIH1cXG4gXFxuQEAgLTY2MSw3ICs3MjEsNyBAQCBzdGF0aWMgaW50IG9hX3RjNl9zd19yZXNldF9tYWNwaHkoc3RydWN0IG9hX3RjNiAqdGM2KVxcbiBcXHRyZXR1cm4gb2FfdGM2X3dyaXRlX3JlZ2lzdGVyKHRjNiwgT0FfVEM2X1JFR19TVEFUVVMwLCByZWd2YWwpO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW50IG9hX3RjNl91bm1hc2tfbWFjcGh5X2Vycm9yX2ludGVycnVwdHMoc3RydWN0IG9hX3RjNiAqdGM2KVxcbitzdGF0aWMgaW50IG9hX3RjNl91bm1hc2tfaW50ZXJydXB0cyhzdHJ1Y3Qgb2FfdGM2ICp0YzYpXFxuIHtcXG4gXFx0dTMyIHJlZ3ZhbDtcXG4gXFx0aW50IHJldDtcXG5AQCAtNjcwLDcgKzczMCw4IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3VubWFza19tYWNwaHlfZXJyb3JfaW50ZXJydXB0cyhzdHJ1Y3Qgb2FfdGM2ICp0YzYpXFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbi1cXHRyZWd2YWwgXFx1MDAyNj0gfihPQV9UQzZfSU5UX01BU0swX1RYX1BST1RPQ09MX0VSUl9NQVNLIHxcXG4rXFx0cmVndmFsIFxcdTAwMjY9IH4oT0FfVEM2X0lOVF9NQVNLMF9QSFlfSU5UX01BU0sgfFxcbitcXHRcXHQgICAgT0FfVEM2X0lOVF9NQVNLMF9UWF9QUk9UT0NPTF9FUlJfTUFTSyB8XFxuIFxcdFxcdCAgICBPQV9UQzZfSU5UX01BU0swX1JYX0JVRkZFUl9PVkVSRkxPV19FUlJfTUFTSyB8XFxuIFxcdFxcdCAgICBPQV9UQzZfSU5UX01BU0swX0xPU1NfT0ZfRlJBTUVfRVJSX01BU0sgfFxcbiBcXHRcXHQgICAgT0FfVEM2X0lOVF9NQVNLMF9IRUFERVJfRVJSX01BU0spO1xcbkBAIC04MTAsNiArODcxLDE1IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3Byb2Nlc3NfZXh0ZW5kZWRfc3RhdHVzKHN0cnVjdCBvYV90YzYgKnRjNilcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFx0fVxcbiBcXG4rXFx0LyogRGlzcGF0Y2ggdGhlIFBIWSBpbnRlcnJ1cHQgdG8gcGh5bGliIHZpYSB0aGUgbmVzdGVkIHZpcnR1YWwgSVJRIHNvXFxuK1xcdCAqIHRoZSBQSFkgZHJpdmVyIHJlYWRzIGFuZCBhY2tub3dsZWRnZXMgaXRzIHN0YXR1cy4gUEhZSU5UIGlzIGxldmVsXFxuK1xcdCAqIHRyaWdnZXJlZCwgc28gZG9pbmcgdGhpcyBzeW5jaHJvbm91c2x5IGhlcmUgKGluIHRoZSBzbGVlcGFibGVcXG4rXFx0ICogdGhyZWFkZWQgSVJRKSBjbGVhcnMgdGhlIHNvdXJjZSBiZWZvcmUgdGhlIG5leHQgZGF0YSBjaHVuay5cXG4rXFx0ICovXFxuK1xcdGlmICgodGM2LVxcdTAwM2VxdWlya19mbGFncyBcXHUwMDI2IE9BX1RDNl9QSFlfSU5UKSBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgRklFTERfR0VUKE9BX1RDNl9TVEFUVVMwX1BIWV9JTlQsIHZhbHVlKSlcXG4rXFx0XFx0aGFuZGxlX25lc3RlZF9pcnEodGM2LVxcdTAwM2VwaHlfdmlycSk7XFxuK1xcbiBcXHRpZiAoRklFTERfR0VUKE9BX1RDNl9TVEFUVVMwX1JYX0JVRkZFUl9PVkVSRkxPV19FUlJPUiwgdmFsdWUpKSB7XFxuIFxcdFxcdG9hX3RjNl9sb29rX2Zvcl9uZXdfZnJhbWUodGM2KTtcXG4gXFx0XFx0bmV0X2Vycl9yYXRlbGltaXRlZChcXFwiJXM6IFJlY2VpdmUgYnVmZmVyIG92ZXJmbG93IGVycm9yXFxcXG5cXFwiLFxcbkBAIC0xNTE4LDcgKzE1ODgsNyBAQCBzdHJ1Y3Qgb2FfdGM2ICpvYV90YzZfaW5pdChzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFx0fVxcbiBcXG4tXFx0cmV0ID0gb2FfdGM2X3VubWFza19tYWNwaHlfZXJyb3JfaW50ZXJydXB0cyh0YzYpO1xcbitcXHRyZXQgPSBvYV90YzZfdW5tYXNrX2ludGVycnVwdHModGM2KTtcXG4gXFx0aWYgKHJldCkge1xcbiBcXHRcXHRkZXZfZXJyKFxcdTAwMjZ0YzYtXFx1MDAzZXNwaS1cXHUwMDNlZGV2LFxcbiBcXHRcXHRcXHRcXFwiTUFDLVBIWSBlcnJvciBpbnRlcnJ1cHRzIHVubWFzayBmYWlsZWQ6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jIGIvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuY1xcbmluZGV4IDczYzIzZDMxMWQ3MmEuLmMzYTczOGM3NDI1YmYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmNcXG5AQCAtMjcsMTEgKzI3LDIzIEBAXFxuICNkZWZpbmUgTEFOODY1WF9SRUdfQ0ZHUEFSQU1fQ1RSTCAweDAwREFcXG4gI2RlZmluZSBMQU44NjVYX1JFR19TVFMyIDB4MDAxOVxcbiBcXG4rLyogUEhZIGludGVycnVwdCBzdGF0dXMgYW5kIG1hc2sgcmVnaXN0ZXJzIChNRElPX01NRF9WRU5EMikuIFRoZSBzdGF0dXMgYml0c1xcbisgKiBhcmUgcmVhZC10by1jbGVhcjsgYSBtYXNrIGJpdCBpcyBlbmFibGVkIGJ5IHdyaXRpbmcgMC5cXG4rICovXFxuKyNkZWZpbmUgTEFOODZYWF9SRUdfU1RTMVxcdFxcdDB4MDAxOFxcbisjZGVmaW5lIExBTjg2WFhfUkVHX0lNU0sxXFx0XFx0MHgwMDFDXFxuK1xcbisjZGVmaW5lIExBTjg2WFhfU1RTMV9MSU5LX1NUU19DSEFOR0VEXFx0QklUKDEzKVxcbisjZGVmaW5lIExBTjg2WFhfU1RTMV9QTENBX1NUU19DSEFOR0VEXFx0QklUKDExKVxcbitcXG4gLyogQ29sbGlzaW9uIERldGVjdG9yIENvbnRyb2wgMCBSZWdpc3RlciAqL1xcbiAjZGVmaW5lIExBTjg2WFhfUkVHX0NPTF9ERVRfQ1RSTDBcXHQweDAwODdcXG4gI2RlZmluZSBDT0xfREVUX0NUUkwwX0VOQUJMRV9CSVRfTUFTS1xcdEJJVCgxNSlcXG4gI2RlZmluZSBDT0xfREVUX0VOQUJMRVxcdFxcdFxcdEJJVCgxNSlcXG4gI2RlZmluZSBDT0xfREVUX0RJU0FCTEVcXHRcXHRcXHQweDAwMDBcXG4rI2RlZmluZSBDT0xfREVUX0NUUkwwX0NDTUZDX01BU0tcXHRHRU5NQVNLKDEwLCA5KVxcbisvKiBPQSBkZWZhdWx0OiBjb2xsaXNpb25zIGdhdGVkIGJ5IFBMQ0FfU3RhdHVzIGluIGhhcmR3YXJlICovXFxuKyNkZWZpbmUgQ09MX0RFVF9DVFJMMF9DQ01GQ19PQV9ERUZBVUxUXFx0QklUKDkpXFxuIFxcbiAvKiBMQU44NjcwLzEvMiBSZXYuRDAgTGluayBTdGF0dXMgU2VsZWN0aW9uIFJlZ2lzdGVyICovXFxuICNkZWZpbmUgTEFOODY3WF9SRUdfTElOS19TVEFUVVNfQ1RSTFxcdDB4MDAxMlxcbkBAIC00NTgsNiArNDcwLDE2IEBAIHN0YXRpYyBpbnQgbGFuODZ4eF9wbGNhX3NldF9jZmcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuK1xcdC8qIFBIWXMgd2l0aCByb3V0ZWQgaW50ZXJydXB0cyBoYW5kbGUgQ0RFTiBkeW5hbWljYWxseSB2aWEgdGhlIGludGVycnVwdFxcbitcXHQgKiBoYW5kbGVyLCBzbyBza2lwIHRoZSBzdGF0aWMgd3JpdGUuIFBIWXMgcnVubmluZyB3aXRoIFBIWV9QT0xMIGhhdmUgbm9cXG4rXFx0ICogaW50ZXJydXB0IGhhbmRsZXIsIHNvIGFwcGx5IHRoZSBzdGF0aWMgQ0RFTiB3cml0ZSBhcyBhIGJhc2VsaW5lIG9uXFxuK1xcdCAqIGV2ZXJ5IGV0aHRvb2wgUExDQSByZWNvbmZpZ3VyYXRpb24uIFRoZSBsaW1pdGF0aW9uIGlzIHRoYXQgYXV0b25vbW91c1xcbitcXHQgKiBQTENBIG1vZGUgdHJhbnNpdGlvbnMgYmV0d2VlbiBldGh0b29sIHJlY29uZmlndXJhdGlvbnMgYXJlIG5vdFxcbitcXHQgKiB0cmFja2VkIG9uIHN1Y2ggYm9hcmRzLlxcbitcXHQgKi9cXG4rXFx0aWYgKHBoeWRldi1cXHUwMDNlaXJxICE9IFBIWV9QT0xMKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuIFxcdGlmIChwbGNhX2NmZy1cXHUwMDNlZW5hYmxlZClcXG4gXFx0XFx0cmV0dXJuIHBoeV9tb2RpZnlfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXFxuIFxcdFxcdFxcdFxcdCAgICAgIExBTjg2WFhfUkVHX0NPTF9ERVRfQ1RSTDAsXFxuQEAgLTQ4NCw2ICs1MDYsMTggQEAgc3RhdGljIGludCBsYW44Njd4X3JldmQwX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuIFxcdFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdH1cXG4gXFxuK1xcdC8qIEFOMTc2MDogY29uZmlndXJlIENDTUZDIHRvIE9BIGRlZmF1bHQgc28gdGhhdCB0aGUgaGFyZHdhcmVcXG4rXFx0ICogYXV0b21hdGljYWxseSBnYXRlcyBjb2xsaXNpb24gZm9yd2FyZGluZyB0byB0aGUgTUFDIGJhc2VkIG9uXFxuK1xcdCAqIFBMQ0FfU3RhdHVzLiBDb2xsaXNpb25zIGFyZSBuZWl0aGVyIGNvdW50ZWQgbm9yIGZvcndhcmRlZCB3aGVuXFxuK1xcdCAqIFBMQ0FfU3RhdHVzID0gT0ssIGVsaW1pbmF0aW5nIHRoZSBuZWVkIGZvciBzb2Z0d2FyZS1kcml2ZW4gQ0RFTlxcbitcXHQgKiB0b2dnbGluZyBpbiB0aGUgaW50ZXJydXB0IGhhbmRsZXIuIENERU4gcmVtYWlucyBlbmFibGVkLlxcbitcXHQgKi9cXG4rXFx0cmV0ID0gcGh5X21vZGlmeV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTEFOODZYWF9SRUdfQ09MX0RFVF9DVFJMMCxcXG4rXFx0XFx0XFx0ICAgICBDT0xfREVUX0NUUkwwX0NDTUZDX01BU0ssXFxuK1xcdFxcdFxcdCAgICAgQ09MX0RFVF9DVFJMMF9DQ01GQ19PQV9ERUZBVUxUKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuIFxcdC8qIEluaXRpYWxseSB0aGUgUEhZIHdpbGwgYmUgaW4gQ1NNQS9DRCBtb2RlIGJ5IGRlZmF1bHQuIFNvIGl0IGlzXFxuIFxcdCAqIHJlcXVpcmVkIHRvIHNldCB0aGUgbGluayBhbHdheXMgYWN0aXZlIGFzIGl0IGRvZXNuJ3Qgc3VwcG9ydFxcbiBcXHQgKiBhdXRvbmVnLlxcbkBAIC01MDYsNiArNTQwLDEyMSBAQCBzdGF0aWMgaW50IGxhbjg2eHhfcmVhZF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbnQgbGFuODZ4eF9jb25maWdfaW50cihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbit7XFxuK1xcdHUxNiBtYXNrID0gTEFOODZYWF9TVFMxX1BMQ0FfU1RTX0NIQU5HRUQ7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRpZiAocGh5ZGV2LVxcdTAwM2VwaHlfaWQgPT0gUEhZX0lEX0xBTjg2N1hfUkVWRDApXFxuK1xcdFxcdG1hc2sgfD0gTEFOODZYWF9TVFMxX0xJTktfU1RTX0NIQU5HRUQ7XFxuK1xcbitcXHRpZiAocGh5ZGV2LVxcdTAwM2VpbnRlcnJ1cHRzID09IFBIWV9JTlRFUlJVUFRfRU5BQkxFRCkge1xcbitcXHRcXHQvKiBSZWFkIHRvIGNsZWFyIGFueSBwZW5kaW5nIHN0YXR1cyBiZWZvcmUgZW5hYmxpbmcuICovXFxuK1xcdFxcdHJldCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBMQU44NlhYX1JFR19TVFMxKTtcXG4rXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuK1xcdFxcdFxcdHJldHVybiByZXQ7XFxuK1xcbitcXHRcXHQvKiBBIG1hc2sgYml0IG9mIDAgZW5hYmxlcyB0aGUgY29ycmVzcG9uZGluZyBpbnRlcnJ1cHQuICovXFxuK1xcdFxcdHJldHVybiBwaHlfY2xlYXJfYml0c19tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcXG4rXFx0XFx0XFx0XFx0XFx0ICBMQU44NlhYX1JFR19JTVNLMSwgbWFzayk7XFxuK1xcdH1cXG4rXFxuK1xcdHJldCA9IHBoeV9zZXRfYml0c19tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTEFOODZYWF9SRUdfSU1TSzEsXFxuK1xcdFxcdFxcdCAgICAgICBtYXNrKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdC8qIFJlYWQgdG8gY2xlYXIgYW55IHBlbmRpbmcgc3RhdHVzIGFmdGVyIGRpc2FibGluZy4gKi9cXG4rXFx0cmV0ID0gcGh5X3JlYWRfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIExBTjg2WFhfUkVHX1NUUzEpO1xcbitcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgaXJxcmV0dXJuX3QgbGFuODZ4eF9oYW5kbGVfaW50ZXJydXB0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuK3tcXG4rXFx0c3RydWN0IHBoeV9wbGNhX3N0YXR1cyBwbGNhX3N0O1xcbitcXHRpcnFyZXR1cm5fdCByZXRfaXJxID0gSVJRX05PTkU7XFxuK1xcdGludCBzdHMxLCByZXQ7XFxuK1xcbitcXHQvKiBSZWFkaW5nIHRoZSBzdGF0dXMgcmVnaXN0ZXIgY2xlYXJzIHRoZSBsYXRjaGVkIGV2ZW50IGJpdHMuICovXFxuK1xcdHN0czEgPSBwaHlfcmVhZF9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTEFOODZYWF9SRUdfU1RTMSk7XFxuK1xcdGlmIChzdHMxIFxcdTAwM2MgMCkge1xcbitcXHRcXHRwaHlfZXJyb3IocGh5ZGV2KTtcXG4rXFx0XFx0cmV0dXJuIElSUV9OT05FO1xcbitcXHR9XFxuK1xcbitcXHRpZiAoc3RzMSBcXHUwMDI2IExBTjg2WFhfU1RTMV9QTENBX1NUU19DSEFOR0VEKSB7XFxuK1xcdFxcdHJldCA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfc3RhdHVzKHBoeWRldiwgXFx1MDAyNnBsY2Ffc3QpO1xcbitcXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbitcXHRcXHRcXHRwaHlfZXJyb3IocGh5ZGV2KTtcXG4rXFx0XFx0XFx0cmV0dXJuIElSUV9OT05FO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHQvKiBBTjE3NjAvQU4xNjk5OiBkaXNhYmxlIGNvbGxpc2lvbiBkZXRlY3Rpb24gaW4gUExDQSBtb2RlIHRvXFxuK1xcdFxcdCAqIGltcHJvdmUgc2lnbmFsIHF1YWxpdHk7IHJlLWVuYWJsZSBpdCBpbiBDU01BL0NEIG1vZGUuXFxuK1xcdFxcdCAqXFxuK1xcdFxcdCAqIGh0dHBzOi8vd3d3Lm1pY3JvY2hpcC5jb20vZW4tdXMvYXBwbGljYXRpb24tbm90ZXMvYW4xNzYwXFxuK1xcdFxcdCAqIGh0dHBzOi8vd3d3Lm1pY3JvY2hpcC5jb20vZW4tdXMvYXBwbGljYXRpb24tbm90ZXMvYW4xNjk5XFxuK1xcdFxcdCAqL1xcbitcXHRcXHRyZXQgPSBwaHlfbW9kaWZ5X21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLFxcbitcXHRcXHRcXHRcXHQgICAgIExBTjg2WFhfUkVHX0NPTF9ERVRfQ1RSTDAsXFxuK1xcdFxcdFxcdFxcdCAgICAgQ09MX0RFVF9DVFJMMF9FTkFCTEVfQklUX01BU0ssXFxuK1xcdFxcdFxcdFxcdCAgICAgcGxjYV9zdC5wc3QgPyBDT0xfREVUX0RJU0FCTEUgOlxcbitcXHRcXHRcXHRcXHQgICAgIENPTF9ERVRfRU5BQkxFKTtcXG4rXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4rXFx0XFx0XFx0cGh5X2Vycm9yKHBoeWRldik7XFxuK1xcdFxcdFxcdHJldHVybiBJUlFfTk9ORTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0cmV0X2lycSA9IElSUV9IQU5ETEVEO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gcmV0X2lycTtcXG4rfVxcbitcXG4rc3RhdGljIGlycXJldHVybl90IGxhbjg2N3hfcmV2ZDBfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbit7XFxuK1xcdHN0cnVjdCBwaHlfcGxjYV9zdGF0dXMgcGxjYV9zdDtcXG4rXFx0aXJxcmV0dXJuX3QgcmV0X2lycSA9IElSUV9OT05FO1xcbitcXHRpbnQgc3RzMSwgcmV0O1xcbitcXG4rXFx0LyogUmVhZGluZyB0aGUgc3RhdHVzIHJlZ2lzdGVyIGNsZWFycyB0aGUgbGF0Y2hlZCBldmVudCBiaXRzLiAqL1xcbitcXHRzdHMxID0gcGh5X3JlYWRfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIExBTjg2WFhfUkVHX1NUUzEpO1xcbitcXHRpZiAoc3RzMSBcXHUwMDNjIDApIHtcXG4rXFx0XFx0cGh5X2Vycm9yKHBoeWRldik7XFxuK1xcdFxcdHJldHVybiBJUlFfTk9ORTtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKHN0czEgXFx1MDAyNiBMQU44NlhYX1NUUzFfTElOS19TVFNfQ0hBTkdFRCkge1xcbitcXHRcXHRwaHlfdHJpZ2dlcl9tYWNoaW5lKHBoeWRldik7XFxuK1xcdFxcdHJldF9pcnEgPSBJUlFfSEFORExFRDtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKHN0czEgXFx1MDAyNiBMQU44NlhYX1NUUzFfUExDQV9TVFNfQ0hBTkdFRCkge1xcbitcXHRcXHRyZXQgPSBnZW5waHlfYzQ1X3BsY2FfZ2V0X3N0YXR1cyhwaHlkZXYsIFxcdTAwMjZwbGNhX3N0KTtcXG4rXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4rXFx0XFx0XFx0cGh5X2Vycm9yKHBoeWRldik7XFxuK1xcdFxcdFxcdHJldHVybiBJUlFfTk9ORTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0LyogQ29sbGlzaW9uIGRldGVjdGlvbiBpcyBoYW5kbGVkIGF1dG9ub21vdXNseSBieSB0aGUgaGFyZHdhcmVcXG4rXFx0XFx0ICogdmlhIENDTUZDLiBPbmx5IHRoZSBsaW5rIHN0YXR1cyBzZWxlY3Rpb24gbmVlZHMgdG8gYmUgdXBkYXRlZFxcbitcXHRcXHQgKiBvbiBlYWNoIFBMQ0Egc3RhdHVzIHRyYW5zaXRpb24uXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRyZXQgPSBsYW44Njd4X3JldmQwX2xpbmtfYWN0aXZlX3NlbGVjdGlvbihwaHlkZXYsIHBsY2Ffc3QucHN0KTtcXG4rXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4rXFx0XFx0XFx0cGh5X2Vycm9yKHBoeWRldik7XFxuK1xcdFxcdFxcdHJldHVybiBJUlFfTk9ORTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0cmV0X2lycSA9IElSUV9IQU5ETEVEO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gcmV0X2lycTtcXG4rfVxcbitcXG4gc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MXNfZHJpdmVyW10gPSB7XFxuIFxcdHtcXG4gXFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9MQU44NjdYX1JFVkIxKSxcXG5AQCAtNTEzLDYgKzY2Miw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtaWNyb2NoaXBfdDFzX2RyaXZlcltdID0ge1xcbiBcXHRcXHQuZmVhdHVyZXMgICAgICAgICAgID0gUEhZX0JBU0lDX1QxU19QMk1QX0ZFQVRVUkVTLFxcbiBcXHRcXHQuY29uZmlnX2luaXQgICAgICAgID0gbGFuODY3eF9yZXZiMV9jb25maWdfaW5pdCxcXG4gXFx0XFx0LnJlYWRfc3RhdHVzICAgICAgICA9IGxhbjg2eHhfcmVhZF9zdGF0dXMsXFxuK1xcdFxcdC5jb25maWdfaW50ciAgICAgICAgPSBsYW44Nnh4X2NvbmZpZ19pbnRyLFxcbitcXHRcXHQuaGFuZGxlX2ludGVycnVwdCAgID0gbGFuODZ4eF9oYW5kbGVfaW50ZXJydXB0LFxcbiBcXHRcXHQuZ2V0X3BsY2FfY2ZnXFx0ICAgID0gZ2VucGh5X2M0NV9wbGNhX2dldF9jZmcsXFxuIFxcdFxcdC5zZXRfcGxjYV9jZmdcXHQgICAgPSBnZW5waHlfYzQ1X3BsY2Ffc2V0X2NmZyxcXG4gXFx0XFx0LmdldF9wbGNhX3N0YXR1cyAgICA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfc3RhdHVzLFxcbkBAIC01MjMsNiArNjc0LDggQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MXNfZHJpdmVyW10gPSB7XFxuIFxcdFxcdC5mZWF0dXJlcyAgICAgICAgICAgPSBQSFlfQkFTSUNfVDFTX1AyTVBfRkVBVFVSRVMsXFxuIFxcdFxcdC5jb25maWdfaW5pdCAgICAgICAgPSBsYW44Njd4X3JldmNfY29uZmlnX2luaXQsXFxuIFxcdFxcdC5yZWFkX3N0YXR1cyAgICAgICAgPSBsYW44Nnh4X3JlYWRfc3RhdHVzLFxcbitcXHRcXHQuY29uZmlnX2ludHIgICAgICAgID0gbGFuODZ4eF9jb25maWdfaW50cixcXG4rXFx0XFx0LmhhbmRsZV9pbnRlcnJ1cHQgICA9IGxhbjg2eHhfaGFuZGxlX2ludGVycnVwdCxcXG4gXFx0XFx0LmdldF9wbGNhX2NmZ1xcdCAgICA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfY2ZnLFxcbiBcXHRcXHQuc2V0X3BsY2FfY2ZnXFx0ICAgID0gbGFuODZ4eF9wbGNhX3NldF9jZmcsXFxuIFxcdFxcdC5nZXRfcGxjYV9zdGF0dXMgICAgPSBnZW5waHlfYzQ1X3BsY2FfZ2V0X3N0YXR1cyxcXG5AQCAtNTMzLDYgKzY4Niw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtaWNyb2NoaXBfdDFzX2RyaXZlcltdID0ge1xcbiBcXHRcXHQuZmVhdHVyZXMgICAgICAgICAgID0gUEhZX0JBU0lDX1QxU19QMk1QX0ZFQVRVUkVTLFxcbiBcXHRcXHQuY29uZmlnX2luaXQgICAgICAgID0gbGFuODY3eF9yZXZjX2NvbmZpZ19pbml0LFxcbiBcXHRcXHQucmVhZF9zdGF0dXMgICAgICAgID0gbGFuODZ4eF9yZWFkX3N0YXR1cyxcXG4rXFx0XFx0LmNvbmZpZ19pbnRyICAgICAgICA9IGxhbjg2eHhfY29uZmlnX2ludHIsXFxuK1xcdFxcdC5oYW5kbGVfaW50ZXJydXB0ICAgPSBsYW44Nnh4X2hhbmRsZV9pbnRlcnJ1cHQsXFxuIFxcdFxcdC5nZXRfcGxjYV9jZmdcXHQgICAgPSBnZW5waHlfYzQ1X3BsY2FfZ2V0X2NmZyxcXG4gXFx0XFx0LnNldF9wbGNhX2NmZ1xcdCAgICA9IGxhbjg2eHhfcGxjYV9zZXRfY2ZnLFxcbiBcXHRcXHQuZ2V0X3BsY2Ffc3RhdHVzICAgID0gZ2VucGh5X2M0NV9wbGNhX2dldF9zdGF0dXMsXFxuQEAgLTU0Miw2ICs2OTcsOCBAQCBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbWljcm9jaGlwX3Qxc19kcml2ZXJbXSA9IHtcXG4gXFx0XFx0Lm5hbWUgICAgICAgICAgICAgICA9IFxcXCJMQU44NjdYIFJldi5EMFxcXCIsXFxuIFxcdFxcdC5mZWF0dXJlcyAgICAgICAgICAgPSBQSFlfQkFTSUNfVDFTX1AyTVBfRkVBVFVSRVMsXFxuIFxcdFxcdC5jb25maWdfaW5pdCAgICAgICAgPSBsYW44Njd4X3JldmQwX2NvbmZpZ19pbml0LFxcbitcXHRcXHQuY29uZmlnX2ludHIgICAgICAgID0gbGFuODZ4eF9jb25maWdfaW50cixcXG4rXFx0XFx0LmhhbmRsZV9pbnRlcnJ1cHQgICA9IGxhbjg2N3hfcmV2ZDBfaGFuZGxlX2ludGVycnVwdCxcXG4gXFx0XFx0LmdldF9wbGNhX2NmZ1xcdCAgICA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfY2ZnLFxcbiBcXHRcXHQuc2V0X3BsY2FfY2ZnXFx0ICAgID0gbGFuODZ4eF9wbGNhX3NldF9jZmcsXFxuIFxcdFxcdC5nZXRfcGxjYV9zdGF0dXMgICAgPSBnZW5waHlfYzQ1X3BsY2FfZ2V0X3N0YXR1cyxcXG5AQCAtNTU2LDYgKzcxMyw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtaWNyb2NoaXBfdDFzX2RyaXZlcltdID0ge1xcbiBcXHRcXHQuZmVhdHVyZXMgICAgICAgICAgID0gUEhZX0JBU0lDX1QxU19QMk1QX0ZFQVRVUkVTLFxcbiBcXHRcXHQuY29uZmlnX2luaXQgICAgICAgID0gbGFuODY1eF9yZXZiX2NvbmZpZ19pbml0LFxcbiBcXHRcXHQucmVhZF9zdGF0dXMgICAgICAgID0gbGFuODZ4eF9yZWFkX3N0YXR1cyxcXG4rXFx0XFx0LmNvbmZpZ19pbnRyICAgICAgICA9IGxhbjg2eHhfY29uZmlnX2ludHIsXFxuK1xcdFxcdC5oYW5kbGVfaW50ZXJydXB0ICAgPSBsYW44Nnh4X2hhbmRsZV9pbnRlcnJ1cHQsXFxuIFxcdFxcdC5yZWFkX21tZCAgICAgICAgICAgPSBnZW5waHlfcmVhZF9tbWRfYzQ1LFxcbiBcXHRcXHQud3JpdGVfbW1kICAgICAgICAgID0gZ2VucGh5X3dyaXRlX21tZF9jNDUsXFxuIFxcdFxcdC5nZXRfcGxjYV9jZmdcXHQgICAgPSBnZW5waHlfYzQ1X3BsY2FfZ2V0X2NmZyxcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9vYV90YzYuaCBiL2luY2x1ZGUvbGludXgvb2FfdGM2LmhcXG5pbmRleCAyN2Y2NTJkNDkyMGIyLi4xYzhjYzI2M2M1ZTUzIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvb2FfdGM2LmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L29hX3RjNi5oXFxuQEAgLTMwLDYgKzMwLDcgQEBcXG4gXFxuIC8qIFN0YXR1cyBSZWdpc3RlciAjMCAqL1xcbiAjZGVmaW5lIE9BX1RDNl9SRUdfU1RBVFVTMFxcdFxcdFxcdDB4MDAwOFxcbisjZGVmaW5lIE9BX1RDNl9TVEFUVVMwX1BIWV9JTlRcXHRcXHRcXHRCSVQoNylcXG4gI2RlZmluZSBPQV9UQzZfU1RBVFVTMF9SRVNFVENcXHRcXHRcXHRCSVQoNilcXHQvKiBSZXNldCBDb21wbGV0ZSAqL1xcbiAjZGVmaW5lIE9BX1RDNl9TVEFUVVMwX0hFQURFUl9FUlJPUlxcdFxcdEJJVCg1KVxcbiAjZGVmaW5lIE9BX1RDNl9TVEFUVVMwX0xPU1NfT0ZfRlJBTUVfRVJST1JcXHRCSVQoNClcXG5AQCAtNDMsNiArNDQsNyBAQFxcbiBcXG4gLyogSW50ZXJydXB0IE1hc2sgUmVnaXN0ZXIgIzAgKi9cXG4gI2RlZmluZSBPQV9UQzZfUkVHX0lOVF9NQVNLMFxcdFxcdFxcdFxcdDB4MDAwQ1xcbisjZGVmaW5lIE9BX1RDNl9JTlRfTUFTSzBfUEhZX0lOVF9NQVNLXFx0XFx0XFx0QklUKDcpXFxuICNkZWZpbmUgT0FfVEM2X0lOVF9NQVNLMF9IRUFERVJfRVJSX01BU0tcXHRcXHRCSVQoNSlcXG4gI2RlZmluZSBPQV9UQzZfSU5UX01BU0swX0xPU1NfT0ZfRlJBTUVfRVJSX01BU0tcXHRcXHRCSVQoNClcXG4gI2RlZmluZSBPQV9UQzZfSU5UX01BU0swX1JYX0JVRkZFUl9PVkVSRkxPV19FUlJfTUFTS1xcdEJJVCgzKVxcbkBAIC02OCw2ICs3MCw3IEBAIHN0cnVjdCBvYV90YzY7XFxuIFxcbiBlbnVtIG9hX3RjNl9xdWlya19mbGFnIHtcXG4gXFx0T0FfVEM2X0JST0tFTl9QSFkgPSBCSVQoMCksXFxuK1xcdE9BX1RDNl9QSFlfSU5UICAgID0gQklUKDEpLFxcbiB9O1xcbiBcXG4gc3RydWN0IG9hX3RjNl9xdWlya3Mge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODoyMjowNS40OTMyODI2MjlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjUzNjM1MTc2MTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWljcm9jaGlwIExBTjg2NXggU1BJIEV0aGVybmV0IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jKSwgdGhlIE9wZW4gQWxsaWFuY2UgVEM2IE1BQy1QSFkgcHJvdG9jb2wgbGF5ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jKSwgYW5kIHRoZSBNaWNyb2NoaXAgMTBCQVNFLVQxUyBQSFkgZHJpdmVyIChkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jKS4gVGhlc2UgZHJpdmVycyBvcGVyYXRlIG9uIHNwZWNpZmljIHBoeXNpY2FsIDEwQkFTRS1UMVMgc2luZ2xlLXBhaXIgRXRoZXJuZXQgaGFyZHdhcmUgY29ubmVjdGVkIG92ZXIgU1BJL01ESU8gdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDQ0YmMxYzM3ZjdlODY2ZWI5OTdkODg3OGE1ZjZlN2Y3MDUwYjdkMWZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCA3IDA4OjIyOjA0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jXG5pbmRleCAyNmEyNzYxMzMyYTVhLi4wNDNhM2RjM2Y5NjU3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmNcbkBAIC0zMzIsNiArMzMyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBsYW44NjV4X25ldGRldl9vcHMgPSB7XG4gXG4gc3RhdGljIGludCBsYW44NjV4X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4ge1xuK1x0c3RydWN0IG9hX3RjNl9xdWlya3MgdGM2X3F1aXJrcyA9IHt9O1xuIFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbiBcdHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXY7XG4gXHRpbnQgcmV0O1xuQEAgLTM0Niw3ICszNDcsOCBAQCBzdGF0aWMgaW50IGxhbjg2NXhfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbiBcdHNwaV9zZXRfZHJ2ZGF0YShzcGksIHByaXYpO1xuIFx0SU5JVF9XT1JLKFx1MDAyNnByaXYtXHUwMDNlbXVsdGljYXN0X3dvcmssIGxhbjg2NXhfbXVsdGljYXN0X3dvcmtfaGFuZGxlcik7XG4gXG4tXHRwcml2LVx1MDAzZXRjNiA9IG9hX3RjNl9pbml0KHNwaSwgbmV0ZGV2LCBOVUxMKTtcbitcdHRjNl9xdWlya3MucXVpcmtfZmxhZ3MgPSBPQV9UQzZfUEhZX0lOVDtcbitcdHByaXYtXHUwMDNldGM2ID0gb2FfdGM2X2luaXQoc3BpLCBuZXRkZXYsIFx1MDAyNnRjNl9xdWlya3MpO1xuIFx0aWYgKCFwcml2LVx1MDAzZXRjNikge1xuIFx0XHRyZXQgPSAtRU5PREVWO1xuIFx0XHRnb3RvIGZyZWVfbmV0ZGV2O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmNcbmluZGV4IDZmY2M1ZjU2MWQ1NjAuLjAwYjAxNzZjMWZlN2EgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmNcbkBAIC04LDYgKzgsOCBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdGZpZWxkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pb3BvbGwuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2ludGVycnVwdC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvaXJxLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9pcnFkb21haW4uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21kaW8uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2FfdGM2LmhcdTAwM2VcbkBAIC03MCw2ICs3Miw4IEBAIHN0cnVjdCBvYV90YzYge1xuIFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldjtcbiBcdHN0cnVjdCBtaWlfYnVzICptZGlvYnVzO1xuIFx0c3RydWN0IHNwaV9kZXZpY2UgKnNwaTtcbitcdHN0cnVjdCBpcnFfZG9tYWluICpwaHlfaXJxX2RvbWFpbjtcbitcdGludCBwaHlfdmlycTtcbiBcdHN0cnVjdCBtdXRleCBzcGlfY3RybF9sb2NrOyAvKiBQcm90ZWN0cyBzcGkgY29udHJvbCB0cmFuc2ZlciAqL1xuIFx0c3BpbmxvY2tfdCB0eF9za2JfbG9jazsgLyogUHJvdGVjdHMgdHggc2tiIGhhbmRsaW5nICovXG4gXHR2b2lkICpzcGlfY3RybF90eF9idWY7XG5AQCAtNTI4LDYgKzUzMiw0NCBAQCBpbnQgb2FfdGM2X21kaW9idXNfd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgZGV2bnVtLFxuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChvYV90YzZfbWRpb2J1c193cml0ZV9jNDUpO1xuIFxuK3N0YXRpYyBpbnQgb2FfdGM2X3BoeV9pcnFfbWFwKHN0cnVjdCBpcnFfZG9tYWluICpkb21haW4sIHVuc2lnbmVkIGludCBpcnEsXG4rXHRcdFx0ICAgICAgaXJxX2h3X251bWJlcl90IGh3aXJxKVxuK3tcbitcdGlycV9zZXRfY2hpcF9kYXRhKGlycSwgZG9tYWluLVx1MDAzZWhvc3RfZGF0YSk7XG4rXHRpcnFfc2V0X2NoaXBfYW5kX2hhbmRsZXIoaXJxLCBcdTAwMjZkdW1teV9pcnFfY2hpcCwgaGFuZGxlX3NpbXBsZV9pcnEpO1xuK1x0aXJxX3NldF9uZXN0ZWRfdGhyZWFkKGlycSwgdHJ1ZSk7XG4rXHRpcnFfc2V0X25vcHJvYmUoaXJxKTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9kb21haW5fb3BzIG9hX3RjNl9waHlfaXJxX2RvbWFpbl9vcHMgPSB7XG4rXHQubWFwID0gb2FfdGM2X3BoeV9pcnFfbWFwLFxuK307XG4rXG4rc3RhdGljIGludCBvYV90YzZfcGh5X2lycV9zZXR1cChzdHJ1Y3Qgb2FfdGM2ICp0YzYpXG4re1xuK1x0dGM2LVx1MDAzZXBoeV9pcnFfZG9tYWluID1cbitcdFx0aXJxX2RvbWFpbl9jcmVhdGVfbGluZWFyKE5VTEwsIDEsXG4rXHRcdFx0XHRcdCBcdTAwMjZvYV90YzZfcGh5X2lycV9kb21haW5fb3BzLCB0YzYpO1xuK1x0aWYgKCF0YzYtXHUwMDNlcGh5X2lycV9kb21haW4pXG4rXHRcdHJldHVybiAtRU5PTUVNO1xuK1xuK1x0dGM2LVx1MDAzZXBoeV92aXJxID0gaXJxX2NyZWF0ZV9tYXBwaW5nKHRjNi1cdTAwM2VwaHlfaXJxX2RvbWFpbiwgMCk7XG4rXHRpZiAoIXRjNi1cdTAwM2VwaHlfdmlycSkge1xuK1x0XHRpcnFfZG9tYWluX3JlbW92ZSh0YzYtXHUwMDNlcGh5X2lycV9kb21haW4pO1xuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcdH1cbitcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgdm9pZCBvYV90YzZfcGh5X2lycV90ZWFyZG93bihzdHJ1Y3Qgb2FfdGM2ICp0YzYpXG4re1xuK1x0aXJxX2Rpc3Bvc2VfbWFwcGluZyh0YzYtXHUwMDNlcGh5X3ZpcnEpO1xuK1x0aXJxX2RvbWFpbl9yZW1vdmUodGM2LVx1MDAzZXBoeV9pcnFfZG9tYWluKTtcbit9XG4rXG4gc3RhdGljIGludCBvYV90YzZfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3Qgb2FfdGM2ICp0YzYpXG4ge1xuIFx0aW50IHJldDtcbkBAIC01NTksOSArNjAxLDI1IEBAIHN0YXRpYyBpbnQgb2FfdGM2X21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG9hX3RjNiAqdGM2KVxuIFx0c25wcmludGYodGM2LVx1MDAzZW1kaW9idXMtXHUwMDNlaWQsIEFSUkFZX1NJWkUodGM2LVx1MDAzZW1kaW9idXMtXHUwMDNlaWQpLCBcIiVzXCIsXG4gXHRcdCBkZXZfbmFtZShcdTAwMjZ0YzYtXHUwMDNlc3BpLVx1MDAzZWRldikpO1xuIFxuK1x0aWYgKHRjNi1cdTAwM2VxdWlya19mbGFncyBcdTAwMjYgT0FfVEM2X1BIWV9JTlQpIHtcbitcdFx0cmV0ID0gb2FfdGM2X3BoeV9pcnFfc2V0dXAodGM2KTtcbitcdFx0aWYgKHJldCkge1xuK1x0XHRcdG1kaW9idXNfZnJlZSh0YzYtXHUwMDNlbWRpb2J1cyk7XG4rXHRcdFx0cmV0dXJuIHJldDtcbitcdFx0fVxuK1x0XHQvKiBQb3B1bGF0ZSBhbGwgaXJxW10gZW50cmllcyBiZWZvcmUgcmVnaXN0cmF0aW9uIHNvXG4rXHRcdCAqIHBoeV9kZXZpY2VfY3JlYXRlKCkgcGlja3MgdXAgdGhlIHZpcnR1YWwgSVJRIHJlZ2FyZGxlc3Mgb2ZcbitcdFx0ICogdGhlIFBIWSdzIE1ESU8gYWRkcmVzcy5cbitcdFx0ICovXG4rXHRcdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBQSFlfTUFYX0FERFI7IGkrKylcbitcdFx0XHR0YzYtXHUwMDNlbWRpb2J1cy1cdTAwM2VpcnFbaV0gPSB0YzYtXHUwMDNlcGh5X3ZpcnE7XG4rXHR9XG4rXG4gXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKHRjNi1cdTAwM2VtZGlvYnVzKTtcbiBcdGlmIChyZXQpIHtcbiBcdFx0bmV0ZGV2X2Vycih0YzYtXHUwMDNlbmV0ZGV2LCBcIkNvdWxkIG5vdCByZWdpc3RlciBNRElPIGJ1c1xcblwiKTtcbitcdFx0aWYgKHRjNi1cdTAwM2VxdWlya19mbGFncyBcdTAwMjYgT0FfVEM2X1BIWV9JTlQpXG4rXHRcdFx0b2FfdGM2X3BoeV9pcnFfdGVhcmRvd24odGM2KTtcbiBcdFx0bWRpb2J1c19mcmVlKHRjNi1cdTAwM2VtZGlvYnVzKTtcbiBcdFx0cmV0dXJuIHJldDtcbiBcdH1cbkBAIC01NzIsNiArNjMwLDggQEAgc3RhdGljIGludCBvYV90YzZfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3Qgb2FfdGM2ICp0YzYpXG4gc3RhdGljIHZvaWQgb2FfdGM2X21kaW9idXNfdW5yZWdpc3RlcihzdHJ1Y3Qgb2FfdGM2ICp0YzYpXG4ge1xuIFx0bWRpb2J1c191bnJlZ2lzdGVyKHRjNi1cdTAwM2VtZGlvYnVzKTtcbitcdGlmICh0YzYtXHUwMDNlcXVpcmtfZmxhZ3MgXHUwMDI2IE9BX1RDNl9QSFlfSU5UKVxuK1x0XHRvYV90YzZfcGh5X2lycV90ZWFyZG93bih0YzYpO1xuIFx0bWRpb2J1c19mcmVlKHRjNi1cdTAwM2VtZGlvYnVzKTtcbiB9XG4gXG5AQCAtNjYxLDcgKzcyMSw3IEBAIHN0YXRpYyBpbnQgb2FfdGM2X3N3X3Jlc2V0X21hY3BoeShzdHJ1Y3Qgb2FfdGM2ICp0YzYpXG4gXHRyZXR1cm4gb2FfdGM2X3dyaXRlX3JlZ2lzdGVyKHRjNiwgT0FfVEM2X1JFR19TVEFUVVMwLCByZWd2YWwpO1xuIH1cbiBcbi1zdGF0aWMgaW50IG9hX3RjNl91bm1hc2tfbWFjcGh5X2Vycm9yX2ludGVycnVwdHMoc3RydWN0IG9hX3RjNiAqdGM2KVxuK3N0YXRpYyBpbnQgb2FfdGM2X3VubWFza19pbnRlcnJ1cHRzKHN0cnVjdCBvYV90YzYgKnRjNilcbiB7XG4gXHR1MzIgcmVndmFsO1xuIFx0aW50IHJldDtcbkBAIC02NzAsNyArNzMwLDggQEAgc3RhdGljIGludCBvYV90YzZfdW5tYXNrX21hY3BoeV9lcnJvcl9pbnRlcnJ1cHRzKHN0cnVjdCBvYV90YzYgKnRjNilcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4tXHRyZWd2YWwgXHUwMDI2PSB+KE9BX1RDNl9JTlRfTUFTSzBfVFhfUFJPVE9DT0xfRVJSX01BU0sgfFxuK1x0cmVndmFsIFx1MDAyNj0gfihPQV9UQzZfSU5UX01BU0swX1BIWV9JTlRfTUFTSyB8XG4rXHRcdCAgICBPQV9UQzZfSU5UX01BU0swX1RYX1BST1RPQ09MX0VSUl9NQVNLIHxcbiBcdFx0ICAgIE9BX1RDNl9JTlRfTUFTSzBfUlhfQlVGRkVSX09WRVJGTE9XX0VSUl9NQVNLIHxcbiBcdFx0ICAgIE9BX1RDNl9JTlRfTUFTSzBfTE9TU19PRl9GUkFNRV9FUlJfTUFTSyB8XG4gXHRcdCAgICBPQV9UQzZfSU5UX01BU0swX0hFQURFUl9FUlJfTUFTSyk7XG5AQCAtODEwLDYgKzg3MSwxNSBAQCBzdGF0aWMgaW50IG9hX3RjNl9wcm9jZXNzX2V4dGVuZGVkX3N0YXR1cyhzdHJ1Y3Qgb2FfdGM2ICp0YzYpXG4gXHRcdHJldHVybiByZXQ7XG4gXHR9XG4gXG4rXHQvKiBEaXNwYXRjaCB0aGUgUEhZIGludGVycnVwdCB0byBwaHlsaWIgdmlhIHRoZSBuZXN0ZWQgdmlydHVhbCBJUlEgc29cbitcdCAqIHRoZSBQSFkgZHJpdmVyIHJlYWRzIGFuZCBhY2tub3dsZWRnZXMgaXRzIHN0YXR1cy4gUEhZSU5UIGlzIGxldmVsXG4rXHQgKiB0cmlnZ2VyZWQsIHNvIGRvaW5nIHRoaXMgc3luY2hyb25vdXNseSBoZXJlIChpbiB0aGUgc2xlZXBhYmxlXG4rXHQgKiB0aHJlYWRlZCBJUlEpIGNsZWFycyB0aGUgc291cmNlIGJlZm9yZSB0aGUgbmV4dCBkYXRhIGNodW5rLlxuK1x0ICovXG4rXHRpZiAoKHRjNi1cdTAwM2VxdWlya19mbGFncyBcdTAwMjYgT0FfVEM2X1BIWV9JTlQpIFx1MDAyNlx1MDAyNlxuK1x0ICAgIEZJRUxEX0dFVChPQV9UQzZfU1RBVFVTMF9QSFlfSU5ULCB2YWx1ZSkpXG4rXHRcdGhhbmRsZV9uZXN0ZWRfaXJxKHRjNi1cdTAwM2VwaHlfdmlycSk7XG4rXG4gXHRpZiAoRklFTERfR0VUKE9BX1RDNl9TVEFUVVMwX1JYX0JVRkZFUl9PVkVSRkxPV19FUlJPUiwgdmFsdWUpKSB7XG4gXHRcdG9hX3RjNl9sb29rX2Zvcl9uZXdfZnJhbWUodGM2KTtcbiBcdFx0bmV0X2Vycl9yYXRlbGltaXRlZChcIiVzOiBSZWNlaXZlIGJ1ZmZlciBvdmVyZmxvdyBlcnJvclxcblwiLFxuQEAgLTE1MTgsNyArMTU4OCw3IEBAIHN0cnVjdCBvYV90YzYgKm9hX3RjNl9pbml0KHN0cnVjdCBzcGlfZGV2aWNlICpzcGksIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuLVx0cmV0ID0gb2FfdGM2X3VubWFza19tYWNwaHlfZXJyb3JfaW50ZXJydXB0cyh0YzYpO1xuK1x0cmV0ID0gb2FfdGM2X3VubWFza19pbnRlcnJ1cHRzKHRjNik7XG4gXHRpZiAocmV0KSB7XG4gXHRcdGRldl9lcnIoXHUwMDI2dGM2LVx1MDAzZXNwaS1cdTAwM2VkZXYsXG4gXHRcdFx0XCJNQUMtUEhZIGVycm9yIGludGVycnVwdHMgdW5tYXNrIGZhaWxlZDogJWRcXG5cIiwgcmV0KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jIGIvZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuY1xuaW5kZXggNzNjMjNkMzExZDcyYS4uYzNhNzM4Yzc0MjViZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmNcbkBAIC0yNywxMSArMjcsMjMgQEBcbiAjZGVmaW5lIExBTjg2NVhfUkVHX0NGR1BBUkFNX0NUUkwgMHgwMERBXG4gI2RlZmluZSBMQU44NjVYX1JFR19TVFMyIDB4MDAxOVxuIFxuKy8qIFBIWSBpbnRlcnJ1cHQgc3RhdHVzIGFuZCBtYXNrIHJlZ2lzdGVycyAoTURJT19NTURfVkVORDIpLiBUaGUgc3RhdHVzIGJpdHNcbisgKiBhcmUgcmVhZC10by1jbGVhcjsgYSBtYXNrIGJpdCBpcyBlbmFibGVkIGJ5IHdyaXRpbmcgMC5cbisgKi9cbisjZGVmaW5lIExBTjg2WFhfUkVHX1NUUzFcdFx0MHgwMDE4XG4rI2RlZmluZSBMQU44NlhYX1JFR19JTVNLMVx0XHQweDAwMUNcbitcbisjZGVmaW5lIExBTjg2WFhfU1RTMV9MSU5LX1NUU19DSEFOR0VEXHRCSVQoMTMpXG4rI2RlZmluZSBMQU44NlhYX1NUUzFfUExDQV9TVFNfQ0hBTkdFRFx0QklUKDExKVxuK1xuIC8qIENvbGxpc2lvbiBEZXRlY3RvciBDb250cm9sIDAgUmVnaXN0ZXIgKi9cbiAjZGVmaW5lIExBTjg2WFhfUkVHX0NPTF9ERVRfQ1RSTDBcdDB4MDA4N1xuICNkZWZpbmUgQ09MX0RFVF9DVFJMMF9FTkFCTEVfQklUX01BU0tcdEJJVCgxNSlcbiAjZGVmaW5lIENPTF9ERVRfRU5BQkxFXHRcdFx0QklUKDE1KVxuICNkZWZpbmUgQ09MX0RFVF9ESVNBQkxFXHRcdFx0MHgwMDAwXG4rI2RlZmluZSBDT0xfREVUX0NUUkwwX0NDTUZDX01BU0tcdEdFTk1BU0soMTAsIDkpXG4rLyogT0EgZGVmYXVsdDogY29sbGlzaW9ucyBnYXRlZCBieSBQTENBX1N0YXR1cyBpbiBoYXJkd2FyZSAqL1xuKyNkZWZpbmUgQ09MX0RFVF9DVFJMMF9DQ01GQ19PQV9ERUZBVUxUXHRCSVQoOSlcbiBcbiAvKiBMQU44NjcwLzEvMiBSZXYuRDAgTGluayBTdGF0dXMgU2VsZWN0aW9uIFJlZ2lzdGVyICovXG4gI2RlZmluZSBMQU44NjdYX1JFR19MSU5LX1NUQVRVU19DVFJMXHQweDAwMTJcbkBAIC00NTgsNiArNDcwLDE2IEBAIHN0YXRpYyBpbnQgbGFuODZ4eF9wbGNhX3NldF9jZmcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4rXHQvKiBQSFlzIHdpdGggcm91dGVkIGludGVycnVwdHMgaGFuZGxlIENERU4gZHluYW1pY2FsbHkgdmlhIHRoZSBpbnRlcnJ1cHRcbitcdCAqIGhhbmRsZXIsIHNvIHNraXAgdGhlIHN0YXRpYyB3cml0ZS4gUEhZcyBydW5uaW5nIHdpdGggUEhZX1BPTEwgaGF2ZSBub1xuK1x0ICogaW50ZXJydXB0IGhhbmRsZXIsIHNvIGFwcGx5IHRoZSBzdGF0aWMgQ0RFTiB3cml0ZSBhcyBhIGJhc2VsaW5lIG9uXG4rXHQgKiBldmVyeSBldGh0b29sIFBMQ0EgcmVjb25maWd1cmF0aW9uLiBUaGUgbGltaXRhdGlvbiBpcyB0aGF0IGF1dG9ub21vdXNcbitcdCAqIFBMQ0EgbW9kZSB0cmFuc2l0aW9ucyBiZXR3ZWVuIGV0aHRvb2wgcmVjb25maWd1cmF0aW9ucyBhcmUgbm90XG4rXHQgKiB0cmFja2VkIG9uIHN1Y2ggYm9hcmRzLlxuK1x0ICovXG4rXHRpZiAocGh5ZGV2LVx1MDAzZWlycSAhPSBQSFlfUE9MTClcbitcdFx0cmV0dXJuIDA7XG4rXG4gXHRpZiAocGxjYV9jZmctXHUwMDNlZW5hYmxlZClcbiBcdFx0cmV0dXJuIHBoeV9tb2RpZnlfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXG4gXHRcdFx0XHQgICAgICBMQU44NlhYX1JFR19DT0xfREVUX0NUUkwwLFxuQEAgLTQ4NCw2ICs1MDYsMTggQEAgc3RhdGljIGludCBsYW44Njd4X3JldmQwX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRcdFx0cmV0dXJuIHJldDtcbiBcdH1cbiBcbitcdC8qIEFOMTc2MDogY29uZmlndXJlIENDTUZDIHRvIE9BIGRlZmF1bHQgc28gdGhhdCB0aGUgaGFyZHdhcmVcbitcdCAqIGF1dG9tYXRpY2FsbHkgZ2F0ZXMgY29sbGlzaW9uIGZvcndhcmRpbmcgdG8gdGhlIE1BQyBiYXNlZCBvblxuK1x0ICogUExDQV9TdGF0dXMuIENvbGxpc2lvbnMgYXJlIG5laXRoZXIgY291bnRlZCBub3IgZm9yd2FyZGVkIHdoZW5cbitcdCAqIFBMQ0FfU3RhdHVzID0gT0ssIGVsaW1pbmF0aW5nIHRoZSBuZWVkIGZvciBzb2Z0d2FyZS1kcml2ZW4gQ0RFTlxuK1x0ICogdG9nZ2xpbmcgaW4gdGhlIGludGVycnVwdCBoYW5kbGVyLiBDREVOIHJlbWFpbnMgZW5hYmxlZC5cbitcdCAqL1xuK1x0cmV0ID0gcGh5X21vZGlmeV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTEFOODZYWF9SRUdfQ09MX0RFVF9DVFJMMCxcbitcdFx0XHQgICAgIENPTF9ERVRfQ1RSTDBfQ0NNRkNfTUFTSyxcbitcdFx0XHQgICAgIENPTF9ERVRfQ1RSTDBfQ0NNRkNfT0FfREVGQVVMVCk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuIFx0LyogSW5pdGlhbGx5IHRoZSBQSFkgd2lsbCBiZSBpbiBDU01BL0NEIG1vZGUgYnkgZGVmYXVsdC4gU28gaXQgaXNcbiBcdCAqIHJlcXVpcmVkIHRvIHNldCB0aGUgbGluayBhbHdheXMgYWN0aXZlIGFzIGl0IGRvZXNuJ3Qgc3VwcG9ydFxuIFx0ICogYXV0b25lZy5cbkBAIC01MDYsNiArNTQwLDEyMSBAQCBzdGF0aWMgaW50IGxhbjg2eHhfcmVhZF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdHJldHVybiAwO1xuIH1cbiBcbitzdGF0aWMgaW50IGxhbjg2eHhfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbit7XG4rXHR1MTYgbWFzayA9IExBTjg2WFhfU1RTMV9QTENBX1NUU19DSEFOR0VEO1xuK1x0aW50IHJldDtcbitcbitcdGlmIChwaHlkZXYtXHUwMDNlcGh5X2lkID09IFBIWV9JRF9MQU44NjdYX1JFVkQwKVxuK1x0XHRtYXNrIHw9IExBTjg2WFhfU1RTMV9MSU5LX1NUU19DSEFOR0VEO1xuK1xuK1x0aWYgKHBoeWRldi1cdTAwM2VpbnRlcnJ1cHRzID09IFBIWV9JTlRFUlJVUFRfRU5BQkxFRCkge1xuK1x0XHQvKiBSZWFkIHRvIGNsZWFyIGFueSBwZW5kaW5nIHN0YXR1cyBiZWZvcmUgZW5hYmxpbmcuICovXG4rXHRcdHJldCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBMQU44NlhYX1JFR19TVFMxKTtcbitcdFx0aWYgKHJldCBcdTAwM2MgMClcbitcdFx0XHRyZXR1cm4gcmV0O1xuK1xuK1x0XHQvKiBBIG1hc2sgYml0IG9mIDAgZW5hYmxlcyB0aGUgY29ycmVzcG9uZGluZyBpbnRlcnJ1cHQuICovXG4rXHRcdHJldHVybiBwaHlfY2xlYXJfYml0c19tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcbitcdFx0XHRcdFx0ICBMQU44NlhYX1JFR19JTVNLMSwgbWFzayk7XG4rXHR9XG4rXG4rXHRyZXQgPSBwaHlfc2V0X2JpdHNfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIExBTjg2WFhfUkVHX0lNU0sxLFxuK1x0XHRcdCAgICAgICBtYXNrKTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHQvKiBSZWFkIHRvIGNsZWFyIGFueSBwZW5kaW5nIHN0YXR1cyBhZnRlciBkaXNhYmxpbmcuICovXG4rXHRyZXQgPSBwaHlfcmVhZF9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTEFOODZYWF9SRUdfU1RTMSk7XG4rXHRpZiAocmV0IFx1MDAzYyAwKVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyBpcnFyZXR1cm5fdCBsYW44Nnh4X2hhbmRsZV9pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbit7XG4rXHRzdHJ1Y3QgcGh5X3BsY2Ffc3RhdHVzIHBsY2Ffc3Q7XG4rXHRpcnFyZXR1cm5fdCByZXRfaXJxID0gSVJRX05PTkU7XG4rXHRpbnQgc3RzMSwgcmV0O1xuK1xuK1x0LyogUmVhZGluZyB0aGUgc3RhdHVzIHJlZ2lzdGVyIGNsZWFycyB0aGUgbGF0Y2hlZCBldmVudCBiaXRzLiAqL1xuK1x0c3RzMSA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBMQU44NlhYX1JFR19TVFMxKTtcbitcdGlmIChzdHMxIFx1MDAzYyAwKSB7XG4rXHRcdHBoeV9lcnJvcihwaHlkZXYpO1xuK1x0XHRyZXR1cm4gSVJRX05PTkU7XG4rXHR9XG4rXG4rXHRpZiAoc3RzMSBcdTAwMjYgTEFOODZYWF9TVFMxX1BMQ0FfU1RTX0NIQU5HRUQpIHtcbitcdFx0cmV0ID0gZ2VucGh5X2M0NV9wbGNhX2dldF9zdGF0dXMocGh5ZGV2LCBcdTAwMjZwbGNhX3N0KTtcbitcdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuK1x0XHRcdHBoeV9lcnJvcihwaHlkZXYpO1xuK1x0XHRcdHJldHVybiBJUlFfTk9ORTtcbitcdFx0fVxuK1xuK1x0XHQvKiBBTjE3NjAvQU4xNjk5OiBkaXNhYmxlIGNvbGxpc2lvbiBkZXRlY3Rpb24gaW4gUExDQSBtb2RlIHRvXG4rXHRcdCAqIGltcHJvdmUgc2lnbmFsIHF1YWxpdHk7IHJlLWVuYWJsZSBpdCBpbiBDU01BL0NEIG1vZGUuXG4rXHRcdCAqXG4rXHRcdCAqIGh0dHBzOi8vd3d3Lm1pY3JvY2hpcC5jb20vZW4tdXMvYXBwbGljYXRpb24tbm90ZXMvYW4xNzYwXG4rXHRcdCAqIGh0dHBzOi8vd3d3Lm1pY3JvY2hpcC5jb20vZW4tdXMvYXBwbGljYXRpb24tbm90ZXMvYW4xNjk5XG4rXHRcdCAqL1xuK1x0XHRyZXQgPSBwaHlfbW9kaWZ5X21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLFxuK1x0XHRcdFx0ICAgICBMQU44NlhYX1JFR19DT0xfREVUX0NUUkwwLFxuK1x0XHRcdFx0ICAgICBDT0xfREVUX0NUUkwwX0VOQUJMRV9CSVRfTUFTSyxcbitcdFx0XHRcdCAgICAgcGxjYV9zdC5wc3QgPyBDT0xfREVUX0RJU0FCTEUgOlxuK1x0XHRcdFx0ICAgICBDT0xfREVUX0VOQUJMRSk7XG4rXHRcdGlmIChyZXQgXHUwMDNjIDApIHtcbitcdFx0XHRwaHlfZXJyb3IocGh5ZGV2KTtcbitcdFx0XHRyZXR1cm4gSVJRX05PTkU7XG4rXHRcdH1cbitcbitcdFx0cmV0X2lycSA9IElSUV9IQU5ETEVEO1xuK1x0fVxuK1xuK1x0cmV0dXJuIHJldF9pcnE7XG4rfVxuK1xuK3N0YXRpYyBpcnFyZXR1cm5fdCBsYW44Njd4X3JldmQwX2hhbmRsZV9pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbit7XG4rXHRzdHJ1Y3QgcGh5X3BsY2Ffc3RhdHVzIHBsY2Ffc3Q7XG4rXHRpcnFyZXR1cm5fdCByZXRfaXJxID0gSVJRX05PTkU7XG4rXHRpbnQgc3RzMSwgcmV0O1xuK1xuK1x0LyogUmVhZGluZyB0aGUgc3RhdHVzIHJlZ2lzdGVyIGNsZWFycyB0aGUgbGF0Y2hlZCBldmVudCBiaXRzLiAqL1xuK1x0c3RzMSA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBMQU44NlhYX1JFR19TVFMxKTtcbitcdGlmIChzdHMxIFx1MDAzYyAwKSB7XG4rXHRcdHBoeV9lcnJvcihwaHlkZXYpO1xuK1x0XHRyZXR1cm4gSVJRX05PTkU7XG4rXHR9XG4rXG4rXHRpZiAoc3RzMSBcdTAwMjYgTEFOODZYWF9TVFMxX0xJTktfU1RTX0NIQU5HRUQpIHtcbitcdFx0cGh5X3RyaWdnZXJfbWFjaGluZShwaHlkZXYpO1xuK1x0XHRyZXRfaXJxID0gSVJRX0hBTkRMRUQ7XG4rXHR9XG4rXG4rXHRpZiAoc3RzMSBcdTAwMjYgTEFOODZYWF9TVFMxX1BMQ0FfU1RTX0NIQU5HRUQpIHtcbitcdFx0cmV0ID0gZ2VucGh5X2M0NV9wbGNhX2dldF9zdGF0dXMocGh5ZGV2LCBcdTAwMjZwbGNhX3N0KTtcbitcdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuK1x0XHRcdHBoeV9lcnJvcihwaHlkZXYpO1xuK1x0XHRcdHJldHVybiBJUlFfTk9ORTtcbitcdFx0fVxuK1xuK1x0XHQvKiBDb2xsaXNpb24gZGV0ZWN0aW9uIGlzIGhhbmRsZWQgYXV0b25vbW91c2x5IGJ5IHRoZSBoYXJkd2FyZVxuK1x0XHQgKiB2aWEgQ0NNRkMuIE9ubHkgdGhlIGxpbmsgc3RhdHVzIHNlbGVjdGlvbiBuZWVkcyB0byBiZSB1cGRhdGVkXG4rXHRcdCAqIG9uIGVhY2ggUExDQSBzdGF0dXMgdHJhbnNpdGlvbi5cbitcdFx0ICovXG4rXHRcdHJldCA9IGxhbjg2N3hfcmV2ZDBfbGlua19hY3RpdmVfc2VsZWN0aW9uKHBoeWRldiwgcGxjYV9zdC5wc3QpO1xuK1x0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4rXHRcdFx0cGh5X2Vycm9yKHBoeWRldik7XG4rXHRcdFx0cmV0dXJuIElSUV9OT05FO1xuK1x0XHR9XG4rXG4rXHRcdHJldF9pcnEgPSBJUlFfSEFORExFRDtcbitcdH1cbitcbitcdHJldHVybiByZXRfaXJxO1xuK31cbitcbiBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbWljcm9jaGlwX3Qxc19kcml2ZXJbXSA9IHtcbiBcdHtcbiBcdFx0UEhZX0lEX01BVENIX0VYQUNUKFBIWV9JRF9MQU44NjdYX1JFVkIxKSxcbkBAIC01MTMsNiArNjYyLDggQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MXNfZHJpdmVyW10gPSB7XG4gXHRcdC5mZWF0dXJlcyAgICAgICAgICAgPSBQSFlfQkFTSUNfVDFTX1AyTVBfRkVBVFVSRVMsXG4gXHRcdC5jb25maWdfaW5pdCAgICAgICAgPSBsYW44Njd4X3JldmIxX2NvbmZpZ19pbml0LFxuIFx0XHQucmVhZF9zdGF0dXMgICAgICAgID0gbGFuODZ4eF9yZWFkX3N0YXR1cyxcbitcdFx0LmNvbmZpZ19pbnRyICAgICAgICA9IGxhbjg2eHhfY29uZmlnX2ludHIsXG4rXHRcdC5oYW5kbGVfaW50ZXJydXB0ICAgPSBsYW44Nnh4X2hhbmRsZV9pbnRlcnJ1cHQsXG4gXHRcdC5nZXRfcGxjYV9jZmdcdCAgICA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfY2ZnLFxuIFx0XHQuc2V0X3BsY2FfY2ZnXHQgICAgPSBnZW5waHlfYzQ1X3BsY2Ffc2V0X2NmZyxcbiBcdFx0LmdldF9wbGNhX3N0YXR1cyAgICA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfc3RhdHVzLFxuQEAgLTUyMyw2ICs2NzQsOCBAQCBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbWljcm9jaGlwX3Qxc19kcml2ZXJbXSA9IHtcbiBcdFx0LmZlYXR1cmVzICAgICAgICAgICA9IFBIWV9CQVNJQ19UMVNfUDJNUF9GRUFUVVJFUyxcbiBcdFx0LmNvbmZpZ19pbml0ICAgICAgICA9IGxhbjg2N3hfcmV2Y19jb25maWdfaW5pdCxcbiBcdFx0LnJlYWRfc3RhdHVzICAgICAgICA9IGxhbjg2eHhfcmVhZF9zdGF0dXMsXG4rXHRcdC5jb25maWdfaW50ciAgICAgICAgPSBsYW44Nnh4X2NvbmZpZ19pbnRyLFxuK1x0XHQuaGFuZGxlX2ludGVycnVwdCAgID0gbGFuODZ4eF9oYW5kbGVfaW50ZXJydXB0LFxuIFx0XHQuZ2V0X3BsY2FfY2ZnXHQgICAgPSBnZW5waHlfYzQ1X3BsY2FfZ2V0X2NmZyxcbiBcdFx0LnNldF9wbGNhX2NmZ1x0ICAgID0gbGFuODZ4eF9wbGNhX3NldF9jZmcsXG4gXHRcdC5nZXRfcGxjYV9zdGF0dXMgICAgPSBnZW5waHlfYzQ1X3BsY2FfZ2V0X3N0YXR1cyxcbkBAIC01MzMsNiArNjg2LDggQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MXNfZHJpdmVyW10gPSB7XG4gXHRcdC5mZWF0dXJlcyAgICAgICAgICAgPSBQSFlfQkFTSUNfVDFTX1AyTVBfRkVBVFVSRVMsXG4gXHRcdC5jb25maWdfaW5pdCAgICAgICAgPSBsYW44Njd4X3JldmNfY29uZmlnX2luaXQsXG4gXHRcdC5yZWFkX3N0YXR1cyAgICAgICAgPSBsYW44Nnh4X3JlYWRfc3RhdHVzLFxuK1x0XHQuY29uZmlnX2ludHIgICAgICAgID0gbGFuODZ4eF9jb25maWdfaW50cixcbitcdFx0LmhhbmRsZV9pbnRlcnJ1cHQgICA9IGxhbjg2eHhfaGFuZGxlX2ludGVycnVwdCxcbiBcdFx0LmdldF9wbGNhX2NmZ1x0ICAgID0gZ2VucGh5X2M0NV9wbGNhX2dldF9jZmcsXG4gXHRcdC5zZXRfcGxjYV9jZmdcdCAgICA9IGxhbjg2eHhfcGxjYV9zZXRfY2ZnLFxuIFx0XHQuZ2V0X3BsY2Ffc3RhdHVzICAgID0gZ2VucGh5X2M0NV9wbGNhX2dldF9zdGF0dXMsXG5AQCAtNTQyLDYgKzY5Nyw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtaWNyb2NoaXBfdDFzX2RyaXZlcltdID0ge1xuIFx0XHQubmFtZSAgICAgICAgICAgICAgID0gXCJMQU44NjdYIFJldi5EMFwiLFxuIFx0XHQuZmVhdHVyZXMgICAgICAgICAgID0gUEhZX0JBU0lDX1QxU19QMk1QX0ZFQVRVUkVTLFxuIFx0XHQuY29uZmlnX2luaXQgICAgICAgID0gbGFuODY3eF9yZXZkMF9jb25maWdfaW5pdCxcbitcdFx0LmNvbmZpZ19pbnRyICAgICAgICA9IGxhbjg2eHhfY29uZmlnX2ludHIsXG4rXHRcdC5oYW5kbGVfaW50ZXJydXB0ICAgPSBsYW44Njd4X3JldmQwX2hhbmRsZV9pbnRlcnJ1cHQsXG4gXHRcdC5nZXRfcGxjYV9jZmdcdCAgICA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfY2ZnLFxuIFx0XHQuc2V0X3BsY2FfY2ZnXHQgICAgPSBsYW44Nnh4X3BsY2Ffc2V0X2NmZyxcbiBcdFx0LmdldF9wbGNhX3N0YXR1cyAgICA9IGdlbnBoeV9jNDVfcGxjYV9nZXRfc3RhdHVzLFxuQEAgLTU1Niw2ICs3MTMsOCBAQCBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbWljcm9jaGlwX3Qxc19kcml2ZXJbXSA9IHtcbiBcdFx0LmZlYXR1cmVzICAgICAgICAgICA9IFBIWV9CQVNJQ19UMVNfUDJNUF9GRUFUVVJFUyxcbiBcdFx0LmNvbmZpZ19pbml0ICAgICAgICA9IGxhbjg2NXhfcmV2Yl9jb25maWdfaW5pdCxcbiBcdFx0LnJlYWRfc3RhdHVzICAgICAgICA9IGxhbjg2eHhfcmVhZF9zdGF0dXMsXG4rXHRcdC5jb25maWdfaW50ciAgICAgICAgPSBsYW44Nnh4X2NvbmZpZ19pbnRyLFxuK1x0XHQuaGFuZGxlX2ludGVycnVwdCAgID0gbGFuODZ4eF9oYW5kbGVfaW50ZXJydXB0LFxuIFx0XHQucmVhZF9tbWQgICAgICAgICAgID0gZ2VucGh5X3JlYWRfbW1kX2M0NSxcbiBcdFx0LndyaXRlX21tZCAgICAgICAgICA9IGdlbnBoeV93cml0ZV9tbWRfYzQ1LFxuIFx0XHQuZ2V0X3BsY2FfY2ZnXHQgICAgPSBnZW5waHlfYzQ1X3BsY2FfZ2V0X2NmZyxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L29hX3RjNi5oIGIvaW5jbHVkZS9saW51eC9vYV90YzYuaFxuaW5kZXggMjdmNjUyZDQ5MjBiMi4uMWM4Y2MyNjNjNWU1MyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvb2FfdGM2LmhcbisrKyBiL2luY2x1ZGUvbGludXgvb2FfdGM2LmhcbkBAIC0zMCw2ICszMCw3IEBAXG4gXG4gLyogU3RhdHVzIFJlZ2lzdGVyICMwICovXG4gI2RlZmluZSBPQV9UQzZfUkVHX1NUQVRVUzBcdFx0XHQweDAwMDhcbisjZGVmaW5lIE9BX1RDNl9TVEFUVVMwX1BIWV9JTlRcdFx0XHRCSVQoNylcbiAjZGVmaW5lIE9BX1RDNl9TVEFUVVMwX1JFU0VUQ1x0XHRcdEJJVCg2KVx0LyogUmVzZXQgQ29tcGxldGUgKi9cbiAjZGVmaW5lIE9BX1RDNl9TVEFUVVMwX0hFQURFUl9FUlJPUlx0XHRCSVQoNSlcbiAjZGVmaW5lIE9BX1RDNl9TVEFUVVMwX0xPU1NfT0ZfRlJBTUVfRVJST1JcdEJJVCg0KVxuQEAgLTQzLDYgKzQ0LDcgQEBcbiBcbiAvKiBJbnRlcnJ1cHQgTWFzayBSZWdpc3RlciAjMCAqL1xuICNkZWZpbmUgT0FfVEM2X1JFR19JTlRfTUFTSzBcdFx0XHRcdDB4MDAwQ1xuKyNkZWZpbmUgT0FfVEM2X0lOVF9NQVNLMF9QSFlfSU5UX01BU0tcdFx0XHRCSVQoNylcbiAjZGVmaW5lIE9BX1RDNl9JTlRfTUFTSzBfSEVBREVSX0VSUl9NQVNLXHRcdEJJVCg1KVxuICNkZWZpbmUgT0FfVEM2X0lOVF9NQVNLMF9MT1NTX09GX0ZSQU1FX0VSUl9NQVNLXHRcdEJJVCg0KVxuICNkZWZpbmUgT0FfVEM2X0lOVF9NQVNLMF9SWF9CVUZGRVJfT1ZFUkZMT1dfRVJSX01BU0tcdEJJVCgzKVxuQEAgLTY4LDYgKzcwLDcgQEAgc3RydWN0IG9hX3RjNjtcbiBcbiBlbnVtIG9hX3RjNl9xdWlya19mbGFnIHtcbiBcdE9BX1RDNl9CUk9LRU5fUEhZID0gQklUKDApLFxuK1x0T0FfVEM2X1BIWV9JTlQgICAgPSBCSVQoMSksXG4gfTtcbiBcbiBzdHJ1Y3Qgb2FfdGM2X3F1aXJrcyB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODoyMjowNS40OTMyODQwNDlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNTkyMTg4MzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgRmVhc2liaWxpdHkgQW5hbHlzaXMqKlxuXG5Pa2F5LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGlzIHBhdGNoIGFuZCBkZWNpZGUgaWYgZnV6emluZyBpdCBpcyBhIHdvcnRod2hpbGUgZW5kZWF2b3IuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZSBjb2RlIG1vZGlmaWNhdGlvbnMuIEkgc2VlIGNoYW5nZXMgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguY2AsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuY2AsIGBkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jYCwgYW5kIGBpbmNsdWRlL2xpbnV4L29hX3RjNi5oYC4gVGltZSB0byBxdWlja2x5IGlkZW50aWZ5IHdoYXQgd2UncmUgZGVhbGluZyB3aXRoLlxuXG5BaCwgYGxhbjg2NXhgIGlzIGEgU1BJIEV0aGVybmV0IGNvbnRyb2xsZXIgZnJvbSBNaWNyb2NoaXAsIHNwZWNpZmljYWxseSB0aGUgTEFOODY1MC8xIDEwQkFTRS1UMVMgTUFDLVBIWS4gYG9hX3RjNmAgaXMgdGhlIE9wZW4gQWxsaWFuY2UgVEM2IDEwQkFTRS1UMVMgTUFDLVBIWSBwcm90b2NvbCBkcml2ZXIsIGFsc28gb3BlcmF0aW5nIG92ZXIgU1BJLCBpdCBsb29rcyBsaWtlLiBBbmQgYG1pY3JvY2hpcF90MXNgIGlzIGEgUEhZIGRyaXZlciBmb3IgTWljcm9jaGlwJ3MgTEFOODY3eC9MQU44NjV4IDEwQkFTRS1UMVMgUEhZcy5cblxuTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogY2FuIHdlIHJlYWNoIHRoZXNlIGRyaXZlcnMgaW4gYSBzdGFuZGFyZCBmdXp6aW5nIGVudmlyb25tZW50LCBsaWtlIFFFTVUgb3IgR0NFIHg4Nl82NCwgd2l0aG91dCBuZWVkaW5nIGFjdHVhbCBwaHlzaWNhbCBoYXJkd2FyZT8gTXkgZ3V0IGZlZWxpbmcgdGVsbHMgbWUgdGhpcyBtaWdodCBiZSB0cmlja3ksIGJlY2F1c2Ugb2YgdGhlIFNQSSBpbnRlcmFjdGlvbi4gSXQncyBsaWtlbHkgdGhhdCBTUEkgZGV2aWNlcyBhbmQgUEhZIGRldmljZXMgZ2V0IGluc3RhbnRpYXRlZCBpbiBhIHNwZWNpZmljIHdheSwgcG90ZW50aWFsbHkgcmVseWluZyBvbiBhIGRldmljZSB0cmVlIG9yIHNwZWNpZmljIHBoeXNpY2FsIFNQSSBoYXJkd2FyZS4gTGV0J3Mgc2VlIGlmIHRoZXJlIGlzIGEgdmlydHVhbCBidXMgb3IgZW11bGF0ZWQgZGV2aWNlIHRoYXQgd2UgY2FuIGxldmVyYWdlLlxuXG5TbywgbGV0J3MgZmlyZSB1cCBteSBwcmVmZXJyZWQgdG9vbHMgYW5kIHNlYXJjaCB0aGUga2VybmVsIHRyZWUgZm9yIGBsYW44NjV4YCwgYG9hX3RjNmAsIGFuZCBgbWljcm9jaGlwX3Qxc2AuIFRoaXMgc2hvdWxkIGdpdmUgdXMgc29tZSBjcml0aWNhbCBpbnNpZ2h0IGludG8gaG93IHRoZXNlIGRyaXZlcnMgYXJlIGluaXRpYWxpemVkIGFuZCB1c2VkLiBGcm9tIHRoZXJlLCB3ZSBjYW4gdGhlbiBkZXRlcm1pbmUgdGhlIGZlYXNpYmlsaXR5IG9mIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkxNTYsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODoyMjowOS4wODU0NzYwNjhaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU2NzYyNTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxhbjg2NXhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWc9NDU9Y29uZmlnIExBTjc0M1hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnLTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnOjYwOnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZy02MS1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWdcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvTWFrZWZpbGU9MTA9bGFuNzQzeC1vYmpzIDo9IGxhbjc0M3hfbWFpbi5vIGxhbjc0M3hfZXRodG9vbC5vIGxhbjc0M3hfcHRwLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvTWFrZWZpbGUtMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19MQU44NjVYKSArPSBsYW44NjV4L1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9NYWtlZmlsZS0xMy1vYmotJChDT05GSUdfTEFOOTY2WF9TV0lUQ0gpICs9IGxhbjk2NngvXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9LY29uZmlnPTg9Y29uZmlnIExBTjg2NVhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L0tjb25maWctMTYtXFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlIHdpbGwgYmVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9LY29uZmlnOjE3OlxcdCAgY2FsbGVkIGxhbjg2NXguXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvS2NvbmZpZy0xOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L01ha2VmaWxlLTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfTEFOODY1WCkgKz0gbGFuODY1eC5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjM5OnN0cnVjdCBsYW44NjV4X3ByaXYge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00MC1cXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgbXVsdGljYXN0X3dvcms7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ2OnN0YXRpYyBpbnQgbGFuODY1eF9zZXRfaHdfbWFjYWRkcl9sb3dfYnl0ZXMoc3RydWN0IG9hX3RjNiAqdGM2LCBjb25zdCB1OCAqbWFjKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjU1OnN0YXRpYyBpbnQgbGFuODY1eF9zZXRfaHdfbWFjYWRkcihzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2LCBjb25zdCB1OCAqbWFjKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy01Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNjEtXFx0LyogQ29uZmlndXJlIE1BQyBhZGRyZXNzIGxvdyBieXRlcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo2MjpcXHRyZXQgPSBsYW44NjV4X3NldF9od19tYWNhZGRyX2xvd19ieXRlcyhwcml2LVxcdTAwM2V0YzYsIG1hYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTYzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNzUtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjc2OlxcdHJlc3RvcmVfcmV0ID0gbGFuODY1eF9zZXRfaHdfbWFjYWRkcl9sb3dfYnl0ZXMocHJpdi1cXHUwMDNldGM2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy03Ny1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgcHJpdi1cXHUwMDNlbmV0ZGV2LVxcdTAwM2VkZXZfYWRkcik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtODMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjg0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgbGFuODY1eF9ldGh0b29sX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtODUtXFx0LmdldF9saW5rX2tzZXR0aW5ncyA9IHBoeV9ldGh0b29sX2dldF9saW5rX2tzZXR0aW5ncyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy04OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6ODk6c3RhdGljIGludCBsYW44NjV4X3NldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB2b2lkICphZGRyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy05MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjkxOlxcdHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy05Mi1cXHRzdHJ1Y3Qgc29ja2FkZHIgKmFkZHJlc3MgPSBhZGRyO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTEwMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MTAyOlxcdHJldCA9IGxhbjg2NXhfc2V0X2h3X21hY2FkZHIocHJpdiwgYWRkcmVzcy1cXHUwMDNlc2FfZGF0YSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTEwMy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jPTExMT1zdGF0aWMgdTMyIGdldF9hZGRyZXNzX2JpdCh1OCBhZGRyW0VUSF9BTEVOXSwgdTMyIGJpdClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xMTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjExNjpzdGF0aWMgdTMyIGxhbjg2NXhfaGFzaCh1OCBhZGRyW0VUSF9BTEVOXSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTE3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xMzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjEzMjpzdGF0aWMgaW50IGxhbjg2NXhfc2V0X3NwZWNpZmljX211bHRpY2FzdF9hZGRyKHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTEzMy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTM5LVxcdG5ldGRldl9mb3JfZWFjaF9tY19hZGRyKGhhLCBwcml2LVxcdTAwM2VuZXRkZXYpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MTQwOlxcdFxcdHUzMiBiaXRfbnVtID0gbGFuODY1eF9oYXNoKGhhLVxcdTAwM2VhZGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTQxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTE2My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MTY0OnN0YXRpYyBpbnQgbGFuODY1eF9zZXRfYWxsX211bHRpY2FzdF9hZGRyKHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTE2NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoxODY6c3RhdGljIGludCBsYW44NjV4X2NsZWFyX2FsbF9tdWx0aWNhc3RfYWRkcihzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0xODcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTIwNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjA1OnN0YXRpYyB2b2lkIGxhbjg2NXhfbXVsdGljYXN0X3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTIwNi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjIwNzpcXHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBsYW44NjV4X3ByaXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTIwOC1cXHRcXHRcXHRcXHRcXHRcXHQgbXVsdGljYXN0X3dvcmspO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTIxOC1cXHRcXHQvKiBFbmFibGluZyBhbGwgbXVsdGljYXN0IG1vZGUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjE5OlxcdFxcdGlmIChsYW44NjV4X3NldF9hbGxfbXVsdGljYXN0X2FkZHIocHJpdikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTIyMC1cXHRcXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjI2LVxcdFxcdC8qIEVuYWJsaW5nIHNwZWNpZmljIG11bHRpY2FzdCBtb2RlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjIyNzpcXHRcXHRpZiAobGFuODY1eF9zZXRfc3BlY2lmaWNfbXVsdGljYXN0X2FkZHIocHJpdikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTIyOC1cXHRcXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjM0LVxcdFxcdC8qIEVuYWJsaW5nIGxvY2FsIG1hYyBhZGRyZXNzIG9ubHkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjM1OlxcdFxcdGlmIChsYW44NjV4X2NsZWFyX2FsbF9tdWx0aWNhc3RfYWRkcihwcml2KSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjM2LVxcdFxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjI0NDpzdGF0aWMgdm9pZCBsYW44NjV4X3NldF9tdWx0aWNhc3RfbGlzdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNDUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyNDY6XFx0c3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI0Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjI1MTpzdGF0aWMgbmV0ZGV2X3R4X3QgbGFuODY1eF9zZW5kX3BhY2tldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNTItXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI1My17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjI1NDpcXHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjU1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI1OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MjU5OnN0YXRpYyBpbnQgbGFuODY1eF9od19kaXNhYmxlKHN0cnVjdCBsYW44NjV4X3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI2MC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjczLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyNzQ6c3RhdGljIGludCBsYW44NjV4X25ldF9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yNzUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyNzY6XFx0c3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI3Ny1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI4MC1cXHRwaHlfc3RvcChuZXRkZXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjI4MTpcXHRyZXQgPSBsYW44NjV4X2h3X2Rpc2FibGUocHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTI4Mi1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMjg5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzoyOTA6c3RhdGljIGludCBsYW44NjV4X2h3X2VuYWJsZShzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0yOTEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMwNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzA1OnN0YXRpYyBpbnQgbGFuODY1eF9uZXRfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMDYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMDc6XFx0c3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMwOC1cXHRpbnQgcmV0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMxMDpcXHRyZXQgPSBsYW44NjV4X2h3X2VuYWJsZShwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzExLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMyMzpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGxhbjg2NXhfbmV0ZGV2X29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzI0OlxcdC5uZG9fb3BlblxcdFxcdD0gbGFuODY1eF9uZXRfb3BlbixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzI1OlxcdC5uZG9fc3RvcFxcdFxcdD0gbGFuODY1eF9uZXRfY2xvc2UsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMyNjpcXHQubmRvX3N0YXJ0X3htaXRcXHRcXHQ9IGxhbjg2NXhfc2VuZF9wYWNrZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMyNzpcXHQubmRvX3NldF9yeF9tb2RlXFx0PSBsYW44NjV4X3NldF9tdWx0aWNhc3RfbGlzdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzI4OlxcdC5uZG9fc2V0X21hY19hZGRyZXNzXFx0PSBsYW44NjV4X3NldF9tYWNfYWRkcmVzcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzI5LVxcdC5uZG9fdmFsaWRhdGVfYWRkclxcdD0gZXRoX3ZhbGlkYXRlX2FkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzMyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozMzM6c3RhdGljIGludCBsYW44NjV4X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTMzNC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzM2LVxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjMzNzpcXHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zMzgtXFx0aW50IHJldDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzM5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozNDA6XFx0bmV0ZGV2ID0gYWxsb2NfZXRoZXJkZXYoc2l6ZW9mKHN0cnVjdCBsYW44NjV4X3ByaXYpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzQxLVxcdGlmICghbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM0Ny1cXHRzcGlfc2V0X2RydmRhdGEoc3BpLCBwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6MzQ4OlxcdElOSVRfV09SSyhcXHUwMDI2cHJpdi1cXHUwMDNlbXVsdGljYXN0X3dvcmssIGxhbjg2NXhfbXVsdGljYXN0X3dvcmtfaGFuZGxlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM0OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zOTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjM5NDpcXHRyZXQgPSBsYW44NjV4X3NldF9od19tYWNhZGRyKHByaXYsIG5ldGRldi1cXHUwMDNlZGV2X2FkZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zOTUtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQwMS1cXHRuZXRkZXYtXFx1MDAzZWlycSA9IHNwaS1cXHUwMDNlaXJxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0MDI6XFx0bmV0ZGV2LVxcdTAwM2VuZXRkZXZfb3BzID0gXFx1MDAyNmxhbjg2NXhfbmV0ZGV2X29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDAzOlxcdG5ldGRldi1cXHUwMDNlZXRodG9vbF9vcHMgPSBcXHUwMDI2bGFuODY1eF9ldGh0b29sX29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDA0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQxOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDIwOnN0YXRpYyB2b2lkIGxhbjg2NXhfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQyMS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQyMjpcXHRzdHJ1Y3QgbGFuODY1eF9wcml2ICpwcml2ID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQyMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00MjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQzMDpzdGF0aWMgY29uc3Qgc3RydWN0IHNwaV9kZXZpY2VfaWQgbGFuODY1eF9pZHNbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDMxLVxcdHsgLm5hbWUgPSBcXFwibGFuODY1MFxcXCIgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00MzQtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDM1Ok1PRFVMRV9ERVZJQ0VfVEFCTEUoc3BpLCBsYW44NjV4X2lkcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDM3OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGxhbjg2NXhfZHRfaWRzW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQzOC1cXHR7IC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxsYW44NjUwXFxcIiB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ0MS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0NDI6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbGFuODY1eF9kdF9pZHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ0NDpzdGF0aWMgc3RydWN0IHNwaV9kcml2ZXIgbGFuODY1eF9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ0NS1cXHQuZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NDYtXFx0XFx0Lm5hbWUgPSBEUlZfTkFNRSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM6NDQ3OlxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IGxhbjg2NXhfZHRfaWRzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NDgtXFx0IH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjQ0OTpcXHQucHJvYmUgPSBsYW44NjV4X3Byb2JlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0NTA6XFx0LnJlbW92ZSA9IGxhbjg2NXhfcmVtb3ZlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0NTE6XFx0LmlkX3RhYmxlID0gbGFuODY1eF9pZHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTQ1Mi19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0NTM6bW9kdWxlX3NwaV9kcml2ZXIobGFuODY1eF9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00NTQtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jPTg5PXN0YXRpYyBjb25zdCB1MTYgbGFuODY3eF9yZXZiMV9maXh1cF9tYXNrc1sxMl0gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTk5LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MTAwOnN0YXRpYyBjb25zdCB1MzIgbGFuODY1eF9yZXZiX2ZpeHVwX3JlZ2lzdGVyc1sxN10gPSB7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xMDEtXFx0MHgwMEQwLCAweDAwRTAsIDB4MDBFOSwgMHgwMEY1LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xMDctXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoxMDg6c3RhdGljIGNvbnN0IHUxNiBsYW44NjV4X3JldmJfZml4dXBfdmFsdWVzWzE3XSA9IHtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTEwOS1cXHQweDNGMzEsIDB4QzAwMCwgMHg5RTUwLCAweDFDRjgsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTExNS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjExNjpzdGF0aWMgY29uc3QgdTE2IGxhbjg2NXhfcmV2Yl9maXh1cF9jZmdfcmVnc1syXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTExNy1cXHQweDAwODQsIDB4MDA4QSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTE5LVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MTIwOnN0YXRpYyBjb25zdCB1MzIgbGFuODY1eF9yZXZiX3NxaV9maXh1cF9yZWdzWzEyXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTEyMS1cXHQweDAwQjAsIDB4MDBCMSwgMHgwMEIyLCAweDAwQjMsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTEyNS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjEyNjpzdGF0aWMgY29uc3QgdTE2IGxhbjg2NXhfcmV2Yl9zcWlfZml4dXBfdmFsdWVzWzEyXSA9IHtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTEyNy1cXHQweDAxMDMsIDB4MDkxMCwgMHgxRDI2LCAweDAwMkEsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTEzMS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjEzMjpzdGF0aWMgY29uc3QgdTE2IGxhbjg2NXhfcmV2Yl9zcWlfZml4dXBfY2ZnX3JlZ3NbM10gPSB7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xMzMtXFx0MHgwMEFELCAweDAwQUUsIDB4MDBBRixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM9MTQ2PXN0YXRpYyBjb25zdCB1MTYgbGFuODY3eF9yZXZkMF9maXh1cF92YWx1ZXNbOF0gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTE1OC0gKi9cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjE1OTpzdGF0aWMgaW50IGxhbjg2NXhfcmV2Yl9pbmRpcmVjdF9yZWFkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiBhZGRyKVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTYwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTc4LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MTc5OnN0YXRpYyBpbnQgbGFuODY1eF9nZW5lcmF0ZV9jZmdfb2Zmc2V0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBzOCBvZmZzZXRzW10pXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xODAte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xODQtXFx0Zm9yIChpbnQgaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGZpeHVwX3JlZ3MpOyBpKyspIHtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjE4NTpcXHRcXHRyZXQgPSBsYW44NjV4X3JldmJfaW5kaXJlY3RfcmVhZChwaHlkZXYsIGZpeHVwX3JlZ3NbaV0pO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMTg2LVxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0xOTktXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyMDA6c3RhdGljIGludCBsYW44NjV4X3JlYWRfY2ZnX3BhcmFtcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjAxLVxcdFxcdFxcdFxcdCAgIGNvbnN0IHUxNiBjZmdfcmVnc1tdLCB1MTYgY2ZnX3BhcmFtc1tdLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yMTYtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyMTc6c3RhdGljIGludCBsYW44NjV4X3dyaXRlX2NmZ19wYXJhbXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTIxOC1cXHRcXHRcXHRcXHQgICAgY29uc3QgdTE2IGNmZ19yZWdzW10sIHUxNiBjZmdfcGFyYW1zW10sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTIzMi1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjIzMzpzdGF0aWMgaW50IGxhbjg2NXhfc2V0dXBfY2ZncGFyYW0oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgczggb2Zmc2V0c1tdKVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjM0LXtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjIzNTpcXHR1MTYgY2ZnX3Jlc3VsdHNbQVJSQVlfU0laRShsYW44NjV4X3JldmJfZml4dXBfY2ZnX3JlZ3MpXTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjIzNjpcXHR1MTYgY2ZnX3BhcmFtc1tBUlJBWV9TSVpFKGxhbjg2NXhfcmV2Yl9maXh1cF9jZmdfcmVncyldO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjM3LVxcdGludCByZXQ7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yMzgtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyMzk6XFx0cmV0ID0gbGFuODY1eF9yZWFkX2NmZ19wYXJhbXMocGh5ZGV2LCBsYW44NjV4X3JldmJfZml4dXBfY2ZnX3JlZ3MsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNDAtXFx0XFx0XFx0XFx0ICAgICAgY2ZnX3BhcmFtcywgQVJSQVlfU0laRShjZmdfcGFyYW1zKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI0OC1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI0OTpcXHRyZXR1cm4gbGFuODY1eF93cml0ZV9jZmdfcGFyYW1zKHBoeWRldiwgbGFuODY1eF9yZXZiX2ZpeHVwX2NmZ19yZWdzLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjUwLVxcdFxcdFxcdFxcdFxcdGNmZ19yZXN1bHRzLCBBUlJBWV9TSVpFKGNmZ19yZXN1bHRzKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI1Mi1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI1MzpzdGF0aWMgaW50IGxhbjg2NXhfc2V0dXBfc3FpX2NmZ3BhcmFtKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHM4IG9mZnNldHNbXSlcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI1NC17XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyNTU6XFx0dTE2IGNmZ19yZXN1bHRzW0FSUkFZX1NJWkUobGFuODY1eF9yZXZiX3NxaV9maXh1cF9jZmdfcmVncyldO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MjU2OlxcdHUxNiBjZmdfcGFyYW1zW0FSUkFZX1NJWkUobGFuODY1eF9yZXZiX3NxaV9maXh1cF9jZmdfcmVncyldO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjU3LVxcdGludCByZXQ7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNTgtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyNTk6XFx0cmV0ID0gbGFuODY1eF9yZWFkX2NmZ19wYXJhbXMocGh5ZGV2LCBsYW44NjV4X3JldmJfc3FpX2ZpeHVwX2NmZ19yZWdzLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjYwLVxcdFxcdFxcdFxcdCAgICAgIGNmZ19wYXJhbXMsIEFSUkFZX1NJWkUoY2ZnX3BhcmFtcykpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNzAtXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyNzE6XFx0cmV0dXJuIGxhbjg2NXhfd3JpdGVfY2ZnX3BhcmFtcyhwaHlkZXYsIGxhbjg2NXhfcmV2Yl9zcWlfZml4dXBfY2ZnX3JlZ3MsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNzItXFx0XFx0XFx0XFx0XFx0Y2ZnX3Jlc3VsdHMsIEFSUkFZX1NJWkUoY2ZnX3Jlc3VsdHMpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjc0LVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6Mjc1OnN0YXRpYyBpbnQgbGFuODY1eF9yZXZiX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yNzYte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yODItXFx0ICovXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzoyODM6XFx0cmV0ID0gbGFuODY1eF9nZW5lcmF0ZV9jZmdfb2Zmc2V0cyhwaHlkZXYsIG9mZnNldHMpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjg0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTI4Ni1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI4NzpcXHRmb3IgKGludCBpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUobGFuODY1eF9yZXZiX2ZpeHVwX3JlZ2lzdGVycyk7IGkrKykge1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjg4LVxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI4OTpcXHRcXHRcXHRcXHQgICAgbGFuODY1eF9yZXZiX2ZpeHVwX3JlZ2lzdGVyc1tpXSxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI5MDpcXHRcXHRcXHRcXHQgICAgbGFuODY1eF9yZXZiX2ZpeHVwX3ZhbHVlc1tpXSk7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yOTEtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMjk0LVxcdFxcdGlmIChpID09IDEpIHtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjI5NTpcXHRcXHRcXHRyZXQgPSBsYW44NjV4X3NldHVwX2NmZ3BhcmFtKHBoeWRldiwgb2Zmc2V0cyk7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0yOTYtXFx0XFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMzAwLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MzAxOlxcdHJldCA9IGxhbjg2NXhfc2V0dXBfc3FpX2NmZ3BhcmFtKHBoeWRldiwgb2Zmc2V0cyk7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zMDItXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMzA0LVxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6MzA1OlxcdGZvciAoaW50IGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShsYW44NjV4X3JldmJfc3FpX2ZpeHVwX3JlZ3MpOyBpKyspIHtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTMwNi1cXHRcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzozMDc6XFx0XFx0XFx0XFx0ICAgIGxhbjg2NXhfcmV2Yl9zcWlfZml4dXBfcmVnc1tpXSxcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjMwODpcXHRcXHRcXHRcXHQgICAgbGFuODY1eF9yZXZiX3NxaV9maXh1cF92YWx1ZXNbaV0pO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMzA5LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jPTM0MT1zdGF0aWMgaW50IGxhbjg2N3hfcmV2Y19jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zNDktXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzozNTA6XFx0cmV0ID0gbGFuODY1eF9nZW5lcmF0ZV9jZmdfb2Zmc2V0cyhwaHlkZXYsIG9mZnNldHMpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMzUxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTM2NS1cXHRcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzozNjY6XFx0XFx0XFx0XFx0ICAgIGxhbjg2NXhfcmV2Yl9maXh1cF9yZWdpc3RlcnNbaV0sXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzozNjc6XFx0XFx0XFx0XFx0ICAgIGxhbjg2NXhfcmV2Yl9maXh1cF92YWx1ZXNbaV0pO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMzY4LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTM3MS1cXHRcXHRpZiAoaSA9PSAxKSB7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzozNzI6XFx0XFx0XFx0cmV0ID0gbGFuODY1eF9zZXR1cF9jZmdwYXJhbShwaHlkZXYsIG9mZnNldHMpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMzczLVxcdFxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTM3Ny1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjM3ODpcXHRyZXQgPSBsYW44NjV4X3NldHVwX3NxaV9jZmdwYXJhbShwaHlkZXYsIG9mZnNldHMpO1xcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmMtMzc5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTM4MS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jOjM4MjpcXHRmb3IgKGludCBpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUobGFuODY1eF9yZXZiX3NxaV9maXh1cF9yZWdzKTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy0zODMtXFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6Mzg0OlxcdFxcdFxcdFxcdCAgICBsYW44NjV4X3JldmJfc3FpX2ZpeHVwX3JlZ3NbaV0sXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYzozODU6XFx0XFx0XFx0XFx0ICAgIGxhbjg2NXhfcmV2Yl9zcWlfZml4dXBfdmFsdWVzW2ldKTtcXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTM4Ni1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYz02NTg9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG1pY3JvY2hpcF90MXNfZHJpdmVyW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTcxMy1cXHRcXHQuZmVhdHVyZXMgICAgICAgICAgID0gUEhZX0JBU0lDX1QxU19QMk1QX0ZFQVRVUkVTLFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6NzE0OlxcdFxcdC5jb25maWdfaW5pdCAgICAgICAgPSBsYW44NjV4X3JldmJfY29uZmlnX2luaXQsXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy03MTUtXFx0XFx0LnJlYWRfc3RhdHVzICAgICAgICA9IGxhbjg2eHhfcmVhZF9zdGF0dXMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjIyOjA5LjI0MjI0NjQ1NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIxODU2MTczMzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6XG5cbioqQ2hlY2tpbmcgdGhlIE9BX1RDNiBJbXBsZW1lbnRhdGlvbiBhbmQgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBsZXQncyBkaXZlIGludG8gYG9hX3RjNi5jYCBhbmQgaXRzIGFzc29jaWF0ZWQgS2NvbmZpZyBmaWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gT0FfVEM2LiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgS2NvbmZpZyBlbnRyaWVzIHRoYXQgY29udHJvbCB3aGV0aGVyIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBpbmNsdWRlZCBpbiB0aGUgYnVpbGQuIEknbSBsb29raW5nIGZvciB0aGUgZGVmaW5pdGlvbnMgcmVsYXRlZCB0byBgT0FfVEM2YCBpdHNlbGYsIG9mIGNvdXJzZSwgYnV0IEkgc2hvdWxkIGFsc28gc2VlIGhvdyB0aGUgYE1JQ1JPQ0hJUF9UMVNgIGRyaXZlciBpbnRlcmFjdHMgd2l0aCBpdCwgaWYgYXQgYWxsLiBJdCdzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJlbGF0aW9uc2hpcHMsIGFuZCB3aGV0aGVyIHRoZXNlIGZlYXR1cmVzIGFyZSBtdXR1YWxseSBleGNsdXNpdmUsIG9yIGhhdmUgc3BlY2lmaWMgY29uZGl0aW9ucyBhdHRhY2hlZC4gSSdtIG1lbnRhbGx5IHBhcnNpbmcgdGhlIEtjb25maWcgZW50cmllcyB0byBxdWlja2x5IGdyYXNwIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoaXMgd2lsbCBoZWxwIG1lIHF1aWNrbHkgdW5kZXJzdGFuZCBob3cgdG8gZW5hYmxlIG9yIGRpc2FibGUgdGhlIHJlbGV2YW50IGNvZGUgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTgzOSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjIyOjExLjQyNzg2NTkzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMTUyMzcxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJPQV9UQzZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA2MTIgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L0tjb25maWc9MTM5PWNvbmZpZyBFVEhPQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvS2NvbmZpZy0xNDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvS2NvbmZpZzoxNDk6Y29uZmlnIE9BX1RDNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L0tjb25maWctMTUwLVxcdHRyaXN0YXRlIFxcXCJPUEVOIEFsbGlhbmNlIFRDNiAxMEJBU0UtVDF4IE1BQy1QSFkgc3VwcG9ydFxcXCIgaWYgQ09NUElMRV9URVNUXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9NYWtlZmlsZT0xMDY9b2JqLSQoQ09ORklHX05FVF9WRU5ET1JfUEVOU0FORE8pICs9IHBlbnNhbmRvL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L01ha2VmaWxlOjEwNzpvYmotJChDT05GSUdfT0FfVEM2KSArPSBvYV90YzYub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L01ha2VmaWxlLTEwOC1vYmotJChDT05GSUdfTkVUX1ZFTkRPUl9aVEUpICs9IHp0ZS9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9LY29uZmlnPTI5PWNvbmZpZyBBRElOMTE0MFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL0tjb25maWctMzItXFx0c2VsZWN0IEFESU4xMTQwX1BIWVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9LY29uZmlnOjMzOlxcdHNlbGVjdCBPQV9UQzZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvS2NvbmZpZy0zNC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYz0xNDM9c3RhdGljIGludCBhZGluMTE0MF9tYWNfZmlsdGVyX3NldChzdHJ1Y3QgYWRpbjExNDBfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTE1NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYzoxNTY6XFx0cmV0ID0gb2FfdGM2X3dyaXRlX3JlZ2lzdGVyX21tcyhwcml2LVxcdTAwM2V0YzYsIE9BX1RDNl9NQUNfTU1TMSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy0xNTctXFx0XFx0XFx0XFx0XFx0cmVnX2FkZHJlc3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy0xNjQtXFx0cmVnX2FkZHJlc3MgPSBBRElOMTE0MF9NQUNfQUREUl9GSUxUX0xXUl9SRUcgKyAyICogc2xvdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYzoxNjU6XFx0cmV0ID0gb2FfdGM2X3dyaXRlX3JlZ2lzdGVyX21tcyhwcml2LVxcdTAwM2V0YzYsIE9BX1RDNl9NQUNfTU1TMSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy0xNjYtXFx0XFx0XFx0XFx0XFx0cmVnX2FkZHJlc3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy0xODAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM6MTgxOlxcdHJldCA9IG9hX3RjNl93cml0ZV9yZWdpc3Rlcl9tbXMocHJpdi1cXHUwMDNldGM2LCBPQV9UQzZfTUFDX01NUzEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtMTgyLVxcdFxcdFxcdFxcdFxcdHJlZ19hZGRyZXNzLCB2YWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtMTg4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jOjE4OTpcXHRyZXR1cm4gb2FfdGM2X3dyaXRlX3JlZ2lzdGVyX21tcyhwcml2LVxcdTAwM2V0YzYsIE9BX1RDNl9NQUNfTU1TMSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy0xOTAtXFx0XFx0XFx0XFx0XFx0IHJlZ19hZGRyZXNzLCB2YWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM9MjUwPXN0YXRpYyBpbnQgYWRpbjExNDBfcHJvbWlzY3VvdXNfbW9kZShzdHJ1Y3QgYWRpbjExNDBfcHJpdiAqcHJpdiwgYm9vbCBlbmFibGVkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtMjU0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jOjI1NTpcXHRyZXQgPSBvYV90YzZfcmVhZF9yZWdpc3Rlcihwcml2LVxcdTAwM2V0YzYsIE9BX1RDNl9SRUdfQ09ORklHMiwgXFx1MDAyNnZhbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtMjU2LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy0yNjMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM6MjY0OlxcdHJldHVybiBvYV90YzZfd3JpdGVfcmVnaXN0ZXIocHJpdi1cXHUwMDNldGM2LCBPQV9UQzZfUkVHX0NPTkZJRzIsIHZhbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtMjY1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jPTM0MT1zdGF0aWMgdm9pZCBhZGluMTE0MF9zdGF0c193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTM1MS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShhZGluMTE0MF9zdGF0X3JlZ3MpOyBpKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYzozNTI6XFx0XFx0cmV0ID0gb2FfdGM2X3JlYWRfcmVnaXN0ZXJfbW1zKHByaXYtXFx1MDAzZXRjNiwgT0FfVEM2X01BQ19NTVMxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTM1My1cXHRcXHRcXHRcXHRcXHQgICAgICAgYWRpbjExNDBfc3RhdF9yZWdzW2ldLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM9MzY2PXN0YXRpYyBpbnQgYWRpbjExNDBfY29uZmlndXJlKHN0cnVjdCBhZGluMTE0MF9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtMzc1LVxcdC8qIERpc2FibGUgTUFDIGxvb3BiYWNrICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM6Mzc2OlxcdHJldCA9IG9hX3RjNl93cml0ZV9yZWdpc3Rlcl9tbXMocHJpdi1cXHUwMDNldGM2LCBPQV9UQzZfTUFDX01NUzEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtMzc3LVxcdFxcdFxcdFxcdFxcdEFESU4xMTQwX01BQ19QMV9MT09QX0FERFJfUkVHLCAweDApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtMzgwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jOjM4MTpcXHRyZXQgPSBvYV90YzZfcmVhZF9yZWdpc3Rlcihwcml2LVxcdTAwM2V0YzYsIE9BX1RDNl9SRUdfQ09ORklHMiwgXFx1MDAyNnJlZ192YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTM4Mi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtMzg2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jOjM4NzpcXHRyZXQgPSBvYV90YzZfd3JpdGVfcmVnaXN0ZXIocHJpdi1cXHUwMDNldGM2LCBPQV9UQzZfUkVHX0NPTkZJRzIsIHJlZ192YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTM4OC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM9NzA5PXN0YXRpYyBpbnQgYWRpbjExNDBfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTcyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYzo3MjU6XFx0dGM2X3F1aXJrcy5xdWlya19mbGFncyA9IE9BX1RDNl9CUk9LRU5fUEhZO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTcyNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L0tjb25maWc9OD1jb25maWcgTEFOODY1WFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvS2NvbmZpZy0xMC1cXHRkZXBlbmRzIG9uIFNQSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L0tjb25maWc6MTE6XFx0c2VsZWN0IE9BX1RDNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L0tjb25maWctMTItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jPTMzMz1zdGF0aWMgaW50IGxhbjg2NXhfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjM1MDpcXHR0YzZfcXVpcmtzLnF1aXJrX2ZsYWdzID0gT0FfVEM2X1BIWV9JTlQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jLTM1MS1cXHRwcml2LVxcdTAwM2V0YzYgPSBvYV90YzZfaW5pdChzcGksIG5ldGRldiwgXFx1MDAyNnRjNl9xdWlya3MpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTctLyogQ29udHJvbCBjb21tYW5kIGhlYWRlciAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjE4OiNkZWZpbmUgT0FfVEM2X0NUUkxfSEVBREVSX0RBVEFfTk9UX0NUUkxcXHRCSVQoMzEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTk6I2RlZmluZSBPQV9UQzZfQ1RSTF9IRUFERVJfV1JJVEVfTk9UX1JFQURcXHRCSVQoMjkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MjA6I2RlZmluZSBPQV9UQzZfQ1RSTF9IRUFERVJfTUVNX01BUF9TRUxFQ1RPUlxcdEdFTk1BU0soMjcsIDI0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjIxOiNkZWZpbmUgT0FfVEM2X0NUUkxfSEVBREVSX0FERFJcXHRcXHRcXHRHRU5NQVNLKDIzLCA4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjIyOiNkZWZpbmUgT0FfVEM2X0NUUkxfSEVBREVSX0xFTkdUSFxcdFxcdEdFTk1BU0soNywgMSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoyMzojZGVmaW5lIE9BX1RDNl9DVFJMX0hFQURFUl9QQVJJVFlcXHRcXHRCSVQoMClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0yNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0yNS0vKiBEYXRhIGhlYWRlciAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjI2OiNkZWZpbmUgT0FfVEM2X0RBVEFfSEVBREVSX0RBVEFfTk9UX0NUUkxcXHRCSVQoMzEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6Mjc6I2RlZmluZSBPQV9UQzZfREFUQV9IRUFERVJfREFUQV9WQUxJRFxcdFxcdEJJVCgyMSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoyODojZGVmaW5lIE9BX1RDNl9EQVRBX0hFQURFUl9TVEFSVF9WQUxJRFxcdFxcdEJJVCgyMClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoyOTojZGVmaW5lIE9BX1RDNl9EQVRBX0hFQURFUl9TVEFSVF9XT1JEX09GRlNFVFxcdEdFTk1BU0soMTksIDE2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjMwOiNkZWZpbmUgT0FfVEM2X0RBVEFfSEVBREVSX0VORF9WQUxJRFxcdFxcdEJJVCgxNClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzozMTojZGVmaW5lIE9BX1RDNl9EQVRBX0hFQURFUl9FTkRfQllURV9PRkZTRVRcXHRHRU5NQVNLKDEzLCA4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjMyOiNkZWZpbmUgT0FfVEM2X0RBVEFfSEVBREVSX1BBUklUWVxcdFxcdEJJVCgwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTM0LS8qIERhdGEgZm9vdGVyICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MzU6I2RlZmluZSBPQV9UQzZfREFUQV9GT09URVJfRVhURU5ERURfU1RTXFx0XFx0QklUKDMxKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjM2OiNkZWZpbmUgT0FfVEM2X0RBVEFfRk9PVEVSX1JYRF9IRUFERVJfQkFEXFx0QklUKDMwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjM3OiNkZWZpbmUgT0FfVEM2X0RBVEFfRk9PVEVSX0NPTkZJR19TWU5DXFx0XFx0QklUKDI5KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjM4OiNkZWZpbmUgT0FfVEM2X0RBVEFfRk9PVEVSX1JYX0NIVU5LU1xcdFxcdEdFTk1BU0soMjgsIDI0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjM5OiNkZWZpbmUgT0FfVEM2X0RBVEFfRk9PVEVSX0RBVEFfVkFMSURcXHRcXHRCSVQoMjEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NDA6I2RlZmluZSBPQV9UQzZfREFUQV9GT09URVJfU1RBUlRfVkFMSURcXHRcXHRCSVQoMjApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NDE6I2RlZmluZSBPQV9UQzZfREFUQV9GT09URVJfU1RBUlRfV09SRF9PRkZTRVRcXHRHRU5NQVNLKDE5LCAxNilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo0MjojZGVmaW5lIE9BX1RDNl9EQVRBX0ZPT1RFUl9FTkRfVkFMSURcXHRcXHRCSVQoMTQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NDM6I2RlZmluZSBPQV9UQzZfREFUQV9GT09URVJfRU5EX0JZVEVfT0ZGU0VUXFx0R0VOTUFTSygxMywgOClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo0NDojZGVmaW5lIE9BX1RDNl9EQVRBX0ZPT1RFUl9UWF9DUkVESVRTXFx0XFx0R0VOTUFTSyg1LCAxKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTQ1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjQ2OiNkZWZpbmUgT0FfVEM2X0NUUkxfUFJPVF9SRVBMWV9TSVpFXFx0XFx0NFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjQ3OiNkZWZpbmUgT0FfVEM2X0NUUkxfSEVBREVSX1NJWkVcXHRcXHRcXHQ0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NDg6I2RlZmluZSBPQV9UQzZfQ1RSTF9SRUdfVkFMVUVfU0laRVxcdFxcdDRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo0OTojZGVmaW5lIE9BX1RDNl9DVFJMX0lHTk9SRURfU0laRVxcdFxcdDRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo1MDojZGVmaW5lIE9BX1RDNl9DVFJMX01BWF9SRUdJU1RFUlNcXHRcXHQxMjhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo1MTojZGVmaW5lIE9BX1RDNl9DVFJMX1NQSV9CVUZfU0laRVxcdChPQV9UQzZfQ1RSTF9IRUFERVJfU0laRSArXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjUyOlxcdFxcdFxcdFxcdFxcdChPQV9UQzZfQ1RSTF9NQVhfUkVHSVNURVJTICpcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NTM6XFx0XFx0XFx0XFx0XFx0KE9BX1RDNl9DVFJMX1JFR19WQUxVRV9TSVpFICtcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NTQ6XFx0XFx0XFx0XFx0XFx0T0FfVEM2X0NUUkxfUFJPVF9SRVBMWV9TSVpFKSkgK1xcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo1NTpcXHRcXHRcXHRcXHRcXHRPQV9UQzZfQ1RSTF9JR05PUkVEX1NJWkUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NTc6I2RlZmluZSBPQV9UQzZfQ0hVTktfUEFZTE9BRF9TSVpFXFx0XFx0NjRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo1ODojZGVmaW5lIE9BX1RDNl9EQVRBX0hFQURFUl9TSVpFXFx0XFx0XFx0NFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjU5OiNkZWZpbmUgT0FfVEM2X0NIVU5LX1NJWkVcXHRcXHRcXHQoT0FfVEM2X0RBVEFfSEVBREVSX1NJWkUgK1xcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo2MDpcXHRcXHRcXHRcXHRcXHRcXHRPQV9UQzZfQ0hVTktfUEFZTE9BRF9TSVpFKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjYxOiNkZWZpbmUgT0FfVEM2X01BWF9UWF9DSFVOS1NcXHRcXHRcXHQ0OFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjYyOiNkZWZpbmUgT0FfVEM2X1NQSV9EQVRBX0JVRl9TSVpFXFx0XFx0KE9BX1RDNl9NQVhfVFhfQ0hVTktTICpcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NjM6XFx0XFx0XFx0XFx0XFx0XFx0T0FfVEM2X0NIVU5LX1NJWkUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNjQtI2RlZmluZSBTVEFUVVMwX1JFU0VUQ19QT0xMX0RFTEFZXFx0XFx0MTAwMFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6Njc6I2RlZmluZSBPQV9UQzZfUkVHX01NU19NQVNLXFx0XFx0R0VOTUFTSygxOSwgMTYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNjgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz05Nz1lbnVtIG9hX3RjNl9oZWFkZXJfdHlwZSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6OTg6XFx0T0FfVEM2X0NUUkxfSEVBREVSLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjk5OlxcdE9BX1RDNl9EQVRBX0hFQURFUixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMDAtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTEwMj1lbnVtIG9hX3RjNl9yZWdpc3Rlcl9vcCB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTAzOlxcdE9BX1RDNl9DVFJMX1JFR19SRUFEID0gMCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMDQ6XFx0T0FfVEM2X0NUUkxfUkVHX1dSSVRFID0gMSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMDUtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTEwNz1lbnVtIG9hX3RjNl9kYXRhX3ZhbGlkX2luZm8ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjEwODpcXHRPQV9UQzZfREFUQV9JTlZBTElELFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjEwOTpcXHRPQV9UQzZfREFUQV9WQUxJRCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMTAtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTExMj1lbnVtIG9hX3RjNl9kYXRhX3N0YXJ0X3ZhbGlkX2luZm8ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjExMzpcXHRPQV9UQzZfREFUQV9TVEFSVF9JTlZBTElELFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjExNDpcXHRPQV9UQzZfREFUQV9TVEFSVF9WQUxJRCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMTUtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTExNz1lbnVtIG9hX3RjNl9kYXRhX2VuZF92YWxpZF9pbmZvIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMTg6XFx0T0FfVEM2X0RBVEFfRU5EX0lOVkFMSUQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTE5OlxcdE9BX1RDNl9EQVRBX0VORF9WQUxJRCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMjAtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTEyMj1zdGF0aWMgaW50IG9hX3RjNl9zcGlfdHJhbnNmZXIoc3RydWN0IG9hX3RjNiAqdGM2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTI3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjEyODpcXHRpZiAoaGVhZGVyX3R5cGUgPT0gT0FfVEM2X0RBVEFfSEVBREVSKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTI5LVxcdFxcdHhmZXIudHhfYnVmID0gdGM2LVxcdTAwM2VzcGlfZGF0YV90eF9idWY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz0xNTY9c3RhdGljIF9fYmUzMiBvYV90YzZfcHJlcGFyZV9jdHJsX2hlYWRlcih1MzIgYWRkciwgdTggbGVuZ3RoLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTYwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjE2MTpcXHRoZWFkZXIgPSBGSUVMRF9QUkVQKE9BX1RDNl9DVFJMX0hFQURFUl9EQVRBX05PVF9DVFJMLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjE2MjpcXHRcXHRcXHQgICAgT0FfVEM2X0NUUkxfSEVBREVSKSB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTYzOlxcdFxcdCBGSUVMRF9QUkVQKE9BX1RDNl9DVFJMX0hFQURFUl9XUklURV9OT1RfUkVBRCwgcmVnX29wKSB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTY0OlxcdFxcdCBGSUVMRF9QUkVQKE9BX1RDNl9DVFJMX0hFQURFUl9NRU1fTUFQX1NFTEVDVE9SLCBhZGRyIFxcdTAwM2VcXHUwMDNlIDE2KSB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTY1OlxcdFxcdCBGSUVMRF9QUkVQKE9BX1RDNl9DVFJMX0hFQURFUl9BRERSLCBhZGRyKSB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTY2OlxcdFxcdCBGSUVMRF9QUkVQKE9BX1RDNl9DVFJMX0hFQURFUl9MRU5HVEgsIGxlbmd0aCAtIDEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjE2NzpcXHRoZWFkZXIgfD0gRklFTERfUFJFUChPQV9UQzZfQ1RSTF9IRUFERVJfUEFSSVRZLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTE2OC1cXHRcXHRcXHQgICAgIG9hX3RjNl9nZXRfcGFyaXR5KGhlYWRlcikpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9MTczPXN0YXRpYyB2b2lkIG9hX3RjNl91cGRhdGVfY3RybF93cml0ZV9kYXRhKHN0cnVjdCBvYV90YzYgKnRjNiwgdTMyIHZhbHVlW10sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xNzUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjE3NjpcXHRfX2JlMzIgKnR4X2J1ZiA9IHRjNi1cXHUwMDNlc3BpX2N0cmxfdHhfYnVmICsgT0FfVEM2X0NUUkxfSEVBREVSX1NJWkU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTc3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9MTg1PXN0YXRpYyB1MTYgb2FfdGM2X2NhbGN1bGF0ZV9jdHJsX2J1Zl9zaXplKHU4IGxlbmd0aCwgYm9vbCBjdHJsX3Byb3QpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTg2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxODc6XFx0dTMyIHJlcGx5X3NpemUgPSBPQV9UQzZfQ1RSTF9SRUdfVkFMVUVfU0laRTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xODgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTg5LVxcdGlmIChjdHJsX3Byb3QpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTkwOlxcdFxcdHJlcGx5X3NpemUgKz0gT0FfVEM2X0NUUkxfUFJPVF9SRVBMWV9TSVpFO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTE5MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTE5NS1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxOTY6XFx0cmV0dXJuIE9BX1RDNl9DVFJMX0hFQURFUl9TSVpFICsgcmVwbHlfc2l6ZSAqIGxlbmd0aCArXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTk3OlxcdCAgICAgICBPQV9UQzZfQ1RSTF9JR05PUkVEX1NJWkU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTk4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTIwMD1zdGF0aWMgdm9pZCBvYV90YzZfcHJlcGFyZV9jdHJsX3NwaV9idWYoc3RydWN0IG9hX3RjNiAqdGM2LCB1MzIgYWRkcmVzcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTIwOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoyMTA6XFx0aWYgKHJlZ19vcCA9PSBPQV9UQzZfQ1RSTF9SRUdfV1JJVEUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMjExLVxcdFxcdG9hX3RjNl91cGRhdGVfY3RybF93cml0ZV9kYXRhKHRjNiwgdmFsdWUsIGxlbmd0aCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz0yMTQ9c3RhdGljIGludCBvYV90YzZfY2hlY2tfY3RybF93cml0ZV9yZXBseShzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4IHNpemUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0yMTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MjE5OlxcdHJ4X2J1ZiArPSBPQV9UQzZfQ1RSTF9JR05PUkVEX1NJWkU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMjIwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMjIzLVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjIyNDpcXHRpZiAobWVtY21wKHR4X2J1ZiwgcnhfYnVmLCBzaXplIC0gT0FfVEM2X0NUUkxfSUdOT1JFRF9TSVpFKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0yMjUtXFx0XFx0cmV0dXJuIC1FUFJPVE87XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz0yMzA9c3RhdGljIGludCBvYV90YzZfY2hlY2tfY3RybF9yZWFkX3JlcGx5KHN0cnVjdCBvYV90YzYgKnRjNiwgdTggbGVuZ3RoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTIzMS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MjMyOlxcdF9fYmUzMiAqcnhfYnVmID0gdGM2LVxcdTAwM2VzcGlfY3RybF9yeF9idWYgKyBPQV9UQzZfQ1RSTF9JR05PUkVEX1NJWkU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMjMzLVxcdF9fYmUzMiAqdHhfYnVmID0gdGM2LVxcdTAwM2VzcGlfY3RybF90eF9idWY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz0yNjA9c3RhdGljIHZvaWQgb2FfdGM2X2NvcHlfY3RybF9yZWFkX2RhdGEoc3RydWN0IG9hX3RjNiAqdGM2LCB1MzIgdmFsdWVbXSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTI2Mi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MjYzOlxcdF9fYmUzMiAqcnhfYnVmID0gdGM2LVxcdTAwM2VzcGlfY3RybF9yeF9idWYgKyBPQV9UQzZfQ1RSTF9JR05PUkVEX1NJWkUgK1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjI2NDpcXHRcXHRcXHQgT0FfVEM2X0NUUkxfSEVBREVSX1NJWkU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMjY1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9Mjc1PXN0YXRpYyBpbnQgb2FfdGM2X3BlcmZvcm1fY3RybChzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHUzMiBhZGRyZXNzLCB1MzIgdmFsdWVbXSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTI4Ni1cXHQvKiBQZXJmb3JtIFNQSSB0cmFuc2ZlciAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjI4NzpcXHRyZXQgPSBvYV90YzZfc3BpX3RyYW5zZmVyKHRjNiwgT0FfVEM2X0NUUkxfSEVBREVSLCBzaXplKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0yODgtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMjk0LVxcdC8qIENoZWNrIGVjaG9lZC9yZWNlaXZlZCBjb250cm9sIHdyaXRlIGNvbW1hbmQgcmVwbHkgZm9yIGVycm9ycyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjI5NTpcXHRpZiAocmVnX29wID09IE9BX1RDNl9DVFJMX1JFR19XUklURSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0yOTYtXFx0XFx0cmV0dXJuIG9hX3RjNl9jaGVja19jdHJsX3dyaXRlX3JlcGx5KHRjNiwgc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz0zMTk9aW50IG9hX3RjNl9yZWFkX3JlZ2lzdGVycyhzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHUzMiBhZGRyZXNzLCB1MzIgdmFsdWVbXSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTMyMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzozMjQ6XFx0aWYgKCFsZW5ndGggfHwgbGVuZ3RoIFxcdTAwM2UgT0FfVEM2X0NUUkxfTUFYX1JFR0lTVEVSUykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTMyNS1cXHRcXHRkZXZfZXJyKFxcdTAwMjZ0YzYtXFx1MDAzZXNwaS1cXHUwMDNlZGV2LCBcXFwiSW52YWxpZCByZWdpc3RlciBsZW5ndGggcGFyYW1ldGVyXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTMzMC1cXHRyZXQgPSBvYV90YzZfcGVyZm9ybV9jdHJsKHRjNiwgYWRkcmVzcywgdmFsdWUsIGxlbmd0aCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzozMzE6XFx0XFx0XFx0XFx0ICBPQV9UQzZfQ1RSTF9SRUdfUkVBRCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMzMyLVxcdG11dGV4X3VubG9jayhcXHUwMDI2dGM2LVxcdTAwM2VzcGlfY3RybF9sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTM2Mj1pbnQgb2FfdGM2X3JlYWRfcmVnaXN0ZXJfbW1zKHN0cnVjdCBvYV90YzYgKnRjNiwgdTggbW1zLCB1MTYgYWRkcmVzcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTM2Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzozNjc6XFx0bW1zX3JlZyA9IEZJRUxEX1BSRVAoT0FfVEM2X1JFR19NTVNfTUFTSywgbW1zKSB8IGFkZHJlc3M7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMzY4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9Mzg0PWludCBvYV90YzZfd3JpdGVfcmVnaXN0ZXJzKHN0cnVjdCBvYV90YzYgKnRjNiwgdTMyIGFkZHJlc3MsIHUzMiB2YWx1ZVtdLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMzg4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjM4OTpcXHRpZiAoIWxlbmd0aCB8fCBsZW5ndGggXFx1MDAzZSBPQV9UQzZfQ1RSTF9NQVhfUkVHSVNURVJTKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMzkwLVxcdFxcdGRldl9lcnIoXFx1MDAyNnRjNi1cXHUwMDNlc3BpLVxcdTAwM2VkZXYsIFxcXCJJbnZhbGlkIHJlZ2lzdGVyIGxlbmd0aCBwYXJhbWV0ZXJcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMzk1LVxcdHJldCA9IG9hX3RjNl9wZXJmb3JtX2N0cmwodGM2LCBhZGRyZXNzLCB2YWx1ZSwgbGVuZ3RoLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjM5NjpcXHRcXHRcXHRcXHQgIE9BX1RDNl9DVFJMX1JFR19XUklURSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMzk3LVxcdG11dGV4X3VubG9jayhcXHUwMDI2dGM2LVxcdTAwM2VzcGlfY3RybF9sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTQyNz1pbnQgb2FfdGM2X3dyaXRlX3JlZ2lzdGVyX21tcyhzdHJ1Y3Qgb2FfdGM2ICp0YzYsIHU4IG1tcywgdTE2IGFkZHJlc3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy00MzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NDMyOlxcdG1tc19yZWcgPSBGSUVMRF9QUkVQKE9BX1RDNl9SRUdfTU1TX01BU0ssIG1tcykgfCBhZGRyZXNzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTQzMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTQzOD1zdGF0aWMgaW50IG9hX3RjNl9jaGVja19waHlfcmVnX2RpcmVjdF9hY2Nlc3NfY2FwYWJpbGl0eShzdHJ1Y3Qgb2FfdGM2ICp0YzYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy00NDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NDQzOlxcdHJldCA9IG9hX3RjNl9yZWFkX3JlZ2lzdGVyKHRjNiwgT0FfVEM2X1JFR19TVERDQVAsIFxcdTAwMjZyZWd2YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTQ0NC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNDQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjQ0NzpcXHRpZiAoIShyZWd2YWwgXFx1MDAyNiBPQV9UQzZfU1REQ0FQX0RJUkVDVF9QSFlfUkVHX0FDQ0VTUykpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNDQ4LVxcdFxcdHJldHVybiAtRU5PREVWO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9NDU4PXN0YXRpYyBpbnQgb2FfdGM2X21kaW9idXNfcmVhZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZ251bSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTQ2My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo0NjQ6XFx0cmV0ID0gb2FfdGM2X3JlYWRfcmVnaXN0ZXIodGM2LCBPQV9UQzZfUEhZX1NURF9SRUdfQUREUl9CQVNFIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo0NjU6XFx0XFx0XFx0XFx0ICAgKHJlZ251bSBcXHUwMDI2IE9BX1RDNl9QSFlfU1REX1JFR19BRERSX01BU0spLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTQ2Ni1cXHRcXHRcXHRcXHQgICBcXHUwMDI2cmVndmFsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTQ3Mz1zdGF0aWMgaW50IG9hX3RjNl9tZGlvYnVzX3dyaXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgcmVnbnVtLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNDc3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjQ3ODpcXHRyZXR1cm4gb2FfdGM2X3dyaXRlX3JlZ2lzdGVyKHRjNiwgT0FfVEM2X1BIWV9TVERfUkVHX0FERFJfQkFTRSB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NDc5OlxcdFxcdFxcdFxcdCAgICAgKHJlZ251bSBcXHUwMDI2IE9BX1RDNl9QSFlfU1REX1JFR19BRERSX01BU0spLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTQ4MC1cXHRcXHRcXHRcXHQgICAgIHZhbCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz00ODM9c3RhdGljIGludCBvYV90YzZfZ2V0X3BoeV9jNDVfbW1zKGludCBkZXZudW0pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy00ODYtXFx0Y2FzZSBNRElPX01NRF9QQ1M6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NDg3OlxcdFxcdHJldHVybiBPQV9UQzZfUEhZX0M0NV9QQ1NfTU1TMjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy00ODgtXFx0Y2FzZSBNRElPX01NRF9QTUFQTUQ6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NDg5OlxcdFxcdHJldHVybiBPQV9UQzZfUEhZX0M0NV9QTUFfUE1EX01NUzM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNDkwLVxcdGNhc2UgTURJT19NTURfVkVORDI6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NDkxOlxcdFxcdHJldHVybiBPQV9UQzZfUEhZX0M0NV9WU19QTENBX01NUzQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNDkyLVxcdGNhc2UgTURJT19NTURfQU46XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NDkzOlxcdFxcdHJldHVybiBPQV9UQzZfUEhZX0M0NV9BVVRPX05FR19NTVM1O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTQ5NC1cXHRjYXNlIE1ESU9fTU1EX1BPV0VSX1VOSVQ6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NDk1OlxcdFxcdHJldHVybiBPQV9UQzZfUEhZX0M0NV9QT1dFUl9VTklUX01NUzY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNDk2LVxcdGRlZmF1bHQ6XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz01NzM9c3RhdGljIGludCBvYV90YzZfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3Qgb2FfdGM2ICp0YzYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy02MDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NjA0OlxcdGlmICh0YzYtXFx1MDAzZXF1aXJrX2ZsYWdzIFxcdTAwMjYgT0FfVEM2X1BIWV9JTlQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy02MDUtXFx0XFx0cmV0ID0gb2FfdGM2X3BoeV9pcnFfc2V0dXAodGM2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTYyMC1cXHRcXHRuZXRkZXZfZXJyKHRjNi1cXHUwMDNlbmV0ZGV2LCBcXFwiQ291bGQgbm90IHJlZ2lzdGVyIE1ESU8gYnVzXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo2MjE6XFx0XFx0aWYgKHRjNi1cXHUwMDNlcXVpcmtfZmxhZ3MgXFx1MDAyNiBPQV9UQzZfUEhZX0lOVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy02MjItXFx0XFx0XFx0b2FfdGM2X3BoeV9pcnFfdGVhcmRvd24odGM2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTYzMD1zdGF0aWMgdm9pZCBvYV90YzZfbWRpb2J1c191bnJlZ2lzdGVyKHN0cnVjdCBvYV90YzYgKnRjNilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTYzMi1cXHRtZGlvYnVzX3VucmVnaXN0ZXIodGM2LVxcdTAwM2VtZGlvYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo2MzM6XFx0aWYgKHRjNi1cXHUwMDNlcXVpcmtfZmxhZ3MgXFx1MDAyNiBPQV9UQzZfUEhZX0lOVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy02MzQtXFx0XFx0b2FfdGM2X3BoeV9pcnFfdGVhcmRvd24odGM2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTYzOD1zdGF0aWMgaW50IG9hX3RjNl9waHlfaW5pdChzdHJ1Y3Qgb2FfdGM2ICp0YzYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy02NDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NjQyOlxcdGlmICh0YzYtXFx1MDAzZXF1aXJrX2ZsYWdzIFxcdTAwMjYgT0FfVEM2X0JST0tFTl9QSFkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNjQzLVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9Njc5PXN0YXRpYyB2b2lkIG9hX3RjNl9waHlfZXhpdChzdHJ1Y3Qgb2FfdGM2ICp0YzYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNjgwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo2ODE6XFx0aWYgKHRjNi1cXHUwMDNlcXVpcmtfZmxhZ3MgXFx1MDAyNiBPQV9UQzZfQlJPS0VOX1BIWSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy02ODItXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9Njg4PXN0YXRpYyBpbnQgb2FfdGM2X3JlYWRfc3RhdHVzMChzdHJ1Y3Qgb2FfdGM2ICp0YzYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy02OTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NjkzOlxcdHJldCA9IG9hX3RjNl9yZWFkX3JlZ2lzdGVyKHRjNiwgT0FfVEM2X1JFR19TVEFUVVMwLCBcXHUwMDI2cmVndmFsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy02OTQtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9NzAzPXN0YXRpYyBpbnQgb2FfdGM2X3N3X3Jlc2V0X21hY3BoeShzdHJ1Y3Qgb2FfdGM2ICp0YzYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNzA0LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo3MDU6XFx0dTMyIHJlZ3ZhbCA9IE9BX1RDNl9SRVNFVF9TV1JFU0VUO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTcwNi1cXHRpbnQgcmV0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTcwNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo3MDg6XFx0cmV0ID0gb2FfdGM2X3dyaXRlX3JlZ2lzdGVyKHRjNiwgT0FfVEM2X1JFR19SRVNFVCwgcmVndmFsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy03MDktXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTcxMy1cXHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQob2FfdGM2X3JlYWRfc3RhdHVzMCwgdGM2LCByZWd2YWwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NzE0OlxcdFxcdFxcdFxcdCByZWd2YWwgXFx1MDAyNiBPQV9UQzZfU1RBVFVTMF9SRVNFVEMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNzE1LVxcdFxcdFxcdFxcdCBTVEFUVVMwX1JFU0VUQ19QT0xMX0RFTEFZLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNzIwLVxcdC8qIENsZWFyIHRoZSByZXNldCBjb21wbGV0ZSBzdGF0dXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo3MjE6XFx0cmV0dXJuIG9hX3RjNl93cml0ZV9yZWdpc3Rlcih0YzYsIE9BX1RDNl9SRUdfU1RBVFVTMCwgcmVndmFsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy03MjItfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9NzI0PXN0YXRpYyBpbnQgb2FfdGM2X3VubWFza19pbnRlcnJ1cHRzKHN0cnVjdCBvYV90YzYgKnRjNilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTcyOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo3Mjk6XFx0cmV0ID0gb2FfdGM2X3JlYWRfcmVnaXN0ZXIodGM2LCBPQV9UQzZfUkVHX0lOVF9NQVNLMCwgXFx1MDAyNnJlZ3ZhbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNzMwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy03MzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NzMzOlxcdHJlZ3ZhbCBcXHUwMDI2PSB+KE9BX1RDNl9JTlRfTUFTSzBfUEhZX0lOVF9NQVNLIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo3MzQ6XFx0XFx0ICAgIE9BX1RDNl9JTlRfTUFTSzBfVFhfUFJPVE9DT0xfRVJSX01BU0sgfFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjczNTpcXHRcXHQgICAgT0FfVEM2X0lOVF9NQVNLMF9SWF9CVUZGRVJfT1ZFUkZMT1dfRVJSX01BU0sgfFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjczNjpcXHRcXHQgICAgT0FfVEM2X0lOVF9NQVNLMF9MT1NTX09GX0ZSQU1FX0VSUl9NQVNLIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo3Mzc6XFx0XFx0ICAgIE9BX1RDNl9JTlRfTUFTSzBfSEVBREVSX0VSUl9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy03MzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NzM5OlxcdHJldHVybiBvYV90YzZfd3JpdGVfcmVnaXN0ZXIodGM2LCBPQV9UQzZfUkVHX0lOVF9NQVNLMCwgcmVndmFsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy03NDAtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9NzQyPXN0YXRpYyBpbnQgb2FfdGM2X2VuYWJsZV9kYXRhX3RyYW5zZmVyKHN0cnVjdCBvYV90YzYgKnRjNilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTc0Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo3NDc6XFx0cmV0ID0gb2FfdGM2X3JlYWRfcmVnaXN0ZXIodGM2LCBPQV9UQzZfUkVHX0NPTkZJRzAsIFxcdTAwMjZ2YWx1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNzQ4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy03NTEtXFx0LyogRW5hYmxlIGNvbmZpZ3VyYXRpb24gc3luY2hyb25pemF0aW9uIGZvciBkYXRhIHRyYW5zZmVyICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6NzUyOlxcdHZhbHVlIHw9IE9BX1RDNl9DT05GSUcwX1NZTkM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNzUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjc1NDpcXHRyZXR1cm4gb2FfdGM2X3dyaXRlX3JlZ2lzdGVyKHRjNiwgT0FfVEM2X1JFR19DT05GSUcwLCB2YWx1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtNzU1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTgyNT1zdGF0aWMgdm9pZCBvYV90YzZfZGlzYWJsZV90cmFmZmljKHN0cnVjdCBvYV90YzYgKnRjNilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy04MjYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjgyNzpcXHR1MzIgcmVndmFsID0gT0FfVEM2X0lOVF9NQVNLMF9BTExfSU5URVJSVVBUUztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy04MjgtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTg0MC1cXHRvYV90YzZfZnJlZV9vbmdvaW5nX3NrYnModGM2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo4NDE6XFx0b2FfdGM2X3dyaXRlX3JlZ2lzdGVyKHRjNiwgT0FfVEM2X1JFR19JTlRfTUFTSzAsIHJlZ3ZhbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6ODQyOlxcdG9hX3RjNl9yZWFkX3JlZ2lzdGVyKHRjNiwgT0FfVEM2X1JFR19TVEFUVVMwLCBcXHUwMDI2cmVndmFsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo4NDM6XFx0b2FfdGM2X3dyaXRlX3JlZ2lzdGVyKHRjNiwgT0FfVEM2X1JFR19TVEFUVVMwLCByZWd2YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTg0NC1cXHRkZXZfZXJyKFxcdTAwMjZ0YzYtXFx1MDAzZXNwaS1cXHUwMDNlZGV2LCBcXFwiRGV2aWNlIGludGVycnVwdCBkaXNhYmxlZCB0byBhdm9pZCBpbnRlcnJ1cHQgc3Rvcm1cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTg0Nz1zdGF0aWMgaW50IG9hX3RjNl9wcm9jZXNzX2V4dGVuZGVkX3N0YXR1cyhzdHJ1Y3Qgb2FfdGM2ICp0YzYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy04NTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6ODUyOlxcdHJldCA9IG9hX3RjNl9yZWFkX3JlZ2lzdGVyKHRjNiwgT0FfVEM2X1JFR19TVEFUVVMwLCBcXHUwMDI2dmFsdWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTg1My1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy04NjYtXFx0LyogQ2xlYXIgdGhlIGVycm9yIGludGVycnVwdHMgc3RhdHVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6ODY3OlxcdHJldCA9IG9hX3RjNl93cml0ZV9yZWdpc3Rlcih0YzYsIE9BX1RDNl9SRUdfU1RBVFVTMCwgdmFsdWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTg2OC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy04NzgtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6ODc5OlxcdGlmICgodGM2LVxcdTAwM2VxdWlya19mbGFncyBcXHUwMDI2IE9BX1RDNl9QSFlfSU5UKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjg4MDpcXHQgICAgRklFTERfR0VUKE9BX1RDNl9TVEFUVVMwX1BIWV9JTlQsIHZhbHVlKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy04ODEtXFx0XFx0aGFuZGxlX25lc3RlZF9pcnEodGM2LVxcdTAwM2VwaHlfdmlycSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtODgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjg4MzpcXHRpZiAoRklFTERfR0VUKE9BX1RDNl9TVEFUVVMwX1JYX0JVRkZFUl9PVkVSRkxPV19FUlJPUiwgdmFsdWUpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtODg0LVxcdFxcdG9hX3RjNl9sb29rX2Zvcl9uZXdfZnJhbWUodGM2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTg4OC1cXHR9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6ODg5OlxcdGlmIChGSUVMRF9HRVQoT0FfVEM2X1NUQVRVUzBfVFhfUFJPVE9DT0xfRVJST1IsIHZhbHVlKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTg5MC1cXHRcXHRuZXRkZXZfZXJyKHRjNi1cXHUwMDNlbmV0ZGV2LCBcXFwiVHJhbnNtaXQgcHJvdG9jb2wgZXJyb3JcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtODk1LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjg5NjpcXHRpZiAoRklFTERfR0VUKE9BX1RDNl9TVEFUVVMwX0xPU1NfT0ZfRlJBTUVfRVJST1IsIHZhbHVlKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTg5Ny1cXHRcXHRuZXRkZXZfZXJyKHRjNi1cXHUwMDNlbmV0ZGV2LCBcXFwiTG9zcyBvZiBmcmFtZSBlcnJvclxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy04OTktXFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjkwMDpcXHRpZiAoRklFTERfR0VUKE9BX1RDNl9TVEFUVVMwX0hFQURFUl9FUlJPUiwgdmFsdWUpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtOTAxLVxcdFxcdG5ldGRldl9lcnIodGM2LVxcdTAwM2VuZXRkZXYsIFxcXCJIZWFkZXIgZXJyb3JcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9OTA4PXN0YXRpYyBpbnQgb2FfdGM2X3Byb2Nlc3NfcnhfY2h1bmtfZm9vdGVyKHN0cnVjdCBvYV90YzYgKnRjNiwgdTMyIGZvb3RlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTkxNi1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo5MTc6XFx0dGM2LVxcdTAwM2V0eF9jcmVkaXRzID0gRklFTERfR0VUKE9BX1RDNl9EQVRBX0ZPT1RFUl9UWF9DUkVESVRTLCBmb290ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjkxODpcXHR0YzYtXFx1MDAzZXJ4X2NodW5rc19hdmFpbGFibGUgPSBGSUVMRF9HRVQoT0FfVEM2X0RBVEFfRk9PVEVSX1JYX0NIVU5LUyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy05MTktXFx0XFx0XFx0XFx0XFx0ICAgICBmb290ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTkyMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzo5MjE6XFx0aWYgKEZJRUxEX0dFVChPQV9UQzZfREFUQV9GT09URVJfRVhURU5ERURfU1RTLCBmb290ZXIpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtOTIyLVxcdFxcdHJldCA9IG9hX3RjNl9wcm9jZXNzX2V4dGVuZGVkX3N0YXR1cyh0YzYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtOTMzLVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjkzNDpcXHRpZiAoRklFTERfR0VUKE9BX1RDNl9EQVRBX0ZPT1RFUl9SWERfSEVBREVSX0JBRCwgZm9vdGVyKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTkzNS1cXHRcXHRuZXRkZXZfZXJyKHRjNi1cXHUwMDNlbmV0ZGV2LCBcXFwiUnhkIGhlYWRlciBiYWQgZXJyb3JcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtOTM4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjkzOTpcXHRpZiAoIUZJRUxEX0dFVChPQV9UQzZfREFUQV9GT09URVJfQ09ORklHX1NZTkMsIGZvb3RlcikpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy05NDAtXFx0XFx0bmV0ZGV2X2Vycih0YzYtXFx1MDAzZW5ldGRldiwgXFxcIkNvbmZpZyB1bnN5bmMgZXJyb3JcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9MTA0Nz1zdGF0aWMgaW50IG9hX3RjNl9wcmNzX29uZ29pbmdfcnhfZnJhbWUoc3RydWN0IG9hX3RjNiAqdGM2LCB1OCAqcGF5bG9hZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTEwNTAtXFx0cmV0dXJuIG9hX3RjNl91cGRhdGVfcnhfc2tiKHRjNiwgcGF5bG9hZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMDUxOlxcdFxcdFxcdFxcdCAgICBPQV9UQzZfQ0hVTktfUEFZTE9BRF9TSVpFKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMDUyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTEwNTQ9c3RhdGljIGludCBvYV90YzZfcHJjc19yeF9jaHVua19wYXlsb2FkKHN0cnVjdCBvYV90YzYgKnRjNiwgdTggKmRhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMDU2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMDU3OlxcdHU4IHN0YXJ0X2J5dGVfb2Zmc2V0ID0gRklFTERfR0VUKE9BX1RDNl9EQVRBX0ZPT1RFUl9TVEFSVF9XT1JEX09GRlNFVCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMDU4LVxcdFxcdFxcdFxcdFxcdCBmb290ZXIpICogc2l6ZW9mKHUzMik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTA1OTpcXHR1OCBlbmRfYnl0ZV9vZmZzZXQgPSBGSUVMRF9HRVQoT0FfVEM2X0RBVEFfRk9PVEVSX0VORF9CWVRFX09GRlNFVCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMDYwLVxcdFxcdFxcdFxcdCAgICAgICBmb290ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjEwNjE6XFx0Ym9vbCBzdGFydF92YWxpZCA9IEZJRUxEX0dFVChPQV9UQzZfREFUQV9GT09URVJfU1RBUlRfVkFMSUQsIGZvb3Rlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTA2MjpcXHRib29sIGVuZF92YWxpZCA9IEZJRUxEX0dFVChPQV9UQzZfREFUQV9GT09URVJfRU5EX1ZBTElELCBmb290ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTEwNjMtXFx0dTE2IHNpemU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMDgxLVxcdGlmIChzdGFydF92YWxpZCBcXHUwMDI2XFx1MDAyNiAhZW5kX3ZhbGlkKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTA4MjpcXHRcXHRzaXplID0gT0FfVEM2X0NIVU5LX1BBWUxPQURfU0laRSAtIHN0YXJ0X2J5dGVfb2Zmc2V0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTEwODMtXFx0XFx0cmV0dXJuIG9hX3RjNl9wcmNzX3J4X2ZyYW1lX3N0YXJ0KHRjNixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTExMTQtXFx0XFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjExMTU6XFx0XFx0c2l6ZSA9IE9BX1RDNl9DSFVOS19QQVlMT0FEX1NJWkUgLSBzdGFydF9ieXRlX29mZnNldDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMTE2LVxcdFxcdHJldHVybiBvYV90YzZfcHJjc19yeF9mcmFtZV9zdGFydCh0YzYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz0xMTM1PXN0YXRpYyBpbnQgb2FfdGM2X3Byb2Nlc3Nfc3BpX2RhdGFfcnhfYnVmKHN0cnVjdCBvYV90YzYgKnRjNiwgdTE2IGxlbmd0aClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMTM2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMTM3OlxcdHUxNiBub19vZl9yeF9jaHVua3MgPSBsZW5ndGggLyBPQV9UQzZfQ0hVTktfU0laRTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMTM4LVxcdGJvb2wgcmV0cnkgPSBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTExNDQtXFx0XFx0LyogTGFzdCA0IGJ5dGVzIGluIGVhY2ggcmVjZWl2ZWQgY2h1bmsgY29uc2lzdCBmb290ZXIgaW5mbyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjExNDU6XFx0XFx0Zm9vdGVyID0gb2FfdGM2X2dldF9yeF9jaHVua19mb290ZXIodGM2LCBpICogT0FfVEM2X0NIVU5LX1NJWkUgK1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjExNDY6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIE9BX1RDNl9DSFVOS19QQVlMT0FEX1NJWkUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTExNDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMTU4LVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjExNTk6XFx0XFx0aWYgKEZJRUxEX0dFVChPQV9UQzZfREFUQV9GT09URVJfREFUQV9WQUxJRCwgZm9vdGVyKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jLTExNjAtXFx0XFx0XFx0dTggKnBheWxvYWQgPSB0YzYtXFx1MDAzZXNwaV9kYXRhX3J4X2J1ZiArIGkgKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjExNjE6XFx0XFx0XFx0XFx0ICAgICAgT0FfVEM2X0NIVU5LX1NJWkU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTE2Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jPTExOTY9c3RhdGljIF9fYmUzMiBvYV90YzZfcHJlcGFyZV9kYXRhX2hlYWRlcihib29sIGRhdGFfdmFsaWQsIGJvb2wgc3RhcnRfdmFsaWQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMTk4LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMTk5OlxcdHUzMiBoZWFkZXIgPSBGSUVMRF9QUkVQKE9BX1RDNl9EQVRBX0hFQURFUl9EQVRBX05PVF9DVFJMLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjEyMDA6XFx0XFx0XFx0XFx0T0FfVEM2X0RBVEFfSEVBREVSKSB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTIwMTpcXHRcXHQgICAgIEZJRUxEX1BSRVAoT0FfVEM2X0RBVEFfSEVBREVSX0RBVEFfVkFMSUQsIGRhdGFfdmFsaWQpIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMjAyOlxcdFxcdCAgICAgRklFTERfUFJFUChPQV9UQzZfREFUQV9IRUFERVJfU1RBUlRfVkFMSUQsIHN0YXJ0X3ZhbGlkKSB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTIwMzpcXHRcXHQgICAgIEZJRUxEX1BSRVAoT0FfVEM2X0RBVEFfSEVBREVSX0VORF9WQUxJRCwgZW5kX3ZhbGlkKSB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTIwNDpcXHRcXHQgICAgIEZJRUxEX1BSRVAoT0FfVEM2X0RBVEFfSEVBREVSX0VORF9CWVRFX09GRlNFVCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMjA1LVxcdFxcdFxcdFxcdGVuZF9ieXRlX29mZnNldCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTIwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMjA3OlxcdGhlYWRlciB8PSBGSUVMRF9QUkVQKE9BX1RDNl9EQVRBX0hFQURFUl9QQVJJVFksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTIwOC1cXHRcXHRcXHQgICAgIG9hX3RjNl9nZXRfcGFyaXR5KGhlYWRlcikpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM9MTIxMz1zdGF0aWMgdm9pZCBvYV90YzZfYWRkX3R4X3NrYl90b19zcGlfYnVmKHN0cnVjdCBvYV90YzYgKnRjNilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xMjE0LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxMjE1OlxcdGVudW0gb2FfdGM2X2RhdGFfZW5kX3ZhbGlkX2luZm8gZW5kX3ZhbGlkID0gT0FfVEM2X0RBVEFfRU5EX0lOVkFMSUQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTIxNi1cXHRfX2JlMzIgKnR4X2J1ZiA9IHRjNi1cXHUwMDNlc3BpX2RhdGFfdHhfYnVmICsgdGM2LVxcdTAwM2VzcGlfZGF0YV90eF9idWZfb2Zmc2V0O1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODoyMjoxMS41NTkzOTM1NjVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTY1OTc5Mjg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgTUlDUk9DSElQX1QxU19QSFkgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiBgTUlDUk9DSElQX1QxU19QSFlgIGlzIGRlZmluZWQuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiBpdHMgbmF0dXJlIGFzIGEgUEhZIChwaHlzaWNhbCBsYXllcikgZHJpdmVyLCBpcyB0byBjaGVjayB0aGUgYEtjb25maWdgIGZpbGUgd2l0aGluIHRoZSBuZXR3b3JrIGRyaXZlcidzIGRpcmVjdG9yeS4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBsb29rIGluIGBkcml2ZXJzL25ldC9waHkvS2NvbmZpZ2AuIFRoaXMgZmlsZSB1c3VhbGx5IGhhbmRsZXMgYWxsIHRoZSBQSFktcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoYXQncyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgZm9yIHRoZSBgTUlDUk9DSElQX1QxU19QSFlgIGRlZmluaXRpb24uIExldCdzIHNlZSB3aGF0J3MgaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNTk1LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDg6MjI6MTQuMTI1Mzc3MDNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgzMjI4MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTUlDUk9DSElQX1QxU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWc9MzIzPWNvbmZpZyBNSUNSRUxfUEhZXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0zMjktXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6MzMwOmNvbmZpZyBNSUNST0NISVBfVDFTX1BIWVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTMzMS1cXHR0cmlzdGF0ZSBcXFwiTWljcm9jaGlwIDEwQkFTRS1UMVMgRXRoZXJuZXQgUEhZc1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT04Mj1vYmotJChDT05GSUdfTUlDUk9DSElQX1QxX1BIWSlcXHQrPSBtaWNyb2NoaXBfdDEub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo4MzpvYmotJChDT05GSUdfTUlDUk9DSElQX1QxU19QSFkpICs9IG1pY3JvY2hpcF90MXMub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS04NC1vYmotJChDT05GSUdfTUlDUk9TRU1JX1BIWSlcXHQrPSBtc2NjL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODoyMjoxNC4xNzM3MDU0MDZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMDgyOTQ2Njk4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2NvbmZpZyBEaXZlIGZvciBMQU44NjV4IEV0aGVybmV0IERyaXZlcnMqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gTGV0J3Mgc3RhcnQgd2l0aCB0aGUgYEtjb25maWdgIGZpbGUgZm9yIHRoZSBMQU44NjV4IEV0aGVybmV0IGRyaXZlcnMuIFRoYXQncyB0aGUgbG9naWNhbCBmaXJzdCBzdG9wLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgYXZhaWxhYmxlIGFuZCBob3cgdGhleSdyZSBzdHJ1Y3R1cmVkIHdpdGhpbiB0aGUgYnVpbGQgc3lzdGVtLiBJJ20gbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6XG5cbiogICAqKkZlYXR1cmUgRmxhZ3M6KiogQXJlIHRoZXJlIGNvbmRpdGlvbmFsIGJ1aWxkIG9wdGlvbnMgZm9yIHRoaW5ncyBsaWtlIHNwZWNpZmljIFBIWSBjb25maWd1cmF0aW9ucywgaW50ZXJydXB0IG1vZGVzIChwb2xsaW5nLCBpbnRlcnJ1cHQtZHJpdmVuLCBldGMuKSwgb3IgRE1BIHN1cHBvcnQ/XG4qICAgKipEZXBlbmRlbmNpZXM6KiogV2hhdCBvdGhlciBrZXJuZWwgY29tcG9uZW50cyBvciBkcml2ZXJzIG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgdGhlIExBTjg2NXggZHJpdmVyIHRvIGZ1bmN0aW9uIGNvcnJlY3RseT8gQXJlIHRoZXJlIHNwZWNpZmljIGRlcGVuZGVuY2llcyBvbiBuZXR3b3JrIHN0YWNrIGZlYXR1cmVzIG9yIE1BQyBhZGRyZXNzIG1hbmFnZW1lbnQ/XG4qICAgKipEZWZhdWx0cyBhbmQgSGVscCBUZXh0OioqIFdoYXQgYXJlIHRoZSBkZWZhdWx0IHNldHRpbmdzIGZvciBlYWNoIG9wdGlvbj8gQW5kLCBvZiBjb3Vyc2UsIHRoZSBoZWxwZnVsIGRlc2NyaXB0aW9ucyB0aGF0IHdpbGwgZ3VpZGUgZGV2ZWxvcGVycy4gVGhlIGNvbW1lbnRzIGhhdmUgdG8gYmUgY2xlYXIgYW5kIGNvbmNpc2UuXG4qICAgKipBcmNoaXRlY3R1cmUtU3BlY2lmaWMgU2VsZWN0aW9uczoqKiBEb2VzIHRoZSBLY29uZmlnIGV4cG9zZSBhbnkgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIHNlbGVjdGlvbnMgbGlrZSBjYWNoZSBsaW5lIHNpemVzIG9yIG1lbW9yeSByZWdpb25zP1xuXG5JJ20gaG9waW5nIHRoaXMgS2NvbmZpZyBpcyB3ZWxsLW9yZ2FuaXplZCwgd2l0aCBhIGNsZWFyIGhpZXJhcmNoeSB0aGF0IHJlZmxlY3RzIHRoZSBsb2dpY2FsIHN0cnVjdHVyZSBvZiB0aGUgZHJpdmVyIGFuZCBpdHMgY2FwYWJpbGl0aWVzLiBJdCdzIG9mdGVuIHdoZXJlIHRoZSBzdG9yeSBvZiB0aGUgZHJpdmVyJ3MgY29uZmlndXJhdGlvbiBiZWdpbnMuIEknbSBrZWVuIHRvIHNlZSBpZiBhbnkgbmV3IGZlYXR1cmVzIGhhdmUgYmVlbiBhZGRlZCBvciBpZiBzb21lIG9mIHRoZSBleGlzdGluZyBvcHRpb25zIGhhdmUgY2hhbmdlZC4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDAxMiwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjIyOjI1LjAwMzE3NDg1MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjQ5MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBNaWNyb2NoaXAgTEFOODY1eCBEcml2ZXIgU3VwcG9ydFxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRpZiBORVRfVkVORE9SX01JQ1JPQ0hJUFxcbiAgIDc6XFx0XFxuICAgODpcXHRjb25maWcgTEFOODY1WFxcbiAgIDk6XFx0XFx0dHJpc3RhdGUgXFxcIkxBTjg2NXggc3VwcG9ydFxcXCJcXG4gIDEwOlxcdFxcdGRlcGVuZHMgb24gU1BJXFxuICAxMTpcXHRcXHRzZWxlY3QgT0FfVEM2XFxuICAxMjpcXHRcXHRoZWxwXFxuICAxMzpcXHRcXHQgIFN1cHBvcnQgZm9yIHRoZSBNaWNyb2NoaXAgTEFOODY1MC8xIFJldi5CMC9CMSBNQUNQSFkgRXRoZXJuZXQgY2hpcC4gSXRcXG4gIDE0OlxcdFxcdCAgdXNlcyBPUEVOIEFsbGlhbmNlIDEwQkFTRS1UMXggU2VyaWFsIEludGVyZmFjZSBzcGVjaWZpY2F0aW9uLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGUgd2lsbCBiZVxcbiAgMTc6XFx0XFx0ICBjYWxsZWQgbGFuODY1eC5cXG4gIDE4OlxcdFxcbiAgMTk6XFx0ZW5kaWYgIyBORVRfVkVORE9SX01JQ1JPQ0hJUFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODoyMjoyNS4wMDMzMDI1MzJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTk3NzIzNTQ2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIEtjb25maWcgTGFieXJpbnRoKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIE9BX1RDNi4gTXkgaW5zdGluY3QgaXMgdG8gaGVhZCBzdHJhaWdodCB0byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvS2NvbmZpZ2AsIGFzIHRoYXQncyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgZm9yIEV0aGVybmV0LXJlbGF0ZWQgY29uZmlndXJhdGlvbnMuIEkgdmFndWVseSByZWNhbGwgdGhhdCB0eXBlIG9mIG9wdGlvbiBvZnRlbiBiZWluZyBkZWZpbmVkIGFyb3VuZCBsaW5lIDE0OS4gVGltZSB0byBmaXJlIHVwIG15IGVkaXRvciBhbmQgdGFrZSBhIGxvb2suIExldCdzIHNlZSB3aGF0IGdlbXMgYXJlIGhpZGRlbiBpbiB0aGF0IHBhcnRpY3VsYXIgc2VjdGlvbi4uLmhvcGVmdWxseSB0aGUgYXV0aG9yIHdhcyBraW5kIGVub3VnaCB0byBvcmdhbml6ZSB0aGluZ3MgaW4gYSBjbGVhciBtYW5uZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NjUwLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODoyMjoyNi45ODA1NDAzMThaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk0NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNDUsXG4gIFwiTGluZUNvdW50XCI6IDI1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNDU6XFx0XFx0c2VsZWN0IEJJVFJFVkVSU0VcXG4gMTQ2OlxcdFxcdGhlbHBcXG4gMTQ3OlxcdFxcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIE9wZW5Db3JlcyAxMC8xMDAgTWJwcyBFdGhlcm5ldCBNQUMuXFxuIDE0ODpcXHRcXG4gMTQ5OlxcdGNvbmZpZyBPQV9UQzZcXG4gMTUwOlxcdFxcdHRyaXN0YXRlIFxcXCJPUEVOIEFsbGlhbmNlIFRDNiAxMEJBU0UtVDF4IE1BQy1QSFkgc3VwcG9ydFxcXCIgaWYgQ09NUElMRV9URVNUXFxuIDE1MTpcXHRcXHRkZXBlbmRzIG9uIFNQSVxcbiAxNTI6XFx0XFx0c2VsZWN0IFBIWUxJQlxcbiAxNTM6XFx0XFx0aGVscFxcbiAxNTQ6XFx0XFx0ICBUaGlzIGxpYnJhcnkgaW1wbGVtZW50cyBPUEVOIEFsbGlhbmNlIFRDNiAxMEJBU0UtVDF4IE1BQy1QSFlcXG4gMTU1OlxcdFxcdCAgU2VyaWFsIEludGVyZmFjZSBwcm90b2NvbCBmb3Igc3VwcG9ydGluZyAxMEJBU0UtVDF4IE1BQy1QSFlzLlxcbiAxNTY6XFx0XFxuIDE1NzpcXHRcXHQgIFRvIGtub3cgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMsIHJlZmVyIGRvY3VtZW50YXRpb24gaW5cXG4gMTU4OlxcdFxcdCAgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL29hLXRjNi1mcmFtZXdvcmsucnN0XFx1MDAzZS5cXG4gMTU5OlxcdFxcbiAxNjA6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9wYXNlbWkvS2NvbmZpZ1xcXCJcXG4gMTYxOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcGVuc2FuZG8vS2NvbmZpZ1xcXCJcXG4gMTYyOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL0tjb25maWdcXFwiXFxuIDE2MzpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvS2NvbmZpZ1xcXCJcXG4gMTY0OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vS2NvbmZpZ1xcXCJcXG4gMTY1OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmRjL0tjb25maWdcXFwiXFxuIDE2NjpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ1xcXCJcXG4gMTY3OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnXFxcIlxcbiAxNjg6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yb2NrZXIvS2NvbmZpZ1xcXCJcXG4gMTY5OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc2Ftc3VuZy9LY29uZmlnXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODoyMjoyNi45ODA2MDA4ODhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTk2NTQ0NDU1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIExBTjg2NVgvT0FfVEM2L01JQ1JPQ0hJUF9UMVMgUmVhY2hhYmlsaXR5IGluIFN5emthbGxlcioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgZ29hbCBpcyB0byBkZXRlcm1pbmUgaWYgSSBjYW4gYWN0dWFsbHkgZnV6eiB0aGVzZSBkcml2ZXJzIOKAkyBMQU44NjVYLCBPQV9UQzYsIGFuZCBNSUNST0NISVBfVDFTIOKAkyB1c2luZyBzeXprYWxsZXIuIFRoZSBjb3JlIHF1ZXN0aW9uIGlzOiBhcmUgdGhleSByZWFjaGFibGUgd2l0aGluIHRoZSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIGFuZCBHQ0UgdGhhdCBzeXprYWxsZXIgbGV2ZXJhZ2VzPyBUaGlzIFwicmVhY2hhYmlsaXR5XCIgaXMgdGhlIGtleS4gRnV6emluZyB1bnJlYWNoYWJsZSBjb2RlIGlzIGEgd2FzdGUgb2YgcmVzb3VyY2VzLlxuXG5GaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGVzZSBkcml2ZXJzICphcmUqLiBMQU44NjVYIGlzIGEgU1BJIGRyaXZlciAoYHN0cnVjdCBzcGlfZHJpdmVyYCksIGBsYW44NjV4X2RyaXZlcmAuIE1JQ1JPQ0hJUF9UMVMgaXMgYSBQSFkgZHJpdmVyIChgc3RydWN0IHBoeV9kcml2ZXJgLCBgbWljcm9jaGlwX3Qxc19kcml2ZXJbXWApLiBPQV9UQzYgaXMgYSBzdXBwb3J0aW5nIGxpYnJhcnkgZm9yIFNQSSBNQUMtUEhZcyB1c2VkIGJ5IGBsYW44NjV4YCBhbmQgYGFkaW4xMTQwYC5cblxuTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogY2FuIEkgaW5zdGFudGlhdGUgb3IgcHJvYmUgU1BJIGFuZCBQSFkgZGV2aWNlcyB3aXRoaW4gYSB0eXBpY2FsIFFFTVUgeDg2XzY0IGVudmlyb25tZW50PyBUaGF0J3MgdGhlIGdhdGVrZWVwZXIuIFN0YW5kYXJkIFFFTVUgZG9lc24ndCBzZWVtIHRvIGhhdmUgYSBnZW5lcmljIFNQSSBidXMgaW5zdGFudGlhdGlvbi4gVW5sZXNzLCB0aGVyZSdzIHNvbWUga2luZCBvZiBtb2NrIFNQSSBjb250cm9sbGVyLCBVU0ItdG8tU1BJIGFkYXB0ZXIsIHBsYXRmb3JtIGRldmljZSwgb3IgbWF5YmUgZXZlbiBhIGNvbmZpZ2ZzIFNQSSBkZXZpY2UuIEhtbSwgZG9lcyBMaW51eCBldmVuIGxldCB5b3UgaW5zdGFudGlhdGUgU1BJIGRldmljZXMgZnJvbSB1c2Vyc3BhY2UgZGlyZWN0bHk/IERvZXMgUUVNVSBldmVuICpoYXZlKiBTUEkgc3VwcG9ydCBieSBkZWZhdWx0P1xuXG5MZXQgbWUgc3RlcCBiYWNrIGFuZCBjaGVjayBzeXprYWxsZXIncyBkb2N1bWVudGF0aW9uIG9yIGV4YW1wbGVzLiBIYXMgaXQgYmVlbiB1c2VkIHRvIHRlc3QgU1BJIGRldmljZXMgYmVmb3JlPyBXaGF0IGFib3V0IGhvdyBTUEkgZGV2aWNlcyBhcmUgdGVzdGVkIGluIGdlbmVyYWw/IFdhaXQsIHRoZXJlJ3MgdGhhdCBwcmluY2lwbGU6IFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGUgY29kZSAqY2FuKiBleGVjdXRlIGluIHRoZXNlIGVudmlyb25tZW50cy4gSWYgaXQncyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUsIGRvbid0IGZ1enogaXQuXG5cblRoaXMgYnJpbmdzIG1lIHRvIFNlY3Rpb24gMi4gVGhhdCBsaXN0cyBleGFtcGxlcyBvZiBcInN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZVwiIGhhcmR3YXJlLiBUaGluZ3MgbGlrZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyB0aGF0IG5lZWQgZGVkaWNhdGVkIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBBbHNvIHVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRocywgbGlrZSBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBgLnJlbW92ZWAsIGAuc2h1dGRvd25gLCBgcGNpX3VucmVnaXN0ZXJfZHJpdmVyYCkgZXhlY3V0ZWQgb25seSBkdXJpbmcgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIHVuYmluZGluZywgYW5kIGNvZGUgcGF0aHMgc3BlY2lmaWMgdG8gbm9uLXRhcmdldCBhcmNoaXRlY3R1cmVzLlxuXG5Tbywgd2hlcmUgZG8gU1BJIGFuZCBQSFkgZHJpdmVycyBmaXQgaW4/IENhbiBJIGV2ZW4gcmVhY2ggb3IgcHJvYmUgTEFOODY1eCBvciBNaWNyb2NoaXAgUEhZcz8gSSBoYXZlIHRvIGZpZ3VyZSBvdXQgaWYgc3l6a2FsbGVyIG9yIHN0YW5kYXJkIFFFTVUgY2FuIGRvIHRoYXQuIElzIHRoZXJlIGEgXCJzcGktbW9jayxcIiBhIFwic3BpLWNvbnRyb2xsZXIsXCIgb3Igc29tZSBuZXRsaW5rIG9yIE1ESU8gdHJpY2s/IEkgYmV0dGVyIHNlYXJjaCB0aGUga2VybmVsIGZvciBhbnkgbWVudGlvbiBvZiBTUEkgY29udHJvbGxlcnMgb3IgTURJTy4gVGltZSB0byBkaWcgaW4gYW5kIGZpbmQgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTMxMywiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYxMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjIyOjMyLjk0NjA0NzkwOVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTI1NDQzMDc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxhbjg2NTBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVyc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jOjEzOiNkZWZpbmUgRFJWX05BTUVcXHRcXHRcXHRcXFwibGFuODY1MFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMTQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmM9NDMwPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3BpX2RldmljZV9pZCBsYW44NjV4X2lkc1tdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0MzE6XFx0eyAubmFtZSA9IFxcXCJsYW44NjUwXFxcIiB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy00MzItXFx0eyAubmFtZSA9IFxcXCJsYW44NjUxXFxcIiB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jPTQzNz1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBsYW44NjV4X2R0X2lkc1tdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzo0Mzg6XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJtaWNyb2NoaXAsbGFuODY1MFxcXCIgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtNDM5LVxcdHsgLmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGxhbjg2NTFcXFwiIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jLTYtICogIGxhbjg2NzAvMS8yIFJldi5CMS9DMS9DMi9EMFxcbmRyaXZlcnMvbmV0L3BoeS9taWNyb2NoaXBfdDFzLmM6NzogKiAgbGFuODY1MC8xIFJldi5CMC9CMSBJbnRlcm5hbCBQSFlzXFxuZHJpdmVycy9uZXQvcGh5L21pY3JvY2hpcF90MXMuYy04LSAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODoyMjozMy44NzE0OTU4MzdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6OTc5MDEwMTMzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIExBTjg2NXggRHJpdmVycyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBsYW44NjV4YCwgd2hpY2ggaXMgY2xlYXJseSBhbiBTUEkgZHJpdmVyIHRhaWxvcmVkIGZvciB0aG9zZSBNaWNyb2NoaXAgTEFOODY1MC8xIGNoaXBzLiBUaGVuIHRoZXJlJ3MgYG1pY3JvY2hpcF90MXNgLCB3aGljaCBJIGltbWVkaWF0ZWx5IHJlY29nbml6ZSBhcyBhbiBNRElPIFBIWSBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgdGhlIExBTjg2N3gvTEFOODY1eCBldGhlcm5ldCBQSFlzLiBBbmQgZmluYWxseSwgYG9hX3RjNmAg4oCTIHRoYXQncyB0aGUgT1BFTiBBbGxpYW5jZSBUQzYgbGlicmFyeTsgdGhlIDEwQkFTRS1UMXggTUFDLVBIWSBzdXBwb3J0IHRoYXQgYm90aCBgbGFuODY1eGAgYW5kIHRoZSBgYWRpbjExNDBgIFNQSSBldGhlcm5ldCBjb250cm9sbGVycyBsZXZlcmFnZS5cblxuTm93LCBteSBtaW5kIHN0YXJ0cyB0byB3YW5kZXIuIEkgaGF2ZSB0byB0aGluayBhYm91dCBwb3RlbnRpYWwgc2NlbmFyaW9zLiBBcmUgd2UgdGFsa2luZyBzdHJpY3RseSBwaHlzaWNhbCBoYXJkd2FyZSBoZXJlLCBvciBhcmUgdGhlcmUgdmlydHVhbCBkZXZpY2VzIGluIHBsYXk/IENhbiB3ZSBwb3NzaWJseSBoYXZlIHZpcnR1YWwgU1BJIG9yIE1ESU8gZGV2aWNlcyB0aGF0ICphdHRhY2gqIHRvIHRoaXMsIG9yIGNvdWxkIHdlIHNvbWVob3cgY3JlYXRlIGEgdmlydHVhbCBpbnN0YW5jZSBvZiBgbGFuODY1MGAgb3IgYG1pY3JvY2hpcF90MXNgPyBUaGF0IHdvdWxkIGRlZmluaXRlbHkgY2hhbmdlIHRoZSBsYW5kc2NhcGUuXG5cbk15IG5leHQgc3RlcCBoYXMgdG8gYmUgYSBkZWVwZXIgaW52ZXN0aWdhdGlvbi4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgc3l6a2FsbGVyIGhhcyBhbnkgcHNldWRvLXN5c2NhbGxzIG9yIGlmIHRoZXJlIGFyZSBhbnkgb2J2aW91cyB1c2Vyc3BhY2UgaW50ZXJmYWNlcyB0aGF0IGFsbG93IHVzIHRvIGJpbmQgU1BJIG9yIFBIWSBkZXZpY2VzLiBJIG5lZWQgdG8ga25vdyBpZiB0aGlzIGlzIGZ1bmRhbWVudGFsbHkgbGltaXRlZCB0byBwaHlzaWNhbCBoYXJkd2FyZSBvciBpZiB0aGVyZSdzIGFueSBmbGV4aWJpbGl0eS4gSSBoYXZlIHRvIHRoaW5rIGFib3V0IGhvdyBTUEkgZGV2aWNlcyBhcmUgdHlwaWNhbGx5IG1hbmFnZWQgYW5kIGNyZWF0ZWQgaW4gdGhlIGtlcm5lbCDigJMgYXJlIHRoZXJlIHN5c2ZzLCBjb25maWdmcywgaW9jdGwgbWVjaGFuaXNtcywgb3Igc2ltaWxhciBtZXRob2RzIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQ/IFRpbWUgdG8gZGl2ZSBpbnRvIGBkcml2ZXJzL3NwaS9gIGFuZCBzdGFydCBkaWdnaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzA0MiwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODoyMjo0My42NjE2MDAyMjdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4OTI5ODQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5ld19kZXZpY2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zcGlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1kZmwuYz0xMjQ9c3RhdGljIGludCBkZmxfc3BpX2FsdGVyYV9wcm9iZShzdHJ1Y3QgZGZsX2RldmljZSAqZGZsX2RldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtZGZsLmMtMTc0LVxcbmRyaXZlcnMvc3BpL3NwaS1hbHRlcmEtZGZsLmM6MTc1OlxcdGlmICghc3BpX25ld19kZXZpY2UoaG9zdCwgXFx1MDAyNmJvYXJkX2luZm8pKSB7XFxuZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1kZmwuYy0xNzYtXFx0XFx0ZGV2X2VycihkZXYsIFxcXCIlcyBmYWlsZWQgdG8gY3JlYXRlIFNQSSBkZXZpY2U6ICVzXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1wbGF0Zm9ybS5jPTM1PXN0YXRpYyBpbnQgYWx0ZXJhX3NwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWFsdGVyYS1wbGF0Zm9ybS5jLTExNi1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcGRhdGEtXFx1MDAzZW51bV9kZXZpY2VzOyBpKyspIHtcXG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLXBsYXRmb3JtLmM6MTE3OlxcdFxcdFxcdGlmICghc3BpX25ld19kZXZpY2UoaG9zdCwgcGRhdGEtXFx1MDAzZWRldmljZXMgKyBpKSlcXG5kcml2ZXJzL3NwaS9zcGktYWx0ZXJhLXBsYXRmb3JtLmMtMTE4LVxcdFxcdFxcdFxcdGRldl93YXJuKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYnV0dGVyZmx5LmM9MTc2PXN0YXRpYyB2b2lkIGJ1dHRlcmZseV9hdHRhY2goc3RydWN0IHBhcnBvcnQgKnApXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktYnV0dGVyZmx5LmMtMjY1LVxcdHBwLVxcdTAwM2VpbmZvWzBdLmNvbnRyb2xsZXJfZGF0YSA9IHBwO1xcbmRyaXZlcnMvc3BpL3NwaS1idXR0ZXJmbHkuYzoyNjY6XFx0cHAtXFx1MDAzZWRhdGFmbGFzaCA9IHNwaV9uZXdfZGV2aWNlKHBwLVxcdTAwM2ViaXRiYW5nLmN0bHIsIFxcdTAwMjZwcC1cXHUwMDNlaW5mb1swXSk7XFxuZHJpdmVycy9zcGkvc3BpLWJ1dHRlcmZseS5jLTI2Ny1cXHRpZiAocHAtXFx1MDAzZWRhdGFmbGFzaClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jaDM0MS5jPTE0MT1zdGF0aWMgaW50IGNoMzQxX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWNoMzQxLmMtMjA2LVxcbmRyaXZlcnMvc3BpL3NwaS1jaDM0MS5jOjIwNzpcXHRjaDM0MS1cXHUwMDNlc3BpZGV2ID0gc3BpX25ld19kZXZpY2UoY3RybCwgXFx1MDAyNmNoaXApO1xcbmRyaXZlcnMvc3BpL3NwaS1jaDM0MS5jLTIwOC1cXHRpZiAoIWNoMzQxLVxcdTAwM2VzcGlkZXYpIHtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jczQybDQzLmM9MzEyPXN0YXRpYyBpbnQgY3M0Mmw0M19zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1jczQybDQzLmMtNDI2LVxcbmRyaXZlcnMvc3BpL3NwaS1jczQybDQzLmM6NDI3OlxcdFxcdGlmICghc3BpX25ld19kZXZpY2UocHJpdi1cXHUwMDNlY3RsciwgYW1wbF9pbmZvKSlcXG5kcml2ZXJzL3NwaS9zcGktY3M0Mmw0My5jLTQyOC1cXHRcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShwcml2LVxcdTAwM2VkZXYsIC1FTk9ERVYsXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktY3M0Mmw0My5jLTQzMC1cXG5kcml2ZXJzL3NwaS9zcGktY3M0Mmw0My5jOjQzMTpcXHRcXHRpZiAoIXNwaV9uZXdfZGV2aWNlKHByaXYtXFx1MDAzZWN0bHIsIGFtcHJfaW5mbykpXFxuZHJpdmVycy9zcGkvc3BpLWNzNDJsNDMuYy00MzItXFx0XFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUocHJpdi1cXHUwMDNlZGV2LCAtRU5PREVWLFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWludGVsLmM9MTM3NT1zdGF0aWMgaW50IGludGVsX3NwaV9wb3B1bGF0ZV9jaGlwKHN0cnVjdCBpbnRlbF9zcGkgKmlzcGkpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktaW50ZWwuYy0xNDAxLVxcbmRyaXZlcnMvc3BpL3NwaS1pbnRlbC5jOjE0MDI6XFx0aWYgKCFzcGlfbmV3X2RldmljZShpc3BpLVxcdTAwM2Vob3N0LCBcXHUwMDI2Y2hpcCkpXFxuZHJpdmVycy9zcGkvc3BpLWludGVsLmMtMTQwMy1cXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS1pbnRlbC5jLTE0MzAtXFxuZHJpdmVycy9zcGkvc3BpLWludGVsLmM6MTQzMTpcXHRpZiAoIXNwaV9uZXdfZGV2aWNlKGlzcGktXFx1MDAzZWhvc3QsIFxcdTAwMjZjaGlwKSlcXG5kcml2ZXJzL3NwaS9zcGktaW50ZWwuYy0xNDMyLVxcdFxcdHJldHVybiAtRU5PREVWO1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLWtzcGkyLmM9MzEwPXN0YXRpYyBpbnQga3NwaTJfcmVnaXN0ZXJfZGV2aWNlcyhzdHJ1Y3Qga3NwaTIgKmtzcGkpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkta3NwaTIuYy0zMTYtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGtzcGktXFx1MDAzZWF1eGRldi1cXHUwMDNlaW5mb19zaXplOyBpKyspIHtcXG5kcml2ZXJzL3NwaS9zcGkta3NwaTIuYzozMTc6XFx0XFx0c3RydWN0IHNwaV9kZXZpY2UgKmRldmljZSA9IHNwaV9uZXdfZGV2aWNlKGtzcGktXFx1MDAzZWhvc3QsIFxcdTAwMjZpbmZvW2ldKTtcXG5kcml2ZXJzL3NwaS9zcGkta3NwaTIuYy0zMTgtXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbG03MGxscC5jPTE4OD1zdGF0aWMgdm9pZCBzcGlfbG03MGxscF9hdHRhY2goc3RydWN0IHBhcnBvcnQgKnApXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbG03MGxscC5jLTI2Ni1cXHRwcC1cXHUwMDNlaW5mby5jb250cm9sbGVyX2RhdGEgPSBwcDtcXG5kcml2ZXJzL3NwaS9zcGktbG03MGxscC5jOjI2NzpcXHRwcC1cXHUwMDNlc3BpZGV2X2xtNzAgPSBzcGlfbmV3X2RldmljZShwcC1cXHUwMDNlYml0YmFuZy5jdGxyLCBcXHUwMDI2cHAtXFx1MDAzZWluZm8pO1xcbmRyaXZlcnMvc3BpL3NwaS1sbTcwbGxwLmMtMjY4LVxcdGlmIChwcC1cXHUwMDNlc3BpZGV2X2xtNzApXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGktbG03MGxscC5jLTI3MS1cXHRlbHNlIHtcXG5kcml2ZXJzL3NwaS9zcGktbG03MGxscC5jOjI3MjpcXHRcXHRkZXZfd2FybihcXHUwMDI2cGQtXFx1MDAzZWRldiwgXFxcInNwaV9uZXdfZGV2aWNlIGZhaWxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9zcGkvc3BpLWxtNzBsbHAuYy0yNzMtXFx0XFx0c3RhdHVzID0gLUVOT0RFVjtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS14aWxpbnguYz00MDI9c3RhdGljIGludCB4aWxpbnhfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkteGlsaW54LmMtNTA5LVxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBwZGF0YS1cXHUwMDNlbnVtX2RldmljZXM7IGkrKylcXG5kcml2ZXJzL3NwaS9zcGkteGlsaW54LmM6NTEwOlxcdFxcdFxcdHNwaV9uZXdfZGV2aWNlKGhvc3QsIHBkYXRhLVxcdTAwM2VkZXZpY2VzICsgaSk7XFxuZHJpdmVycy9zcGkvc3BpLXhpbGlueC5jLTUxMS1cXHR9XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkuYz0yOTc9c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgc3BpX2NvbnRyb2xsZXJfc3RhdGlzdGljc19ncm91cCA9IHtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS5jLTMwNC0vKlxcbmRyaXZlcnMvc3BpL3NwaS5jOjMwNTogKiBuZXdfZGV2aWNlX3N0b3JlIC0gaW5zdGFudGlhdGUgYSBuZXcgU1BJIGRldmljZSBmcm9tIHVzZXJzcGFjZVxcbmRyaXZlcnMvc3BpL3NwaS5jLTMwNi0gKlxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLmMtMzA5LSAqIEV4YW1wbGVzOlxcbmRyaXZlcnMvc3BpL3NwaS5jOjMxMDogKiAgIGVjaG8gc3BpZGV2IDAgXFx1MDAzZSBuZXdfZGV2aWNlXFxuZHJpdmVycy9zcGkvc3BpLmM6MzExOiAqICAgZWNobyBzcGlkZXYgMCAxMDAwMDAwMCBcXHUwMDNlIG5ld19kZXZpY2VcXG5kcml2ZXJzL3NwaS9zcGkuYzozMTI6ICogICBlY2hvIHNwaWRldiAwIDEwMDAwMDAwIDMgXFx1MDAzZSBuZXdfZGV2aWNlXFxuZHJpdmVycy9zcGkvc3BpLmMtMzEzLSAqL1xcbmRyaXZlcnMvc3BpL3NwaS5jPTMxND1zdGF0aWMgc3NpemVfdFxcbmRyaXZlcnMvc3BpL3NwaS5jOjMxNTpuZXdfZGV2aWNlX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXFxuZHJpdmVycy9zcGkvc3BpLmMtMzE2LVxcdFxcdCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS5jLTMyOS1cXHRpZiAoIWJsYW5rKSB7XFxuZHJpdmVycy9zcGkvc3BpLmM6MzMwOlxcdFxcdGRldl9lcnIoZGV2LCBcXFwibmV3X2RldmljZTogTWlzc2luZyBwYXJhbWV0ZXJzXFxcXG5cXFwiKTtcXG5kcml2ZXJzL3NwaS9zcGkuYy0zMzEtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkuYy0zMzQtXFx0aWYgKGJsYW5rID09IGJ1ZiB8fCBibGFuayAtIGJ1ZiBcXHUwMDNlIFNQSV9OQU1FX1NJWkUgLSAxKSB7XFxuZHJpdmVycy9zcGkvc3BpLmM6MzM1OlxcdFxcdGRldl9lcnIoZGV2LCBcXFwibmV3X2RldmljZTogSW52YWxpZCBkZXZpY2UgbmFtZVxcXFxuXFxcIik7XFxuZHJpdmVycy9zcGkvc3BpLmMtMzM2LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLmMtMzQ4LVxcdGlmIChzc2NhbmYoKytibGFuaywgXFxcIiV1ICV1ICV1XFxcIiwgXFx1MDAyNmNoaXBfc2VsZWN0LCBcXHUwMDI2bWF4X3NwZWVkX2h6LCBcXHUwMDI2bW9kZSkgXFx1MDAzYyAxKSB7XFxuZHJpdmVycy9zcGkvc3BpLmM6MzQ5OlxcdFxcdGRldl9lcnIoZGV2LCBcXFwibmV3X2RldmljZTogQ2FuJ3QgcGFyc2UgY2hpcCBzZWxlY3RcXFxcblxcXCIpO1xcbmRyaXZlcnMvc3BpL3NwaS5jLTM1MC1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS5jLTM1OS1cXHRpZiAoY2hpcF9zZWxlY3QgXFx1MDAzZSBVOF9NQVggfHwgY2hpcF9zZWxlY3QgXFx1MDAzZT0gY3Rsci1cXHUwMDNlbnVtX2NoaXBzZWxlY3QpIHtcXG5kcml2ZXJzL3NwaS9zcGkuYzozNjA6XFx0XFx0ZGV2X2VycihkZXYsIFxcXCJuZXdfZGV2aWNlOiBDaGlwIHNlbGVjdCAldSBvdXQgb2YgcmFuZ2UgKG51bV9jaGlwc2VsZWN0PSV1KVxcXFxuXFxcIixcXG5kcml2ZXJzL3NwaS9zcGkuYy0zNjEtXFx0XFx0XFx0Y2hpcF9zZWxlY3QsIGN0bHItXFx1MDAzZW51bV9jaGlwc2VsZWN0KTtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS5jLTM3Mi1cXHRpZiAobW9kZSBcXHUwMDI2IH4odTMyKVNQSV9NT0RFX1VTRVJfTUFTSykge1xcbmRyaXZlcnMvc3BpL3NwaS5jOjM3MzpcXHRcXHRkZXZfZXJyKGRldiwgXFxcIm5ld19kZXZpY2U6IEludmFsaWQgbW9kZSBiaXRzIDB4JXhcXFxcblxcXCIsXFxuZHJpdmVycy9zcGkvc3BpLmMtMzc0LVxcdFxcdFxcdG1vZGUgXFx1MDAyNiB+KHUzMilTUElfTU9ERV9VU0VSX01BU0spO1xcbi0tXFxuZHJpdmVycy9zcGkvc3BpLmMtNDAxLVxcdC8qXFxuZHJpdmVycy9zcGkvc3BpLmM6NDAyOlxcdCAqIHNwaV91bnJlZ2lzdGVyX2NvbnRyb2xsZXIoKSByZW1vdmVzIHRoZSBuZXdfZGV2aWNlL2RlbGV0ZV9kZXZpY2VcXG5kcml2ZXJzL3NwaS9zcGkuYy00MDMtXFx0ICogc3lzZnMgZ3JvdXAgYmVmb3JlIHRha2luZyBhZGRfbG9jaywgc28ga2VybmZzX2RyYWluKCkgaGFzIGFscmVhZHlcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS5jLTQyMS1cXG5kcml2ZXJzL3NwaS9zcGkuYzo0MjI6XFx0ZGV2X2luZm8oZGV2LCBcXFwibmV3X2RldmljZTogSW5zdGFudGlhdGVkIGRldmljZSAlcyBhdCBDUyV1XFxcXG5cXFwiLFxcbmRyaXZlcnMvc3BpL3NwaS5jLTQyMy1cXHRcXHQgbW9kYWxpYXMsIGNoaXBfc2VsZWN0KTtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS5jLTQyNS19XFxuZHJpdmVycy9zcGkvc3BpLmM6NDI2OnN0YXRpYyBERVZJQ0VfQVRUUl9JR05PUkVfTE9DS0RFUChuZXdfZGV2aWNlLCAwMjAwLCBOVUxMLCBuZXdfZGV2aWNlX3N0b3JlKTtcXG5kcml2ZXJzL3NwaS9zcGkuYy00MjctXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkuYz00NzE9c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKnNwaV9jb250cm9sbGVyX3VzZXJzcGFjZV9hdHRyc1tdID0ge1xcbmRyaXZlcnMvc3BpL3NwaS5jOjQ3MjpcXHRcXHUwMDI2ZGV2X2F0dHJfbmV3X2RldmljZS5hdHRyLFxcbmRyaXZlcnMvc3BpL3NwaS5jLTQ3My1cXHRcXHUwMDI2ZGV2X2F0dHJfZGVsZXRlX2RldmljZS5hdHRyLFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLmM9NDc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIHNwaV9jb250cm9sbGVyX3VzZXJzcGFjZV9ncm91cCA9IHtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS5jLTQ4NC0gKiBzcGlfY29udHJvbGxlcl91c2Vyc3BhY2VfZ3JvdXAgaXMgcmVnaXN0ZXJlZCBtYW51YWxseSBmb3IgaG9zdCBjb250cm9sbGVyc1xcbmRyaXZlcnMvc3BpL3NwaS5jOjQ4NTogKiBhdCB0aGUgZW5kIG9mIHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKCkgc28gbmV3X2RldmljZS9kZWxldGVfZGV2aWNlIG9ubHlcXG5kcml2ZXJzL3NwaS9zcGkuYy00ODYtICogYXBwZWFyIGFmdGVyIERUL0FDUEkgY2hpbGRyZW4gYW5kIHRoZSBxdWV1ZSBhcmUgc2V0IHVwLlxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLmM9OTc5PUVYUE9SVF9TWU1CT0xfR1BMKHNwaV9hZGRfZGV2aWNlKTtcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS5jLTk4MS0vKipcXG5kcml2ZXJzL3NwaS9zcGkuYzo5ODI6ICogc3BpX25ld19kZXZpY2UgLSBpbnN0YW50aWF0ZSBvbmUgbmV3IFNQSSBkZXZpY2VcXG5kcml2ZXJzL3NwaS9zcGkuYy05ODMtICogQGN0bHI6IENvbnRyb2xsZXIgdG8gd2hpY2ggZGV2aWNlIGlzIGNvbm5lY3RlZFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLmMtOTk0LSAqL1xcbmRyaXZlcnMvc3BpL3NwaS5jOjk5NTpzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpX25ld19kZXZpY2Uoc3RydWN0IHNwaV9jb250cm9sbGVyICpjdGxyLFxcbmRyaXZlcnMvc3BpL3NwaS5jLTk5Ni1cXHRcXHRcXHRcXHQgIHN0cnVjdCBzcGlfYm9hcmRfaW5mbyAqY2hpcClcXG4tLVxcbmRyaXZlcnMvc3BpL3NwaS5jLTEwNTAtfVxcbmRyaXZlcnMvc3BpL3NwaS5jOjEwNTE6RVhQT1JUX1NZTUJPTF9HUEwoc3BpX25ld19kZXZpY2UpO1xcbmRyaXZlcnMvc3BpL3NwaS5jLTEwNTItXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkuYz0xMDgxPXN0YXRpYyB2b2lkIHNwaV9tYXRjaF9jb250cm9sbGVyX3RvX2JvYXJkaW5mbyhzdHJ1Y3Qgc3BpX2NvbnRyb2xsZXIgKmN0bHIsXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkuYy0xMDg4LVxcbmRyaXZlcnMvc3BpL3NwaS5jOjEwODk6XFx0ZGV2ID0gc3BpX25ld19kZXZpY2UoY3RsciwgYmkpO1xcbmRyaXZlcnMvc3BpL3NwaS5jLTEwOTAtXFx0aWYgKCFkZXYpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkuYz0zNjUyPWludCBzcGlfcmVnaXN0ZXJfY29udHJvbGxlcihzdHJ1Y3Qgc3BpX2NvbnRyb2xsZXIgKmN0bHIpXFxuLS1cXG5kcml2ZXJzL3NwaS9zcGkuYy0zNzU3LVxcdC8qXFxuZHJpdmVycy9zcGkvc3BpLmM6Mzc1ODpcXHQgKiBSZWdpc3RlciB0aGUgbmV3X2RldmljZS9kZWxldGVfZGV2aWNlIHN5c2ZzIGludGVyZmFjZSBhcyB0aGVcXG5kcml2ZXJzL3NwaS9zcGkuYy0zNzU5LVxcdCAqIGZpbmFsIHN0ZXAgb2YgaG9zdCBjb250cm9sbGVyIGJyaW5ndXAsIG9ubHkgYWZ0ZXIgdGhlIHF1ZXVlLFxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLmM9MzgzOD12b2lkIHNwaV91bnJlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IHNwaV9jb250cm9sbGVyICpjdGxyKVxcbi0tXFxuZHJpdmVycy9zcGkvc3BpLmMtMzg0My1cXHQvKlxcbmRyaXZlcnMvc3BpL3NwaS5jOjM4NDQ6XFx0ICogRHJhaW4gaW4tZmxpZ2h0IG5ld19kZXZpY2UvZGVsZXRlX2RldmljZSBzeXNmcyBzdG9yZXMgYW5kXFxuZHJpdmVycy9zcGkvc3BpLmMtMzg0NS1cXHQgKiBwcmV2ZW50IG5ldyBvbmVzIGZyb20gc3RhcnRpbmcuICBNdXN0IGhhcHBlbiBiZWZvcmUgd2UgdGFrZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODoyMjo0My43MTA1MzM1MTNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjk5ODUwMTA5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIFRob3VnaHRzIG9uIFNQSSBEZXZpY2UgSW5zdGFudGlhdGlvbiBhbmQgdGhlIExBTjg2NXggRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbmV3X2RldmljZWAgZW50cnkgaW4gc3lzZnMgZm9yIFNQSS4gUmlnaHQsIHRoaXMgaXMgaG93IHlvdSBjYW4gZHluYW1pY2FsbHkgaW5zdGFudGlhdGUgYSBuZXcgU1BJIGRldmljZSBmcm9tIHVzZXJzcGFjZS4gSSBzZWUgaXQncyBzb21ldGhpbmcgbGlrZSBgZWNobyBsYW44NjUwIDAgXHUwMDNlIC9zeXMvY2xhc3Mvc3BpX21hc3Rlci9zcGlYL25ld19kZXZpY2VgLiBNYWtlcyBzZW5zZS4gQnV0IEknbSBpbW1lZGlhdGVseSB3b25kZXJpbmcgYWJvdXQgdGhlIGVudmlyb25tZW50IOKAkyBzcGVjaWZpY2FsbHksIFFFTVUuIERvZXMgUUVNVSBldmVuIGhhdmUgbmF0aXZlIFNQSSBjb250cm9sbGVyIHN1cHBvcnQsIG9yIHdpbGwgSSBuZWVkIHRvIHNpbXVsYXRlIGl0IHdpdGggc29tZXRoaW5nIGxpa2UgYHNwaS1sb29wYmFjay10ZXN0YCwgYHNwaS1tb2NrYCwgYHNwaS1ncGlvYCwgb3IgbWF5YmUgZXZlbiBgc3BpLWJ1dHRlcmZseWA/IEFuZCwgaXMgU3l6a2FsbGVyIGhpdHRpbmcgU1BJLCBvciBpcyB0aGlzIGEgZGVhZCBlbmQ/XG5cbk9rYXksIGhvbGQgb24uIEJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGUgc2V0dXAsIGxldCdzIGJhY2sgdXAgYW5kIHVuZGVyc3RhbmQgdGhlIGFjdHVhbCBkZXZpY2UgZHJpdmVyJ3MgYmVoYXZpb3IuIEkgbmVlZCB0byBzZWUgd2hhdCBoYXBwZW5zICp3aGVuKiB0aGlzIGBsYW44NjV4YCBkZXZpY2UgaXMgcHJvYmVkLiBJIHNob3VsZCBjaGVjayB0aGUgcHJvYmUgZnVuY3Rpb24sIHN0YXJ0aW5nIHdpdGggdGhlIGBsYW44NjV4X3Byb2JlYCBmdW5jdGlvbi4gSSB3aWxsIGdvIGRpcmVjdGx5IHRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmNgIGFuZCBhbmFseXplIGZyb20gbGluZSAzMzAgdG8gYWJvdXQgNDIwLiBUaGF0J3Mgd2hlcmUgdGhlIGludGVyZXN0aW5nIHN0dWZmIGxpa2VseSBpcy4gVGhhdCBzaG91bGQgdGVsbCBtZSB3aGF0J3MgYWN0dWFsbHkgaGFwcGVuaW5nIG9uIGluc3RhbnRpYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwODEyLCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA4OjIyOjQ2LjcwOTAzNzg1OVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTUwODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMzMCxcbiAgXCJMaW5lQ291bnRcIjogODVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDMzMDpcXHRcXHQubmRvX2V0aF9pb2N0bCAgICAgICAgICA9IHBoeV9kb19pb2N0bF9ydW5uaW5nLFxcbiAzMzE6XFx0fTtcXG4gMzMyOlxcdFxcbiAzMzM6XFx0c3RhdGljIGludCBsYW44NjV4X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuIDMzNDpcXHR7XFxuIDMzNTpcXHRcXHRzdHJ1Y3Qgb2FfdGM2X3F1aXJrcyB0YzZfcXVpcmtzID0ge307XFxuIDMzNjpcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbiAzMzc6XFx0XFx0c3RydWN0IGxhbjg2NXhfcHJpdiAqcHJpdjtcXG4gMzM4OlxcdFxcdGludCByZXQ7XFxuIDMzOTpcXHRcXG4gMzQwOlxcdFxcdG5ldGRldiA9IGFsbG9jX2V0aGVyZGV2KHNpemVvZihzdHJ1Y3QgbGFuODY1eF9wcml2KSk7XFxuIDM0MTpcXHRcXHRpZiAoIW5ldGRldilcXG4gMzQyOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAzNDM6XFx0XFxuIDM0NDpcXHRcXHRwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG4gMzQ1OlxcdFxcdHByaXYtXFx1MDAzZW5ldGRldiA9IG5ldGRldjtcXG4gMzQ2OlxcdFxcdHByaXYtXFx1MDAzZXNwaSA9IHNwaTtcXG4gMzQ3OlxcdFxcdHNwaV9zZXRfZHJ2ZGF0YShzcGksIHByaXYpO1xcbiAzNDg6XFx0XFx0SU5JVF9XT1JLKFxcdTAwMjZwcml2LVxcdTAwM2VtdWx0aWNhc3Rfd29yaywgbGFuODY1eF9tdWx0aWNhc3Rfd29ya19oYW5kbGVyKTtcXG4gMzQ5OlxcdFxcbiAzNTA6XFx0XFx0dGM2X3F1aXJrcy5xdWlya19mbGFncyA9IE9BX1RDNl9QSFlfSU5UO1xcbiAzNTE6XFx0XFx0cHJpdi1cXHUwMDNldGM2ID0gb2FfdGM2X2luaXQoc3BpLCBuZXRkZXYsIFxcdTAwMjZ0YzZfcXVpcmtzKTtcXG4gMzUyOlxcdFxcdGlmICghcHJpdi1cXHUwMDNldGM2KSB7XFxuIDM1MzpcXHRcXHRcXHRyZXQgPSAtRU5PREVWO1xcbiAzNTQ6XFx0XFx0XFx0Z290byBmcmVlX25ldGRldjtcXG4gMzU1OlxcdFxcdH1cXG4gMzU2OlxcdFxcbiAzNTc6XFx0XFx0LyogTEFOODY1eCBSZXYuQjAvQjEgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGZyb20gQU4xNzYwXFxuIDM1ODpcXHRcXHQgKiBBcyBwZXIgdGhlIENvbmZpZ3VyYXRpb24gQXBwbGljYXRpb24gTm90ZSBBTjE3NjAgcHVibGlzaGVkIGluIHRoZVxcbiAzNTk6XFx0XFx0ICogbGluaywgaHR0cHM6Ly93d3cubWljcm9jaGlwLmNvbS9lbi11cy9hcHBsaWNhdGlvbi1ub3Rlcy9hbjE3NjBcXG4gMzYwOlxcdFxcdCAqIFJldmlzaW9uIEYgKERTNjAwMDE3NjBHIC0gSnVuZSAyMDI0KSwgY29uZmlndXJlIHRoZSBNQUMgdG8gc2V0IHRpbWVcXG4gMzYxOlxcdFxcdCAqIHN0YW1waW5nIGF0IHRoZSBlbmQgb2YgdGhlIFN0YXJ0IG9mIEZyYW1lIERlbGltaXRlciAoU0ZEKSBhbmQgc2V0IHRoZVxcbiAzNjI6XFx0XFx0ICogVGltZXIgSW5jcmVtZW50IHJlZyB0byA0MCBucyB0byBiZSB1c2VkIGFzIGEgMjUgTUh6IGludGVybmFsIGNsb2NrLlxcbiAzNjM6XFx0XFx0ICovXFxuIDM2NDpcXHRcXHRyZXQgPSBvYV90YzZfd3JpdGVfcmVnaXN0ZXIocHJpdi1cXHUwMDNldGM2LCBMQU44NjVYX1JFR19NQUNfVFNVX1RJTUVSX0lOQ1IsXFxuIDM2NTpcXHRcXHRcXHRcXHRcXHQgICAgTUFDX1RTVV9USU1FUl9JTkNSX0NPVU5UX05BTk9TRUNPTkRTKTtcXG4gMzY2OlxcdFxcdGlmIChyZXQpIHtcXG4gMzY3OlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnNwaS1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIGNvbmZpZyBUU1UgVGltZXIgSW5jciByZWc6ICVkXFxcXG5cXFwiLFxcbiAzNjg6XFx0XFx0XFx0XFx0cmV0KTtcXG4gMzY5OlxcdFxcdFxcdGdvdG8gb2FfdGM2X2V4aXQ7XFxuIDM3MDpcXHRcXHR9XFxuIDM3MTpcXHRcXG4gMzcyOlxcdFxcdC8qIEFzIHBlciB0aGUgcG9pbnQgczMgaW4gdGhlIGJlbG93IGVycmF0YSwgU1BJIHJlY2VpdmUgRXRoZXJuZXQgZnJhbWVcXG4gMzczOlxcdFxcdCAqIHRyYW5zZmVyIG1heSBoYWx0IHdoZW4gc3RhcnRpbmcgdGhlIG5leHQgZnJhbWUgaW4gdGhlIHNhbWUgZGF0YSBibG9ja1xcbiAzNzQ6XFx0XFx0ICogKGNodW5rKSBhcyB0aGUgZW5kIG9mIGEgcHJldmlvdXMgZnJhbWUuIFRoZSBSRkEgZmllbGQgc2hvdWxkIGJlXFxuIDM3NTpcXHRcXHQgKiBjb25maWd1cmVkIHRvIDAxYiBvciAxMGIgZm9yIHByb3BlciBvcGVyYXRpb24uIEluIHRoZXNlIG1vZGVzLCBvbmx5XFxuIDM3NjpcXHRcXHQgKiBvbmUgcmVjZWl2ZSBFdGhlcm5ldCBmcmFtZSB3aWxsIGJlIHBsYWNlZCBpbiBhIHNpbmdsZSBkYXRhIGJsb2NrLlxcbiAzNzc6XFx0XFx0ICogV2hlbiB0aGUgUkZBIGZpZWxkIGlzIHdyaXR0ZW4gdG8gMDFiLCByZWNlaXZlZCBmcmFtZXMgd2lsbCBiZSBmb3JjZWRcXG4gMzc4OlxcdFxcdCAqIHRvIG9ubHkgc3RhcnQgaW4gdGhlIGZpcnN0IHdvcmQgb2YgdGhlIGRhdGEgYmxvY2sgcGF5bG9hZCAoU1dPPTApLiBBc1xcbiAzNzk6XFx0XFx0ICogcmVjb21tZW5kZWQsIGVuYWJsZSB6ZXJvIGFsaWduIHJlY2VpdmUgZnJhbWUgZmVhdHVyZSBmb3IgcHJvcGVyXFxuIDM4MDpcXHRcXHQgKiBvcGVyYXRpb24uXFxuIDM4MTpcXHRcXHQgKlxcbiAzODI6XFx0XFx0ICogaHR0cHM6Ly93dzEubWljcm9jaGlwLmNvbS9kb3dubG9hZHMvYWVtRG9jdW1lbnRzL2RvY3VtZW50cy9BSVMvUHJvZHVjdERvY3VtZW50cy9FcnJhdGEvTEFOODY1MC0xLUVycmF0YS04MDAwMTA3NS5wZGZcXG4gMzgzOlxcdFxcdCAqL1xcbiAzODQ6XFx0XFx0cmV0ID0gb2FfdGM2X3plcm9fYWxpZ25fcmVjZWl2ZV9mcmFtZV9lbmFibGUocHJpdi1cXHUwMDNldGM2KTtcXG4gMzg1OlxcdFxcdGlmIChyZXQpIHtcXG4gMzg2OlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnNwaS1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIHNldCBaQVJGRTogJWRcXFxcblxcXCIsIHJldCk7XFxuIDM4NzpcXHRcXHRcXHRnb3RvIG9hX3RjNl9leGl0O1xcbiAzODg6XFx0XFx0fVxcbiAzODk6XFx0XFxuIDM5MDpcXHRcXHQvKiBHZXQgdGhlIE1BQyBhZGRyZXNzIGZyb20gdGhlIFNQSSBkZXZpY2UgdHJlZSBub2RlICovXFxuIDM5MTpcXHRcXHRpZiAoZGV2aWNlX2dldF9ldGhkZXZfYWRkcmVzcyhcXHUwMDI2c3BpLVxcdTAwM2VkZXYsIG5ldGRldikpXFxuIDM5MjpcXHRcXHRcXHRldGhfaHdfYWRkcl9yYW5kb20obmV0ZGV2KTtcXG4gMzkzOlxcdFxcbiAzOTQ6XFx0XFx0cmV0ID0gbGFuODY1eF9zZXRfaHdfbWFjYWRkcihwcml2LCBuZXRkZXYtXFx1MDAzZWRldl9hZGRyKTtcXG4gMzk1OlxcdFxcdGlmIChyZXQpIHtcXG4gMzk2OlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnNwaS1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIGNvbmZpZ3VyZSBNQUM6ICVkXFxcXG5cXFwiLCByZXQpO1xcbiAzOTc6XFx0XFx0XFx0Z290byBvYV90YzZfZXhpdDtcXG4gMzk4OlxcdFxcdH1cXG4gMzk5OlxcdFxcbiA0MDA6XFx0XFx0bmV0ZGV2LVxcdTAwM2VpZl9wb3J0ID0gSUZfUE9SVF8xMEJBU0VUO1xcbiA0MDE6XFx0XFx0bmV0ZGV2LVxcdTAwM2VpcnEgPSBzcGktXFx1MDAzZWlycTtcXG4gNDAyOlxcdFxcdG5ldGRldi1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZsYW44NjV4X25ldGRldl9vcHM7XFxuIDQwMzpcXHRcXHRuZXRkZXYtXFx1MDAzZWV0aHRvb2xfb3BzID0gXFx1MDAyNmxhbjg2NXhfZXRodG9vbF9vcHM7XFxuIDQwNDpcXHRcXG4gNDA1OlxcdFxcdHJldCA9IHJlZ2lzdGVyX25ldGRldihuZXRkZXYpO1xcbiA0MDY6XFx0XFx0aWYgKHJldCkge1xcbiA0MDc6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2c3BpLVxcdTAwM2VkZXYsIFxcXCJSZWdpc3RlciBuZXRkZXYgZmFpbGVkIChyZXQgPSAlZClcXFwiLCByZXQpO1xcbiA0MDg6XFx0XFx0XFx0Z290byBvYV90YzZfZXhpdDtcXG4gNDA5OlxcdFxcdH1cXG4gNDEwOlxcdFxcbiA0MTE6XFx0XFx0cmV0dXJuIDA7XFxuIDQxMjpcXHRcXG4gNDEzOlxcdG9hX3RjNl9leGl0OlxcbiA0MTQ6XFx0XFx0b2FfdGM2X2V4aXQocHJpdi1cXHUwMDNldGM2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDg6MjI6NDYuNzA5MTU1MDI5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU1MTAzMDU4MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBGZWFzaWJpbGl0eSBBc3Nlc3NtZW50KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgaW52b2x2ZXMgdGhlIGBsYW44NjV4YCwgYG9hX3RjNmAsIGFuZCBgbWljcm9jaGlwX3Qxc2AgY29tcG9uZW50cy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRldGVybWluZSBpZiB0aGlzIGNvZGUgaXMgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnQuIFRoZSB0cmlhZ2UgcGhpbG9zb3BoeSBwcmlvcml0aXplcyByZWFjaGFiaWxpdHkgYXMgdGhlIHByaW1hcnkgZ2F0ZS5cblxuRmlyc3QsIEkgcmVtZW1iZXIgdGhhdCBgbGFuODY1eGAgaXMgYSBNQUMtUEhZIGNvbm5lY3RlZCB2aWEgU1BJLiBUaGUgY3JpdGljYWwgcXVlc3Rpb24gaGVyZSBpcyB3aGV0aGVyIHRoaXMgaGFyZHdhcmUgb3IgYW55dGhpbmcgc2ltaWxhciBjYW4gYmUgZW11bGF0ZWQgd2l0aGluIHRoZSBzdGFuZGFyZCBRRU1VIHNldHVwIHdlJ3JlIHVzaW5nLiBTYWRseSwgUUVNVSdzIGRvY3VtZW50YXRpb24gYW5kIG15IHByaW9yIGtub3dsZWRnZSB0ZWxsIG1lIGl0IGRvZXNuJ3QgZW11bGF0ZSB0aGUgTEFOODY1MCwgTEFOODY1MSwgb3IgYW55IE1pY3JvY2hpcCBUMVMgUEhZLCBub3IgZG9lcyBpdCBoYXZlIGFuIE9BLVRDNiBjaGlwIGVtdWxhdGlvbi5cblxuTm93LCBsZXQncyBhcHBseSB0aGUgdHJpYWdlIHBoaWxvc29waHkuIFNlY3Rpb24gMSBzdHJlc3NlcyB0aGF0IGZ1enppbmcgc2hvdWxkIG9ubHkgdGFyZ2V0IGNvZGUgdGhhdCAqZXhlY3V0ZXMqIGluIGEgc3RhbmRhcmQgdmlydHVhbCBlbnZpcm9ubWVudC4gU2VjdGlvbiAyIGxheXMgb3V0IHRoZSBcIm5lZ2F0aXZlIGNyaXRlcmlhXCIgZm9yIGRldGVybWluaW5nIHdoZW4gdG8gKm5vdCogZnV6ei4gTXkgcHJpbWFyeSBjb25jZXJuIGlzIGlmIHRoZSBtb2RpZmllZCBjb2RlIGZhbGxzIGludG8gdGhpcyBjYXRlZ29yeSwgc3BlY2lmaWNhbGx5OiBcIlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZVwiIC0gbGlrZSB2ZW5kb3Itc3BlY2lmaWMgZGV2aWNlcyByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQyBjYXJkcyB1bmF2YWlsYWJsZSBpbiBRRU1VLiBBbHNvLCBkcml2ZXJzIHRoYXQgYXJlIG9ubHkgdXNlZCBkdXJpbmcgcGh5c2ljYWwgZGV2aWNlIHJlbW92YWwsIG9yIGFyZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMsIGFyZSB0byBiZSBpZ25vcmVkLlxuXG5TZWN0aW9uIDMgb3V0bGluZXMgdGhlIFwicG9zaXRpdmUgY3JpdGVyaWEsXCIgY29kZSB0aGF0ICpzaG91bGQqIGJlIGZ1enplZC4gVGhhdCBpbmNsdWRlcyBhbnl0aGluZyBpbiBjb3JlIHN1YnN5c3RlbXMsIHJlZmFjdG9yaW5ncywgcnVudGltZSBhc3NlcnRpb25zLCBvciBkcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgc3VjaCBhcyB2aXJ0aW8sIFVTQiBnYWRnZXQsIGV0Yy5cblxuSSd2ZSBnb3QgZm91ciBmaWxlcyBpbiB0aGUgbW9kaWZpZWQgY29kZTogYGxhbjg2NXguY2AsIGBvYV90YzYuY2AsIGBtaWNyb2NoaXBfdDFzLmNgLCBhbmQgYG9hX3RjNi5oYC4gTXkgYW5hbHlzaXMgc2F5cyB0aGF0OlxuXG4xLiAgYGxhbjg2NXguY2AgaXMgdGhlIEV0aGVybmV0IGNvbnRyb2xsZXIgZHJpdmVyIGZvciB0aGUgTWljcm9jaGlwIExBTjg2NXggZmFtaWx5LCB1c2luZyBTUEkuXG4yLiAgYG9hX3RjNi5jYCBpcyB0aGUgT3BlbiBBbGxpYW5jZSBUQzYgMTBCQVNFLVQxUyBNQUMtUEhZIHByb3RvY29sIGxpYnJhcnksIGFsc28gZm9yIFNQSS5cbjMuICBgbWljcm9jaGlwX3Qxcy5jYCBpcyB0aGUgRXRoZXJuZXQgUEhZIGRyaXZlciBmb3IgTEFOODY3eC9MQU44NjV4LlxuNC4gIGBvYV90YzYuaGAgaXMgdGhlIGFzc29jaWF0ZWQgaGVhZGVyLlxuXG5HaXZlbiB0aGF0IHRoZXNlIGFyZSBTUEkgZHJpdmVycyBmb3IgcGh5c2ljYWwgTUFDLVBIWSBjaGlwcywgdGhlIGtleSBxdWVzdGlvbiBpczogYXJlIGFueSBvZiB0aGVzZSBjb21wb25lbnRzIHVzYWJsZSB3aXRoIHZpcnR1YWwgZHJpdmVycyBvciBlbXVsYXRlZCBoYXJkd2FyZT8gVGhlIGFuc3dlciBsb29rcyB0byBiZSBuby4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gY2hlY2sgYWxsIHRoZSBrZXJuZWwgdXNlcyBvZiBgb2FfdGM2YCBhbmQgZGVjaWRlIGlmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI4ODksIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODoyMjo1Mi4yMTk0NjQzODdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5OTg0NTg2MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib2FfdGM2X2luaXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL29hLXRjNi1mcmFtZXdvcmsucnN0PTQ1ND1UaGUgaW5jbHVkZS9saW51eC9vYV90YzYuaCBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9vYS10YzYtZnJhbWV3b3JrLnJzdC00NTUtXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL29hLXRjNi1mcmFtZXdvcmsucnN0OjQ1NjouLiBjOmZ1bmN0aW9uOjogc3RydWN0IG9hX3RjNiAqb2FfdGM2X2luaXQoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSwgXFxcXFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9vYS10YzYtZnJhbWV3b3JrLnJzdC00NTctICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jPTcwOT1zdGF0aWMgaW50IGFkaW4xMTQwX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy03MjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM6NzI3OlxcdHByaXYtXFx1MDAzZXRjNiA9IG9hX3RjNl9pbml0KHNwaSwgbmV0ZGV2LCBcXHUwMDI2dGM2X3F1aXJrcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmMtNzI4LVxcdGlmICghcHJpdi1cXHUwMDNldGM2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jPTMzMz1zdGF0aWMgaW50IGxhbjg2NXhfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYy0zNTAtXFx0dGM2X3F1aXJrcy5xdWlya19mbGFncyA9IE9BX1RDNl9QSFlfSU5UO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L2xhbjg2NXguYzozNTE6XFx0cHJpdi1cXHUwMDNldGM2ID0gb2FfdGM2X2luaXQoc3BpLCBuZXRkZXYsIFxcdTAwMjZ0YzZfcXVpcmtzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMtMzUyLVxcdGlmICghcHJpdi1cXHUwMDNldGM2KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYz0xNTA1PXN0YXRpYyBpbnQgb2FfdGM2X2NoZWNrX2N0cmxfcHJvdGVjdGlvbihzdHJ1Y3Qgb2FfdGM2ICp0YzYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYy0xNTE5LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jOjE1MjA6ICogb2FfdGM2X2luaXQgLSBhbGxvY2F0ZXMgYW5kIGluaXRpYWxpemVzIG9hX3RjNiBzdHJ1Y3R1cmUuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTUyMS0gKiBAc3BpOiBkZXZpY2Ugd2l0aCB3aGljaCBkYXRhIHdpbGwgYmUgZXhjaGFuZ2VkLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTUyNy0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYzoxNTI4OnN0cnVjdCBvYV90YzYgKm9hX3RjNl9pbml0KHN0cnVjdCBzcGlfZGV2aWNlICpzcGksIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTUyOS1cXHRcXHRcXHQgICBzdHJ1Y3Qgb2FfdGM2X3F1aXJrcyAqcXVpcmtzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTY0NC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmM6MTY0NTpFWFBPUlRfU1lNQk9MX0dQTChvYV90YzZfaW5pdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvb2FfdGM2LmMtMTY0Ni1cXG4tLVxcbmluY2x1ZGUvbGludXgvb2FfdGM2Lmg9NzY9c3RydWN0IG9hX3RjNl9xdWlya3Mge1xcbi0tXFxuaW5jbHVkZS9saW51eC9vYV90YzYuaC03OS1cXG5pbmNsdWRlL2xpbnV4L29hX3RjNi5oOjgwOnN0cnVjdCBvYV90YzYgKm9hX3RjNl9pbml0KHN0cnVjdCBzcGlfZGV2aWNlICpzcGksIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuaW5jbHVkZS9saW51eC9vYV90YzYuaC04MS1cXHRcXHRcXHQgICBzdHJ1Y3Qgb2FfdGM2X3F1aXJrcyAqcXVpcmtzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDg6MjI6NTQuMjE3OTMyODg0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ5MTA0OTYzODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgVW5yZWFjaGFiaWxpdHkgb2YgdGhlIE1vZGlmaWVkIENvZGUqKlxuXG5Pa2F5LCBoZXJlJ3MgdGhlIGRlYWw6IEkndmUgbG9va2VkIGF0IHRoZSBjYWxscyB0byBgb2FfdGM2X2luaXRgLiBJIHNlZSB0aGF0IGl0J3Mgb25seSBjYWxsZWQgYnkgYGFkaW4xMTQwX3Byb2JlYCBhbmQgYGxhbjg2NXhfcHJvYmVgLiBUaGVzZSBhcmUgU1BJIEV0aGVybmV0IGNvbnRyb2xsZXIgZHJpdmVycywgc3BlY2lmaWNhbGx5IGZvciB0aGUgQW5hbG9nIERldmljZXMgQURJTjExNDAgYW5kIHRoZSBNaWNyb2NoaXAgTEFOODY1MC8xIGNoaXBzLiBUaGVuIHRoZXJlJ3MgYG1pY3JvY2hpcF90MXNgLCBhIFBIWSBkcml2ZXIgZm9yIHRoZSBNaWNyb2NoaXAgTEFOODY3eCAvIExBTjg2NXggUEhZIGhhcmR3YXJlIGNoaXBzLlxuXG5UaGVzZSBhcmUgbm90IGdlbmVyaWMgZGV2aWNlcy4gVGhleSdyZSBwaHlzaWNhbCBJQ3Mg4oCTIDEwQkFTRS1UMVMgc2luZ2xlLXBhaXIgRXRoZXJuZXQgTUFDLVBIWXMgb3IgUEhZcyB0aGF0IGNvbm5lY3Qgb3ZlciBTUEkvTURJTy4gQW5kLCBhcyBmYXIgYXMgSSBrbm93LCB0aGVzZSBhcmVuJ3QgZW11bGF0ZWQgYnkgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgVk1zLCB3aGljaCBhcmUgc3RhbmRhcmQgZW52aXJvbm1lbnRzIGZvciBvdXIgZnV6emluZyBlZmZvcnRzLiBXaXRob3V0IHRoYXQgYWN0dWFsIGhhcmR3YXJlIG9yIGEgdXNhYmxlIFNQSSBkZXZpY2UsIG5laXRoZXIgYGxhbjg2NXhfcHJvYmVgLCBgYWRpbjExNDBfcHJvYmVgLCBgb2FfdGM2YCwgbm9yIGBtaWNyb2NoaXBfdDFzX2RyaXZlcmAgY2FuIGJlIHByb2JlZCBvciBydW4uXG5cblNvLCBpbiBlc3NlbmNlLCBhbGwgb2YgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiBJdCdzIGVzc2VudGlhbGx5IGRlYWQgY29kZSBpbiBvdXIgY3VycmVudCBmdXp6aW5nIHNldHVwLlxuXG5Ob3csIGxldCdzIHZlcmlmeSBpZiBhbGwgdGhlIHByZS1yZXF1aXNpdGVzIGFyZSBtZXQ6XG5cbjEuICAqKklzIGBXb3J0aEZ1enppbmdgIGZhbHNlPyoqIFllcywgYWJzb2x1dGVseS4gVGhlIGNoYW5nZXMgYXJlIGFsbCBzcGVjaWZpYyB0byBoYXJkd2FyZSAodGhlIGBsYW44NjV4YCwgYG9hX3RjNmAsIGFuZCBgbWljcm9jaGlwX3Qxc2AgZHJpdmVycykgdGhhdCB3ZSBjYW4ndCBlbXVsYXRlIGluIG91ciB0eXBpY2FsIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlxuXG4yLiAgKipBcmUgYEZvY3VzU3ltYm9sc2AgYW5kIGBFbmFibGVDb25maWdzYCBhcHByb3ByaWF0ZWx5IHNldCB3aGVuIGBXb3J0aEZ1enppbmdgIGlzIGZhbHNlPyoqIFRoZXkgc2hvdWxkIGJlIG51bGwgb3IgYW4gZW1wdHkgbGlzdC4gU28sIGxldCdzIGRvdWJsZS1jaGVjayB0aGUgcGFyYW1ldGVyIGZvcm1hdHRpbmcgZm9yIGBzZXQtcmVzdWx0c2A6IGBFbmFibGVDb25maWdzYCBzaG91bGQgYmUgYSBsaXN0IG9mIHN0cmluZ3Mgb3IgbnVsbC4gYEZvY3VzU3ltYm9sc2AgYXMgd2VsbCwgc2hvdWxkIGJlIGEgbGlzdCBvZiBzdHJpbmdzIG9yIG51bGwuIEkgd2lsbCBwcm92aWRlIGEgY2xlYXIgYW5kIGNvbmNpc2UgYFJlYXNvbmluZ2AgYW5kIHNldCBgV29ydGhGdXp6aW5nYCB0byBib29sZWFuLlxuXG5JIHRoaW5rIGEgY2xlYXIsIGNvbmNpc2UgcmVhc29uaW5nIHN0YXRlbWVudCB3b3VsZCBiZTogXCJUaGUgY2hhbmdlcyBtb2RpZnkgdGhlIE1pY3JvY2hpcCBMQU44NjV4IEV0aGVybmV0IGRyaXZlciwgdGhlIE9wZW4gQWxsaWFuY2UgVEM2IFNQSSBNQUMtUEhZIHN1cHBvcnQgbGlicmFyeSwgYW5kIHRoZSBNaWNyb2NoaXAgMTBCQVNFLVQxUyBQSFkgZHJpdmVyLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgc3BlY2lmaWMgcGh5c2ljYWwgMTBCQVNFLVQxUyBFdGhlcm5ldCAvIE1BQy1QSFkgaGFyZHdhcmUgYXR0YWNoZWQgdmlhIFNQSS9NRElPIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCJcblxuQWxyaWdodCwgdGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MjU5LCJPdXRwdXRUb2tlbnMiOjE3NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODoyMjo1OS4xMjg0MzI2ODNaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDYyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWljcm9jaGlwIExBTjg2NXggU1BJIEV0aGVybmV0IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jKSwgdGhlIE9wZW4gQWxsaWFuY2UgVEM2IE1BQy1QSFkgcHJvdG9jb2wgbGF5ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jKSwgYW5kIHRoZSBNaWNyb2NoaXAgMTBCQVNFLVQxUyBQSFkgZHJpdmVyIChkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jKS4gVGhlc2UgZHJpdmVycyBvcGVyYXRlIG9uIHNwZWNpZmljIHBoeXNpY2FsIDEwQkFTRS1UMVMgc2luZ2xlLXBhaXIgRXRoZXJuZXQgaGFyZHdhcmUgY29ubmVjdGVkIG92ZXIgU1BJL01ESU8gdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWljcm9jaGlwIExBTjg2NXggU1BJIEV0aGVybmV0IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjg2NXgvbGFuODY1eC5jKSwgdGhlIE9wZW4gQWxsaWFuY2UgVEM2IE1BQy1QSFkgcHJvdG9jb2wgbGF5ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L29hX3RjNi5jKSwgYW5kIHRoZSBNaWNyb2NoaXAgMTBCQVNFLVQxUyBQSFkgZHJpdmVyIChkcml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3Qxcy5jKS4gVGhlc2UgZHJpdmVycyBvcGVyYXRlIG9uIHNwZWNpZmljIHBoeXNpY2FsIDEwQkFTRS1UMVMgc2luZ2xlLXBhaXIgRXRoZXJuZXQgaGFyZHdhcmUgY29ubmVjdGVkIG92ZXIgU1BJL01ESU8gdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwODoyMjo1OS4xMjg0NjIwMzRaIiwiU2VxIjoyMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowc5vbn[1] Phase: Running StartedAt: 2026-09-07 08:23:10 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc5vbn[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-07 08:23:10 +0000 UTC FinishedAt: 2026-09-07 08:23:15 +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,}