Name: series-workflowqvd8s Phase: Failed StartedAt: 2026-08-01 19:46:43 +0000 UTC FinishedAt: 2026-08-01 20:05:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvd8s[0] Phase: Succeeded StartedAt: 2026-08-01 19:46:43 +0000 UTC FinishedAt: 2026-08-01 20:05:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvd8s[0].run-triage Phase: Succeeded StartedAt: 2026-08-01 19:46:43 +0000 UTC FinishedAt: 2026-08-01 20:05:05 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIwOjA0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgcmVuYW1lcyBwd3JzZXFfcG93ZXJfb24vb2ZmIHRvIHB3cnNlcV9lbmFibGUvZGlzYWJsZSBhY3Jvc3MgdGhlIHBvd2VyIHNlcXVlbmNpbmcgc3Vic3lzdGVtIGFuZCBpdHMgY29uc3VtZXJzLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBleGVjdXRpb24gZmxvdy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjA6MDQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyNGIyYjA4MGYzMTAyYjQ2Y2IyYmFmMzc5YTc3N2VkYzFiY2IzMTYxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMSAyMDowNDo0MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvcHdyc2VxLnJzdCBiL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9wd3JzZXEucnN0XG5pbmRleCBhZDE4YjIzMjZiNjg5Li5lMTA1NmQxNDE4NDUxIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3B3cnNlcS5yc3RcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9wd3JzZXEucnN0XG5AQCAtNTAsOSAmIzQzOzUwLDkgQEAgQ29uc3VtZXIgaW50ZXJmYWNlXG4gVGhlIGNvbnN1bWVyIEFQSSBpcyBhaW1lZCB0byBiZSBhcyBzaW1wbGUgYXMgcG9zc2libGUuIFRoZSBkcml2ZXIgaW50ZXJlc3RlZCBpblxuIGdldHRpbmcgYSBkZXNjcmlwdG9yIGZyb20gdGhlIHBvd2VyIHNlcXVlbmNlciBzaG91bGQgY2FsbCBwd3JzZXFfZ2V0KCkgYW5kXG4gc3BlY2lmeSB0aGUgbmFtZSBvZiB0aGUgdGFyZ2V0IGl0IHdhbnRzIHRvIHJlYWNoIGluIHRoZSBzZXF1ZW5jZSBhZnRlciBjYWxsaW5nXG4tcHdyc2VxX3Bvd2VyX3VwKCkuIFRoZSBkZXNjcmlwdG9yIGNhbiBiZSByZWxlYXNlZCBieSBjYWxsaW5nIHB3cnNlcV9wdXQoKSBhbmRcbiYjNDM7cHdyc2VxX2VuYWJsZSgpLiBUaGUgZGVzY3JpcHRvciBjYW4gYmUgcmVsZWFzZWQgYnkgY2FsbGluZyBwd3JzZXFfcHV0KCkgYW5kXG4gdGhlIGNvbnN1bWVyIGNhbiByZXF1ZXN0IHRoZSBwb3dlcmluZyBkb3duIG9mIGl0cyB0YXJnZXQgd2l0aFxuLXB3cnNlcV9wb3dlcl9vZmYoKS4gTm90ZSB0aGF0IHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHB3cnNlcV9wb3dlcl9vZmYoKVxuJiM0Mztwd3JzZXFfZGlzYWJsZSgpLiBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgcHdyc2VxX2Rpc2FibGUoKVxuIHdpbGwgaGF2ZSBhbnkgZWZmZWN0IGFzIHRoZXJlIG1heSBiZSBtdWx0aXBsZSB1c2VycyBvZiB0aGUgdW5kZXJseWluZyByZXNvdXJjZXNcbiB3aG8gbWF5IGtlZXAgdGhlbSBhY3RpdmUuXG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jIGIvZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jXG5pbmRleCAzNDVmNjAyZTljZTIzLi5mYWE5NjQ3MzVhZGIxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2JsdWV0b290aC9oY2lfcWNhLmNcbkBAIC0yMjU5LDcgJiM0MzsyMjU5LDcgQEAgc3RhdGljIHZvaWQgcWNhX3Bvd2VyX29mZihzdHJ1Y3QgaGNpX3VhcnQgKmh1KVxuIFx0fVxuIFxuIFx0aWYgKHBvd2VyIFx1MDAyNlx1MDAyNiBwb3dlci1cdTAwM2Vwd3JzZXEpIHtcbi1cdFx0cHdyc2VxX3Bvd2VyX29mZihwb3dlci1cdTAwM2Vwd3JzZXEpO1xuJiM0MztcdFx0cHdyc2VxX2Rpc2FibGUocG93ZXItXHUwMDNlcHdyc2VxKTtcbiBcdFx0c2V0X2JpdChRQ0FfQlRfT0ZGLCBcdTAwMjZxY2EtXHUwMDNlZmxhZ3MpO1xuIFx0XHRyZXR1cm47XG4gICAgICAgICB9XG5AQCAtMjMxOSw3ICYjNDM7MjMxOSw3IEBAIHN0YXRpYyBpbnQgcWNhX3JlZ3VsYXRvcl9lbmFibGUoc3RydWN0IHFjYV9zZXJkZXYgKnFjYWRldilcbiBcdGludCByZXQ7XG4gXG4gXHRpZiAocG93ZXItXHUwMDNlcHdyc2VxKVxuLVx0XHRyZXR1cm4gcHdyc2VxX3Bvd2VyX29uKHBvd2VyLVx1MDAzZXB3cnNlcSk7XG4mIzQzO1x0XHRyZXR1cm4gcHdyc2VxX2VuYWJsZShwb3dlci1cdTAwM2Vwd3JzZXEpO1xuIFxuIFx0LyogQWxyZWFkeSBlbmFibGVkICovXG4gXHRpZiAocG93ZXItXHUwMDNldnJlZ3Nfb24pXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL3B2cl9wb3dlci5jIGIvZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL3B2cl9wb3dlci5jXG5pbmRleCBhNzFkNWIzNTYwMWU3Li5lYjRiNmVjZGY0ZjRkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL3B2cl9wb3dlci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vcHZyX3Bvd2VyLmNcbkBAIC0zNTIsMTIgJiM0MzszNTIsMTIgQEAgc3RhdGljIGludCBwdnJfcG93ZXJfaW5pdF9wd3JzZXEoc3RydWN0IHB2cl9kZXZpY2UgKnB2cl9kZXYpXG4gXG4gc3RhdGljIGludCBwdnJfcG93ZXJfb25fc2VxdWVuY2VfcHdyc2VxKHN0cnVjdCBwdnJfZGV2aWNlICpwdnJfZGV2KVxuIHtcbi1cdHJldHVybiBwd3JzZXFfcG93ZXJfb24ocHZyX2Rldi1cdTAwM2Vwd3JzZXEpO1xuJiM0MztcdHJldHVybiBwd3JzZXFfZW5hYmxlKHB2cl9kZXYtXHUwMDNlcHdyc2VxKTtcbiB9XG4gXG4gc3RhdGljIGludCBwdnJfcG93ZXJfb2ZmX3NlcXVlbmNlX3B3cnNlcShzdHJ1Y3QgcHZyX2RldmljZSAqcHZyX2RldilcbiB7XG4tXHRyZXR1cm4gcHdyc2VxX3Bvd2VyX29mZihwdnJfZGV2LVx1MDAzZXB3cnNlcSk7XG4mIzQzO1x0cmV0dXJuIHB3cnNlcV9kaXNhYmxlKHB2cl9kZXYtXHUwMDNlcHdyc2VxKTtcbiB9XG4gXG4gY29uc3Qgc3RydWN0IHB2cl9wb3dlcl9zZXF1ZW5jZV9vcHMgcHZyX3Bvd2VyX3NlcXVlbmNlX29wc19wd3JzZXEgPSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuY1xuaW5kZXggMzEwNjUwMjI3NTc4MS4uZjI4ZmVkODljYzI4YiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuY1xuQEAgLTEwMjUsNyAmIzQzOzEwMjUsNyBAQCBzdGF0aWMgaW50IGF0aDEwa19od19wb3dlcl9vbihzdHJ1Y3QgYXRoMTBrICphcilcbiBcbiBcdGF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfU05PQywgXCYjMzQ7c29jIHBvd2VyIG9uXFxuXCYjMzQ7KTtcbiBcbi1cdHJldCA9IHB3cnNlcV9wb3dlcl9vbihhcl9zbm9jLVx1MDAzZXB3cnNlcSk7XG4mIzQzO1x0cmV0ID0gcHdyc2VxX2VuYWJsZShhcl9zbm9jLVx1MDAzZXB3cnNlcSk7XG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuQEAgLTEwNDIsNyAmIzQzOzEwNDIsNyBAQCBzdGF0aWMgaW50IGF0aDEwa19od19wb3dlcl9vbihzdHJ1Y3QgYXRoMTBrICphcilcbiB2cmVnX29mZjpcbiBcdHJlZ3VsYXRvcl9idWxrX2Rpc2FibGUoYXJfc25vYy1cdTAwM2VudW1fdnJlZ3MsIGFyX3Nub2MtXHUwMDNldnJlZ3MpO1xuIHB3cnNlcV9vZmY6XG4tXHRwd3JzZXFfcG93ZXJfb2ZmKGFyX3Nub2MtXHUwMDNlcHdyc2VxKTtcbiYjNDM7XHRwd3JzZXFfZGlzYWJsZShhcl9zbm9jLVx1MDAzZXB3cnNlcSk7XG4gXG4gXHRyZXR1cm4gcmV0O1xuIH1cbkBAIC0xMDYwLDcgJiM0MzsxMDYwLDcgQEAgc3RhdGljIGludCBhdGgxMGtfaHdfcG93ZXJfb2ZmKHN0cnVjdCBhdGgxMGsgKmFyKVxuIFx0cmV0X3ZyZWcgPSByZWd1bGF0b3JfYnVsa19kaXNhYmxlKGFyX3Nub2MtXHUwMDNlbnVtX3ZyZWdzLCBhcl9zbm9jLVx1MDAzZXZyZWdzKTtcbiBcbiBcdGlmIChhcl9zbm9jLVx1MDAzZXB3cnNlcSlcbi1cdFx0cmV0X3NlcSA9IHB3cnNlcV9wb3dlcl9vZmYoYXJfc25vYy1cdTAwM2Vwd3JzZXEpO1xuJiM0MztcdFx0cmV0X3NlcSA9IHB3cnNlcV9kaXNhYmxlKGFyX3Nub2MtXHUwMDNlcHdyc2VxKTtcbiBcbiBcdHJldHVybiByZXRfdnJlZyA/IDogcmV0X3NlcTtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcHdyY3RybC9nZW5lcmljLmMgYi9kcml2ZXJzL3BjaS9wd3JjdHJsL2dlbmVyaWMuY1xuaW5kZXggYTdlNTk5ZDg0MWU2Mi4uZDU2MTcxZTBlZTI0NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvcGNpL3B3cmN0cmwvZ2VuZXJpYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3BjaS9wd3JjdHJsL2dlbmVyaWMuY1xuQEAgLTI5LDcgJiM0MzsyOSw3IEBAIHN0YXRpYyBpbnQgc2xvdF9wd3JjdHJsX3Bvd2VyX29uKHN0cnVjdCBwY2lfcHdyY3RybCAqcHdyY3RybClcbiBcdGludCByZXQ7XG4gXG4gXHRpZiAoc2xvdC1cdTAwM2Vwd3JzZXEpIHtcbi1cdFx0cHdyc2VxX3Bvd2VyX29uKHNsb3QtXHUwMDNlcHdyc2VxKTtcbiYjNDM7XHRcdHB3cnNlcV9lbmFibGUoc2xvdC1cdTAwM2Vwd3JzZXEpO1xuIFx0XHRyZXR1cm4gMDtcbiBcdH1cbiBcbkBAIC00OCw3ICYjNDM7NDgsNyBAQCBzdGF0aWMgaW50IHNsb3RfcHdyY3RybF9wb3dlcl9vZmYoc3RydWN0IHBjaV9wd3JjdHJsICpwd3JjdHJsKVxuIFx0XHRcdFx0XHRcdHN0cnVjdCBzbG90X3B3cmN0cmwsIHB3cmN0cmwpO1xuIFxuIFx0aWYgKHNsb3QtXHUwMDNlcHdyc2VxKSB7XG4tXHRcdHB3cnNlcV9wb3dlcl9vZmYoc2xvdC1cdTAwM2Vwd3JzZXEpO1xuJiM0MztcdFx0cHdyc2VxX2Rpc2FibGUoc2xvdC1cdTAwM2Vwd3JzZXEpO1xuIFx0XHRyZXR1cm4gMDtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9wd3JjdHJsL3BjaS1wd3JjdHJsLXB3cnNlcS5jIGIvZHJpdmVycy9wY2kvcHdyY3RybC9wY2ktcHdyY3RybC1wd3JzZXEuY1xuaW5kZXggYTMwOGJmNGI1ZmMwMS4uYzVjZWQ4Nzk0NGI2YyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvcGNpL3B3cmN0cmwvcGNpLXB3cmN0cmwtcHdyc2VxLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvcGNpL3B3cmN0cmwvcGNpLXB3cmN0cmwtcHdyc2VxLmNcbkBAIC01Niw3ICYjNDM7NTYsNyBAQCBzdGF0aWMgaW50IHB3cnNlcV9wd3JjdHJsX3Bvd2VyX29uKHN0cnVjdCBwY2lfcHdyY3RybCAqcHdyY3RybClcbiBcdHN0cnVjdCBwd3JzZXFfcHdyY3RybCAqcHdyc2VxID0gY29udGFpbmVyX29mKHB3cmN0cmwsXG4gXHRcdFx0XHRcdCAgIHN0cnVjdCBwd3JzZXFfcHdyY3RybCwgcHdyY3RybCk7XG4gXG4tXHRyZXR1cm4gcHdyc2VxX3Bvd2VyX29uKHB3cnNlcS1cdTAwM2Vwd3JzZXEpO1xuJiM0MztcdHJldHVybiBwd3JzZXFfZW5hYmxlKHB3cnNlcS1cdTAwM2Vwd3JzZXEpO1xuIH1cbiBcbiBzdGF0aWMgaW50IHB3cnNlcV9wd3JjdHJsX3Bvd2VyX29mZihzdHJ1Y3QgcGNpX3B3cmN0cmwgKnB3cmN0cmwpXG5AQCAtNjQsNyAmIzQzOzY0LDcgQEAgc3RhdGljIGludCBwd3JzZXFfcHdyY3RybF9wb3dlcl9vZmYoc3RydWN0IHBjaV9wd3JjdHJsICpwd3JjdHJsKVxuIFx0c3RydWN0IHB3cnNlcV9wd3JjdHJsICpwd3JzZXEgPSBjb250YWluZXJfb2YocHdyY3RybCxcbiBcdFx0XHRcdFx0ICAgc3RydWN0IHB3cnNlcV9wd3JjdHJsLCBwd3JjdHJsKTtcbiBcbi1cdHJldHVybiBwd3JzZXFfcG93ZXJfb2ZmKHB3cnNlcS1cdTAwM2Vwd3JzZXEpO1xuJiM0MztcdHJldHVybiBwd3JzZXFfZGlzYWJsZShwd3JzZXEtXHUwMDNlcHdyc2VxKTtcbiB9XG4gXG4gc3RhdGljIGludCBwd3JzZXFfcHdyY3RybF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcG93ZXIvc2VxdWVuY2luZy9jb3JlLmMgYi9kcml2ZXJzL3Bvd2VyL3NlcXVlbmNpbmcvY29yZS5jXG5pbmRleCAwMmY0MmRhOTE1OTg1Li43MjFlODg4YjY1OGQxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9wb3dlci9zZXF1ZW5jaW5nL2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9wb3dlci9zZXF1ZW5jaW5nL2NvcmUuY1xuQEAgLTcwOCw3ICYjNDM7NzA4LDcgQEAgdm9pZCBwd3JzZXFfcHV0KHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcbiBcdHB3cnNlcSA9IGRlc2MtXHUwMDNlcHdyc2VxO1xuIFxuIFx0aWYgKGRlc2MtXHUwMDNlcG93ZXJlZF9vbilcbi1cdFx0cHdyc2VxX3Bvd2VyX29mZihkZXNjKTtcbiYjNDM7XHRcdHB3cnNlcV9kaXNhYmxlKGRlc2MpO1xuIFxuIFx0a2ZyZWUoZGVzYyk7XG4gXHRtb2R1bGVfcHV0KHB3cnNlcS1cdTAwM2Vvd25lcik7XG5AQCAtODc0LDcgJiM0Mzs4NzQsNyBAQCBzdGF0aWMgaW50IHB3cnNlcV91bml0X2Rpc2FibGUoc3RydWN0IHB3cnNlcV9kZXZpY2UgKnB3cnNlcSxcbiB9XG4gXG4gLyoqXG4tICogcHdyc2VxX3Bvd2VyX29uKCkgLSBJc3N1ZSBhIHBvd2VyLW9uIHJlcXVlc3Qgb24gYmVoYWxmIG9mIHRoZSBjb25zdW1lclxuJiM0MzsgKiBwd3JzZXFfZW5hYmxlKCkgLSBJc3N1ZSBhIHBvd2VyLW9uIHJlcXVlc3Qgb24gYmVoYWxmIG9mIHRoZSBjb25zdW1lclxuICAqICAgICAgICAgICAgICAgICAgICAgZGV2aWNlLlxuICAqIEBkZXNjOiBEZXNjcmlwdG9yIHJlZmVyZW5jaW5nIHRoZSBwb3dlciBzZXF1ZW5jZXIuXG4gICpcbkBAIC04ODcsNyAmIzQzOzg4Nyw3IEBAIHN0YXRpYyBpbnQgcHdyc2VxX3VuaXRfZGlzYWJsZShzdHJ1Y3QgcHdyc2VxX2RldmljZSAqcHdyc2VxLFxuICAqIFJldHVybnM6XG4gICogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBudW1iZXIgb24gZmFpbHVyZS5cbiAgKi9cbi1pbnQgcHdyc2VxX3Bvd2VyX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcbiYjNDM7aW50IHB3cnNlcV9lbmFibGUoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxuIHtcbiBcdHN0cnVjdCBwd3JzZXFfZGV2aWNlICpwd3JzZXE7XG4gXHRzdHJ1Y3QgcHdyc2VxX3RhcmdldCAqdGFyZ2V0O1xuQEAgLTkyNSwxNCAmIzQzOzkyNSwxNCBAQCBpbnQgcHdyc2VxX3Bvd2VyX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcbiBcbiBcdHJldHVybiByZXQ7XG4gfVxuLUVYUE9SVF9TWU1CT0xfR1BMKHB3cnNlcV9wb3dlcl9vbik7XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHB3cnNlcV9lbmFibGUpO1xuIFxuIC8qKlxuLSAqIHB3cnNlcV9wb3dlcl9vZmYoKSAtIElzc3VlIGEgcG93ZXItb2ZmIHJlcXVlc3Qgb24gYmVoYWxmIG9mIHRoZSBjb25zdW1lclxuJiM0MzsgKiBwd3JzZXFfZGlzYWJsZSgpIC0gSXNzdWUgYSBwb3dlci1vZmYgcmVxdWVzdCBvbiBiZWhhbGYgb2YgdGhlIGNvbnN1bWVyXG4gICogICAgICAgICAgICAgICAgICAgICAgZGV2aWNlLlxuICAqIEBkZXNjOiBEZXNjcmlwdG9yIHJlZmVyZW5jaW5nIHRoZSBwb3dlciBzZXF1ZW5jZXIuXG4gICpcbi0gKiBUaGlzIHVuZG9lcyB0aGUgZWZmZWN0cyBvZiBwd3JzZXFfcG93ZXJfb24oKS4gSXQgaXNzdWVzIGEgcG93ZXItb2ZmIHJlcXVlc3RcbiYjNDM7ICogVGhpcyB1bmRvZXMgdGhlIGVmZmVjdHMgb2YgcHdyc2VxX2VuYWJsZSgpLiBJdCBpc3N1ZXMgYSBwb3dlci1vZmYgcmVxdWVzdFxuICAqIG9uIGJlaGFsZiBvZiB0aGUgY29uc3VtZXIgYW5kIHdoZW4gdGhlIGxhc3QgcmVtYWluaW5nIHVzZXIgZG9lcyBzbywgdGhlXG4gICogcG93ZXItZG93biBzZXF1ZW5jZSB3aWxsIGJlIHN0YXJ0ZWQuIElmIG9uZSBpcyBpbiBwcm9ncmVzcywgdGhlIGZ1bmN0aW9uXG4gICogd2lsbCBibG9jayB1bnRpbCBpdCYjMzk7cyBjb21wbGV0ZSBhbmQgdGhlbiByZXR1cm4uXG5AQCAtOTQwLDcgJiM0Mzs5NDAsNyBAQCBFWFBPUlRfU1lNQk9MX0dQTChwd3JzZXFfcG93ZXJfb24pO1xuICAqIFJldHVybnM6XG4gICogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBudW1iZXIgb24gZmFpbHVyZS5cbiAgKi9cbi1pbnQgcHdyc2VxX3Bvd2VyX29mZihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXG4mIzQzO2ludCBwd3JzZXFfZGlzYWJsZShzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXG4ge1xuIFx0c3RydWN0IHB3cnNlcV9kZXZpY2UgKnB3cnNlcTtcbiBcdHN0cnVjdCBwd3JzZXFfdW5pdCAqdW5pdDtcbkBAIC05NjYsNyAmIzQzOzk2Niw3IEBAIGludCBwd3JzZXFfcG93ZXJfb2ZmKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcbiBcbiBcdHJldHVybiByZXQ7XG4gfVxuLUVYUE9SVF9TWU1CT0xfR1BMKHB3cnNlcV9wb3dlcl9vZmYpO1xuJiM0MztFWFBPUlRfU1lNQk9MX0dQTChwd3JzZXFfZGlzYWJsZSk7XG4gXG4gLyoqXG4gICogcHdyc2VxX3RvX2RldmljZSgpIC0gR2V0IHRoZSBwd3JzZXEgZGV2aWNlIHBvaW50ZXIgZnJvbSBhIGRlc2NyaXB0b3IuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wd3JzZXEvY29uc3VtZXIuaCBiL2luY2x1ZGUvbGludXgvcHdyc2VxL2NvbnN1bWVyLmhcbmluZGV4IDNjOTA3YzllMTg4NWQuLjE2ZmFkNWYzZTNhYjUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3B3cnNlcS9jb25zdW1lci5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3B3cnNlcS9jb25zdW1lci5oXG5AQCAtMjAsOCAmIzQzOzIwLDggQEAgdm9pZCBwd3JzZXFfcHV0KHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYyk7XG4gc3RydWN0IHB3cnNlcV9kZXNjICogX19tdXN0X2NoZWNrXG4gZGV2bV9wd3JzZXFfZ2V0KHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqdGFyZ2V0KTtcbiBcbi1pbnQgcHdyc2VxX3Bvd2VyX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYyk7XG4taW50IHB3cnNlcV9wb3dlcl9vZmYoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTtcbiYjNDM7aW50IHB3cnNlcV9lbmFibGUoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTtcbiYjNDM7aW50IHB3cnNlcV9kaXNhYmxlKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYyk7XG4gXG4gc3RydWN0IGRldmljZSAqcHdyc2VxX3RvX2RldmljZShzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpO1xuIFxuQEAgLTQzLDEyICYjNDM7NDMsMTIgQEAgZGV2bV9wd3JzZXFfZ2V0KHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqdGFyZ2V0KVxuIFx0cmV0dXJuIEVSUl9QVFIoLUVOT1NZUyk7XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgaW50IHB3cnNlcV9wb3dlcl9vbihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXG4mIzQzO3N0YXRpYyBpbmxpbmUgaW50IHB3cnNlcV9lbmFibGUoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxuIHtcbiBcdHJldHVybiAtRU5PU1lTO1xuIH1cbiBcbi1zdGF0aWMgaW5saW5lIGludCBwd3JzZXFfcG93ZXJfb2ZmKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcbiYjNDM7c3RhdGljIGlubGluZSBpbnQgcHdyc2VxX2Rpc2FibGUoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxuIHtcbiBcdHJldHVybiAtRU5PU1lTO1xuIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMDowNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSByZW5hbWVzIHB3cnNlcV9wb3dlcl9vbi9vZmYgdG8gcHdyc2VxX2VuYWJsZS9kaXNhYmxlIGFjcm9zcyB0aGUgcG93ZXIgc2VxdWVuY2luZyBzdWJzeXN0ZW0gYW5kIGl0cyBjb25zdW1lcnMuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDI0YjJiMDgwZjMxMDJiNDZjYjJiYWYzNzlhNzc3ZWRjMWJjYjMxNjEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAxIDIwOjA0OjQxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3B3cnNlcS5yc3QgYi9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvcHdyc2VxLnJzdAppbmRleCBhZDE4YjIzMjZiNjg5Li5lMTA1NmQxNDE4NDUxIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvcHdyc2VxLnJzdAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvcHdyc2VxLnJzdApAQCAtNTAsOSAmIzQzOzUwLDkgQEAgQ29uc3VtZXIgaW50ZXJmYWNlCiBUaGUgY29uc3VtZXIgQVBJIGlzIGFpbWVkIHRvIGJlIGFzIHNpbXBsZSBhcyBwb3NzaWJsZS4gVGhlIGRyaXZlciBpbnRlcmVzdGVkIGluCiBnZXR0aW5nIGEgZGVzY3JpcHRvciBmcm9tIHRoZSBwb3dlciBzZXF1ZW5jZXIgc2hvdWxkIGNhbGwgcHdyc2VxX2dldCgpIGFuZAogc3BlY2lmeSB0aGUgbmFtZSBvZiB0aGUgdGFyZ2V0IGl0IHdhbnRzIHRvIHJlYWNoIGluIHRoZSBzZXF1ZW5jZSBhZnRlciBjYWxsaW5nCi1wd3JzZXFfcG93ZXJfdXAoKS4gVGhlIGRlc2NyaXB0b3IgY2FuIGJlIHJlbGVhc2VkIGJ5IGNhbGxpbmcgcHdyc2VxX3B1dCgpIGFuZAomIzQzO3B3cnNlcV9lbmFibGUoKS4gVGhlIGRlc2NyaXB0b3IgY2FuIGJlIHJlbGVhc2VkIGJ5IGNhbGxpbmcgcHdyc2VxX3B1dCgpIGFuZAogdGhlIGNvbnN1bWVyIGNhbiByZXF1ZXN0IHRoZSBwb3dlcmluZyBkb3duIG9mIGl0cyB0YXJnZXQgd2l0aAotcHdyc2VxX3Bvd2VyX29mZigpLiBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgcHdyc2VxX3Bvd2VyX29mZigpCiYjNDM7cHdyc2VxX2Rpc2FibGUoKS4gTm90ZSB0aGF0IHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHB3cnNlcV9kaXNhYmxlKCkKIHdpbGwgaGF2ZSBhbnkgZWZmZWN0IGFzIHRoZXJlIG1heSBiZSBtdWx0aXBsZSB1c2VycyBvZiB0aGUgdW5kZXJseWluZyByZXNvdXJjZXMKIHdobyBtYXkga2VlcCB0aGVtIGFjdGl2ZS4KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jIGIvZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jCmluZGV4IDM0NWY2MDJlOWNlMjMuLmZhYTk2NDczNWFkYjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmx1ZXRvb3RoL2hjaV9xY2EuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2JsdWV0b290aC9oY2lfcWNhLmMKQEAgLTIyNTksNyAmIzQzOzIyNTksNyBAQCBzdGF0aWMgdm9pZCBxY2FfcG93ZXJfb2ZmKHN0cnVjdCBoY2lfdWFydCAqaHUpCiAJfQogCiAJaWYgKHBvd2VyICZhbXA7JmFtcDsgcG93ZXItJmd0O3B3cnNlcSkgewotCQlwd3JzZXFfcG93ZXJfb2ZmKHBvd2VyLSZndDtwd3JzZXEpOwomIzQzOwkJcHdyc2VxX2Rpc2FibGUocG93ZXItJmd0O3B3cnNlcSk7CiAJCXNldF9iaXQoUUNBX0JUX09GRiwgJmFtcDtxY2EtJmd0O2ZsYWdzKTsKIAkJcmV0dXJuOwogICAgICAgICB9CkBAIC0yMzE5LDcgJiM0MzsyMzE5LDcgQEAgc3RhdGljIGludCBxY2FfcmVndWxhdG9yX2VuYWJsZShzdHJ1Y3QgcWNhX3NlcmRldiAqcWNhZGV2KQogCWludCByZXQ7CiAKIAlpZiAocG93ZXItJmd0O3B3cnNlcSkKLQkJcmV0dXJuIHB3cnNlcV9wb3dlcl9vbihwb3dlci0mZ3Q7cHdyc2VxKTsKJiM0MzsJCXJldHVybiBwd3JzZXFfZW5hYmxlKHBvd2VyLSZndDtwd3JzZXEpOwogCiAJLyogQWxyZWFkeSBlbmFibGVkICovCiAJaWYgKHBvd2VyLSZndDt2cmVnc19vbikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pbWFnaW5hdGlvbi9wdnJfcG93ZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pbWFnaW5hdGlvbi9wdnJfcG93ZXIuYwppbmRleCBhNzFkNWIzNTYwMWU3Li5lYjRiNmVjZGY0ZjRkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vcHZyX3Bvd2VyLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL3B2cl9wb3dlci5jCkBAIC0zNTIsMTIgJiM0MzszNTIsMTIgQEAgc3RhdGljIGludCBwdnJfcG93ZXJfaW5pdF9wd3JzZXEoc3RydWN0IHB2cl9kZXZpY2UgKnB2cl9kZXYpCiAKIHN0YXRpYyBpbnQgcHZyX3Bvd2VyX29uX3NlcXVlbmNlX3B3cnNlcShzdHJ1Y3QgcHZyX2RldmljZSAqcHZyX2RldikKIHsKLQlyZXR1cm4gcHdyc2VxX3Bvd2VyX29uKHB2cl9kZXYtJmd0O3B3cnNlcSk7CiYjNDM7CXJldHVybiBwd3JzZXFfZW5hYmxlKHB2cl9kZXYtJmd0O3B3cnNlcSk7CiB9CiAKIHN0YXRpYyBpbnQgcHZyX3Bvd2VyX29mZl9zZXF1ZW5jZV9wd3JzZXEoc3RydWN0IHB2cl9kZXZpY2UgKnB2cl9kZXYpCiB7Ci0JcmV0dXJuIHB3cnNlcV9wb3dlcl9vZmYocHZyX2Rldi0mZ3Q7cHdyc2VxKTsKJiM0MzsJcmV0dXJuIHB3cnNlcV9kaXNhYmxlKHB2cl9kZXYtJmd0O3B3cnNlcSk7CiB9CiAKIGNvbnN0IHN0cnVjdCBwdnJfcG93ZXJfc2VxdWVuY2Vfb3BzIHB2cl9wb3dlcl9zZXF1ZW5jZV9vcHNfcHdyc2VxID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYwppbmRleCAzMTA2NTAyMjc1NzgxLi5mMjhmZWQ4OWNjMjhiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYwpAQCAtMTAyNSw3ICYjNDM7MTAyNSw3IEBAIHN0YXRpYyBpbnQgYXRoMTBrX2h3X3Bvd2VyX29uKHN0cnVjdCBhdGgxMGsgKmFyKQogCiAJYXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19TTk9DLCAmIzM0O3NvYyBwb3dlciBvblxuJiMzNDspOwogCi0JcmV0ID0gcHdyc2VxX3Bvd2VyX29uKGFyX3Nub2MtJmd0O3B3cnNlcSk7CiYjNDM7CXJldCA9IHB3cnNlcV9lbmFibGUoYXJfc25vYy0mZ3Q7cHdyc2VxKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCkBAIC0xMDQyLDcgJiM0MzsxMDQyLDcgQEAgc3RhdGljIGludCBhdGgxMGtfaHdfcG93ZXJfb24oc3RydWN0IGF0aDEwayAqYXIpCiB2cmVnX29mZjoKIAlyZWd1bGF0b3JfYnVsa19kaXNhYmxlKGFyX3Nub2MtJmd0O251bV92cmVncywgYXJfc25vYy0mZ3Q7dnJlZ3MpOwogcHdyc2VxX29mZjoKLQlwd3JzZXFfcG93ZXJfb2ZmKGFyX3Nub2MtJmd0O3B3cnNlcSk7CiYjNDM7CXB3cnNlcV9kaXNhYmxlKGFyX3Nub2MtJmd0O3B3cnNlcSk7CiAKIAlyZXR1cm4gcmV0OwogfQpAQCAtMTA2MCw3ICYjNDM7MTA2MCw3IEBAIHN0YXRpYyBpbnQgYXRoMTBrX2h3X3Bvd2VyX29mZihzdHJ1Y3QgYXRoMTBrICphcikKIAlyZXRfdnJlZyA9IHJlZ3VsYXRvcl9idWxrX2Rpc2FibGUoYXJfc25vYy0mZ3Q7bnVtX3ZyZWdzLCBhcl9zbm9jLSZndDt2cmVncyk7CiAKIAlpZiAoYXJfc25vYy0mZ3Q7cHdyc2VxKQotCQlyZXRfc2VxID0gcHdyc2VxX3Bvd2VyX29mZihhcl9zbm9jLSZndDtwd3JzZXEpOwomIzQzOwkJcmV0X3NlcSA9IHB3cnNlcV9kaXNhYmxlKGFyX3Nub2MtJmd0O3B3cnNlcSk7CiAKIAlyZXR1cm4gcmV0X3ZyZWcgPyA6IHJldF9zZXE7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9wd3JjdHJsL2dlbmVyaWMuYyBiL2RyaXZlcnMvcGNpL3B3cmN0cmwvZ2VuZXJpYy5jCmluZGV4IGE3ZTU5OWQ4NDFlNjIuLmQ1NjE3MWUwZWUyNDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL3B3cmN0cmwvZ2VuZXJpYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvcGNpL3B3cmN0cmwvZ2VuZXJpYy5jCkBAIC0yOSw3ICYjNDM7MjksNyBAQCBzdGF0aWMgaW50IHNsb3RfcHdyY3RybF9wb3dlcl9vbihzdHJ1Y3QgcGNpX3B3cmN0cmwgKnB3cmN0cmwpCiAJaW50IHJldDsKIAogCWlmIChzbG90LSZndDtwd3JzZXEpIHsKLQkJcHdyc2VxX3Bvd2VyX29uKHNsb3QtJmd0O3B3cnNlcSk7CiYjNDM7CQlwd3JzZXFfZW5hYmxlKHNsb3QtJmd0O3B3cnNlcSk7CiAJCXJldHVybiAwOwogCX0KIApAQCAtNDgsNyAmIzQzOzQ4LDcgQEAgc3RhdGljIGludCBzbG90X3B3cmN0cmxfcG93ZXJfb2ZmKHN0cnVjdCBwY2lfcHdyY3RybCAqcHdyY3RybCkKIAkJCQkJCXN0cnVjdCBzbG90X3B3cmN0cmwsIHB3cmN0cmwpOwogCiAJaWYgKHNsb3QtJmd0O3B3cnNlcSkgewotCQlwd3JzZXFfcG93ZXJfb2ZmKHNsb3QtJmd0O3B3cnNlcSk7CiYjNDM7CQlwd3JzZXFfZGlzYWJsZShzbG90LSZndDtwd3JzZXEpOwogCQlyZXR1cm4gMDsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL3B3cmN0cmwvcGNpLXB3cmN0cmwtcHdyc2VxLmMgYi9kcml2ZXJzL3BjaS9wd3JjdHJsL3BjaS1wd3JjdHJsLXB3cnNlcS5jCmluZGV4IGEzMDhiZjRiNWZjMDEuLmM1Y2VkODc5NDRiNmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL3B3cmN0cmwvcGNpLXB3cmN0cmwtcHdyc2VxLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9wY2kvcHdyY3RybC9wY2ktcHdyY3RybC1wd3JzZXEuYwpAQCAtNTYsNyAmIzQzOzU2LDcgQEAgc3RhdGljIGludCBwd3JzZXFfcHdyY3RybF9wb3dlcl9vbihzdHJ1Y3QgcGNpX3B3cmN0cmwgKnB3cmN0cmwpCiAJc3RydWN0IHB3cnNlcV9wd3JjdHJsICpwd3JzZXEgPSBjb250YWluZXJfb2YocHdyY3RybCwKIAkJCQkJICAgc3RydWN0IHB3cnNlcV9wd3JjdHJsLCBwd3JjdHJsKTsKIAotCXJldHVybiBwd3JzZXFfcG93ZXJfb24ocHdyc2VxLSZndDtwd3JzZXEpOwomIzQzOwlyZXR1cm4gcHdyc2VxX2VuYWJsZShwd3JzZXEtJmd0O3B3cnNlcSk7CiB9CiAKIHN0YXRpYyBpbnQgcHdyc2VxX3B3cmN0cmxfcG93ZXJfb2ZmKHN0cnVjdCBwY2lfcHdyY3RybCAqcHdyY3RybCkKQEAgLTY0LDcgJiM0Mzs2NCw3IEBAIHN0YXRpYyBpbnQgcHdyc2VxX3B3cmN0cmxfcG93ZXJfb2ZmKHN0cnVjdCBwY2lfcHdyY3RybCAqcHdyY3RybCkKIAlzdHJ1Y3QgcHdyc2VxX3B3cmN0cmwgKnB3cnNlcSA9IGNvbnRhaW5lcl9vZihwd3JjdHJsLAogCQkJCQkgICBzdHJ1Y3QgcHdyc2VxX3B3cmN0cmwsIHB3cmN0cmwpOwogCi0JcmV0dXJuIHB3cnNlcV9wb3dlcl9vZmYocHdyc2VxLSZndDtwd3JzZXEpOwomIzQzOwlyZXR1cm4gcHdyc2VxX2Rpc2FibGUocHdyc2VxLSZndDtwd3JzZXEpOwogfQogCiBzdGF0aWMgaW50IHB3cnNlcV9wd3JjdHJsX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Bvd2VyL3NlcXVlbmNpbmcvY29yZS5jIGIvZHJpdmVycy9wb3dlci9zZXF1ZW5jaW5nL2NvcmUuYwppbmRleCAwMmY0MmRhOTE1OTg1Li43MjFlODg4YjY1OGQxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Bvd2VyL3NlcXVlbmNpbmcvY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvcG93ZXIvc2VxdWVuY2luZy9jb3JlLmMKQEAgLTcwOCw3ICYjNDM7NzA4LDcgQEAgdm9pZCBwd3JzZXFfcHV0KHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYykKIAlwd3JzZXEgPSBkZXNjLSZndDtwd3JzZXE7CiAKIAlpZiAoZGVzYy0mZ3Q7cG93ZXJlZF9vbikKLQkJcHdyc2VxX3Bvd2VyX29mZihkZXNjKTsKJiM0MzsJCXB3cnNlcV9kaXNhYmxlKGRlc2MpOwogCiAJa2ZyZWUoZGVzYyk7CiAJbW9kdWxlX3B1dChwd3JzZXEtJmd0O293bmVyKTsKQEAgLTg3NCw3ICYjNDM7ODc0LDcgQEAgc3RhdGljIGludCBwd3JzZXFfdW5pdF9kaXNhYmxlKHN0cnVjdCBwd3JzZXFfZGV2aWNlICpwd3JzZXEsCiB9CiAKIC8qKgotICogcHdyc2VxX3Bvd2VyX29uKCkgLSBJc3N1ZSBhIHBvd2VyLW9uIHJlcXVlc3Qgb24gYmVoYWxmIG9mIHRoZSBjb25zdW1lcgomIzQzOyAqIHB3cnNlcV9lbmFibGUoKSAtIElzc3VlIGEgcG93ZXItb24gcmVxdWVzdCBvbiBiZWhhbGYgb2YgdGhlIGNvbnN1bWVyCiAgKiAgICAgICAgICAgICAgICAgICAgIGRldmljZS4KICAqIEBkZXNjOiBEZXNjcmlwdG9yIHJlZmVyZW5jaW5nIHRoZSBwb3dlciBzZXF1ZW5jZXIuCiAgKgpAQCAtODg3LDcgJiM0Mzs4ODcsNyBAQCBzdGF0aWMgaW50IHB3cnNlcV91bml0X2Rpc2FibGUoc3RydWN0IHB3cnNlcV9kZXZpY2UgKnB3cnNlcSwKICAqIFJldHVybnM6CiAgKiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIG51bWJlciBvbiBmYWlsdXJlLgogICovCi1pbnQgcHdyc2VxX3Bvd2VyX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYykKJiM0MztpbnQgcHdyc2VxX2VuYWJsZShzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpCiB7CiAJc3RydWN0IHB3cnNlcV9kZXZpY2UgKnB3cnNlcTsKIAlzdHJ1Y3QgcHdyc2VxX3RhcmdldCAqdGFyZ2V0OwpAQCAtOTI1LDE0ICYjNDM7OTI1LDE0IEBAIGludCBwd3JzZXFfcG93ZXJfb24oc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKQogCiAJcmV0dXJuIHJldDsKIH0KLUVYUE9SVF9TWU1CT0xfR1BMKHB3cnNlcV9wb3dlcl9vbik7CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwocHdyc2VxX2VuYWJsZSk7CiAKIC8qKgotICogcHdyc2VxX3Bvd2VyX29mZigpIC0gSXNzdWUgYSBwb3dlci1vZmYgcmVxdWVzdCBvbiBiZWhhbGYgb2YgdGhlIGNvbnN1bWVyCiYjNDM7ICogcHdyc2VxX2Rpc2FibGUoKSAtIElzc3VlIGEgcG93ZXItb2ZmIHJlcXVlc3Qgb24gYmVoYWxmIG9mIHRoZSBjb25zdW1lcgogICogICAgICAgICAgICAgICAgICAgICAgZGV2aWNlLgogICogQGRlc2M6IERlc2NyaXB0b3IgcmVmZXJlbmNpbmcgdGhlIHBvd2VyIHNlcXVlbmNlci4KICAqCi0gKiBUaGlzIHVuZG9lcyB0aGUgZWZmZWN0cyBvZiBwd3JzZXFfcG93ZXJfb24oKS4gSXQgaXNzdWVzIGEgcG93ZXItb2ZmIHJlcXVlc3QKJiM0MzsgKiBUaGlzIHVuZG9lcyB0aGUgZWZmZWN0cyBvZiBwd3JzZXFfZW5hYmxlKCkuIEl0IGlzc3VlcyBhIHBvd2VyLW9mZiByZXF1ZXN0CiAgKiBvbiBiZWhhbGYgb2YgdGhlIGNvbnN1bWVyIGFuZCB3aGVuIHRoZSBsYXN0IHJlbWFpbmluZyB1c2VyIGRvZXMgc28sIHRoZQogICogcG93ZXItZG93biBzZXF1ZW5jZSB3aWxsIGJlIHN0YXJ0ZWQuIElmIG9uZSBpcyBpbiBwcm9ncmVzcywgdGhlIGZ1bmN0aW9uCiAgKiB3aWxsIGJsb2NrIHVudGlsIGl0JiMzOTtzIGNvbXBsZXRlIGFuZCB0aGVuIHJldHVybi4KQEAgLTk0MCw3ICYjNDM7OTQwLDcgQEAgRVhQT1JUX1NZTUJPTF9HUEwocHdyc2VxX3Bvd2VyX29uKTsKICAqIFJldHVybnM6CiAgKiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIG51bWJlciBvbiBmYWlsdXJlLgogICovCi1pbnQgcHdyc2VxX3Bvd2VyX29mZihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpCiYjNDM7aW50IHB3cnNlcV9kaXNhYmxlKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYykKIHsKIAlzdHJ1Y3QgcHdyc2VxX2RldmljZSAqcHdyc2VxOwogCXN0cnVjdCBwd3JzZXFfdW5pdCAqdW5pdDsKQEAgLTk2Niw3ICYjNDM7OTY2LDcgQEAgaW50IHB3cnNlcV9wb3dlcl9vZmYoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKQogCiAJcmV0dXJuIHJldDsKIH0KLUVYUE9SVF9TWU1CT0xfR1BMKHB3cnNlcV9wb3dlcl9vZmYpOwomIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHB3cnNlcV9kaXNhYmxlKTsKIAogLyoqCiAgKiBwd3JzZXFfdG9fZGV2aWNlKCkgLSBHZXQgdGhlIHB3cnNlcSBkZXZpY2UgcG9pbnRlciBmcm9tIGEgZGVzY3JpcHRvci4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcHdyc2VxL2NvbnN1bWVyLmggYi9pbmNsdWRlL2xpbnV4L3B3cnNlcS9jb25zdW1lci5oCmluZGV4IDNjOTA3YzllMTg4NWQuLjE2ZmFkNWYzZTNhYjUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcHdyc2VxL2NvbnN1bWVyLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9wd3JzZXEvY29uc3VtZXIuaApAQCAtMjAsOCAmIzQzOzIwLDggQEAgdm9pZCBwd3JzZXFfcHV0KHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYyk7CiBzdHJ1Y3QgcHdyc2VxX2Rlc2MgKiBfX211c3RfY2hlY2sKIGRldm1fcHdyc2VxX2dldChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKnRhcmdldCk7CiAKLWludCBwd3JzZXFfcG93ZXJfb24oc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTsKLWludCBwd3JzZXFfcG93ZXJfb2ZmKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYyk7CiYjNDM7aW50IHB3cnNlcV9lbmFibGUoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTsKJiM0MztpbnQgcHdyc2VxX2Rpc2FibGUoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTsKIAogc3RydWN0IGRldmljZSAqcHdyc2VxX3RvX2RldmljZShzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpOwogCkBAIC00MywxMiAmIzQzOzQzLDEyIEBAIGRldm1fcHdyc2VxX2dldChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKnRhcmdldCkKIAlyZXR1cm4gRVJSX1BUUigtRU5PU1lTKTsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgcHdyc2VxX3Bvd2VyX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYykKJiM0MztzdGF0aWMgaW5saW5lIGludCBwd3JzZXFfZW5hYmxlKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYykKIHsKIAlyZXR1cm4gLUVOT1NZUzsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgcHdyc2VxX3Bvd2VyX29mZihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpCiYjNDM7c3RhdGljIGlubGluZSBpbnQgcHdyc2VxX2Rpc2FibGUoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKQogewogCXJldHVybiAtRU5PU1lTOwogfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMDowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzQxCgkJCQkJCQlvdXRwdXQ6IDcyCgkJCQkJCQl0aG91Z2h0czogNjY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvd2VyIFNlcXVlbmNpbmcgU3Vic3lzdGVtIFJlbmFtZSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBpbiBmcm9udCBvZiBtZSB0aGF0JiMzOTtzIHJlbmFtaW5nIGBwd3JzZXFfcG93ZXJfb25gIHRvIGBwd3JzZXFfZW5hYmxlYCBhbmQgYHB3cnNlcV9wb3dlcl9vZmZgIHRvIGBwd3JzZXFfZGlzYWJsZWAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtQdXJlIHJlbmFtaW5nLCByaWdodD8gTm8gZnVuY3Rpb25hbCBjaGFuZ2VzPyYjMzQ7IExldCYjMzk7cyBkaWcgaW4uCgpUaGUgZGlmZiBzaG93cyB1cGRhdGVzIHRvIHRoZSBkb2N1bWVudGF0aW9uLCB3aGljaCBpcyBleHBlY3RlZC4gVGhlbiwgaXQmIzM5O3MgYSBzd2VlcCB0aHJvdWdoIHZhcmlvdXMgY29uc3VtZXIgZmlsZXMgbGlrZSBgaGNpX3FjYS5jYCwgYHB2cl9wb3dlci5jYCwgYGF0aDEway9zbm9jLmNgLCBldGMuLCBzaW1wbHkgcmVwbGFjaW5nIHRob3NlIG9sZCBmdW5jdGlvbiBuYW1lcyB3aXRoIHRoZSBuZXcgb25lcy4gVGhlIGBwb3dlci9zZXF1ZW5jaW5nL2NvcmUuY2AgZmlsZSBpdHNlbGYgZ2V0cyB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbnMgcmVuYW1lZCwgYWxvbmcgd2l0aCBjb3JyZXNwb25kaW5nIGBFWFBPUlRfU1lNQk9MX0dQTGAgdXBkYXRlcy4gQW5kIG9mIGNvdXJzZSwgdGhlIGhlYWRlciBmaWxlIChgaW5jbHVkZS9saW51eC9wd3JzZXEvY29uc3VtZXIuaGApIHJlZmxlY3RzIHRoZSBzYW1lIGNoYW5nZSBpbiBkZWNsYXJhdGlvbnMgYW5kIGR1bW15IGZ1bmN0aW9ucy4KClNvLCBmdW5jdGlvbmFsbHksIGl0IGxvb2tzIGxpa2UgYSBjbGVhbiBuby1vcCwgcmlnaHQ/IEp1c3QgcmVuYW1pbmcgZnVuY3Rpb25zLiBObyBhbHRlcmF0aW9uIHRvIGV4ZWN1dGlvbiBmbG93LiBXYWl0IGEgbWludXRlLCBkb2VzIHRoaXMgbmVlZCBmdXp6aW5nPyBJIHJlY2FsbCB0aGUgZ3VpZGVsaW5lcy4uLiBzb21ldGhpbmcgYWJvdXQgJiMzNDtXb3J0aEZ1enppbmc9ZmFsc2UmIzM0OyBpZiBpdCYjMzk7cyBkb2N1bWVudGF0aW9uLCBjb21tZW50cywgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBvciBub24tZnVuY3Rpb25hbCBudW1lcmljIGNoYW5nZXMuLi4gJiMzNDtQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzJiMzNDsgdGhhdCBkb24mIzM5O3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LiBSZW5hbWluZyBmdW5jdGlvbnMgZG9lc24mIzM5O3QgY2hhbmdlIGV4ZWN1dGlvbiBmbG93LCBzbyBJIGFtIGxlYW5pbmcgdG93YXJkIG5vLgoKTGV0JiMzOTtzIGRvIGEgbW9yZSB0aG9yb3VnaCBjaGVjayBhbmQgbWFrZSBzdXJlIHRoZXJlIGFyZSB0cnVseSBubyBvdGhlciBoaWRkZW4gY2hhbmdlcy4gU2Nyb2xsaW5nIHRocm91Z2ggdGhlIGNvcmUgZGVmaW5pdGlvbnMgYWdhaW4gY29uZmlybXMgdGhlIGNsZWFuIHJlbmFtaW5nOgpgYGBjCi1pbnQgcHdyc2VxX3Bvd2VyX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYykKJiM0MztpbnQgcHdyc2VxX2VuYWJsZShzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpCmBgYApgYGBjCi1pbnQgcHdyc2VxX3Bvd2VyX29mZihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpCiYjNDM7aW50IHB3cnNlcV9kaXNhYmxlKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYykKYGBgCkFuZCBpbiBgaGNpX3FjYS5jYDoKYGBgYwotCQlwd3JzZXFfcG93ZXJfb2ZmKHBvd2VyLSZndDtwd3JzZXEpOwomIzQzOwkJcHdyc2VxX2Rpc2FibGUocG93ZXItJmd0O3B3cnNlcSk7CmBgYApgYGBjCi0JCXJldHVybiBwd3JzZXFfcG93ZXJfb24ocG93ZXItJmd0O3B3cnNlcSk7CiYjNDM7CQlyZXR1cm4gcHdyc2VxX2VuYWJsZShwb3dlci0mZ3Q7cHdyc2VxKTsKYGBgClllcCwgbm8gb3RoZXIgY2hhbmdlcy4gTm8gbG9naWMgdHdlYWtzLCBubyBuZXcgcGFyYW1ldGVycywgbm8gZGF0YSBzdHJ1Y3R1cmUgbW9kaWZpY2F0aW9ucy4gVGhpcyBpcyBhIHB1cmVseSBub24tZnVuY3Rpb25hbCByZWZhY3RvcmluZy4KClRoZXJlZm9yZSwgbXkgY29uY2x1c2lvbiBpcyB0aGF0IHRoaXMgcGF0Y2ggZG9lc24mIzM5O3Qgd2FycmFudCBmdXp6aW5nLiBJJiMzOTtsbCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgYW5kIGp1c3RpZnkgaXQgd2l0aCBhIGNsZWFyIHJlYXNvbjogJiMzNDtUaGUgcGF0Y2ggb25seSByZW5hbWVzIGBwd3JzZXFfcG93ZXJfb24vb2ZmYCB0byBgcHdyc2VxX2VuYWJsZS9kaXNhYmxlYCBhY3Jvc3MgdGhlIHBvd2VyIHNlcXVlbmNpbmcgc3Vic3lzdGVtIGFuZCBpdHMgY29uc3VtZXJzLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBleGVjdXRpb24gZmxvdy4mIzM0OyBEb25lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIwOjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSByZW5hbWVzIHB3cnNlcV9wb3dlcl9vbi9vZmYgdG8gcHdyc2VxX2VuYWJsZS9kaXNhYmxlIGFjcm9zcyB0aGUgcG93ZXIgc2VxdWVuY2luZyBzdWJzeXN0ZW0gYW5kIGl0cyBjb25zdW1lcnMuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSByZW5hbWVzIHB3cnNlcV9wb3dlcl9vbi9vZmYgdG8gcHdyc2VxX2VuYWJsZS9kaXNhYmxlIGFjcm9zcyB0aGUgcG93ZXIgc2VxdWVuY2luZyBzdWJzeXN0ZW0gYW5kIGl0cyBjb25zdW1lcnMuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIwOjA0OjQyLjY1Nzc5NjQ5NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjI0NjczOTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IHJlbmFtZXMgcHdyc2VxX3Bvd2VyX29uL29mZiB0byBwd3JzZXFfZW5hYmxlL2Rpc2FibGUgYWNyb3NzIHRoZSBwb3dlciBzZXF1ZW5jaW5nIHN1YnN5c3RlbSBhbmQgaXRzIGNvbnN1bWVycy4gVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMDowNDo0Mi42NTc4MDQwMDZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MTczMTY5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDI0YjJiMDgwZjMxMDJiNDZjYjJiYWYzNzlhNzc3ZWRjMWJjYjMxNjFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBBdWcgMSAyMDowNDo0MSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvcHdyc2VxLnJzdCBiL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9wd3JzZXEucnN0XFxuaW5kZXggYWQxOGIyMzI2YjY4OS4uZTEwNTZkMTQxODQ1MSAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvcHdyc2VxLnJzdFxcbisrKyBiL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9wd3JzZXEucnN0XFxuQEAgLTUwLDkgKzUwLDkgQEAgQ29uc3VtZXIgaW50ZXJmYWNlXFxuIFRoZSBjb25zdW1lciBBUEkgaXMgYWltZWQgdG8gYmUgYXMgc2ltcGxlIGFzIHBvc3NpYmxlLiBUaGUgZHJpdmVyIGludGVyZXN0ZWQgaW5cXG4gZ2V0dGluZyBhIGRlc2NyaXB0b3IgZnJvbSB0aGUgcG93ZXIgc2VxdWVuY2VyIHNob3VsZCBjYWxsIHB3cnNlcV9nZXQoKSBhbmRcXG4gc3BlY2lmeSB0aGUgbmFtZSBvZiB0aGUgdGFyZ2V0IGl0IHdhbnRzIHRvIHJlYWNoIGluIHRoZSBzZXF1ZW5jZSBhZnRlciBjYWxsaW5nXFxuLXB3cnNlcV9wb3dlcl91cCgpLiBUaGUgZGVzY3JpcHRvciBjYW4gYmUgcmVsZWFzZWQgYnkgY2FsbGluZyBwd3JzZXFfcHV0KCkgYW5kXFxuK3B3cnNlcV9lbmFibGUoKS4gVGhlIGRlc2NyaXB0b3IgY2FuIGJlIHJlbGVhc2VkIGJ5IGNhbGxpbmcgcHdyc2VxX3B1dCgpIGFuZFxcbiB0aGUgY29uc3VtZXIgY2FuIHJlcXVlc3QgdGhlIHBvd2VyaW5nIGRvd24gb2YgaXRzIHRhcmdldCB3aXRoXFxuLXB3cnNlcV9wb3dlcl9vZmYoKS4gTm90ZSB0aGF0IHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHB3cnNlcV9wb3dlcl9vZmYoKVxcbitwd3JzZXFfZGlzYWJsZSgpLiBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgcHdyc2VxX2Rpc2FibGUoKVxcbiB3aWxsIGhhdmUgYW55IGVmZmVjdCBhcyB0aGVyZSBtYXkgYmUgbXVsdGlwbGUgdXNlcnMgb2YgdGhlIHVuZGVybHlpbmcgcmVzb3VyY2VzXFxuIHdobyBtYXkga2VlcCB0aGVtIGFjdGl2ZS5cXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmx1ZXRvb3RoL2hjaV9xY2EuYyBiL2RyaXZlcnMvYmx1ZXRvb3RoL2hjaV9xY2EuY1xcbmluZGV4IDM0NWY2MDJlOWNlMjMuLmZhYTk2NDczNWFkYjEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jXFxuKysrIGIvZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jXFxuQEAgLTIyNTksNyArMjI1OSw3IEBAIHN0YXRpYyB2b2lkIHFjYV9wb3dlcl9vZmYoc3RydWN0IGhjaV91YXJ0ICpodSlcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKHBvd2VyIFxcdTAwMjZcXHUwMDI2IHBvd2VyLVxcdTAwM2Vwd3JzZXEpIHtcXG4tXFx0XFx0cHdyc2VxX3Bvd2VyX29mZihwb3dlci1cXHUwMDNlcHdyc2VxKTtcXG4rXFx0XFx0cHdyc2VxX2Rpc2FibGUocG93ZXItXFx1MDAzZXB3cnNlcSk7XFxuIFxcdFxcdHNldF9iaXQoUUNBX0JUX09GRiwgXFx1MDAyNnFjYS1cXHUwMDNlZmxhZ3MpO1xcbiBcXHRcXHRyZXR1cm47XFxuICAgICAgICAgfVxcbkBAIC0yMzE5LDcgKzIzMTksNyBAQCBzdGF0aWMgaW50IHFjYV9yZWd1bGF0b3JfZW5hYmxlKHN0cnVjdCBxY2Ffc2VyZGV2ICpxY2FkZXYpXFxuIFxcdGludCByZXQ7XFxuIFxcbiBcXHRpZiAocG93ZXItXFx1MDAzZXB3cnNlcSlcXG4tXFx0XFx0cmV0dXJuIHB3cnNlcV9wb3dlcl9vbihwb3dlci1cXHUwMDNlcHdyc2VxKTtcXG4rXFx0XFx0cmV0dXJuIHB3cnNlcV9lbmFibGUocG93ZXItXFx1MDAzZXB3cnNlcSk7XFxuIFxcbiBcXHQvKiBBbHJlYWR5IGVuYWJsZWQgKi9cXG4gXFx0aWYgKHBvd2VyLVxcdTAwM2V2cmVnc19vbilcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL3B2cl9wb3dlci5jIGIvZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL3B2cl9wb3dlci5jXFxuaW5kZXggYTcxZDViMzU2MDFlNy4uZWI0YjZlY2RmNGY0ZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vcHZyX3Bvd2VyLmNcXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vcHZyX3Bvd2VyLmNcXG5AQCAtMzUyLDEyICszNTIsMTIgQEAgc3RhdGljIGludCBwdnJfcG93ZXJfaW5pdF9wd3JzZXEoc3RydWN0IHB2cl9kZXZpY2UgKnB2cl9kZXYpXFxuIFxcbiBzdGF0aWMgaW50IHB2cl9wb3dlcl9vbl9zZXF1ZW5jZV9wd3JzZXEoc3RydWN0IHB2cl9kZXZpY2UgKnB2cl9kZXYpXFxuIHtcXG4tXFx0cmV0dXJuIHB3cnNlcV9wb3dlcl9vbihwdnJfZGV2LVxcdTAwM2Vwd3JzZXEpO1xcbitcXHRyZXR1cm4gcHdyc2VxX2VuYWJsZShwdnJfZGV2LVxcdTAwM2Vwd3JzZXEpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IHB2cl9wb3dlcl9vZmZfc2VxdWVuY2VfcHdyc2VxKHN0cnVjdCBwdnJfZGV2aWNlICpwdnJfZGV2KVxcbiB7XFxuLVxcdHJldHVybiBwd3JzZXFfcG93ZXJfb2ZmKHB2cl9kZXYtXFx1MDAzZXB3cnNlcSk7XFxuK1xcdHJldHVybiBwd3JzZXFfZGlzYWJsZShwdnJfZGV2LVxcdTAwM2Vwd3JzZXEpO1xcbiB9XFxuIFxcbiBjb25zdCBzdHJ1Y3QgcHZyX3Bvd2VyX3NlcXVlbmNlX29wcyBwdnJfcG93ZXJfc2VxdWVuY2Vfb3BzX3B3cnNlcSA9IHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuY1xcbmluZGV4IDMxMDY1MDIyNzU3ODEuLmYyOGZlZDg5Y2MyOGIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuY1xcbkBAIC0xMDI1LDcgKzEwMjUsNyBAQCBzdGF0aWMgaW50IGF0aDEwa19od19wb3dlcl9vbihzdHJ1Y3QgYXRoMTBrICphcilcXG4gXFxuIFxcdGF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfU05PQywgXFxcInNvYyBwb3dlciBvblxcXFxuXFxcIik7XFxuIFxcbi1cXHRyZXQgPSBwd3JzZXFfcG93ZXJfb24oYXJfc25vYy1cXHUwMDNlcHdyc2VxKTtcXG4rXFx0cmV0ID0gcHdyc2VxX2VuYWJsZShhcl9zbm9jLVxcdTAwM2Vwd3JzZXEpO1xcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXG5AQCAtMTA0Miw3ICsxMDQyLDcgQEAgc3RhdGljIGludCBhdGgxMGtfaHdfcG93ZXJfb24oc3RydWN0IGF0aDEwayAqYXIpXFxuIHZyZWdfb2ZmOlxcbiBcXHRyZWd1bGF0b3JfYnVsa19kaXNhYmxlKGFyX3Nub2MtXFx1MDAzZW51bV92cmVncywgYXJfc25vYy1cXHUwMDNldnJlZ3MpO1xcbiBwd3JzZXFfb2ZmOlxcbi1cXHRwd3JzZXFfcG93ZXJfb2ZmKGFyX3Nub2MtXFx1MDAzZXB3cnNlcSk7XFxuK1xcdHB3cnNlcV9kaXNhYmxlKGFyX3Nub2MtXFx1MDAzZXB3cnNlcSk7XFxuIFxcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuQEAgLTEwNjAsNyArMTA2MCw3IEBAIHN0YXRpYyBpbnQgYXRoMTBrX2h3X3Bvd2VyX29mZihzdHJ1Y3QgYXRoMTBrICphcilcXG4gXFx0cmV0X3ZyZWcgPSByZWd1bGF0b3JfYnVsa19kaXNhYmxlKGFyX3Nub2MtXFx1MDAzZW51bV92cmVncywgYXJfc25vYy1cXHUwMDNldnJlZ3MpO1xcbiBcXG4gXFx0aWYgKGFyX3Nub2MtXFx1MDAzZXB3cnNlcSlcXG4tXFx0XFx0cmV0X3NlcSA9IHB3cnNlcV9wb3dlcl9vZmYoYXJfc25vYy1cXHUwMDNlcHdyc2VxKTtcXG4rXFx0XFx0cmV0X3NlcSA9IHB3cnNlcV9kaXNhYmxlKGFyX3Nub2MtXFx1MDAzZXB3cnNlcSk7XFxuIFxcbiBcXHRyZXR1cm4gcmV0X3ZyZWcgPyA6IHJldF9zZXE7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcHdyY3RybC9nZW5lcmljLmMgYi9kcml2ZXJzL3BjaS9wd3JjdHJsL2dlbmVyaWMuY1xcbmluZGV4IGE3ZTU5OWQ4NDFlNjIuLmQ1NjE3MWUwZWUyNDQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9wY2kvcHdyY3RybC9nZW5lcmljLmNcXG4rKysgYi9kcml2ZXJzL3BjaS9wd3JjdHJsL2dlbmVyaWMuY1xcbkBAIC0yOSw3ICsyOSw3IEBAIHN0YXRpYyBpbnQgc2xvdF9wd3JjdHJsX3Bvd2VyX29uKHN0cnVjdCBwY2lfcHdyY3RybCAqcHdyY3RybClcXG4gXFx0aW50IHJldDtcXG4gXFxuIFxcdGlmIChzbG90LVxcdTAwM2Vwd3JzZXEpIHtcXG4tXFx0XFx0cHdyc2VxX3Bvd2VyX29uKHNsb3QtXFx1MDAzZXB3cnNlcSk7XFxuK1xcdFxcdHB3cnNlcV9lbmFibGUoc2xvdC1cXHUwMDNlcHdyc2VxKTtcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcdH1cXG4gXFxuQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIGludCBzbG90X3B3cmN0cmxfcG93ZXJfb2ZmKHN0cnVjdCBwY2lfcHdyY3RybCAqcHdyY3RybClcXG4gXFx0XFx0XFx0XFx0XFx0XFx0c3RydWN0IHNsb3RfcHdyY3RybCwgcHdyY3RybCk7XFxuIFxcbiBcXHRpZiAoc2xvdC1cXHUwMDNlcHdyc2VxKSB7XFxuLVxcdFxcdHB3cnNlcV9wb3dlcl9vZmYoc2xvdC1cXHUwMDNlcHdyc2VxKTtcXG4rXFx0XFx0cHdyc2VxX2Rpc2FibGUoc2xvdC1cXHUwMDNlcHdyc2VxKTtcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcdH1cXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL3B3cmN0cmwvcGNpLXB3cmN0cmwtcHdyc2VxLmMgYi9kcml2ZXJzL3BjaS9wd3JjdHJsL3BjaS1wd3JjdHJsLXB3cnNlcS5jXFxuaW5kZXggYTMwOGJmNGI1ZmMwMS4uYzVjZWQ4Nzk0NGI2YyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3BjaS9wd3JjdHJsL3BjaS1wd3JjdHJsLXB3cnNlcS5jXFxuKysrIGIvZHJpdmVycy9wY2kvcHdyY3RybC9wY2ktcHdyY3RybC1wd3JzZXEuY1xcbkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyBpbnQgcHdyc2VxX3B3cmN0cmxfcG93ZXJfb24oc3RydWN0IHBjaV9wd3JjdHJsICpwd3JjdHJsKVxcbiBcXHRzdHJ1Y3QgcHdyc2VxX3B3cmN0cmwgKnB3cnNlcSA9IGNvbnRhaW5lcl9vZihwd3JjdHJsLFxcbiBcXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgcHdyc2VxX3B3cmN0cmwsIHB3cmN0cmwpO1xcbiBcXG4tXFx0cmV0dXJuIHB3cnNlcV9wb3dlcl9vbihwd3JzZXEtXFx1MDAzZXB3cnNlcSk7XFxuK1xcdHJldHVybiBwd3JzZXFfZW5hYmxlKHB3cnNlcS1cXHUwMDNlcHdyc2VxKTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBwd3JzZXFfcHdyY3RybF9wb3dlcl9vZmYoc3RydWN0IHBjaV9wd3JjdHJsICpwd3JjdHJsKVxcbkBAIC02NCw3ICs2NCw3IEBAIHN0YXRpYyBpbnQgcHdyc2VxX3B3cmN0cmxfcG93ZXJfb2ZmKHN0cnVjdCBwY2lfcHdyY3RybCAqcHdyY3RybClcXG4gXFx0c3RydWN0IHB3cnNlcV9wd3JjdHJsICpwd3JzZXEgPSBjb250YWluZXJfb2YocHdyY3RybCxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IHB3cnNlcV9wd3JjdHJsLCBwd3JjdHJsKTtcXG4gXFxuLVxcdHJldHVybiBwd3JzZXFfcG93ZXJfb2ZmKHB3cnNlcS1cXHUwMDNlcHdyc2VxKTtcXG4rXFx0cmV0dXJuIHB3cnNlcV9kaXNhYmxlKHB3cnNlcS1cXHUwMDNlcHdyc2VxKTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBwd3JzZXFfcHdyY3RybF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3Bvd2VyL3NlcXVlbmNpbmcvY29yZS5jIGIvZHJpdmVycy9wb3dlci9zZXF1ZW5jaW5nL2NvcmUuY1xcbmluZGV4IDAyZjQyZGE5MTU5ODUuLjcyMWU4ODhiNjU4ZDEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9wb3dlci9zZXF1ZW5jaW5nL2NvcmUuY1xcbisrKyBiL2RyaXZlcnMvcG93ZXIvc2VxdWVuY2luZy9jb3JlLmNcXG5AQCAtNzA4LDcgKzcwOCw3IEBAIHZvaWQgcHdyc2VxX3B1dChzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXFxuIFxcdHB3cnNlcSA9IGRlc2MtXFx1MDAzZXB3cnNlcTtcXG4gXFxuIFxcdGlmIChkZXNjLVxcdTAwM2Vwb3dlcmVkX29uKVxcbi1cXHRcXHRwd3JzZXFfcG93ZXJfb2ZmKGRlc2MpO1xcbitcXHRcXHRwd3JzZXFfZGlzYWJsZShkZXNjKTtcXG4gXFxuIFxcdGtmcmVlKGRlc2MpO1xcbiBcXHRtb2R1bGVfcHV0KHB3cnNlcS1cXHUwMDNlb3duZXIpO1xcbkBAIC04NzQsNyArODc0LDcgQEAgc3RhdGljIGludCBwd3JzZXFfdW5pdF9kaXNhYmxlKHN0cnVjdCBwd3JzZXFfZGV2aWNlICpwd3JzZXEsXFxuIH1cXG4gXFxuIC8qKlxcbi0gKiBwd3JzZXFfcG93ZXJfb24oKSAtIElzc3VlIGEgcG93ZXItb24gcmVxdWVzdCBvbiBiZWhhbGYgb2YgdGhlIGNvbnN1bWVyXFxuKyAqIHB3cnNlcV9lbmFibGUoKSAtIElzc3VlIGEgcG93ZXItb24gcmVxdWVzdCBvbiBiZWhhbGYgb2YgdGhlIGNvbnN1bWVyXFxuICAqICAgICAgICAgICAgICAgICAgICAgZGV2aWNlLlxcbiAgKiBAZGVzYzogRGVzY3JpcHRvciByZWZlcmVuY2luZyB0aGUgcG93ZXIgc2VxdWVuY2VyLlxcbiAgKlxcbkBAIC04ODcsNyArODg3LDcgQEAgc3RhdGljIGludCBwd3JzZXFfdW5pdF9kaXNhYmxlKHN0cnVjdCBwd3JzZXFfZGV2aWNlICpwd3JzZXEsXFxuICAqIFJldHVybnM6XFxuICAqIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgbnVtYmVyIG9uIGZhaWx1cmUuXFxuICAqL1xcbi1pbnQgcHdyc2VxX3Bvd2VyX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcXG4raW50IHB3cnNlcV9lbmFibGUoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxcbiB7XFxuIFxcdHN0cnVjdCBwd3JzZXFfZGV2aWNlICpwd3JzZXE7XFxuIFxcdHN0cnVjdCBwd3JzZXFfdGFyZ2V0ICp0YXJnZXQ7XFxuQEAgLTkyNSwxNCArOTI1LDE0IEBAIGludCBwd3JzZXFfcG93ZXJfb24oc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxcbiBcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbi1FWFBPUlRfU1lNQk9MX0dQTChwd3JzZXFfcG93ZXJfb24pO1xcbitFWFBPUlRfU1lNQk9MX0dQTChwd3JzZXFfZW5hYmxlKTtcXG4gXFxuIC8qKlxcbi0gKiBwd3JzZXFfcG93ZXJfb2ZmKCkgLSBJc3N1ZSBhIHBvd2VyLW9mZiByZXF1ZXN0IG9uIGJlaGFsZiBvZiB0aGUgY29uc3VtZXJcXG4rICogcHdyc2VxX2Rpc2FibGUoKSAtIElzc3VlIGEgcG93ZXItb2ZmIHJlcXVlc3Qgb24gYmVoYWxmIG9mIHRoZSBjb25zdW1lclxcbiAgKiAgICAgICAgICAgICAgICAgICAgICBkZXZpY2UuXFxuICAqIEBkZXNjOiBEZXNjcmlwdG9yIHJlZmVyZW5jaW5nIHRoZSBwb3dlciBzZXF1ZW5jZXIuXFxuICAqXFxuLSAqIFRoaXMgdW5kb2VzIHRoZSBlZmZlY3RzIG9mIHB3cnNlcV9wb3dlcl9vbigpLiBJdCBpc3N1ZXMgYSBwb3dlci1vZmYgcmVxdWVzdFxcbisgKiBUaGlzIHVuZG9lcyB0aGUgZWZmZWN0cyBvZiBwd3JzZXFfZW5hYmxlKCkuIEl0IGlzc3VlcyBhIHBvd2VyLW9mZiByZXF1ZXN0XFxuICAqIG9uIGJlaGFsZiBvZiB0aGUgY29uc3VtZXIgYW5kIHdoZW4gdGhlIGxhc3QgcmVtYWluaW5nIHVzZXIgZG9lcyBzbywgdGhlXFxuICAqIHBvd2VyLWRvd24gc2VxdWVuY2Ugd2lsbCBiZSBzdGFydGVkLiBJZiBvbmUgaXMgaW4gcHJvZ3Jlc3MsIHRoZSBmdW5jdGlvblxcbiAgKiB3aWxsIGJsb2NrIHVudGlsIGl0J3MgY29tcGxldGUgYW5kIHRoZW4gcmV0dXJuLlxcbkBAIC05NDAsNyArOTQwLDcgQEAgRVhQT1JUX1NZTUJPTF9HUEwocHdyc2VxX3Bvd2VyX29uKTtcXG4gICogUmV0dXJuczpcXG4gICogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBudW1iZXIgb24gZmFpbHVyZS5cXG4gICovXFxuLWludCBwd3JzZXFfcG93ZXJfb2ZmKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcXG4raW50IHB3cnNlcV9kaXNhYmxlKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcXG4ge1xcbiBcXHRzdHJ1Y3QgcHdyc2VxX2RldmljZSAqcHdyc2VxO1xcbiBcXHRzdHJ1Y3QgcHdyc2VxX3VuaXQgKnVuaXQ7XFxuQEAgLTk2Niw3ICs5NjYsNyBAQCBpbnQgcHdyc2VxX3Bvd2VyX29mZihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXFxuIFxcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuLUVYUE9SVF9TWU1CT0xfR1BMKHB3cnNlcV9wb3dlcl9vZmYpO1xcbitFWFBPUlRfU1lNQk9MX0dQTChwd3JzZXFfZGlzYWJsZSk7XFxuIFxcbiAvKipcXG4gICogcHdyc2VxX3RvX2RldmljZSgpIC0gR2V0IHRoZSBwd3JzZXEgZGV2aWNlIHBvaW50ZXIgZnJvbSBhIGRlc2NyaXB0b3IuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcHdyc2VxL2NvbnN1bWVyLmggYi9pbmNsdWRlL2xpbnV4L3B3cnNlcS9jb25zdW1lci5oXFxuaW5kZXggM2M5MDdjOWUxODg1ZC4uMTZmYWQ1ZjNlM2FiNSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L3B3cnNlcS9jb25zdW1lci5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9wd3JzZXEvY29uc3VtZXIuaFxcbkBAIC0yMCw4ICsyMCw4IEBAIHZvaWQgcHdyc2VxX3B1dChzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpO1xcbiBzdHJ1Y3QgcHdyc2VxX2Rlc2MgKiBfX211c3RfY2hlY2tcXG4gZGV2bV9wd3JzZXFfZ2V0KHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqdGFyZ2V0KTtcXG4gXFxuLWludCBwd3JzZXFfcG93ZXJfb24oc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTtcXG4taW50IHB3cnNlcV9wb3dlcl9vZmYoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTtcXG4raW50IHB3cnNlcV9lbmFibGUoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTtcXG4raW50IHB3cnNlcV9kaXNhYmxlKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYyk7XFxuIFxcbiBzdHJ1Y3QgZGV2aWNlICpwd3JzZXFfdG9fZGV2aWNlKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYyk7XFxuIFxcbkBAIC00MywxMiArNDMsMTIgQEAgZGV2bV9wd3JzZXFfZ2V0KHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqdGFyZ2V0KVxcbiBcXHRyZXR1cm4gRVJSX1BUUigtRU5PU1lTKTtcXG4gfVxcbiBcXG4tc3RhdGljIGlubGluZSBpbnQgcHdyc2VxX3Bvd2VyX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcXG4rc3RhdGljIGlubGluZSBpbnQgcHdyc2VxX2VuYWJsZShzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXFxuIHtcXG4gXFx0cmV0dXJuIC1FTk9TWVM7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbmxpbmUgaW50IHB3cnNlcV9wb3dlcl9vZmYoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxcbitzdGF0aWMgaW5saW5lIGludCBwd3JzZXFfZGlzYWJsZShzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXFxuIHtcXG4gXFx0cmV0dXJuIC1FTk9TWVM7XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjA6MDQ6NDMuMTMwMjQzMDE3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6OTc1MjIyMjYyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSByZW5hbWVzIHB3cnNlcV9wb3dlcl9vbi9vZmYgdG8gcHdyc2VxX2VuYWJsZS9kaXNhYmxlIGFjcm9zcyB0aGUgcG93ZXIgc2VxdWVuY2luZyBzdWJzeXN0ZW0gYW5kIGl0cyBjb25zdW1lcnMuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjRiMmIwODBmMzEwMmI0NmNiMmJhZjM3OWE3NzdlZGMxYmNiMzE2MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDEgMjA6MDQ6NDEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvcHdyc2VxLnJzdCBiL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9wd3JzZXEucnN0XG5pbmRleCBhZDE4YjIzMjZiNjg5Li5lMTA1NmQxNDE4NDUxIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3B3cnNlcS5yc3RcbisrKyBiL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9wd3JzZXEucnN0XG5AQCAtNTAsOSArNTAsOSBAQCBDb25zdW1lciBpbnRlcmZhY2VcbiBUaGUgY29uc3VtZXIgQVBJIGlzIGFpbWVkIHRvIGJlIGFzIHNpbXBsZSBhcyBwb3NzaWJsZS4gVGhlIGRyaXZlciBpbnRlcmVzdGVkIGluXG4gZ2V0dGluZyBhIGRlc2NyaXB0b3IgZnJvbSB0aGUgcG93ZXIgc2VxdWVuY2VyIHNob3VsZCBjYWxsIHB3cnNlcV9nZXQoKSBhbmRcbiBzcGVjaWZ5IHRoZSBuYW1lIG9mIHRoZSB0YXJnZXQgaXQgd2FudHMgdG8gcmVhY2ggaW4gdGhlIHNlcXVlbmNlIGFmdGVyIGNhbGxpbmdcbi1wd3JzZXFfcG93ZXJfdXAoKS4gVGhlIGRlc2NyaXB0b3IgY2FuIGJlIHJlbGVhc2VkIGJ5IGNhbGxpbmcgcHdyc2VxX3B1dCgpIGFuZFxuK3B3cnNlcV9lbmFibGUoKS4gVGhlIGRlc2NyaXB0b3IgY2FuIGJlIHJlbGVhc2VkIGJ5IGNhbGxpbmcgcHdyc2VxX3B1dCgpIGFuZFxuIHRoZSBjb25zdW1lciBjYW4gcmVxdWVzdCB0aGUgcG93ZXJpbmcgZG93biBvZiBpdHMgdGFyZ2V0IHdpdGhcbi1wd3JzZXFfcG93ZXJfb2ZmKCkuIE5vdGUgdGhhdCB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBwd3JzZXFfcG93ZXJfb2ZmKClcbitwd3JzZXFfZGlzYWJsZSgpLiBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgcHdyc2VxX2Rpc2FibGUoKVxuIHdpbGwgaGF2ZSBhbnkgZWZmZWN0IGFzIHRoZXJlIG1heSBiZSBtdWx0aXBsZSB1c2VycyBvZiB0aGUgdW5kZXJseWluZyByZXNvdXJjZXNcbiB3aG8gbWF5IGtlZXAgdGhlbSBhY3RpdmUuXG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jIGIvZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jXG5pbmRleCAzNDVmNjAyZTljZTIzLi5mYWE5NjQ3MzVhZGIxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jXG4rKysgYi9kcml2ZXJzL2JsdWV0b290aC9oY2lfcWNhLmNcbkBAIC0yMjU5LDcgKzIyNTksNyBAQCBzdGF0aWMgdm9pZCBxY2FfcG93ZXJfb2ZmKHN0cnVjdCBoY2lfdWFydCAqaHUpXG4gXHR9XG4gXG4gXHRpZiAocG93ZXIgXHUwMDI2XHUwMDI2IHBvd2VyLVx1MDAzZXB3cnNlcSkge1xuLVx0XHRwd3JzZXFfcG93ZXJfb2ZmKHBvd2VyLVx1MDAzZXB3cnNlcSk7XG4rXHRcdHB3cnNlcV9kaXNhYmxlKHBvd2VyLVx1MDAzZXB3cnNlcSk7XG4gXHRcdHNldF9iaXQoUUNBX0JUX09GRiwgXHUwMDI2cWNhLVx1MDAzZWZsYWdzKTtcbiBcdFx0cmV0dXJuO1xuICAgICAgICAgfVxuQEAgLTIzMTksNyArMjMxOSw3IEBAIHN0YXRpYyBpbnQgcWNhX3JlZ3VsYXRvcl9lbmFibGUoc3RydWN0IHFjYV9zZXJkZXYgKnFjYWRldilcbiBcdGludCByZXQ7XG4gXG4gXHRpZiAocG93ZXItXHUwMDNlcHdyc2VxKVxuLVx0XHRyZXR1cm4gcHdyc2VxX3Bvd2VyX29uKHBvd2VyLVx1MDAzZXB3cnNlcSk7XG4rXHRcdHJldHVybiBwd3JzZXFfZW5hYmxlKHBvd2VyLVx1MDAzZXB3cnNlcSk7XG4gXG4gXHQvKiBBbHJlYWR5IGVuYWJsZWQgKi9cbiBcdGlmIChwb3dlci1cdTAwM2V2cmVnc19vbilcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vcHZyX3Bvd2VyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vcHZyX3Bvd2VyLmNcbmluZGV4IGE3MWQ1YjM1NjAxZTcuLmViNGI2ZWNkZjRmNGQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vcHZyX3Bvd2VyLmNcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pbWFnaW5hdGlvbi9wdnJfcG93ZXIuY1xuQEAgLTM1MiwxMiArMzUyLDEyIEBAIHN0YXRpYyBpbnQgcHZyX3Bvd2VyX2luaXRfcHdyc2VxKHN0cnVjdCBwdnJfZGV2aWNlICpwdnJfZGV2KVxuIFxuIHN0YXRpYyBpbnQgcHZyX3Bvd2VyX29uX3NlcXVlbmNlX3B3cnNlcShzdHJ1Y3QgcHZyX2RldmljZSAqcHZyX2RldilcbiB7XG4tXHRyZXR1cm4gcHdyc2VxX3Bvd2VyX29uKHB2cl9kZXYtXHUwMDNlcHdyc2VxKTtcbitcdHJldHVybiBwd3JzZXFfZW5hYmxlKHB2cl9kZXYtXHUwMDNlcHdyc2VxKTtcbiB9XG4gXG4gc3RhdGljIGludCBwdnJfcG93ZXJfb2ZmX3NlcXVlbmNlX3B3cnNlcShzdHJ1Y3QgcHZyX2RldmljZSAqcHZyX2RldilcbiB7XG4tXHRyZXR1cm4gcHdyc2VxX3Bvd2VyX29mZihwdnJfZGV2LVx1MDAzZXB3cnNlcSk7XG4rXHRyZXR1cm4gcHdyc2VxX2Rpc2FibGUocHZyX2Rldi1cdTAwM2Vwd3JzZXEpO1xuIH1cbiBcbiBjb25zdCBzdHJ1Y3QgcHZyX3Bvd2VyX3NlcXVlbmNlX29wcyBwdnJfcG93ZXJfc2VxdWVuY2Vfb3BzX3B3cnNlcSA9IHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jXG5pbmRleCAzMTA2NTAyMjc1NzgxLi5mMjhmZWQ4OWNjMjhiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jXG5AQCAtMTAyNSw3ICsxMDI1LDcgQEAgc3RhdGljIGludCBhdGgxMGtfaHdfcG93ZXJfb24oc3RydWN0IGF0aDEwayAqYXIpXG4gXG4gXHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1NOT0MsIFwic29jIHBvd2VyIG9uXFxuXCIpO1xuIFxuLVx0cmV0ID0gcHdyc2VxX3Bvd2VyX29uKGFyX3Nub2MtXHUwMDNlcHdyc2VxKTtcbitcdHJldCA9IHB3cnNlcV9lbmFibGUoYXJfc25vYy1cdTAwM2Vwd3JzZXEpO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbkBAIC0xMDQyLDcgKzEwNDIsNyBAQCBzdGF0aWMgaW50IGF0aDEwa19od19wb3dlcl9vbihzdHJ1Y3QgYXRoMTBrICphcilcbiB2cmVnX29mZjpcbiBcdHJlZ3VsYXRvcl9idWxrX2Rpc2FibGUoYXJfc25vYy1cdTAwM2VudW1fdnJlZ3MsIGFyX3Nub2MtXHUwMDNldnJlZ3MpO1xuIHB3cnNlcV9vZmY6XG4tXHRwd3JzZXFfcG93ZXJfb2ZmKGFyX3Nub2MtXHUwMDNlcHdyc2VxKTtcbitcdHB3cnNlcV9kaXNhYmxlKGFyX3Nub2MtXHUwMDNlcHdyc2VxKTtcbiBcbiBcdHJldHVybiByZXQ7XG4gfVxuQEAgLTEwNjAsNyArMTA2MCw3IEBAIHN0YXRpYyBpbnQgYXRoMTBrX2h3X3Bvd2VyX29mZihzdHJ1Y3QgYXRoMTBrICphcilcbiBcdHJldF92cmVnID0gcmVndWxhdG9yX2J1bGtfZGlzYWJsZShhcl9zbm9jLVx1MDAzZW51bV92cmVncywgYXJfc25vYy1cdTAwM2V2cmVncyk7XG4gXG4gXHRpZiAoYXJfc25vYy1cdTAwM2Vwd3JzZXEpXG4tXHRcdHJldF9zZXEgPSBwd3JzZXFfcG93ZXJfb2ZmKGFyX3Nub2MtXHUwMDNlcHdyc2VxKTtcbitcdFx0cmV0X3NlcSA9IHB3cnNlcV9kaXNhYmxlKGFyX3Nub2MtXHUwMDNlcHdyc2VxKTtcbiBcbiBcdHJldHVybiByZXRfdnJlZyA/IDogcmV0X3NlcTtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcHdyY3RybC9nZW5lcmljLmMgYi9kcml2ZXJzL3BjaS9wd3JjdHJsL2dlbmVyaWMuY1xuaW5kZXggYTdlNTk5ZDg0MWU2Mi4uZDU2MTcxZTBlZTI0NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvcGNpL3B3cmN0cmwvZ2VuZXJpYy5jXG4rKysgYi9kcml2ZXJzL3BjaS9wd3JjdHJsL2dlbmVyaWMuY1xuQEAgLTI5LDcgKzI5LDcgQEAgc3RhdGljIGludCBzbG90X3B3cmN0cmxfcG93ZXJfb24oc3RydWN0IHBjaV9wd3JjdHJsICpwd3JjdHJsKVxuIFx0aW50IHJldDtcbiBcbiBcdGlmIChzbG90LVx1MDAzZXB3cnNlcSkge1xuLVx0XHRwd3JzZXFfcG93ZXJfb24oc2xvdC1cdTAwM2Vwd3JzZXEpO1xuK1x0XHRwd3JzZXFfZW5hYmxlKHNsb3QtXHUwMDNlcHdyc2VxKTtcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG5AQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgaW50IHNsb3RfcHdyY3RybF9wb3dlcl9vZmYoc3RydWN0IHBjaV9wd3JjdHJsICpwd3JjdHJsKVxuIFx0XHRcdFx0XHRcdHN0cnVjdCBzbG90X3B3cmN0cmwsIHB3cmN0cmwpO1xuIFxuIFx0aWYgKHNsb3QtXHUwMDNlcHdyc2VxKSB7XG4tXHRcdHB3cnNlcV9wb3dlcl9vZmYoc2xvdC1cdTAwM2Vwd3JzZXEpO1xuK1x0XHRwd3JzZXFfZGlzYWJsZShzbG90LVx1MDAzZXB3cnNlcSk7XG4gXHRcdHJldHVybiAwO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL3B3cmN0cmwvcGNpLXB3cmN0cmwtcHdyc2VxLmMgYi9kcml2ZXJzL3BjaS9wd3JjdHJsL3BjaS1wd3JjdHJsLXB3cnNlcS5jXG5pbmRleCBhMzA4YmY0YjVmYzAxLi5jNWNlZDg3OTQ0YjZjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9wY2kvcHdyY3RybC9wY2ktcHdyY3RybC1wd3JzZXEuY1xuKysrIGIvZHJpdmVycy9wY2kvcHdyY3RybC9wY2ktcHdyY3RybC1wd3JzZXEuY1xuQEAgLTU2LDcgKzU2LDcgQEAgc3RhdGljIGludCBwd3JzZXFfcHdyY3RybF9wb3dlcl9vbihzdHJ1Y3QgcGNpX3B3cmN0cmwgKnB3cmN0cmwpXG4gXHRzdHJ1Y3QgcHdyc2VxX3B3cmN0cmwgKnB3cnNlcSA9IGNvbnRhaW5lcl9vZihwd3JjdHJsLFxuIFx0XHRcdFx0XHQgICBzdHJ1Y3QgcHdyc2VxX3B3cmN0cmwsIHB3cmN0cmwpO1xuIFxuLVx0cmV0dXJuIHB3cnNlcV9wb3dlcl9vbihwd3JzZXEtXHUwMDNlcHdyc2VxKTtcbitcdHJldHVybiBwd3JzZXFfZW5hYmxlKHB3cnNlcS1cdTAwM2Vwd3JzZXEpO1xuIH1cbiBcbiBzdGF0aWMgaW50IHB3cnNlcV9wd3JjdHJsX3Bvd2VyX29mZihzdHJ1Y3QgcGNpX3B3cmN0cmwgKnB3cmN0cmwpXG5AQCAtNjQsNyArNjQsNyBAQCBzdGF0aWMgaW50IHB3cnNlcV9wd3JjdHJsX3Bvd2VyX29mZihzdHJ1Y3QgcGNpX3B3cmN0cmwgKnB3cmN0cmwpXG4gXHRzdHJ1Y3QgcHdyc2VxX3B3cmN0cmwgKnB3cnNlcSA9IGNvbnRhaW5lcl9vZihwd3JjdHJsLFxuIFx0XHRcdFx0XHQgICBzdHJ1Y3QgcHdyc2VxX3B3cmN0cmwsIHB3cmN0cmwpO1xuIFxuLVx0cmV0dXJuIHB3cnNlcV9wb3dlcl9vZmYocHdyc2VxLVx1MDAzZXB3cnNlcSk7XG4rXHRyZXR1cm4gcHdyc2VxX2Rpc2FibGUocHdyc2VxLVx1MDAzZXB3cnNlcSk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgcHdyc2VxX3B3cmN0cmxfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3Bvd2VyL3NlcXVlbmNpbmcvY29yZS5jIGIvZHJpdmVycy9wb3dlci9zZXF1ZW5jaW5nL2NvcmUuY1xuaW5kZXggMDJmNDJkYTkxNTk4NS4uNzIxZTg4OGI2NThkMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvcG93ZXIvc2VxdWVuY2luZy9jb3JlLmNcbisrKyBiL2RyaXZlcnMvcG93ZXIvc2VxdWVuY2luZy9jb3JlLmNcbkBAIC03MDgsNyArNzA4LDcgQEAgdm9pZCBwd3JzZXFfcHV0KHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcbiBcdHB3cnNlcSA9IGRlc2MtXHUwMDNlcHdyc2VxO1xuIFxuIFx0aWYgKGRlc2MtXHUwMDNlcG93ZXJlZF9vbilcbi1cdFx0cHdyc2VxX3Bvd2VyX29mZihkZXNjKTtcbitcdFx0cHdyc2VxX2Rpc2FibGUoZGVzYyk7XG4gXG4gXHRrZnJlZShkZXNjKTtcbiBcdG1vZHVsZV9wdXQocHdyc2VxLVx1MDAzZW93bmVyKTtcbkBAIC04NzQsNyArODc0LDcgQEAgc3RhdGljIGludCBwd3JzZXFfdW5pdF9kaXNhYmxlKHN0cnVjdCBwd3JzZXFfZGV2aWNlICpwd3JzZXEsXG4gfVxuIFxuIC8qKlxuLSAqIHB3cnNlcV9wb3dlcl9vbigpIC0gSXNzdWUgYSBwb3dlci1vbiByZXF1ZXN0IG9uIGJlaGFsZiBvZiB0aGUgY29uc3VtZXJcbisgKiBwd3JzZXFfZW5hYmxlKCkgLSBJc3N1ZSBhIHBvd2VyLW9uIHJlcXVlc3Qgb24gYmVoYWxmIG9mIHRoZSBjb25zdW1lclxuICAqICAgICAgICAgICAgICAgICAgICAgZGV2aWNlLlxuICAqIEBkZXNjOiBEZXNjcmlwdG9yIHJlZmVyZW5jaW5nIHRoZSBwb3dlciBzZXF1ZW5jZXIuXG4gICpcbkBAIC04ODcsNyArODg3LDcgQEAgc3RhdGljIGludCBwd3JzZXFfdW5pdF9kaXNhYmxlKHN0cnVjdCBwd3JzZXFfZGV2aWNlICpwd3JzZXEsXG4gICogUmV0dXJuczpcbiAgKiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIG51bWJlciBvbiBmYWlsdXJlLlxuICAqL1xuLWludCBwd3JzZXFfcG93ZXJfb24oc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxuK2ludCBwd3JzZXFfZW5hYmxlKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcbiB7XG4gXHRzdHJ1Y3QgcHdyc2VxX2RldmljZSAqcHdyc2VxO1xuIFx0c3RydWN0IHB3cnNlcV90YXJnZXQgKnRhcmdldDtcbkBAIC05MjUsMTQgKzkyNSwxNCBAQCBpbnQgcHdyc2VxX3Bvd2VyX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcbiBcbiBcdHJldHVybiByZXQ7XG4gfVxuLUVYUE9SVF9TWU1CT0xfR1BMKHB3cnNlcV9wb3dlcl9vbik7XG4rRVhQT1JUX1NZTUJPTF9HUEwocHdyc2VxX2VuYWJsZSk7XG4gXG4gLyoqXG4tICogcHdyc2VxX3Bvd2VyX29mZigpIC0gSXNzdWUgYSBwb3dlci1vZmYgcmVxdWVzdCBvbiBiZWhhbGYgb2YgdGhlIGNvbnN1bWVyXG4rICogcHdyc2VxX2Rpc2FibGUoKSAtIElzc3VlIGEgcG93ZXItb2ZmIHJlcXVlc3Qgb24gYmVoYWxmIG9mIHRoZSBjb25zdW1lclxuICAqICAgICAgICAgICAgICAgICAgICAgIGRldmljZS5cbiAgKiBAZGVzYzogRGVzY3JpcHRvciByZWZlcmVuY2luZyB0aGUgcG93ZXIgc2VxdWVuY2VyLlxuICAqXG4tICogVGhpcyB1bmRvZXMgdGhlIGVmZmVjdHMgb2YgcHdyc2VxX3Bvd2VyX29uKCkuIEl0IGlzc3VlcyBhIHBvd2VyLW9mZiByZXF1ZXN0XG4rICogVGhpcyB1bmRvZXMgdGhlIGVmZmVjdHMgb2YgcHdyc2VxX2VuYWJsZSgpLiBJdCBpc3N1ZXMgYSBwb3dlci1vZmYgcmVxdWVzdFxuICAqIG9uIGJlaGFsZiBvZiB0aGUgY29uc3VtZXIgYW5kIHdoZW4gdGhlIGxhc3QgcmVtYWluaW5nIHVzZXIgZG9lcyBzbywgdGhlXG4gICogcG93ZXItZG93biBzZXF1ZW5jZSB3aWxsIGJlIHN0YXJ0ZWQuIElmIG9uZSBpcyBpbiBwcm9ncmVzcywgdGhlIGZ1bmN0aW9uXG4gICogd2lsbCBibG9jayB1bnRpbCBpdCdzIGNvbXBsZXRlIGFuZCB0aGVuIHJldHVybi5cbkBAIC05NDAsNyArOTQwLDcgQEAgRVhQT1JUX1NZTUJPTF9HUEwocHdyc2VxX3Bvd2VyX29uKTtcbiAgKiBSZXR1cm5zOlxuICAqIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgbnVtYmVyIG9uIGZhaWx1cmUuXG4gICovXG4taW50IHB3cnNlcV9wb3dlcl9vZmYoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxuK2ludCBwd3JzZXFfZGlzYWJsZShzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXG4ge1xuIFx0c3RydWN0IHB3cnNlcV9kZXZpY2UgKnB3cnNlcTtcbiBcdHN0cnVjdCBwd3JzZXFfdW5pdCAqdW5pdDtcbkBAIC05NjYsNyArOTY2LDcgQEAgaW50IHB3cnNlcV9wb3dlcl9vZmYoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxuIFxuIFx0cmV0dXJuIHJldDtcbiB9XG4tRVhQT1JUX1NZTUJPTF9HUEwocHdyc2VxX3Bvd2VyX29mZik7XG4rRVhQT1JUX1NZTUJPTF9HUEwocHdyc2VxX2Rpc2FibGUpO1xuIFxuIC8qKlxuICAqIHB3cnNlcV90b19kZXZpY2UoKSAtIEdldCB0aGUgcHdyc2VxIGRldmljZSBwb2ludGVyIGZyb20gYSBkZXNjcmlwdG9yLlxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcHdyc2VxL2NvbnN1bWVyLmggYi9pbmNsdWRlL2xpbnV4L3B3cnNlcS9jb25zdW1lci5oXG5pbmRleCAzYzkwN2M5ZTE4ODVkLi4xNmZhZDVmM2UzYWI1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9wd3JzZXEvY29uc3VtZXIuaFxuKysrIGIvaW5jbHVkZS9saW51eC9wd3JzZXEvY29uc3VtZXIuaFxuQEAgLTIwLDggKzIwLDggQEAgdm9pZCBwd3JzZXFfcHV0KHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYyk7XG4gc3RydWN0IHB3cnNlcV9kZXNjICogX19tdXN0X2NoZWNrXG4gZGV2bV9wd3JzZXFfZ2V0KHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqdGFyZ2V0KTtcbiBcbi1pbnQgcHdyc2VxX3Bvd2VyX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYyk7XG4taW50IHB3cnNlcV9wb3dlcl9vZmYoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTtcbitpbnQgcHdyc2VxX2VuYWJsZShzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpO1xuK2ludCBwd3JzZXFfZGlzYWJsZShzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpO1xuIFxuIHN0cnVjdCBkZXZpY2UgKnB3cnNlcV90b19kZXZpY2Uoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTtcbiBcbkBAIC00MywxMiArNDMsMTIgQEAgZGV2bV9wd3JzZXFfZ2V0KHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqdGFyZ2V0KVxuIFx0cmV0dXJuIEVSUl9QVFIoLUVOT1NZUyk7XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgaW50IHB3cnNlcV9wb3dlcl9vbihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXG4rc3RhdGljIGlubGluZSBpbnQgcHdyc2VxX2VuYWJsZShzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXG4ge1xuIFx0cmV0dXJuIC1FTk9TWVM7XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgaW50IHB3cnNlcV9wb3dlcl9vZmYoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxuK3N0YXRpYyBpbmxpbmUgaW50IHB3cnNlcV9kaXNhYmxlKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcbiB7XG4gXHRyZXR1cm4gLUVOT1NZUztcbiB9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMDowNDo0My4xMzAyNDQ0NjdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NzUyMTk1MDAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvd2VyIFNlcXVlbmNpbmcgU3Vic3lzdGVtIFJlbmFtZSBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaW4gZnJvbnQgb2YgbWUgdGhhdCdzIHJlbmFtaW5nIGBwd3JzZXFfcG93ZXJfb25gIHRvIGBwd3JzZXFfZW5hYmxlYCBhbmQgYHB3cnNlcV9wb3dlcl9vZmZgIHRvIGBwd3JzZXFfZGlzYWJsZWAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgXCJQdXJlIHJlbmFtaW5nLCByaWdodD8gTm8gZnVuY3Rpb25hbCBjaGFuZ2VzP1wiIExldCdzIGRpZyBpbi5cblxuVGhlIGRpZmYgc2hvd3MgdXBkYXRlcyB0byB0aGUgZG9jdW1lbnRhdGlvbiwgd2hpY2ggaXMgZXhwZWN0ZWQuIFRoZW4sIGl0J3MgYSBzd2VlcCB0aHJvdWdoIHZhcmlvdXMgY29uc3VtZXIgZmlsZXMgbGlrZSBgaGNpX3FjYS5jYCwgYHB2cl9wb3dlci5jYCwgYGF0aDEway9zbm9jLmNgLCBldGMuLCBzaW1wbHkgcmVwbGFjaW5nIHRob3NlIG9sZCBmdW5jdGlvbiBuYW1lcyB3aXRoIHRoZSBuZXcgb25lcy4gVGhlIGBwb3dlci9zZXF1ZW5jaW5nL2NvcmUuY2AgZmlsZSBpdHNlbGYgZ2V0cyB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbnMgcmVuYW1lZCwgYWxvbmcgd2l0aCBjb3JyZXNwb25kaW5nIGBFWFBPUlRfU1lNQk9MX0dQTGAgdXBkYXRlcy4gQW5kIG9mIGNvdXJzZSwgdGhlIGhlYWRlciBmaWxlIChgaW5jbHVkZS9saW51eC9wd3JzZXEvY29uc3VtZXIuaGApIHJlZmxlY3RzIHRoZSBzYW1lIGNoYW5nZSBpbiBkZWNsYXJhdGlvbnMgYW5kIGR1bW15IGZ1bmN0aW9ucy5cblxuU28sIGZ1bmN0aW9uYWxseSwgaXQgbG9va3MgbGlrZSBhIGNsZWFuIG5vLW9wLCByaWdodD8gSnVzdCByZW5hbWluZyBmdW5jdGlvbnMuIE5vIGFsdGVyYXRpb24gdG8gZXhlY3V0aW9uIGZsb3cuIFdhaXQgYSBtaW51dGUsIGRvZXMgdGhpcyBuZWVkIGZ1enppbmc/IEkgcmVjYWxsIHRoZSBndWlkZWxpbmVzLi4uIHNvbWV0aGluZyBhYm91dCBcIldvcnRoRnV6emluZz1mYWxzZVwiIGlmIGl0J3MgZG9jdW1lbnRhdGlvbiwgY29tbWVudHMsIGRlY29yYXRpdmUgY2hhbmdlcywgb3Igbm9uLWZ1bmN0aW9uYWwgbnVtZXJpYyBjaGFuZ2VzLi4uIFwiUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlc1wiIHRoYXQgZG9uJ3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LiBSZW5hbWluZyBmdW5jdGlvbnMgZG9lc24ndCBjaGFuZ2UgZXhlY3V0aW9uIGZsb3csIHNvIEkgYW0gbGVhbmluZyB0b3dhcmQgbm8uXG5cbkxldCdzIGRvIGEgbW9yZSB0aG9yb3VnaCBjaGVjayBhbmQgbWFrZSBzdXJlIHRoZXJlIGFyZSB0cnVseSBubyBvdGhlciBoaWRkZW4gY2hhbmdlcy4gU2Nyb2xsaW5nIHRocm91Z2ggdGhlIGNvcmUgZGVmaW5pdGlvbnMgYWdhaW4gY29uZmlybXMgdGhlIGNsZWFuIHJlbmFtaW5nOlxuYGBgY1xuLWludCBwd3JzZXFfcG93ZXJfb24oc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxuK2ludCBwd3JzZXFfZW5hYmxlKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcbmBgYFxuYGBgY1xuLWludCBwd3JzZXFfcG93ZXJfb2ZmKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcbitpbnQgcHdyc2VxX2Rpc2FibGUoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxuYGBgXG5BbmQgaW4gYGhjaV9xY2EuY2A6XG5gYGBjXG4tXHRcdHB3cnNlcV9wb3dlcl9vZmYocG93ZXItXHUwMDNlcHdyc2VxKTtcbitcdFx0cHdyc2VxX2Rpc2FibGUocG93ZXItXHUwMDNlcHdyc2VxKTtcbmBgYFxuYGBgY1xuLVx0XHRyZXR1cm4gcHdyc2VxX3Bvd2VyX29uKHBvd2VyLVx1MDAzZXB3cnNlcSk7XG4rXHRcdHJldHVybiBwd3JzZXFfZW5hYmxlKHBvd2VyLVx1MDAzZXB3cnNlcSk7XG5gYGBcblllcCwgbm8gb3RoZXIgY2hhbmdlcy4gTm8gbG9naWMgdHdlYWtzLCBubyBuZXcgcGFyYW1ldGVycywgbm8gZGF0YSBzdHJ1Y3R1cmUgbW9kaWZpY2F0aW9ucy4gVGhpcyBpcyBhIHB1cmVseSBub24tZnVuY3Rpb25hbCByZWZhY3RvcmluZy5cblxuVGhlcmVmb3JlLCBteSBjb25jbHVzaW9uIGlzIHRoYXQgdGhpcyBwYXRjaCBkb2Vzbid0IHdhcnJhbnQgZnV6emluZy4gSSdsbCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgYW5kIGp1c3RpZnkgaXQgd2l0aCBhIGNsZWFyIHJlYXNvbjogXCJUaGUgcGF0Y2ggb25seSByZW5hbWVzIGBwd3JzZXFfcG93ZXJfb24vb2ZmYCB0byBgcHdyc2VxX2VuYWJsZS9kaXNhYmxlYCBhY3Jvc3MgdGhlIHBvd2VyIHNlcXVlbmNpbmcgc3Vic3lzdGVtIGFuZCBpdHMgY29uc3VtZXJzLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBleGVjdXRpb24gZmxvdy5cIiBEb25lLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzQxLCJPdXRwdXRUb2tlbnMiOjcyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjY2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjA6MDQ6NTIuODgyNDQyMDVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgcmVuYW1lcyBwd3JzZXFfcG93ZXJfb24vb2ZmIHRvIHB3cnNlcV9lbmFibGUvZGlzYWJsZSBhY3Jvc3MgdGhlIHBvd2VyIHNlcXVlbmNpbmcgc3Vic3lzdGVtIGFuZCBpdHMgY29uc3VtZXJzLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBleGVjdXRpb24gZmxvdy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgcmVuYW1lcyBwd3JzZXFfcG93ZXJfb24vb2ZmIHRvIHB3cnNlcV9lbmFibGUvZGlzYWJsZSBhY3Jvc3MgdGhlIHBvd2VyIHNlcXVlbmNpbmcgc3Vic3lzdGVtIGFuZCBpdHMgY29uc3VtZXJzLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBleGVjdXRpb24gZmxvdy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowqvd8s[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-01 19:46:43 +0000 UTC FinishedAt: 2026-08-01 20:04:54 +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+CgkJCTx0ZD4yMDI2LzA4LzAxIDIwOjA0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgcmVuYW1lcyBwd3JzZXFfcG93ZXJfb24vb2ZmIHRvIHB3cnNlcV9lbmFibGUvZGlzYWJsZSBhY3Jvc3MgdGhlIHBvd2VyIHNlcXVlbmNpbmcgc3Vic3lzdGVtIGFuZCBpdHMgY29uc3VtZXJzLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBleGVjdXRpb24gZmxvdy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMjA6MDQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyNGIyYjA4MGYzMTAyYjQ2Y2IyYmFmMzc5YTc3N2VkYzFiY2IzMTYxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMSAyMDowNDo0MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvcHdyc2VxLnJzdCBiL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9wd3JzZXEucnN0XG5pbmRleCBhZDE4YjIzMjZiNjg5Li5lMTA1NmQxNDE4NDUxIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3B3cnNlcS5yc3RcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9wd3JzZXEucnN0XG5AQCAtNTAsOSAmIzQzOzUwLDkgQEAgQ29uc3VtZXIgaW50ZXJmYWNlXG4gVGhlIGNvbnN1bWVyIEFQSSBpcyBhaW1lZCB0byBiZSBhcyBzaW1wbGUgYXMgcG9zc2libGUuIFRoZSBkcml2ZXIgaW50ZXJlc3RlZCBpblxuIGdldHRpbmcgYSBkZXNjcmlwdG9yIGZyb20gdGhlIHBvd2VyIHNlcXVlbmNlciBzaG91bGQgY2FsbCBwd3JzZXFfZ2V0KCkgYW5kXG4gc3BlY2lmeSB0aGUgbmFtZSBvZiB0aGUgdGFyZ2V0IGl0IHdhbnRzIHRvIHJlYWNoIGluIHRoZSBzZXF1ZW5jZSBhZnRlciBjYWxsaW5nXG4tcHdyc2VxX3Bvd2VyX3VwKCkuIFRoZSBkZXNjcmlwdG9yIGNhbiBiZSByZWxlYXNlZCBieSBjYWxsaW5nIHB3cnNlcV9wdXQoKSBhbmRcbiYjNDM7cHdyc2VxX2VuYWJsZSgpLiBUaGUgZGVzY3JpcHRvciBjYW4gYmUgcmVsZWFzZWQgYnkgY2FsbGluZyBwd3JzZXFfcHV0KCkgYW5kXG4gdGhlIGNvbnN1bWVyIGNhbiByZXF1ZXN0IHRoZSBwb3dlcmluZyBkb3duIG9mIGl0cyB0YXJnZXQgd2l0aFxuLXB3cnNlcV9wb3dlcl9vZmYoKS4gTm90ZSB0aGF0IHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHB3cnNlcV9wb3dlcl9vZmYoKVxuJiM0Mztwd3JzZXFfZGlzYWJsZSgpLiBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgcHdyc2VxX2Rpc2FibGUoKVxuIHdpbGwgaGF2ZSBhbnkgZWZmZWN0IGFzIHRoZXJlIG1heSBiZSBtdWx0aXBsZSB1c2VycyBvZiB0aGUgdW5kZXJseWluZyByZXNvdXJjZXNcbiB3aG8gbWF5IGtlZXAgdGhlbSBhY3RpdmUuXG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jIGIvZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jXG5pbmRleCAzNDVmNjAyZTljZTIzLi5mYWE5NjQ3MzVhZGIxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2JsdWV0b290aC9oY2lfcWNhLmNcbkBAIC0yMjU5LDcgJiM0MzsyMjU5LDcgQEAgc3RhdGljIHZvaWQgcWNhX3Bvd2VyX29mZihzdHJ1Y3QgaGNpX3VhcnQgKmh1KVxuIFx0fVxuIFxuIFx0aWYgKHBvd2VyIFx1MDAyNlx1MDAyNiBwb3dlci1cdTAwM2Vwd3JzZXEpIHtcbi1cdFx0cHdyc2VxX3Bvd2VyX29mZihwb3dlci1cdTAwM2Vwd3JzZXEpO1xuJiM0MztcdFx0cHdyc2VxX2Rpc2FibGUocG93ZXItXHUwMDNlcHdyc2VxKTtcbiBcdFx0c2V0X2JpdChRQ0FfQlRfT0ZGLCBcdTAwMjZxY2EtXHUwMDNlZmxhZ3MpO1xuIFx0XHRyZXR1cm47XG4gICAgICAgICB9XG5AQCAtMjMxOSw3ICYjNDM7MjMxOSw3IEBAIHN0YXRpYyBpbnQgcWNhX3JlZ3VsYXRvcl9lbmFibGUoc3RydWN0IHFjYV9zZXJkZXYgKnFjYWRldilcbiBcdGludCByZXQ7XG4gXG4gXHRpZiAocG93ZXItXHUwMDNlcHdyc2VxKVxuLVx0XHRyZXR1cm4gcHdyc2VxX3Bvd2VyX29uKHBvd2VyLVx1MDAzZXB3cnNlcSk7XG4mIzQzO1x0XHRyZXR1cm4gcHdyc2VxX2VuYWJsZShwb3dlci1cdTAwM2Vwd3JzZXEpO1xuIFxuIFx0LyogQWxyZWFkeSBlbmFibGVkICovXG4gXHRpZiAocG93ZXItXHUwMDNldnJlZ3Nfb24pXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL3B2cl9wb3dlci5jIGIvZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL3B2cl9wb3dlci5jXG5pbmRleCBhNzFkNWIzNTYwMWU3Li5lYjRiNmVjZGY0ZjRkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL3B2cl9wb3dlci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vcHZyX3Bvd2VyLmNcbkBAIC0zNTIsMTIgJiM0MzszNTIsMTIgQEAgc3RhdGljIGludCBwdnJfcG93ZXJfaW5pdF9wd3JzZXEoc3RydWN0IHB2cl9kZXZpY2UgKnB2cl9kZXYpXG4gXG4gc3RhdGljIGludCBwdnJfcG93ZXJfb25fc2VxdWVuY2VfcHdyc2VxKHN0cnVjdCBwdnJfZGV2aWNlICpwdnJfZGV2KVxuIHtcbi1cdHJldHVybiBwd3JzZXFfcG93ZXJfb24ocHZyX2Rldi1cdTAwM2Vwd3JzZXEpO1xuJiM0MztcdHJldHVybiBwd3JzZXFfZW5hYmxlKHB2cl9kZXYtXHUwMDNlcHdyc2VxKTtcbiB9XG4gXG4gc3RhdGljIGludCBwdnJfcG93ZXJfb2ZmX3NlcXVlbmNlX3B3cnNlcShzdHJ1Y3QgcHZyX2RldmljZSAqcHZyX2RldilcbiB7XG4tXHRyZXR1cm4gcHdyc2VxX3Bvd2VyX29mZihwdnJfZGV2LVx1MDAzZXB3cnNlcSk7XG4mIzQzO1x0cmV0dXJuIHB3cnNlcV9kaXNhYmxlKHB2cl9kZXYtXHUwMDNlcHdyc2VxKTtcbiB9XG4gXG4gY29uc3Qgc3RydWN0IHB2cl9wb3dlcl9zZXF1ZW5jZV9vcHMgcHZyX3Bvd2VyX3NlcXVlbmNlX29wc19wd3JzZXEgPSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuY1xuaW5kZXggMzEwNjUwMjI3NTc4MS4uZjI4ZmVkODljYzI4YiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuY1xuQEAgLTEwMjUsNyAmIzQzOzEwMjUsNyBAQCBzdGF0aWMgaW50IGF0aDEwa19od19wb3dlcl9vbihzdHJ1Y3QgYXRoMTBrICphcilcbiBcbiBcdGF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfU05PQywgXCYjMzQ7c29jIHBvd2VyIG9uXFxuXCYjMzQ7KTtcbiBcbi1cdHJldCA9IHB3cnNlcV9wb3dlcl9vbihhcl9zbm9jLVx1MDAzZXB3cnNlcSk7XG4mIzQzO1x0cmV0ID0gcHdyc2VxX2VuYWJsZShhcl9zbm9jLVx1MDAzZXB3cnNlcSk7XG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuQEAgLTEwNDIsNyAmIzQzOzEwNDIsNyBAQCBzdGF0aWMgaW50IGF0aDEwa19od19wb3dlcl9vbihzdHJ1Y3QgYXRoMTBrICphcilcbiB2cmVnX29mZjpcbiBcdHJlZ3VsYXRvcl9idWxrX2Rpc2FibGUoYXJfc25vYy1cdTAwM2VudW1fdnJlZ3MsIGFyX3Nub2MtXHUwMDNldnJlZ3MpO1xuIHB3cnNlcV9vZmY6XG4tXHRwd3JzZXFfcG93ZXJfb2ZmKGFyX3Nub2MtXHUwMDNlcHdyc2VxKTtcbiYjNDM7XHRwd3JzZXFfZGlzYWJsZShhcl9zbm9jLVx1MDAzZXB3cnNlcSk7XG4gXG4gXHRyZXR1cm4gcmV0O1xuIH1cbkBAIC0xMDYwLDcgJiM0MzsxMDYwLDcgQEAgc3RhdGljIGludCBhdGgxMGtfaHdfcG93ZXJfb2ZmKHN0cnVjdCBhdGgxMGsgKmFyKVxuIFx0cmV0X3ZyZWcgPSByZWd1bGF0b3JfYnVsa19kaXNhYmxlKGFyX3Nub2MtXHUwMDNlbnVtX3ZyZWdzLCBhcl9zbm9jLVx1MDAzZXZyZWdzKTtcbiBcbiBcdGlmIChhcl9zbm9jLVx1MDAzZXB3cnNlcSlcbi1cdFx0cmV0X3NlcSA9IHB3cnNlcV9wb3dlcl9vZmYoYXJfc25vYy1cdTAwM2Vwd3JzZXEpO1xuJiM0MztcdFx0cmV0X3NlcSA9IHB3cnNlcV9kaXNhYmxlKGFyX3Nub2MtXHUwMDNlcHdyc2VxKTtcbiBcbiBcdHJldHVybiByZXRfdnJlZyA/IDogcmV0X3NlcTtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcHdyY3RybC9nZW5lcmljLmMgYi9kcml2ZXJzL3BjaS9wd3JjdHJsL2dlbmVyaWMuY1xuaW5kZXggYTdlNTk5ZDg0MWU2Mi4uZDU2MTcxZTBlZTI0NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvcGNpL3B3cmN0cmwvZ2VuZXJpYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3BjaS9wd3JjdHJsL2dlbmVyaWMuY1xuQEAgLTI5LDcgJiM0MzsyOSw3IEBAIHN0YXRpYyBpbnQgc2xvdF9wd3JjdHJsX3Bvd2VyX29uKHN0cnVjdCBwY2lfcHdyY3RybCAqcHdyY3RybClcbiBcdGludCByZXQ7XG4gXG4gXHRpZiAoc2xvdC1cdTAwM2Vwd3JzZXEpIHtcbi1cdFx0cHdyc2VxX3Bvd2VyX29uKHNsb3QtXHUwMDNlcHdyc2VxKTtcbiYjNDM7XHRcdHB3cnNlcV9lbmFibGUoc2xvdC1cdTAwM2Vwd3JzZXEpO1xuIFx0XHRyZXR1cm4gMDtcbiBcdH1cbiBcbkBAIC00OCw3ICYjNDM7NDgsNyBAQCBzdGF0aWMgaW50IHNsb3RfcHdyY3RybF9wb3dlcl9vZmYoc3RydWN0IHBjaV9wd3JjdHJsICpwd3JjdHJsKVxuIFx0XHRcdFx0XHRcdHN0cnVjdCBzbG90X3B3cmN0cmwsIHB3cmN0cmwpO1xuIFxuIFx0aWYgKHNsb3QtXHUwMDNlcHdyc2VxKSB7XG4tXHRcdHB3cnNlcV9wb3dlcl9vZmYoc2xvdC1cdTAwM2Vwd3JzZXEpO1xuJiM0MztcdFx0cHdyc2VxX2Rpc2FibGUoc2xvdC1cdTAwM2Vwd3JzZXEpO1xuIFx0XHRyZXR1cm4gMDtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9wd3JjdHJsL3BjaS1wd3JjdHJsLXB3cnNlcS5jIGIvZHJpdmVycy9wY2kvcHdyY3RybC9wY2ktcHdyY3RybC1wd3JzZXEuY1xuaW5kZXggYTMwOGJmNGI1ZmMwMS4uYzVjZWQ4Nzk0NGI2YyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvcGNpL3B3cmN0cmwvcGNpLXB3cmN0cmwtcHdyc2VxLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvcGNpL3B3cmN0cmwvcGNpLXB3cmN0cmwtcHdyc2VxLmNcbkBAIC01Niw3ICYjNDM7NTYsNyBAQCBzdGF0aWMgaW50IHB3cnNlcV9wd3JjdHJsX3Bvd2VyX29uKHN0cnVjdCBwY2lfcHdyY3RybCAqcHdyY3RybClcbiBcdHN0cnVjdCBwd3JzZXFfcHdyY3RybCAqcHdyc2VxID0gY29udGFpbmVyX29mKHB3cmN0cmwsXG4gXHRcdFx0XHRcdCAgIHN0cnVjdCBwd3JzZXFfcHdyY3RybCwgcHdyY3RybCk7XG4gXG4tXHRyZXR1cm4gcHdyc2VxX3Bvd2VyX29uKHB3cnNlcS1cdTAwM2Vwd3JzZXEpO1xuJiM0MztcdHJldHVybiBwd3JzZXFfZW5hYmxlKHB3cnNlcS1cdTAwM2Vwd3JzZXEpO1xuIH1cbiBcbiBzdGF0aWMgaW50IHB3cnNlcV9wd3JjdHJsX3Bvd2VyX29mZihzdHJ1Y3QgcGNpX3B3cmN0cmwgKnB3cmN0cmwpXG5AQCAtNjQsNyAmIzQzOzY0LDcgQEAgc3RhdGljIGludCBwd3JzZXFfcHdyY3RybF9wb3dlcl9vZmYoc3RydWN0IHBjaV9wd3JjdHJsICpwd3JjdHJsKVxuIFx0c3RydWN0IHB3cnNlcV9wd3JjdHJsICpwd3JzZXEgPSBjb250YWluZXJfb2YocHdyY3RybCxcbiBcdFx0XHRcdFx0ICAgc3RydWN0IHB3cnNlcV9wd3JjdHJsLCBwd3JjdHJsKTtcbiBcbi1cdHJldHVybiBwd3JzZXFfcG93ZXJfb2ZmKHB3cnNlcS1cdTAwM2Vwd3JzZXEpO1xuJiM0MztcdHJldHVybiBwd3JzZXFfZGlzYWJsZShwd3JzZXEtXHUwMDNlcHdyc2VxKTtcbiB9XG4gXG4gc3RhdGljIGludCBwd3JzZXFfcHdyY3RybF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcG93ZXIvc2VxdWVuY2luZy9jb3JlLmMgYi9kcml2ZXJzL3Bvd2VyL3NlcXVlbmNpbmcvY29yZS5jXG5pbmRleCAwMmY0MmRhOTE1OTg1Li43MjFlODg4YjY1OGQxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9wb3dlci9zZXF1ZW5jaW5nL2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9wb3dlci9zZXF1ZW5jaW5nL2NvcmUuY1xuQEAgLTcwOCw3ICYjNDM7NzA4LDcgQEAgdm9pZCBwd3JzZXFfcHV0KHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcbiBcdHB3cnNlcSA9IGRlc2MtXHUwMDNlcHdyc2VxO1xuIFxuIFx0aWYgKGRlc2MtXHUwMDNlcG93ZXJlZF9vbilcbi1cdFx0cHdyc2VxX3Bvd2VyX29mZihkZXNjKTtcbiYjNDM7XHRcdHB3cnNlcV9kaXNhYmxlKGRlc2MpO1xuIFxuIFx0a2ZyZWUoZGVzYyk7XG4gXHRtb2R1bGVfcHV0KHB3cnNlcS1cdTAwM2Vvd25lcik7XG5AQCAtODc0LDcgJiM0Mzs4NzQsNyBAQCBzdGF0aWMgaW50IHB3cnNlcV91bml0X2Rpc2FibGUoc3RydWN0IHB3cnNlcV9kZXZpY2UgKnB3cnNlcSxcbiB9XG4gXG4gLyoqXG4tICogcHdyc2VxX3Bvd2VyX29uKCkgLSBJc3N1ZSBhIHBvd2VyLW9uIHJlcXVlc3Qgb24gYmVoYWxmIG9mIHRoZSBjb25zdW1lclxuJiM0MzsgKiBwd3JzZXFfZW5hYmxlKCkgLSBJc3N1ZSBhIHBvd2VyLW9uIHJlcXVlc3Qgb24gYmVoYWxmIG9mIHRoZSBjb25zdW1lclxuICAqICAgICAgICAgICAgICAgICAgICAgZGV2aWNlLlxuICAqIEBkZXNjOiBEZXNjcmlwdG9yIHJlZmVyZW5jaW5nIHRoZSBwb3dlciBzZXF1ZW5jZXIuXG4gICpcbkBAIC04ODcsNyAmIzQzOzg4Nyw3IEBAIHN0YXRpYyBpbnQgcHdyc2VxX3VuaXRfZGlzYWJsZShzdHJ1Y3QgcHdyc2VxX2RldmljZSAqcHdyc2VxLFxuICAqIFJldHVybnM6XG4gICogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBudW1iZXIgb24gZmFpbHVyZS5cbiAgKi9cbi1pbnQgcHdyc2VxX3Bvd2VyX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcbiYjNDM7aW50IHB3cnNlcV9lbmFibGUoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxuIHtcbiBcdHN0cnVjdCBwd3JzZXFfZGV2aWNlICpwd3JzZXE7XG4gXHRzdHJ1Y3QgcHdyc2VxX3RhcmdldCAqdGFyZ2V0O1xuQEAgLTkyNSwxNCAmIzQzOzkyNSwxNCBAQCBpbnQgcHdyc2VxX3Bvd2VyX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcbiBcbiBcdHJldHVybiByZXQ7XG4gfVxuLUVYUE9SVF9TWU1CT0xfR1BMKHB3cnNlcV9wb3dlcl9vbik7XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHB3cnNlcV9lbmFibGUpO1xuIFxuIC8qKlxuLSAqIHB3cnNlcV9wb3dlcl9vZmYoKSAtIElzc3VlIGEgcG93ZXItb2ZmIHJlcXVlc3Qgb24gYmVoYWxmIG9mIHRoZSBjb25zdW1lclxuJiM0MzsgKiBwd3JzZXFfZGlzYWJsZSgpIC0gSXNzdWUgYSBwb3dlci1vZmYgcmVxdWVzdCBvbiBiZWhhbGYgb2YgdGhlIGNvbnN1bWVyXG4gICogICAgICAgICAgICAgICAgICAgICAgZGV2aWNlLlxuICAqIEBkZXNjOiBEZXNjcmlwdG9yIHJlZmVyZW5jaW5nIHRoZSBwb3dlciBzZXF1ZW5jZXIuXG4gICpcbi0gKiBUaGlzIHVuZG9lcyB0aGUgZWZmZWN0cyBvZiBwd3JzZXFfcG93ZXJfb24oKS4gSXQgaXNzdWVzIGEgcG93ZXItb2ZmIHJlcXVlc3RcbiYjNDM7ICogVGhpcyB1bmRvZXMgdGhlIGVmZmVjdHMgb2YgcHdyc2VxX2VuYWJsZSgpLiBJdCBpc3N1ZXMgYSBwb3dlci1vZmYgcmVxdWVzdFxuICAqIG9uIGJlaGFsZiBvZiB0aGUgY29uc3VtZXIgYW5kIHdoZW4gdGhlIGxhc3QgcmVtYWluaW5nIHVzZXIgZG9lcyBzbywgdGhlXG4gICogcG93ZXItZG93biBzZXF1ZW5jZSB3aWxsIGJlIHN0YXJ0ZWQuIElmIG9uZSBpcyBpbiBwcm9ncmVzcywgdGhlIGZ1bmN0aW9uXG4gICogd2lsbCBibG9jayB1bnRpbCBpdCYjMzk7cyBjb21wbGV0ZSBhbmQgdGhlbiByZXR1cm4uXG5AQCAtOTQwLDcgJiM0Mzs5NDAsNyBAQCBFWFBPUlRfU1lNQk9MX0dQTChwd3JzZXFfcG93ZXJfb24pO1xuICAqIFJldHVybnM6XG4gICogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBudW1iZXIgb24gZmFpbHVyZS5cbiAgKi9cbi1pbnQgcHdyc2VxX3Bvd2VyX29mZihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXG4mIzQzO2ludCBwd3JzZXFfZGlzYWJsZShzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXG4ge1xuIFx0c3RydWN0IHB3cnNlcV9kZXZpY2UgKnB3cnNlcTtcbiBcdHN0cnVjdCBwd3JzZXFfdW5pdCAqdW5pdDtcbkBAIC05NjYsNyAmIzQzOzk2Niw3IEBAIGludCBwd3JzZXFfcG93ZXJfb2ZmKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcbiBcbiBcdHJldHVybiByZXQ7XG4gfVxuLUVYUE9SVF9TWU1CT0xfR1BMKHB3cnNlcV9wb3dlcl9vZmYpO1xuJiM0MztFWFBPUlRfU1lNQk9MX0dQTChwd3JzZXFfZGlzYWJsZSk7XG4gXG4gLyoqXG4gICogcHdyc2VxX3RvX2RldmljZSgpIC0gR2V0IHRoZSBwd3JzZXEgZGV2aWNlIHBvaW50ZXIgZnJvbSBhIGRlc2NyaXB0b3IuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wd3JzZXEvY29uc3VtZXIuaCBiL2luY2x1ZGUvbGludXgvcHdyc2VxL2NvbnN1bWVyLmhcbmluZGV4IDNjOTA3YzllMTg4NWQuLjE2ZmFkNWYzZTNhYjUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3B3cnNlcS9jb25zdW1lci5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3B3cnNlcS9jb25zdW1lci5oXG5AQCAtMjAsOCAmIzQzOzIwLDggQEAgdm9pZCBwd3JzZXFfcHV0KHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYyk7XG4gc3RydWN0IHB3cnNlcV9kZXNjICogX19tdXN0X2NoZWNrXG4gZGV2bV9wd3JzZXFfZ2V0KHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqdGFyZ2V0KTtcbiBcbi1pbnQgcHdyc2VxX3Bvd2VyX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYyk7XG4taW50IHB3cnNlcV9wb3dlcl9vZmYoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTtcbiYjNDM7aW50IHB3cnNlcV9lbmFibGUoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTtcbiYjNDM7aW50IHB3cnNlcV9kaXNhYmxlKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYyk7XG4gXG4gc3RydWN0IGRldmljZSAqcHdyc2VxX3RvX2RldmljZShzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpO1xuIFxuQEAgLTQzLDEyICYjNDM7NDMsMTIgQEAgZGV2bV9wd3JzZXFfZ2V0KHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqdGFyZ2V0KVxuIFx0cmV0dXJuIEVSUl9QVFIoLUVOT1NZUyk7XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgaW50IHB3cnNlcV9wb3dlcl9vbihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXG4mIzQzO3N0YXRpYyBpbmxpbmUgaW50IHB3cnNlcV9lbmFibGUoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxuIHtcbiBcdHJldHVybiAtRU5PU1lTO1xuIH1cbiBcbi1zdGF0aWMgaW5saW5lIGludCBwd3JzZXFfcG93ZXJfb2ZmKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcbiYjNDM7c3RhdGljIGlubGluZSBpbnQgcHdyc2VxX2Rpc2FibGUoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxuIHtcbiBcdHJldHVybiAtRU5PU1lTO1xuIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMDowNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSByZW5hbWVzIHB3cnNlcV9wb3dlcl9vbi9vZmYgdG8gcHdyc2VxX2VuYWJsZS9kaXNhYmxlIGFjcm9zcyB0aGUgcG93ZXIgc2VxdWVuY2luZyBzdWJzeXN0ZW0gYW5kIGl0cyBjb25zdW1lcnMuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDI0YjJiMDgwZjMxMDJiNDZjYjJiYWYzNzlhNzc3ZWRjMWJjYjMxNjEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAxIDIwOjA0OjQxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3B3cnNlcS5yc3QgYi9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvcHdyc2VxLnJzdAppbmRleCBhZDE4YjIzMjZiNjg5Li5lMTA1NmQxNDE4NDUxIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvcHdyc2VxLnJzdAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvcHdyc2VxLnJzdApAQCAtNTAsOSAmIzQzOzUwLDkgQEAgQ29uc3VtZXIgaW50ZXJmYWNlCiBUaGUgY29uc3VtZXIgQVBJIGlzIGFpbWVkIHRvIGJlIGFzIHNpbXBsZSBhcyBwb3NzaWJsZS4gVGhlIGRyaXZlciBpbnRlcmVzdGVkIGluCiBnZXR0aW5nIGEgZGVzY3JpcHRvciBmcm9tIHRoZSBwb3dlciBzZXF1ZW5jZXIgc2hvdWxkIGNhbGwgcHdyc2VxX2dldCgpIGFuZAogc3BlY2lmeSB0aGUgbmFtZSBvZiB0aGUgdGFyZ2V0IGl0IHdhbnRzIHRvIHJlYWNoIGluIHRoZSBzZXF1ZW5jZSBhZnRlciBjYWxsaW5nCi1wd3JzZXFfcG93ZXJfdXAoKS4gVGhlIGRlc2NyaXB0b3IgY2FuIGJlIHJlbGVhc2VkIGJ5IGNhbGxpbmcgcHdyc2VxX3B1dCgpIGFuZAomIzQzO3B3cnNlcV9lbmFibGUoKS4gVGhlIGRlc2NyaXB0b3IgY2FuIGJlIHJlbGVhc2VkIGJ5IGNhbGxpbmcgcHdyc2VxX3B1dCgpIGFuZAogdGhlIGNvbnN1bWVyIGNhbiByZXF1ZXN0IHRoZSBwb3dlcmluZyBkb3duIG9mIGl0cyB0YXJnZXQgd2l0aAotcHdyc2VxX3Bvd2VyX29mZigpLiBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgcHdyc2VxX3Bvd2VyX29mZigpCiYjNDM7cHdyc2VxX2Rpc2FibGUoKS4gTm90ZSB0aGF0IHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHB3cnNlcV9kaXNhYmxlKCkKIHdpbGwgaGF2ZSBhbnkgZWZmZWN0IGFzIHRoZXJlIG1heSBiZSBtdWx0aXBsZSB1c2VycyBvZiB0aGUgdW5kZXJseWluZyByZXNvdXJjZXMKIHdobyBtYXkga2VlcCB0aGVtIGFjdGl2ZS4KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jIGIvZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jCmluZGV4IDM0NWY2MDJlOWNlMjMuLmZhYTk2NDczNWFkYjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmx1ZXRvb3RoL2hjaV9xY2EuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2JsdWV0b290aC9oY2lfcWNhLmMKQEAgLTIyNTksNyAmIzQzOzIyNTksNyBAQCBzdGF0aWMgdm9pZCBxY2FfcG93ZXJfb2ZmKHN0cnVjdCBoY2lfdWFydCAqaHUpCiAJfQogCiAJaWYgKHBvd2VyICZhbXA7JmFtcDsgcG93ZXItJmd0O3B3cnNlcSkgewotCQlwd3JzZXFfcG93ZXJfb2ZmKHBvd2VyLSZndDtwd3JzZXEpOwomIzQzOwkJcHdyc2VxX2Rpc2FibGUocG93ZXItJmd0O3B3cnNlcSk7CiAJCXNldF9iaXQoUUNBX0JUX09GRiwgJmFtcDtxY2EtJmd0O2ZsYWdzKTsKIAkJcmV0dXJuOwogICAgICAgICB9CkBAIC0yMzE5LDcgJiM0MzsyMzE5LDcgQEAgc3RhdGljIGludCBxY2FfcmVndWxhdG9yX2VuYWJsZShzdHJ1Y3QgcWNhX3NlcmRldiAqcWNhZGV2KQogCWludCByZXQ7CiAKIAlpZiAocG93ZXItJmd0O3B3cnNlcSkKLQkJcmV0dXJuIHB3cnNlcV9wb3dlcl9vbihwb3dlci0mZ3Q7cHdyc2VxKTsKJiM0MzsJCXJldHVybiBwd3JzZXFfZW5hYmxlKHBvd2VyLSZndDtwd3JzZXEpOwogCiAJLyogQWxyZWFkeSBlbmFibGVkICovCiAJaWYgKHBvd2VyLSZndDt2cmVnc19vbikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pbWFnaW5hdGlvbi9wdnJfcG93ZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pbWFnaW5hdGlvbi9wdnJfcG93ZXIuYwppbmRleCBhNzFkNWIzNTYwMWU3Li5lYjRiNmVjZGY0ZjRkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vcHZyX3Bvd2VyLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL3B2cl9wb3dlci5jCkBAIC0zNTIsMTIgJiM0MzszNTIsMTIgQEAgc3RhdGljIGludCBwdnJfcG93ZXJfaW5pdF9wd3JzZXEoc3RydWN0IHB2cl9kZXZpY2UgKnB2cl9kZXYpCiAKIHN0YXRpYyBpbnQgcHZyX3Bvd2VyX29uX3NlcXVlbmNlX3B3cnNlcShzdHJ1Y3QgcHZyX2RldmljZSAqcHZyX2RldikKIHsKLQlyZXR1cm4gcHdyc2VxX3Bvd2VyX29uKHB2cl9kZXYtJmd0O3B3cnNlcSk7CiYjNDM7CXJldHVybiBwd3JzZXFfZW5hYmxlKHB2cl9kZXYtJmd0O3B3cnNlcSk7CiB9CiAKIHN0YXRpYyBpbnQgcHZyX3Bvd2VyX29mZl9zZXF1ZW5jZV9wd3JzZXEoc3RydWN0IHB2cl9kZXZpY2UgKnB2cl9kZXYpCiB7Ci0JcmV0dXJuIHB3cnNlcV9wb3dlcl9vZmYocHZyX2Rldi0mZ3Q7cHdyc2VxKTsKJiM0MzsJcmV0dXJuIHB3cnNlcV9kaXNhYmxlKHB2cl9kZXYtJmd0O3B3cnNlcSk7CiB9CiAKIGNvbnN0IHN0cnVjdCBwdnJfcG93ZXJfc2VxdWVuY2Vfb3BzIHB2cl9wb3dlcl9zZXF1ZW5jZV9vcHNfcHdyc2VxID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYwppbmRleCAzMTA2NTAyMjc1NzgxLi5mMjhmZWQ4OWNjMjhiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYwpAQCAtMTAyNSw3ICYjNDM7MTAyNSw3IEBAIHN0YXRpYyBpbnQgYXRoMTBrX2h3X3Bvd2VyX29uKHN0cnVjdCBhdGgxMGsgKmFyKQogCiAJYXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19TTk9DLCAmIzM0O3NvYyBwb3dlciBvblxuJiMzNDspOwogCi0JcmV0ID0gcHdyc2VxX3Bvd2VyX29uKGFyX3Nub2MtJmd0O3B3cnNlcSk7CiYjNDM7CXJldCA9IHB3cnNlcV9lbmFibGUoYXJfc25vYy0mZ3Q7cHdyc2VxKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCkBAIC0xMDQyLDcgJiM0MzsxMDQyLDcgQEAgc3RhdGljIGludCBhdGgxMGtfaHdfcG93ZXJfb24oc3RydWN0IGF0aDEwayAqYXIpCiB2cmVnX29mZjoKIAlyZWd1bGF0b3JfYnVsa19kaXNhYmxlKGFyX3Nub2MtJmd0O251bV92cmVncywgYXJfc25vYy0mZ3Q7dnJlZ3MpOwogcHdyc2VxX29mZjoKLQlwd3JzZXFfcG93ZXJfb2ZmKGFyX3Nub2MtJmd0O3B3cnNlcSk7CiYjNDM7CXB3cnNlcV9kaXNhYmxlKGFyX3Nub2MtJmd0O3B3cnNlcSk7CiAKIAlyZXR1cm4gcmV0OwogfQpAQCAtMTA2MCw3ICYjNDM7MTA2MCw3IEBAIHN0YXRpYyBpbnQgYXRoMTBrX2h3X3Bvd2VyX29mZihzdHJ1Y3QgYXRoMTBrICphcikKIAlyZXRfdnJlZyA9IHJlZ3VsYXRvcl9idWxrX2Rpc2FibGUoYXJfc25vYy0mZ3Q7bnVtX3ZyZWdzLCBhcl9zbm9jLSZndDt2cmVncyk7CiAKIAlpZiAoYXJfc25vYy0mZ3Q7cHdyc2VxKQotCQlyZXRfc2VxID0gcHdyc2VxX3Bvd2VyX29mZihhcl9zbm9jLSZndDtwd3JzZXEpOwomIzQzOwkJcmV0X3NlcSA9IHB3cnNlcV9kaXNhYmxlKGFyX3Nub2MtJmd0O3B3cnNlcSk7CiAKIAlyZXR1cm4gcmV0X3ZyZWcgPyA6IHJldF9zZXE7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9wd3JjdHJsL2dlbmVyaWMuYyBiL2RyaXZlcnMvcGNpL3B3cmN0cmwvZ2VuZXJpYy5jCmluZGV4IGE3ZTU5OWQ4NDFlNjIuLmQ1NjE3MWUwZWUyNDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL3B3cmN0cmwvZ2VuZXJpYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvcGNpL3B3cmN0cmwvZ2VuZXJpYy5jCkBAIC0yOSw3ICYjNDM7MjksNyBAQCBzdGF0aWMgaW50IHNsb3RfcHdyY3RybF9wb3dlcl9vbihzdHJ1Y3QgcGNpX3B3cmN0cmwgKnB3cmN0cmwpCiAJaW50IHJldDsKIAogCWlmIChzbG90LSZndDtwd3JzZXEpIHsKLQkJcHdyc2VxX3Bvd2VyX29uKHNsb3QtJmd0O3B3cnNlcSk7CiYjNDM7CQlwd3JzZXFfZW5hYmxlKHNsb3QtJmd0O3B3cnNlcSk7CiAJCXJldHVybiAwOwogCX0KIApAQCAtNDgsNyAmIzQzOzQ4LDcgQEAgc3RhdGljIGludCBzbG90X3B3cmN0cmxfcG93ZXJfb2ZmKHN0cnVjdCBwY2lfcHdyY3RybCAqcHdyY3RybCkKIAkJCQkJCXN0cnVjdCBzbG90X3B3cmN0cmwsIHB3cmN0cmwpOwogCiAJaWYgKHNsb3QtJmd0O3B3cnNlcSkgewotCQlwd3JzZXFfcG93ZXJfb2ZmKHNsb3QtJmd0O3B3cnNlcSk7CiYjNDM7CQlwd3JzZXFfZGlzYWJsZShzbG90LSZndDtwd3JzZXEpOwogCQlyZXR1cm4gMDsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL3B3cmN0cmwvcGNpLXB3cmN0cmwtcHdyc2VxLmMgYi9kcml2ZXJzL3BjaS9wd3JjdHJsL3BjaS1wd3JjdHJsLXB3cnNlcS5jCmluZGV4IGEzMDhiZjRiNWZjMDEuLmM1Y2VkODc5NDRiNmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL3B3cmN0cmwvcGNpLXB3cmN0cmwtcHdyc2VxLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9wY2kvcHdyY3RybC9wY2ktcHdyY3RybC1wd3JzZXEuYwpAQCAtNTYsNyAmIzQzOzU2LDcgQEAgc3RhdGljIGludCBwd3JzZXFfcHdyY3RybF9wb3dlcl9vbihzdHJ1Y3QgcGNpX3B3cmN0cmwgKnB3cmN0cmwpCiAJc3RydWN0IHB3cnNlcV9wd3JjdHJsICpwd3JzZXEgPSBjb250YWluZXJfb2YocHdyY3RybCwKIAkJCQkJICAgc3RydWN0IHB3cnNlcV9wd3JjdHJsLCBwd3JjdHJsKTsKIAotCXJldHVybiBwd3JzZXFfcG93ZXJfb24ocHdyc2VxLSZndDtwd3JzZXEpOwomIzQzOwlyZXR1cm4gcHdyc2VxX2VuYWJsZShwd3JzZXEtJmd0O3B3cnNlcSk7CiB9CiAKIHN0YXRpYyBpbnQgcHdyc2VxX3B3cmN0cmxfcG93ZXJfb2ZmKHN0cnVjdCBwY2lfcHdyY3RybCAqcHdyY3RybCkKQEAgLTY0LDcgJiM0Mzs2NCw3IEBAIHN0YXRpYyBpbnQgcHdyc2VxX3B3cmN0cmxfcG93ZXJfb2ZmKHN0cnVjdCBwY2lfcHdyY3RybCAqcHdyY3RybCkKIAlzdHJ1Y3QgcHdyc2VxX3B3cmN0cmwgKnB3cnNlcSA9IGNvbnRhaW5lcl9vZihwd3JjdHJsLAogCQkJCQkgICBzdHJ1Y3QgcHdyc2VxX3B3cmN0cmwsIHB3cmN0cmwpOwogCi0JcmV0dXJuIHB3cnNlcV9wb3dlcl9vZmYocHdyc2VxLSZndDtwd3JzZXEpOwomIzQzOwlyZXR1cm4gcHdyc2VxX2Rpc2FibGUocHdyc2VxLSZndDtwd3JzZXEpOwogfQogCiBzdGF0aWMgaW50IHB3cnNlcV9wd3JjdHJsX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Bvd2VyL3NlcXVlbmNpbmcvY29yZS5jIGIvZHJpdmVycy9wb3dlci9zZXF1ZW5jaW5nL2NvcmUuYwppbmRleCAwMmY0MmRhOTE1OTg1Li43MjFlODg4YjY1OGQxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Bvd2VyL3NlcXVlbmNpbmcvY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvcG93ZXIvc2VxdWVuY2luZy9jb3JlLmMKQEAgLTcwOCw3ICYjNDM7NzA4LDcgQEAgdm9pZCBwd3JzZXFfcHV0KHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYykKIAlwd3JzZXEgPSBkZXNjLSZndDtwd3JzZXE7CiAKIAlpZiAoZGVzYy0mZ3Q7cG93ZXJlZF9vbikKLQkJcHdyc2VxX3Bvd2VyX29mZihkZXNjKTsKJiM0MzsJCXB3cnNlcV9kaXNhYmxlKGRlc2MpOwogCiAJa2ZyZWUoZGVzYyk7CiAJbW9kdWxlX3B1dChwd3JzZXEtJmd0O293bmVyKTsKQEAgLTg3NCw3ICYjNDM7ODc0LDcgQEAgc3RhdGljIGludCBwd3JzZXFfdW5pdF9kaXNhYmxlKHN0cnVjdCBwd3JzZXFfZGV2aWNlICpwd3JzZXEsCiB9CiAKIC8qKgotICogcHdyc2VxX3Bvd2VyX29uKCkgLSBJc3N1ZSBhIHBvd2VyLW9uIHJlcXVlc3Qgb24gYmVoYWxmIG9mIHRoZSBjb25zdW1lcgomIzQzOyAqIHB3cnNlcV9lbmFibGUoKSAtIElzc3VlIGEgcG93ZXItb24gcmVxdWVzdCBvbiBiZWhhbGYgb2YgdGhlIGNvbnN1bWVyCiAgKiAgICAgICAgICAgICAgICAgICAgIGRldmljZS4KICAqIEBkZXNjOiBEZXNjcmlwdG9yIHJlZmVyZW5jaW5nIHRoZSBwb3dlciBzZXF1ZW5jZXIuCiAgKgpAQCAtODg3LDcgJiM0Mzs4ODcsNyBAQCBzdGF0aWMgaW50IHB3cnNlcV91bml0X2Rpc2FibGUoc3RydWN0IHB3cnNlcV9kZXZpY2UgKnB3cnNlcSwKICAqIFJldHVybnM6CiAgKiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIG51bWJlciBvbiBmYWlsdXJlLgogICovCi1pbnQgcHdyc2VxX3Bvd2VyX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYykKJiM0MztpbnQgcHdyc2VxX2VuYWJsZShzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpCiB7CiAJc3RydWN0IHB3cnNlcV9kZXZpY2UgKnB3cnNlcTsKIAlzdHJ1Y3QgcHdyc2VxX3RhcmdldCAqdGFyZ2V0OwpAQCAtOTI1LDE0ICYjNDM7OTI1LDE0IEBAIGludCBwd3JzZXFfcG93ZXJfb24oc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKQogCiAJcmV0dXJuIHJldDsKIH0KLUVYUE9SVF9TWU1CT0xfR1BMKHB3cnNlcV9wb3dlcl9vbik7CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwocHdyc2VxX2VuYWJsZSk7CiAKIC8qKgotICogcHdyc2VxX3Bvd2VyX29mZigpIC0gSXNzdWUgYSBwb3dlci1vZmYgcmVxdWVzdCBvbiBiZWhhbGYgb2YgdGhlIGNvbnN1bWVyCiYjNDM7ICogcHdyc2VxX2Rpc2FibGUoKSAtIElzc3VlIGEgcG93ZXItb2ZmIHJlcXVlc3Qgb24gYmVoYWxmIG9mIHRoZSBjb25zdW1lcgogICogICAgICAgICAgICAgICAgICAgICAgZGV2aWNlLgogICogQGRlc2M6IERlc2NyaXB0b3IgcmVmZXJlbmNpbmcgdGhlIHBvd2VyIHNlcXVlbmNlci4KICAqCi0gKiBUaGlzIHVuZG9lcyB0aGUgZWZmZWN0cyBvZiBwd3JzZXFfcG93ZXJfb24oKS4gSXQgaXNzdWVzIGEgcG93ZXItb2ZmIHJlcXVlc3QKJiM0MzsgKiBUaGlzIHVuZG9lcyB0aGUgZWZmZWN0cyBvZiBwd3JzZXFfZW5hYmxlKCkuIEl0IGlzc3VlcyBhIHBvd2VyLW9mZiByZXF1ZXN0CiAgKiBvbiBiZWhhbGYgb2YgdGhlIGNvbnN1bWVyIGFuZCB3aGVuIHRoZSBsYXN0IHJlbWFpbmluZyB1c2VyIGRvZXMgc28sIHRoZQogICogcG93ZXItZG93biBzZXF1ZW5jZSB3aWxsIGJlIHN0YXJ0ZWQuIElmIG9uZSBpcyBpbiBwcm9ncmVzcywgdGhlIGZ1bmN0aW9uCiAgKiB3aWxsIGJsb2NrIHVudGlsIGl0JiMzOTtzIGNvbXBsZXRlIGFuZCB0aGVuIHJldHVybi4KQEAgLTk0MCw3ICYjNDM7OTQwLDcgQEAgRVhQT1JUX1NZTUJPTF9HUEwocHdyc2VxX3Bvd2VyX29uKTsKICAqIFJldHVybnM6CiAgKiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIG51bWJlciBvbiBmYWlsdXJlLgogICovCi1pbnQgcHdyc2VxX3Bvd2VyX29mZihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpCiYjNDM7aW50IHB3cnNlcV9kaXNhYmxlKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYykKIHsKIAlzdHJ1Y3QgcHdyc2VxX2RldmljZSAqcHdyc2VxOwogCXN0cnVjdCBwd3JzZXFfdW5pdCAqdW5pdDsKQEAgLTk2Niw3ICYjNDM7OTY2LDcgQEAgaW50IHB3cnNlcV9wb3dlcl9vZmYoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKQogCiAJcmV0dXJuIHJldDsKIH0KLUVYUE9SVF9TWU1CT0xfR1BMKHB3cnNlcV9wb3dlcl9vZmYpOwomIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHB3cnNlcV9kaXNhYmxlKTsKIAogLyoqCiAgKiBwd3JzZXFfdG9fZGV2aWNlKCkgLSBHZXQgdGhlIHB3cnNlcSBkZXZpY2UgcG9pbnRlciBmcm9tIGEgZGVzY3JpcHRvci4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcHdyc2VxL2NvbnN1bWVyLmggYi9pbmNsdWRlL2xpbnV4L3B3cnNlcS9jb25zdW1lci5oCmluZGV4IDNjOTA3YzllMTg4NWQuLjE2ZmFkNWYzZTNhYjUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcHdyc2VxL2NvbnN1bWVyLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9wd3JzZXEvY29uc3VtZXIuaApAQCAtMjAsOCAmIzQzOzIwLDggQEAgdm9pZCBwd3JzZXFfcHV0KHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYyk7CiBzdHJ1Y3QgcHdyc2VxX2Rlc2MgKiBfX211c3RfY2hlY2sKIGRldm1fcHdyc2VxX2dldChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKnRhcmdldCk7CiAKLWludCBwd3JzZXFfcG93ZXJfb24oc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTsKLWludCBwd3JzZXFfcG93ZXJfb2ZmKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYyk7CiYjNDM7aW50IHB3cnNlcV9lbmFibGUoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTsKJiM0MztpbnQgcHdyc2VxX2Rpc2FibGUoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTsKIAogc3RydWN0IGRldmljZSAqcHdyc2VxX3RvX2RldmljZShzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpOwogCkBAIC00MywxMiAmIzQzOzQzLDEyIEBAIGRldm1fcHdyc2VxX2dldChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKnRhcmdldCkKIAlyZXR1cm4gRVJSX1BUUigtRU5PU1lTKTsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgcHdyc2VxX3Bvd2VyX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYykKJiM0MztzdGF0aWMgaW5saW5lIGludCBwd3JzZXFfZW5hYmxlKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYykKIHsKIAlyZXR1cm4gLUVOT1NZUzsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgcHdyc2VxX3Bvd2VyX29mZihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpCiYjNDM7c3RhdGljIGlubGluZSBpbnQgcHdyc2VxX2Rpc2FibGUoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKQogewogCXJldHVybiAtRU5PU1lTOwogfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMDowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzQxCgkJCQkJCQlvdXRwdXQ6IDcyCgkJCQkJCQl0aG91Z2h0czogNjY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvd2VyIFNlcXVlbmNpbmcgU3Vic3lzdGVtIFJlbmFtZSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBpbiBmcm9udCBvZiBtZSB0aGF0JiMzOTtzIHJlbmFtaW5nIGBwd3JzZXFfcG93ZXJfb25gIHRvIGBwd3JzZXFfZW5hYmxlYCBhbmQgYHB3cnNlcV9wb3dlcl9vZmZgIHRvIGBwd3JzZXFfZGlzYWJsZWAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtQdXJlIHJlbmFtaW5nLCByaWdodD8gTm8gZnVuY3Rpb25hbCBjaGFuZ2VzPyYjMzQ7IExldCYjMzk7cyBkaWcgaW4uCgpUaGUgZGlmZiBzaG93cyB1cGRhdGVzIHRvIHRoZSBkb2N1bWVudGF0aW9uLCB3aGljaCBpcyBleHBlY3RlZC4gVGhlbiwgaXQmIzM5O3MgYSBzd2VlcCB0aHJvdWdoIHZhcmlvdXMgY29uc3VtZXIgZmlsZXMgbGlrZSBgaGNpX3FjYS5jYCwgYHB2cl9wb3dlci5jYCwgYGF0aDEway9zbm9jLmNgLCBldGMuLCBzaW1wbHkgcmVwbGFjaW5nIHRob3NlIG9sZCBmdW5jdGlvbiBuYW1lcyB3aXRoIHRoZSBuZXcgb25lcy4gVGhlIGBwb3dlci9zZXF1ZW5jaW5nL2NvcmUuY2AgZmlsZSBpdHNlbGYgZ2V0cyB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbnMgcmVuYW1lZCwgYWxvbmcgd2l0aCBjb3JyZXNwb25kaW5nIGBFWFBPUlRfU1lNQk9MX0dQTGAgdXBkYXRlcy4gQW5kIG9mIGNvdXJzZSwgdGhlIGhlYWRlciBmaWxlIChgaW5jbHVkZS9saW51eC9wd3JzZXEvY29uc3VtZXIuaGApIHJlZmxlY3RzIHRoZSBzYW1lIGNoYW5nZSBpbiBkZWNsYXJhdGlvbnMgYW5kIGR1bW15IGZ1bmN0aW9ucy4KClNvLCBmdW5jdGlvbmFsbHksIGl0IGxvb2tzIGxpa2UgYSBjbGVhbiBuby1vcCwgcmlnaHQ/IEp1c3QgcmVuYW1pbmcgZnVuY3Rpb25zLiBObyBhbHRlcmF0aW9uIHRvIGV4ZWN1dGlvbiBmbG93LiBXYWl0IGEgbWludXRlLCBkb2VzIHRoaXMgbmVlZCBmdXp6aW5nPyBJIHJlY2FsbCB0aGUgZ3VpZGVsaW5lcy4uLiBzb21ldGhpbmcgYWJvdXQgJiMzNDtXb3J0aEZ1enppbmc9ZmFsc2UmIzM0OyBpZiBpdCYjMzk7cyBkb2N1bWVudGF0aW9uLCBjb21tZW50cywgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBvciBub24tZnVuY3Rpb25hbCBudW1lcmljIGNoYW5nZXMuLi4gJiMzNDtQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzJiMzNDsgdGhhdCBkb24mIzM5O3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LiBSZW5hbWluZyBmdW5jdGlvbnMgZG9lc24mIzM5O3QgY2hhbmdlIGV4ZWN1dGlvbiBmbG93LCBzbyBJIGFtIGxlYW5pbmcgdG93YXJkIG5vLgoKTGV0JiMzOTtzIGRvIGEgbW9yZSB0aG9yb3VnaCBjaGVjayBhbmQgbWFrZSBzdXJlIHRoZXJlIGFyZSB0cnVseSBubyBvdGhlciBoaWRkZW4gY2hhbmdlcy4gU2Nyb2xsaW5nIHRocm91Z2ggdGhlIGNvcmUgZGVmaW5pdGlvbnMgYWdhaW4gY29uZmlybXMgdGhlIGNsZWFuIHJlbmFtaW5nOgpgYGBjCi1pbnQgcHdyc2VxX3Bvd2VyX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYykKJiM0MztpbnQgcHdyc2VxX2VuYWJsZShzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpCmBgYApgYGBjCi1pbnQgcHdyc2VxX3Bvd2VyX29mZihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpCiYjNDM7aW50IHB3cnNlcV9kaXNhYmxlKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYykKYGBgCkFuZCBpbiBgaGNpX3FjYS5jYDoKYGBgYwotCQlwd3JzZXFfcG93ZXJfb2ZmKHBvd2VyLSZndDtwd3JzZXEpOwomIzQzOwkJcHdyc2VxX2Rpc2FibGUocG93ZXItJmd0O3B3cnNlcSk7CmBgYApgYGBjCi0JCXJldHVybiBwd3JzZXFfcG93ZXJfb24ocG93ZXItJmd0O3B3cnNlcSk7CiYjNDM7CQlyZXR1cm4gcHdyc2VxX2VuYWJsZShwb3dlci0mZ3Q7cHdyc2VxKTsKYGBgClllcCwgbm8gb3RoZXIgY2hhbmdlcy4gTm8gbG9naWMgdHdlYWtzLCBubyBuZXcgcGFyYW1ldGVycywgbm8gZGF0YSBzdHJ1Y3R1cmUgbW9kaWZpY2F0aW9ucy4gVGhpcyBpcyBhIHB1cmVseSBub24tZnVuY3Rpb25hbCByZWZhY3RvcmluZy4KClRoZXJlZm9yZSwgbXkgY29uY2x1c2lvbiBpcyB0aGF0IHRoaXMgcGF0Y2ggZG9lc24mIzM5O3Qgd2FycmFudCBmdXp6aW5nLiBJJiMzOTtsbCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgYW5kIGp1c3RpZnkgaXQgd2l0aCBhIGNsZWFyIHJlYXNvbjogJiMzNDtUaGUgcGF0Y2ggb25seSByZW5hbWVzIGBwd3JzZXFfcG93ZXJfb24vb2ZmYCB0byBgcHdyc2VxX2VuYWJsZS9kaXNhYmxlYCBhY3Jvc3MgdGhlIHBvd2VyIHNlcXVlbmNpbmcgc3Vic3lzdGVtIGFuZCBpdHMgY29uc3VtZXJzLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBleGVjdXRpb24gZmxvdy4mIzM0OyBEb25lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIwOjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSByZW5hbWVzIHB3cnNlcV9wb3dlcl9vbi9vZmYgdG8gcHdyc2VxX2VuYWJsZS9kaXNhYmxlIGFjcm9zcyB0aGUgcG93ZXIgc2VxdWVuY2luZyBzdWJzeXN0ZW0gYW5kIGl0cyBjb25zdW1lcnMuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSByZW5hbWVzIHB3cnNlcV9wb3dlcl9vbi9vZmYgdG8gcHdyc2VxX2VuYWJsZS9kaXNhYmxlIGFjcm9zcyB0aGUgcG93ZXIgc2VxdWVuY2luZyBzdWJzeXN0ZW0gYW5kIGl0cyBjb25zdW1lcnMuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIwOjA0OjQyLjY1Nzc5NjQ5NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjI0NjczOTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IHJlbmFtZXMgcHdyc2VxX3Bvd2VyX29uL29mZiB0byBwd3JzZXFfZW5hYmxlL2Rpc2FibGUgYWNyb3NzIHRoZSBwb3dlciBzZXF1ZW5jaW5nIHN1YnN5c3RlbSBhbmQgaXRzIGNvbnN1bWVycy4gVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMDowNDo0Mi42NTc4MDQwMDZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MTczMTY5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDI0YjJiMDgwZjMxMDJiNDZjYjJiYWYzNzlhNzc3ZWRjMWJjYjMxNjFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBBdWcgMSAyMDowNDo0MSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvcHdyc2VxLnJzdCBiL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9wd3JzZXEucnN0XFxuaW5kZXggYWQxOGIyMzI2YjY4OS4uZTEwNTZkMTQxODQ1MSAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvcHdyc2VxLnJzdFxcbisrKyBiL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9wd3JzZXEucnN0XFxuQEAgLTUwLDkgKzUwLDkgQEAgQ29uc3VtZXIgaW50ZXJmYWNlXFxuIFRoZSBjb25zdW1lciBBUEkgaXMgYWltZWQgdG8gYmUgYXMgc2ltcGxlIGFzIHBvc3NpYmxlLiBUaGUgZHJpdmVyIGludGVyZXN0ZWQgaW5cXG4gZ2V0dGluZyBhIGRlc2NyaXB0b3IgZnJvbSB0aGUgcG93ZXIgc2VxdWVuY2VyIHNob3VsZCBjYWxsIHB3cnNlcV9nZXQoKSBhbmRcXG4gc3BlY2lmeSB0aGUgbmFtZSBvZiB0aGUgdGFyZ2V0IGl0IHdhbnRzIHRvIHJlYWNoIGluIHRoZSBzZXF1ZW5jZSBhZnRlciBjYWxsaW5nXFxuLXB3cnNlcV9wb3dlcl91cCgpLiBUaGUgZGVzY3JpcHRvciBjYW4gYmUgcmVsZWFzZWQgYnkgY2FsbGluZyBwd3JzZXFfcHV0KCkgYW5kXFxuK3B3cnNlcV9lbmFibGUoKS4gVGhlIGRlc2NyaXB0b3IgY2FuIGJlIHJlbGVhc2VkIGJ5IGNhbGxpbmcgcHdyc2VxX3B1dCgpIGFuZFxcbiB0aGUgY29uc3VtZXIgY2FuIHJlcXVlc3QgdGhlIHBvd2VyaW5nIGRvd24gb2YgaXRzIHRhcmdldCB3aXRoXFxuLXB3cnNlcV9wb3dlcl9vZmYoKS4gTm90ZSB0aGF0IHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHB3cnNlcV9wb3dlcl9vZmYoKVxcbitwd3JzZXFfZGlzYWJsZSgpLiBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgcHdyc2VxX2Rpc2FibGUoKVxcbiB3aWxsIGhhdmUgYW55IGVmZmVjdCBhcyB0aGVyZSBtYXkgYmUgbXVsdGlwbGUgdXNlcnMgb2YgdGhlIHVuZGVybHlpbmcgcmVzb3VyY2VzXFxuIHdobyBtYXkga2VlcCB0aGVtIGFjdGl2ZS5cXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmx1ZXRvb3RoL2hjaV9xY2EuYyBiL2RyaXZlcnMvYmx1ZXRvb3RoL2hjaV9xY2EuY1xcbmluZGV4IDM0NWY2MDJlOWNlMjMuLmZhYTk2NDczNWFkYjEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jXFxuKysrIGIvZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jXFxuQEAgLTIyNTksNyArMjI1OSw3IEBAIHN0YXRpYyB2b2lkIHFjYV9wb3dlcl9vZmYoc3RydWN0IGhjaV91YXJ0ICpodSlcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKHBvd2VyIFxcdTAwMjZcXHUwMDI2IHBvd2VyLVxcdTAwM2Vwd3JzZXEpIHtcXG4tXFx0XFx0cHdyc2VxX3Bvd2VyX29mZihwb3dlci1cXHUwMDNlcHdyc2VxKTtcXG4rXFx0XFx0cHdyc2VxX2Rpc2FibGUocG93ZXItXFx1MDAzZXB3cnNlcSk7XFxuIFxcdFxcdHNldF9iaXQoUUNBX0JUX09GRiwgXFx1MDAyNnFjYS1cXHUwMDNlZmxhZ3MpO1xcbiBcXHRcXHRyZXR1cm47XFxuICAgICAgICAgfVxcbkBAIC0yMzE5LDcgKzIzMTksNyBAQCBzdGF0aWMgaW50IHFjYV9yZWd1bGF0b3JfZW5hYmxlKHN0cnVjdCBxY2Ffc2VyZGV2ICpxY2FkZXYpXFxuIFxcdGludCByZXQ7XFxuIFxcbiBcXHRpZiAocG93ZXItXFx1MDAzZXB3cnNlcSlcXG4tXFx0XFx0cmV0dXJuIHB3cnNlcV9wb3dlcl9vbihwb3dlci1cXHUwMDNlcHdyc2VxKTtcXG4rXFx0XFx0cmV0dXJuIHB3cnNlcV9lbmFibGUocG93ZXItXFx1MDAzZXB3cnNlcSk7XFxuIFxcbiBcXHQvKiBBbHJlYWR5IGVuYWJsZWQgKi9cXG4gXFx0aWYgKHBvd2VyLVxcdTAwM2V2cmVnc19vbilcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL3B2cl9wb3dlci5jIGIvZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL3B2cl9wb3dlci5jXFxuaW5kZXggYTcxZDViMzU2MDFlNy4uZWI0YjZlY2RmNGY0ZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vcHZyX3Bvd2VyLmNcXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vcHZyX3Bvd2VyLmNcXG5AQCAtMzUyLDEyICszNTIsMTIgQEAgc3RhdGljIGludCBwdnJfcG93ZXJfaW5pdF9wd3JzZXEoc3RydWN0IHB2cl9kZXZpY2UgKnB2cl9kZXYpXFxuIFxcbiBzdGF0aWMgaW50IHB2cl9wb3dlcl9vbl9zZXF1ZW5jZV9wd3JzZXEoc3RydWN0IHB2cl9kZXZpY2UgKnB2cl9kZXYpXFxuIHtcXG4tXFx0cmV0dXJuIHB3cnNlcV9wb3dlcl9vbihwdnJfZGV2LVxcdTAwM2Vwd3JzZXEpO1xcbitcXHRyZXR1cm4gcHdyc2VxX2VuYWJsZShwdnJfZGV2LVxcdTAwM2Vwd3JzZXEpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IHB2cl9wb3dlcl9vZmZfc2VxdWVuY2VfcHdyc2VxKHN0cnVjdCBwdnJfZGV2aWNlICpwdnJfZGV2KVxcbiB7XFxuLVxcdHJldHVybiBwd3JzZXFfcG93ZXJfb2ZmKHB2cl9kZXYtXFx1MDAzZXB3cnNlcSk7XFxuK1xcdHJldHVybiBwd3JzZXFfZGlzYWJsZShwdnJfZGV2LVxcdTAwM2Vwd3JzZXEpO1xcbiB9XFxuIFxcbiBjb25zdCBzdHJ1Y3QgcHZyX3Bvd2VyX3NlcXVlbmNlX29wcyBwdnJfcG93ZXJfc2VxdWVuY2Vfb3BzX3B3cnNlcSA9IHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuY1xcbmluZGV4IDMxMDY1MDIyNzU3ODEuLmYyOGZlZDg5Y2MyOGIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuY1xcbkBAIC0xMDI1LDcgKzEwMjUsNyBAQCBzdGF0aWMgaW50IGF0aDEwa19od19wb3dlcl9vbihzdHJ1Y3QgYXRoMTBrICphcilcXG4gXFxuIFxcdGF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfU05PQywgXFxcInNvYyBwb3dlciBvblxcXFxuXFxcIik7XFxuIFxcbi1cXHRyZXQgPSBwd3JzZXFfcG93ZXJfb24oYXJfc25vYy1cXHUwMDNlcHdyc2VxKTtcXG4rXFx0cmV0ID0gcHdyc2VxX2VuYWJsZShhcl9zbm9jLVxcdTAwM2Vwd3JzZXEpO1xcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXG5AQCAtMTA0Miw3ICsxMDQyLDcgQEAgc3RhdGljIGludCBhdGgxMGtfaHdfcG93ZXJfb24oc3RydWN0IGF0aDEwayAqYXIpXFxuIHZyZWdfb2ZmOlxcbiBcXHRyZWd1bGF0b3JfYnVsa19kaXNhYmxlKGFyX3Nub2MtXFx1MDAzZW51bV92cmVncywgYXJfc25vYy1cXHUwMDNldnJlZ3MpO1xcbiBwd3JzZXFfb2ZmOlxcbi1cXHRwd3JzZXFfcG93ZXJfb2ZmKGFyX3Nub2MtXFx1MDAzZXB3cnNlcSk7XFxuK1xcdHB3cnNlcV9kaXNhYmxlKGFyX3Nub2MtXFx1MDAzZXB3cnNlcSk7XFxuIFxcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuQEAgLTEwNjAsNyArMTA2MCw3IEBAIHN0YXRpYyBpbnQgYXRoMTBrX2h3X3Bvd2VyX29mZihzdHJ1Y3QgYXRoMTBrICphcilcXG4gXFx0cmV0X3ZyZWcgPSByZWd1bGF0b3JfYnVsa19kaXNhYmxlKGFyX3Nub2MtXFx1MDAzZW51bV92cmVncywgYXJfc25vYy1cXHUwMDNldnJlZ3MpO1xcbiBcXG4gXFx0aWYgKGFyX3Nub2MtXFx1MDAzZXB3cnNlcSlcXG4tXFx0XFx0cmV0X3NlcSA9IHB3cnNlcV9wb3dlcl9vZmYoYXJfc25vYy1cXHUwMDNlcHdyc2VxKTtcXG4rXFx0XFx0cmV0X3NlcSA9IHB3cnNlcV9kaXNhYmxlKGFyX3Nub2MtXFx1MDAzZXB3cnNlcSk7XFxuIFxcbiBcXHRyZXR1cm4gcmV0X3ZyZWcgPyA6IHJldF9zZXE7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcHdyY3RybC9nZW5lcmljLmMgYi9kcml2ZXJzL3BjaS9wd3JjdHJsL2dlbmVyaWMuY1xcbmluZGV4IGE3ZTU5OWQ4NDFlNjIuLmQ1NjE3MWUwZWUyNDQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9wY2kvcHdyY3RybC9nZW5lcmljLmNcXG4rKysgYi9kcml2ZXJzL3BjaS9wd3JjdHJsL2dlbmVyaWMuY1xcbkBAIC0yOSw3ICsyOSw3IEBAIHN0YXRpYyBpbnQgc2xvdF9wd3JjdHJsX3Bvd2VyX29uKHN0cnVjdCBwY2lfcHdyY3RybCAqcHdyY3RybClcXG4gXFx0aW50IHJldDtcXG4gXFxuIFxcdGlmIChzbG90LVxcdTAwM2Vwd3JzZXEpIHtcXG4tXFx0XFx0cHdyc2VxX3Bvd2VyX29uKHNsb3QtXFx1MDAzZXB3cnNlcSk7XFxuK1xcdFxcdHB3cnNlcV9lbmFibGUoc2xvdC1cXHUwMDNlcHdyc2VxKTtcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcdH1cXG4gXFxuQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIGludCBzbG90X3B3cmN0cmxfcG93ZXJfb2ZmKHN0cnVjdCBwY2lfcHdyY3RybCAqcHdyY3RybClcXG4gXFx0XFx0XFx0XFx0XFx0XFx0c3RydWN0IHNsb3RfcHdyY3RybCwgcHdyY3RybCk7XFxuIFxcbiBcXHRpZiAoc2xvdC1cXHUwMDNlcHdyc2VxKSB7XFxuLVxcdFxcdHB3cnNlcV9wb3dlcl9vZmYoc2xvdC1cXHUwMDNlcHdyc2VxKTtcXG4rXFx0XFx0cHdyc2VxX2Rpc2FibGUoc2xvdC1cXHUwMDNlcHdyc2VxKTtcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcdH1cXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL3B3cmN0cmwvcGNpLXB3cmN0cmwtcHdyc2VxLmMgYi9kcml2ZXJzL3BjaS9wd3JjdHJsL3BjaS1wd3JjdHJsLXB3cnNlcS5jXFxuaW5kZXggYTMwOGJmNGI1ZmMwMS4uYzVjZWQ4Nzk0NGI2YyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3BjaS9wd3JjdHJsL3BjaS1wd3JjdHJsLXB3cnNlcS5jXFxuKysrIGIvZHJpdmVycy9wY2kvcHdyY3RybC9wY2ktcHdyY3RybC1wd3JzZXEuY1xcbkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyBpbnQgcHdyc2VxX3B3cmN0cmxfcG93ZXJfb24oc3RydWN0IHBjaV9wd3JjdHJsICpwd3JjdHJsKVxcbiBcXHRzdHJ1Y3QgcHdyc2VxX3B3cmN0cmwgKnB3cnNlcSA9IGNvbnRhaW5lcl9vZihwd3JjdHJsLFxcbiBcXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgcHdyc2VxX3B3cmN0cmwsIHB3cmN0cmwpO1xcbiBcXG4tXFx0cmV0dXJuIHB3cnNlcV9wb3dlcl9vbihwd3JzZXEtXFx1MDAzZXB3cnNlcSk7XFxuK1xcdHJldHVybiBwd3JzZXFfZW5hYmxlKHB3cnNlcS1cXHUwMDNlcHdyc2VxKTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBwd3JzZXFfcHdyY3RybF9wb3dlcl9vZmYoc3RydWN0IHBjaV9wd3JjdHJsICpwd3JjdHJsKVxcbkBAIC02NCw3ICs2NCw3IEBAIHN0YXRpYyBpbnQgcHdyc2VxX3B3cmN0cmxfcG93ZXJfb2ZmKHN0cnVjdCBwY2lfcHdyY3RybCAqcHdyY3RybClcXG4gXFx0c3RydWN0IHB3cnNlcV9wd3JjdHJsICpwd3JzZXEgPSBjb250YWluZXJfb2YocHdyY3RybCxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IHB3cnNlcV9wd3JjdHJsLCBwd3JjdHJsKTtcXG4gXFxuLVxcdHJldHVybiBwd3JzZXFfcG93ZXJfb2ZmKHB3cnNlcS1cXHUwMDNlcHdyc2VxKTtcXG4rXFx0cmV0dXJuIHB3cnNlcV9kaXNhYmxlKHB3cnNlcS1cXHUwMDNlcHdyc2VxKTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBwd3JzZXFfcHdyY3RybF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3Bvd2VyL3NlcXVlbmNpbmcvY29yZS5jIGIvZHJpdmVycy9wb3dlci9zZXF1ZW5jaW5nL2NvcmUuY1xcbmluZGV4IDAyZjQyZGE5MTU5ODUuLjcyMWU4ODhiNjU4ZDEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9wb3dlci9zZXF1ZW5jaW5nL2NvcmUuY1xcbisrKyBiL2RyaXZlcnMvcG93ZXIvc2VxdWVuY2luZy9jb3JlLmNcXG5AQCAtNzA4LDcgKzcwOCw3IEBAIHZvaWQgcHdyc2VxX3B1dChzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXFxuIFxcdHB3cnNlcSA9IGRlc2MtXFx1MDAzZXB3cnNlcTtcXG4gXFxuIFxcdGlmIChkZXNjLVxcdTAwM2Vwb3dlcmVkX29uKVxcbi1cXHRcXHRwd3JzZXFfcG93ZXJfb2ZmKGRlc2MpO1xcbitcXHRcXHRwd3JzZXFfZGlzYWJsZShkZXNjKTtcXG4gXFxuIFxcdGtmcmVlKGRlc2MpO1xcbiBcXHRtb2R1bGVfcHV0KHB3cnNlcS1cXHUwMDNlb3duZXIpO1xcbkBAIC04NzQsNyArODc0LDcgQEAgc3RhdGljIGludCBwd3JzZXFfdW5pdF9kaXNhYmxlKHN0cnVjdCBwd3JzZXFfZGV2aWNlICpwd3JzZXEsXFxuIH1cXG4gXFxuIC8qKlxcbi0gKiBwd3JzZXFfcG93ZXJfb24oKSAtIElzc3VlIGEgcG93ZXItb24gcmVxdWVzdCBvbiBiZWhhbGYgb2YgdGhlIGNvbnN1bWVyXFxuKyAqIHB3cnNlcV9lbmFibGUoKSAtIElzc3VlIGEgcG93ZXItb24gcmVxdWVzdCBvbiBiZWhhbGYgb2YgdGhlIGNvbnN1bWVyXFxuICAqICAgICAgICAgICAgICAgICAgICAgZGV2aWNlLlxcbiAgKiBAZGVzYzogRGVzY3JpcHRvciByZWZlcmVuY2luZyB0aGUgcG93ZXIgc2VxdWVuY2VyLlxcbiAgKlxcbkBAIC04ODcsNyArODg3LDcgQEAgc3RhdGljIGludCBwd3JzZXFfdW5pdF9kaXNhYmxlKHN0cnVjdCBwd3JzZXFfZGV2aWNlICpwd3JzZXEsXFxuICAqIFJldHVybnM6XFxuICAqIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgbnVtYmVyIG9uIGZhaWx1cmUuXFxuICAqL1xcbi1pbnQgcHdyc2VxX3Bvd2VyX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcXG4raW50IHB3cnNlcV9lbmFibGUoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxcbiB7XFxuIFxcdHN0cnVjdCBwd3JzZXFfZGV2aWNlICpwd3JzZXE7XFxuIFxcdHN0cnVjdCBwd3JzZXFfdGFyZ2V0ICp0YXJnZXQ7XFxuQEAgLTkyNSwxNCArOTI1LDE0IEBAIGludCBwd3JzZXFfcG93ZXJfb24oc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxcbiBcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbi1FWFBPUlRfU1lNQk9MX0dQTChwd3JzZXFfcG93ZXJfb24pO1xcbitFWFBPUlRfU1lNQk9MX0dQTChwd3JzZXFfZW5hYmxlKTtcXG4gXFxuIC8qKlxcbi0gKiBwd3JzZXFfcG93ZXJfb2ZmKCkgLSBJc3N1ZSBhIHBvd2VyLW9mZiByZXF1ZXN0IG9uIGJlaGFsZiBvZiB0aGUgY29uc3VtZXJcXG4rICogcHdyc2VxX2Rpc2FibGUoKSAtIElzc3VlIGEgcG93ZXItb2ZmIHJlcXVlc3Qgb24gYmVoYWxmIG9mIHRoZSBjb25zdW1lclxcbiAgKiAgICAgICAgICAgICAgICAgICAgICBkZXZpY2UuXFxuICAqIEBkZXNjOiBEZXNjcmlwdG9yIHJlZmVyZW5jaW5nIHRoZSBwb3dlciBzZXF1ZW5jZXIuXFxuICAqXFxuLSAqIFRoaXMgdW5kb2VzIHRoZSBlZmZlY3RzIG9mIHB3cnNlcV9wb3dlcl9vbigpLiBJdCBpc3N1ZXMgYSBwb3dlci1vZmYgcmVxdWVzdFxcbisgKiBUaGlzIHVuZG9lcyB0aGUgZWZmZWN0cyBvZiBwd3JzZXFfZW5hYmxlKCkuIEl0IGlzc3VlcyBhIHBvd2VyLW9mZiByZXF1ZXN0XFxuICAqIG9uIGJlaGFsZiBvZiB0aGUgY29uc3VtZXIgYW5kIHdoZW4gdGhlIGxhc3QgcmVtYWluaW5nIHVzZXIgZG9lcyBzbywgdGhlXFxuICAqIHBvd2VyLWRvd24gc2VxdWVuY2Ugd2lsbCBiZSBzdGFydGVkLiBJZiBvbmUgaXMgaW4gcHJvZ3Jlc3MsIHRoZSBmdW5jdGlvblxcbiAgKiB3aWxsIGJsb2NrIHVudGlsIGl0J3MgY29tcGxldGUgYW5kIHRoZW4gcmV0dXJuLlxcbkBAIC05NDAsNyArOTQwLDcgQEAgRVhQT1JUX1NZTUJPTF9HUEwocHdyc2VxX3Bvd2VyX29uKTtcXG4gICogUmV0dXJuczpcXG4gICogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBudW1iZXIgb24gZmFpbHVyZS5cXG4gICovXFxuLWludCBwd3JzZXFfcG93ZXJfb2ZmKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcXG4raW50IHB3cnNlcV9kaXNhYmxlKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcXG4ge1xcbiBcXHRzdHJ1Y3QgcHdyc2VxX2RldmljZSAqcHdyc2VxO1xcbiBcXHRzdHJ1Y3QgcHdyc2VxX3VuaXQgKnVuaXQ7XFxuQEAgLTk2Niw3ICs5NjYsNyBAQCBpbnQgcHdyc2VxX3Bvd2VyX29mZihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXFxuIFxcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuLUVYUE9SVF9TWU1CT0xfR1BMKHB3cnNlcV9wb3dlcl9vZmYpO1xcbitFWFBPUlRfU1lNQk9MX0dQTChwd3JzZXFfZGlzYWJsZSk7XFxuIFxcbiAvKipcXG4gICogcHdyc2VxX3RvX2RldmljZSgpIC0gR2V0IHRoZSBwd3JzZXEgZGV2aWNlIHBvaW50ZXIgZnJvbSBhIGRlc2NyaXB0b3IuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcHdyc2VxL2NvbnN1bWVyLmggYi9pbmNsdWRlL2xpbnV4L3B3cnNlcS9jb25zdW1lci5oXFxuaW5kZXggM2M5MDdjOWUxODg1ZC4uMTZmYWQ1ZjNlM2FiNSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L3B3cnNlcS9jb25zdW1lci5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9wd3JzZXEvY29uc3VtZXIuaFxcbkBAIC0yMCw4ICsyMCw4IEBAIHZvaWQgcHdyc2VxX3B1dChzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpO1xcbiBzdHJ1Y3QgcHdyc2VxX2Rlc2MgKiBfX211c3RfY2hlY2tcXG4gZGV2bV9wd3JzZXFfZ2V0KHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqdGFyZ2V0KTtcXG4gXFxuLWludCBwd3JzZXFfcG93ZXJfb24oc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTtcXG4taW50IHB3cnNlcV9wb3dlcl9vZmYoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTtcXG4raW50IHB3cnNlcV9lbmFibGUoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTtcXG4raW50IHB3cnNlcV9kaXNhYmxlKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYyk7XFxuIFxcbiBzdHJ1Y3QgZGV2aWNlICpwd3JzZXFfdG9fZGV2aWNlKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYyk7XFxuIFxcbkBAIC00MywxMiArNDMsMTIgQEAgZGV2bV9wd3JzZXFfZ2V0KHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqdGFyZ2V0KVxcbiBcXHRyZXR1cm4gRVJSX1BUUigtRU5PU1lTKTtcXG4gfVxcbiBcXG4tc3RhdGljIGlubGluZSBpbnQgcHdyc2VxX3Bvd2VyX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcXG4rc3RhdGljIGlubGluZSBpbnQgcHdyc2VxX2VuYWJsZShzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXFxuIHtcXG4gXFx0cmV0dXJuIC1FTk9TWVM7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbmxpbmUgaW50IHB3cnNlcV9wb3dlcl9vZmYoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxcbitzdGF0aWMgaW5saW5lIGludCBwd3JzZXFfZGlzYWJsZShzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXFxuIHtcXG4gXFx0cmV0dXJuIC1FTk9TWVM7XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjA6MDQ6NDMuMTMwMjQzMDE3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6OTc1MjIyMjYyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSByZW5hbWVzIHB3cnNlcV9wb3dlcl9vbi9vZmYgdG8gcHdyc2VxX2VuYWJsZS9kaXNhYmxlIGFjcm9zcyB0aGUgcG93ZXIgc2VxdWVuY2luZyBzdWJzeXN0ZW0gYW5kIGl0cyBjb25zdW1lcnMuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjRiMmIwODBmMzEwMmI0NmNiMmJhZjM3OWE3NzdlZGMxYmNiMzE2MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDEgMjA6MDQ6NDEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvcHdyc2VxLnJzdCBiL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9wd3JzZXEucnN0XG5pbmRleCBhZDE4YjIzMjZiNjg5Li5lMTA1NmQxNDE4NDUxIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3B3cnNlcS5yc3RcbisrKyBiL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9wd3JzZXEucnN0XG5AQCAtNTAsOSArNTAsOSBAQCBDb25zdW1lciBpbnRlcmZhY2VcbiBUaGUgY29uc3VtZXIgQVBJIGlzIGFpbWVkIHRvIGJlIGFzIHNpbXBsZSBhcyBwb3NzaWJsZS4gVGhlIGRyaXZlciBpbnRlcmVzdGVkIGluXG4gZ2V0dGluZyBhIGRlc2NyaXB0b3IgZnJvbSB0aGUgcG93ZXIgc2VxdWVuY2VyIHNob3VsZCBjYWxsIHB3cnNlcV9nZXQoKSBhbmRcbiBzcGVjaWZ5IHRoZSBuYW1lIG9mIHRoZSB0YXJnZXQgaXQgd2FudHMgdG8gcmVhY2ggaW4gdGhlIHNlcXVlbmNlIGFmdGVyIGNhbGxpbmdcbi1wd3JzZXFfcG93ZXJfdXAoKS4gVGhlIGRlc2NyaXB0b3IgY2FuIGJlIHJlbGVhc2VkIGJ5IGNhbGxpbmcgcHdyc2VxX3B1dCgpIGFuZFxuK3B3cnNlcV9lbmFibGUoKS4gVGhlIGRlc2NyaXB0b3IgY2FuIGJlIHJlbGVhc2VkIGJ5IGNhbGxpbmcgcHdyc2VxX3B1dCgpIGFuZFxuIHRoZSBjb25zdW1lciBjYW4gcmVxdWVzdCB0aGUgcG93ZXJpbmcgZG93biBvZiBpdHMgdGFyZ2V0IHdpdGhcbi1wd3JzZXFfcG93ZXJfb2ZmKCkuIE5vdGUgdGhhdCB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBwd3JzZXFfcG93ZXJfb2ZmKClcbitwd3JzZXFfZGlzYWJsZSgpLiBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgcHdyc2VxX2Rpc2FibGUoKVxuIHdpbGwgaGF2ZSBhbnkgZWZmZWN0IGFzIHRoZXJlIG1heSBiZSBtdWx0aXBsZSB1c2VycyBvZiB0aGUgdW5kZXJseWluZyByZXNvdXJjZXNcbiB3aG8gbWF5IGtlZXAgdGhlbSBhY3RpdmUuXG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jIGIvZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jXG5pbmRleCAzNDVmNjAyZTljZTIzLi5mYWE5NjQ3MzVhZGIxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jXG4rKysgYi9kcml2ZXJzL2JsdWV0b290aC9oY2lfcWNhLmNcbkBAIC0yMjU5LDcgKzIyNTksNyBAQCBzdGF0aWMgdm9pZCBxY2FfcG93ZXJfb2ZmKHN0cnVjdCBoY2lfdWFydCAqaHUpXG4gXHR9XG4gXG4gXHRpZiAocG93ZXIgXHUwMDI2XHUwMDI2IHBvd2VyLVx1MDAzZXB3cnNlcSkge1xuLVx0XHRwd3JzZXFfcG93ZXJfb2ZmKHBvd2VyLVx1MDAzZXB3cnNlcSk7XG4rXHRcdHB3cnNlcV9kaXNhYmxlKHBvd2VyLVx1MDAzZXB3cnNlcSk7XG4gXHRcdHNldF9iaXQoUUNBX0JUX09GRiwgXHUwMDI2cWNhLVx1MDAzZWZsYWdzKTtcbiBcdFx0cmV0dXJuO1xuICAgICAgICAgfVxuQEAgLTIzMTksNyArMjMxOSw3IEBAIHN0YXRpYyBpbnQgcWNhX3JlZ3VsYXRvcl9lbmFibGUoc3RydWN0IHFjYV9zZXJkZXYgKnFjYWRldilcbiBcdGludCByZXQ7XG4gXG4gXHRpZiAocG93ZXItXHUwMDNlcHdyc2VxKVxuLVx0XHRyZXR1cm4gcHdyc2VxX3Bvd2VyX29uKHBvd2VyLVx1MDAzZXB3cnNlcSk7XG4rXHRcdHJldHVybiBwd3JzZXFfZW5hYmxlKHBvd2VyLVx1MDAzZXB3cnNlcSk7XG4gXG4gXHQvKiBBbHJlYWR5IGVuYWJsZWQgKi9cbiBcdGlmIChwb3dlci1cdTAwM2V2cmVnc19vbilcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vcHZyX3Bvd2VyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vcHZyX3Bvd2VyLmNcbmluZGV4IGE3MWQ1YjM1NjAxZTcuLmViNGI2ZWNkZjRmNGQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vcHZyX3Bvd2VyLmNcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pbWFnaW5hdGlvbi9wdnJfcG93ZXIuY1xuQEAgLTM1MiwxMiArMzUyLDEyIEBAIHN0YXRpYyBpbnQgcHZyX3Bvd2VyX2luaXRfcHdyc2VxKHN0cnVjdCBwdnJfZGV2aWNlICpwdnJfZGV2KVxuIFxuIHN0YXRpYyBpbnQgcHZyX3Bvd2VyX29uX3NlcXVlbmNlX3B3cnNlcShzdHJ1Y3QgcHZyX2RldmljZSAqcHZyX2RldilcbiB7XG4tXHRyZXR1cm4gcHdyc2VxX3Bvd2VyX29uKHB2cl9kZXYtXHUwMDNlcHdyc2VxKTtcbitcdHJldHVybiBwd3JzZXFfZW5hYmxlKHB2cl9kZXYtXHUwMDNlcHdyc2VxKTtcbiB9XG4gXG4gc3RhdGljIGludCBwdnJfcG93ZXJfb2ZmX3NlcXVlbmNlX3B3cnNlcShzdHJ1Y3QgcHZyX2RldmljZSAqcHZyX2RldilcbiB7XG4tXHRyZXR1cm4gcHdyc2VxX3Bvd2VyX29mZihwdnJfZGV2LVx1MDAzZXB3cnNlcSk7XG4rXHRyZXR1cm4gcHdyc2VxX2Rpc2FibGUocHZyX2Rldi1cdTAwM2Vwd3JzZXEpO1xuIH1cbiBcbiBjb25zdCBzdHJ1Y3QgcHZyX3Bvd2VyX3NlcXVlbmNlX29wcyBwdnJfcG93ZXJfc2VxdWVuY2Vfb3BzX3B3cnNlcSA9IHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jXG5pbmRleCAzMTA2NTAyMjc1NzgxLi5mMjhmZWQ4OWNjMjhiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jXG5AQCAtMTAyNSw3ICsxMDI1LDcgQEAgc3RhdGljIGludCBhdGgxMGtfaHdfcG93ZXJfb24oc3RydWN0IGF0aDEwayAqYXIpXG4gXG4gXHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1NOT0MsIFwic29jIHBvd2VyIG9uXFxuXCIpO1xuIFxuLVx0cmV0ID0gcHdyc2VxX3Bvd2VyX29uKGFyX3Nub2MtXHUwMDNlcHdyc2VxKTtcbitcdHJldCA9IHB3cnNlcV9lbmFibGUoYXJfc25vYy1cdTAwM2Vwd3JzZXEpO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbkBAIC0xMDQyLDcgKzEwNDIsNyBAQCBzdGF0aWMgaW50IGF0aDEwa19od19wb3dlcl9vbihzdHJ1Y3QgYXRoMTBrICphcilcbiB2cmVnX29mZjpcbiBcdHJlZ3VsYXRvcl9idWxrX2Rpc2FibGUoYXJfc25vYy1cdTAwM2VudW1fdnJlZ3MsIGFyX3Nub2MtXHUwMDNldnJlZ3MpO1xuIHB3cnNlcV9vZmY6XG4tXHRwd3JzZXFfcG93ZXJfb2ZmKGFyX3Nub2MtXHUwMDNlcHdyc2VxKTtcbitcdHB3cnNlcV9kaXNhYmxlKGFyX3Nub2MtXHUwMDNlcHdyc2VxKTtcbiBcbiBcdHJldHVybiByZXQ7XG4gfVxuQEAgLTEwNjAsNyArMTA2MCw3IEBAIHN0YXRpYyBpbnQgYXRoMTBrX2h3X3Bvd2VyX29mZihzdHJ1Y3QgYXRoMTBrICphcilcbiBcdHJldF92cmVnID0gcmVndWxhdG9yX2J1bGtfZGlzYWJsZShhcl9zbm9jLVx1MDAzZW51bV92cmVncywgYXJfc25vYy1cdTAwM2V2cmVncyk7XG4gXG4gXHRpZiAoYXJfc25vYy1cdTAwM2Vwd3JzZXEpXG4tXHRcdHJldF9zZXEgPSBwd3JzZXFfcG93ZXJfb2ZmKGFyX3Nub2MtXHUwMDNlcHdyc2VxKTtcbitcdFx0cmV0X3NlcSA9IHB3cnNlcV9kaXNhYmxlKGFyX3Nub2MtXHUwMDNlcHdyc2VxKTtcbiBcbiBcdHJldHVybiByZXRfdnJlZyA/IDogcmV0X3NlcTtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcHdyY3RybC9nZW5lcmljLmMgYi9kcml2ZXJzL3BjaS9wd3JjdHJsL2dlbmVyaWMuY1xuaW5kZXggYTdlNTk5ZDg0MWU2Mi4uZDU2MTcxZTBlZTI0NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvcGNpL3B3cmN0cmwvZ2VuZXJpYy5jXG4rKysgYi9kcml2ZXJzL3BjaS9wd3JjdHJsL2dlbmVyaWMuY1xuQEAgLTI5LDcgKzI5LDcgQEAgc3RhdGljIGludCBzbG90X3B3cmN0cmxfcG93ZXJfb24oc3RydWN0IHBjaV9wd3JjdHJsICpwd3JjdHJsKVxuIFx0aW50IHJldDtcbiBcbiBcdGlmIChzbG90LVx1MDAzZXB3cnNlcSkge1xuLVx0XHRwd3JzZXFfcG93ZXJfb24oc2xvdC1cdTAwM2Vwd3JzZXEpO1xuK1x0XHRwd3JzZXFfZW5hYmxlKHNsb3QtXHUwMDNlcHdyc2VxKTtcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG5AQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgaW50IHNsb3RfcHdyY3RybF9wb3dlcl9vZmYoc3RydWN0IHBjaV9wd3JjdHJsICpwd3JjdHJsKVxuIFx0XHRcdFx0XHRcdHN0cnVjdCBzbG90X3B3cmN0cmwsIHB3cmN0cmwpO1xuIFxuIFx0aWYgKHNsb3QtXHUwMDNlcHdyc2VxKSB7XG4tXHRcdHB3cnNlcV9wb3dlcl9vZmYoc2xvdC1cdTAwM2Vwd3JzZXEpO1xuK1x0XHRwd3JzZXFfZGlzYWJsZShzbG90LVx1MDAzZXB3cnNlcSk7XG4gXHRcdHJldHVybiAwO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL3B3cmN0cmwvcGNpLXB3cmN0cmwtcHdyc2VxLmMgYi9kcml2ZXJzL3BjaS9wd3JjdHJsL3BjaS1wd3JjdHJsLXB3cnNlcS5jXG5pbmRleCBhMzA4YmY0YjVmYzAxLi5jNWNlZDg3OTQ0YjZjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9wY2kvcHdyY3RybC9wY2ktcHdyY3RybC1wd3JzZXEuY1xuKysrIGIvZHJpdmVycy9wY2kvcHdyY3RybC9wY2ktcHdyY3RybC1wd3JzZXEuY1xuQEAgLTU2LDcgKzU2LDcgQEAgc3RhdGljIGludCBwd3JzZXFfcHdyY3RybF9wb3dlcl9vbihzdHJ1Y3QgcGNpX3B3cmN0cmwgKnB3cmN0cmwpXG4gXHRzdHJ1Y3QgcHdyc2VxX3B3cmN0cmwgKnB3cnNlcSA9IGNvbnRhaW5lcl9vZihwd3JjdHJsLFxuIFx0XHRcdFx0XHQgICBzdHJ1Y3QgcHdyc2VxX3B3cmN0cmwsIHB3cmN0cmwpO1xuIFxuLVx0cmV0dXJuIHB3cnNlcV9wb3dlcl9vbihwd3JzZXEtXHUwMDNlcHdyc2VxKTtcbitcdHJldHVybiBwd3JzZXFfZW5hYmxlKHB3cnNlcS1cdTAwM2Vwd3JzZXEpO1xuIH1cbiBcbiBzdGF0aWMgaW50IHB3cnNlcV9wd3JjdHJsX3Bvd2VyX29mZihzdHJ1Y3QgcGNpX3B3cmN0cmwgKnB3cmN0cmwpXG5AQCAtNjQsNyArNjQsNyBAQCBzdGF0aWMgaW50IHB3cnNlcV9wd3JjdHJsX3Bvd2VyX29mZihzdHJ1Y3QgcGNpX3B3cmN0cmwgKnB3cmN0cmwpXG4gXHRzdHJ1Y3QgcHdyc2VxX3B3cmN0cmwgKnB3cnNlcSA9IGNvbnRhaW5lcl9vZihwd3JjdHJsLFxuIFx0XHRcdFx0XHQgICBzdHJ1Y3QgcHdyc2VxX3B3cmN0cmwsIHB3cmN0cmwpO1xuIFxuLVx0cmV0dXJuIHB3cnNlcV9wb3dlcl9vZmYocHdyc2VxLVx1MDAzZXB3cnNlcSk7XG4rXHRyZXR1cm4gcHdyc2VxX2Rpc2FibGUocHdyc2VxLVx1MDAzZXB3cnNlcSk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgcHdyc2VxX3B3cmN0cmxfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3Bvd2VyL3NlcXVlbmNpbmcvY29yZS5jIGIvZHJpdmVycy9wb3dlci9zZXF1ZW5jaW5nL2NvcmUuY1xuaW5kZXggMDJmNDJkYTkxNTk4NS4uNzIxZTg4OGI2NThkMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvcG93ZXIvc2VxdWVuY2luZy9jb3JlLmNcbisrKyBiL2RyaXZlcnMvcG93ZXIvc2VxdWVuY2luZy9jb3JlLmNcbkBAIC03MDgsNyArNzA4LDcgQEAgdm9pZCBwd3JzZXFfcHV0KHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcbiBcdHB3cnNlcSA9IGRlc2MtXHUwMDNlcHdyc2VxO1xuIFxuIFx0aWYgKGRlc2MtXHUwMDNlcG93ZXJlZF9vbilcbi1cdFx0cHdyc2VxX3Bvd2VyX29mZihkZXNjKTtcbitcdFx0cHdyc2VxX2Rpc2FibGUoZGVzYyk7XG4gXG4gXHRrZnJlZShkZXNjKTtcbiBcdG1vZHVsZV9wdXQocHdyc2VxLVx1MDAzZW93bmVyKTtcbkBAIC04NzQsNyArODc0LDcgQEAgc3RhdGljIGludCBwd3JzZXFfdW5pdF9kaXNhYmxlKHN0cnVjdCBwd3JzZXFfZGV2aWNlICpwd3JzZXEsXG4gfVxuIFxuIC8qKlxuLSAqIHB3cnNlcV9wb3dlcl9vbigpIC0gSXNzdWUgYSBwb3dlci1vbiByZXF1ZXN0IG9uIGJlaGFsZiBvZiB0aGUgY29uc3VtZXJcbisgKiBwd3JzZXFfZW5hYmxlKCkgLSBJc3N1ZSBhIHBvd2VyLW9uIHJlcXVlc3Qgb24gYmVoYWxmIG9mIHRoZSBjb25zdW1lclxuICAqICAgICAgICAgICAgICAgICAgICAgZGV2aWNlLlxuICAqIEBkZXNjOiBEZXNjcmlwdG9yIHJlZmVyZW5jaW5nIHRoZSBwb3dlciBzZXF1ZW5jZXIuXG4gICpcbkBAIC04ODcsNyArODg3LDcgQEAgc3RhdGljIGludCBwd3JzZXFfdW5pdF9kaXNhYmxlKHN0cnVjdCBwd3JzZXFfZGV2aWNlICpwd3JzZXEsXG4gICogUmV0dXJuczpcbiAgKiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIG51bWJlciBvbiBmYWlsdXJlLlxuICAqL1xuLWludCBwd3JzZXFfcG93ZXJfb24oc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxuK2ludCBwd3JzZXFfZW5hYmxlKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcbiB7XG4gXHRzdHJ1Y3QgcHdyc2VxX2RldmljZSAqcHdyc2VxO1xuIFx0c3RydWN0IHB3cnNlcV90YXJnZXQgKnRhcmdldDtcbkBAIC05MjUsMTQgKzkyNSwxNCBAQCBpbnQgcHdyc2VxX3Bvd2VyX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcbiBcbiBcdHJldHVybiByZXQ7XG4gfVxuLUVYUE9SVF9TWU1CT0xfR1BMKHB3cnNlcV9wb3dlcl9vbik7XG4rRVhQT1JUX1NZTUJPTF9HUEwocHdyc2VxX2VuYWJsZSk7XG4gXG4gLyoqXG4tICogcHdyc2VxX3Bvd2VyX29mZigpIC0gSXNzdWUgYSBwb3dlci1vZmYgcmVxdWVzdCBvbiBiZWhhbGYgb2YgdGhlIGNvbnN1bWVyXG4rICogcHdyc2VxX2Rpc2FibGUoKSAtIElzc3VlIGEgcG93ZXItb2ZmIHJlcXVlc3Qgb24gYmVoYWxmIG9mIHRoZSBjb25zdW1lclxuICAqICAgICAgICAgICAgICAgICAgICAgIGRldmljZS5cbiAgKiBAZGVzYzogRGVzY3JpcHRvciByZWZlcmVuY2luZyB0aGUgcG93ZXIgc2VxdWVuY2VyLlxuICAqXG4tICogVGhpcyB1bmRvZXMgdGhlIGVmZmVjdHMgb2YgcHdyc2VxX3Bvd2VyX29uKCkuIEl0IGlzc3VlcyBhIHBvd2VyLW9mZiByZXF1ZXN0XG4rICogVGhpcyB1bmRvZXMgdGhlIGVmZmVjdHMgb2YgcHdyc2VxX2VuYWJsZSgpLiBJdCBpc3N1ZXMgYSBwb3dlci1vZmYgcmVxdWVzdFxuICAqIG9uIGJlaGFsZiBvZiB0aGUgY29uc3VtZXIgYW5kIHdoZW4gdGhlIGxhc3QgcmVtYWluaW5nIHVzZXIgZG9lcyBzbywgdGhlXG4gICogcG93ZXItZG93biBzZXF1ZW5jZSB3aWxsIGJlIHN0YXJ0ZWQuIElmIG9uZSBpcyBpbiBwcm9ncmVzcywgdGhlIGZ1bmN0aW9uXG4gICogd2lsbCBibG9jayB1bnRpbCBpdCdzIGNvbXBsZXRlIGFuZCB0aGVuIHJldHVybi5cbkBAIC05NDAsNyArOTQwLDcgQEAgRVhQT1JUX1NZTUJPTF9HUEwocHdyc2VxX3Bvd2VyX29uKTtcbiAgKiBSZXR1cm5zOlxuICAqIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgbnVtYmVyIG9uIGZhaWx1cmUuXG4gICovXG4taW50IHB3cnNlcV9wb3dlcl9vZmYoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxuK2ludCBwd3JzZXFfZGlzYWJsZShzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXG4ge1xuIFx0c3RydWN0IHB3cnNlcV9kZXZpY2UgKnB3cnNlcTtcbiBcdHN0cnVjdCBwd3JzZXFfdW5pdCAqdW5pdDtcbkBAIC05NjYsNyArOTY2LDcgQEAgaW50IHB3cnNlcV9wb3dlcl9vZmYoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxuIFxuIFx0cmV0dXJuIHJldDtcbiB9XG4tRVhQT1JUX1NZTUJPTF9HUEwocHdyc2VxX3Bvd2VyX29mZik7XG4rRVhQT1JUX1NZTUJPTF9HUEwocHdyc2VxX2Rpc2FibGUpO1xuIFxuIC8qKlxuICAqIHB3cnNlcV90b19kZXZpY2UoKSAtIEdldCB0aGUgcHdyc2VxIGRldmljZSBwb2ludGVyIGZyb20gYSBkZXNjcmlwdG9yLlxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcHdyc2VxL2NvbnN1bWVyLmggYi9pbmNsdWRlL2xpbnV4L3B3cnNlcS9jb25zdW1lci5oXG5pbmRleCAzYzkwN2M5ZTE4ODVkLi4xNmZhZDVmM2UzYWI1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9wd3JzZXEvY29uc3VtZXIuaFxuKysrIGIvaW5jbHVkZS9saW51eC9wd3JzZXEvY29uc3VtZXIuaFxuQEAgLTIwLDggKzIwLDggQEAgdm9pZCBwd3JzZXFfcHV0KHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYyk7XG4gc3RydWN0IHB3cnNlcV9kZXNjICogX19tdXN0X2NoZWNrXG4gZGV2bV9wd3JzZXFfZ2V0KHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqdGFyZ2V0KTtcbiBcbi1pbnQgcHdyc2VxX3Bvd2VyX29uKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYyk7XG4taW50IHB3cnNlcV9wb3dlcl9vZmYoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTtcbitpbnQgcHdyc2VxX2VuYWJsZShzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpO1xuK2ludCBwd3JzZXFfZGlzYWJsZShzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpO1xuIFxuIHN0cnVjdCBkZXZpY2UgKnB3cnNlcV90b19kZXZpY2Uoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKTtcbiBcbkBAIC00MywxMiArNDMsMTIgQEAgZGV2bV9wd3JzZXFfZ2V0KHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqdGFyZ2V0KVxuIFx0cmV0dXJuIEVSUl9QVFIoLUVOT1NZUyk7XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgaW50IHB3cnNlcV9wb3dlcl9vbihzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXG4rc3RhdGljIGlubGluZSBpbnQgcHdyc2VxX2VuYWJsZShzdHJ1Y3QgcHdyc2VxX2Rlc2MgKmRlc2MpXG4ge1xuIFx0cmV0dXJuIC1FTk9TWVM7XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgaW50IHB3cnNlcV9wb3dlcl9vZmYoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxuK3N0YXRpYyBpbmxpbmUgaW50IHB3cnNlcV9kaXNhYmxlKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcbiB7XG4gXHRyZXR1cm4gLUVOT1NZUztcbiB9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMDowNDo0My4xMzAyNDQ0NjdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NzUyMTk1MDAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvd2VyIFNlcXVlbmNpbmcgU3Vic3lzdGVtIFJlbmFtZSBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaW4gZnJvbnQgb2YgbWUgdGhhdCdzIHJlbmFtaW5nIGBwd3JzZXFfcG93ZXJfb25gIHRvIGBwd3JzZXFfZW5hYmxlYCBhbmQgYHB3cnNlcV9wb3dlcl9vZmZgIHRvIGBwd3JzZXFfZGlzYWJsZWAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgXCJQdXJlIHJlbmFtaW5nLCByaWdodD8gTm8gZnVuY3Rpb25hbCBjaGFuZ2VzP1wiIExldCdzIGRpZyBpbi5cblxuVGhlIGRpZmYgc2hvd3MgdXBkYXRlcyB0byB0aGUgZG9jdW1lbnRhdGlvbiwgd2hpY2ggaXMgZXhwZWN0ZWQuIFRoZW4sIGl0J3MgYSBzd2VlcCB0aHJvdWdoIHZhcmlvdXMgY29uc3VtZXIgZmlsZXMgbGlrZSBgaGNpX3FjYS5jYCwgYHB2cl9wb3dlci5jYCwgYGF0aDEway9zbm9jLmNgLCBldGMuLCBzaW1wbHkgcmVwbGFjaW5nIHRob3NlIG9sZCBmdW5jdGlvbiBuYW1lcyB3aXRoIHRoZSBuZXcgb25lcy4gVGhlIGBwb3dlci9zZXF1ZW5jaW5nL2NvcmUuY2AgZmlsZSBpdHNlbGYgZ2V0cyB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbnMgcmVuYW1lZCwgYWxvbmcgd2l0aCBjb3JyZXNwb25kaW5nIGBFWFBPUlRfU1lNQk9MX0dQTGAgdXBkYXRlcy4gQW5kIG9mIGNvdXJzZSwgdGhlIGhlYWRlciBmaWxlIChgaW5jbHVkZS9saW51eC9wd3JzZXEvY29uc3VtZXIuaGApIHJlZmxlY3RzIHRoZSBzYW1lIGNoYW5nZSBpbiBkZWNsYXJhdGlvbnMgYW5kIGR1bW15IGZ1bmN0aW9ucy5cblxuU28sIGZ1bmN0aW9uYWxseSwgaXQgbG9va3MgbGlrZSBhIGNsZWFuIG5vLW9wLCByaWdodD8gSnVzdCByZW5hbWluZyBmdW5jdGlvbnMuIE5vIGFsdGVyYXRpb24gdG8gZXhlY3V0aW9uIGZsb3cuIFdhaXQgYSBtaW51dGUsIGRvZXMgdGhpcyBuZWVkIGZ1enppbmc/IEkgcmVjYWxsIHRoZSBndWlkZWxpbmVzLi4uIHNvbWV0aGluZyBhYm91dCBcIldvcnRoRnV6emluZz1mYWxzZVwiIGlmIGl0J3MgZG9jdW1lbnRhdGlvbiwgY29tbWVudHMsIGRlY29yYXRpdmUgY2hhbmdlcywgb3Igbm9uLWZ1bmN0aW9uYWwgbnVtZXJpYyBjaGFuZ2VzLi4uIFwiUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlc1wiIHRoYXQgZG9uJ3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LiBSZW5hbWluZyBmdW5jdGlvbnMgZG9lc24ndCBjaGFuZ2UgZXhlY3V0aW9uIGZsb3csIHNvIEkgYW0gbGVhbmluZyB0b3dhcmQgbm8uXG5cbkxldCdzIGRvIGEgbW9yZSB0aG9yb3VnaCBjaGVjayBhbmQgbWFrZSBzdXJlIHRoZXJlIGFyZSB0cnVseSBubyBvdGhlciBoaWRkZW4gY2hhbmdlcy4gU2Nyb2xsaW5nIHRocm91Z2ggdGhlIGNvcmUgZGVmaW5pdGlvbnMgYWdhaW4gY29uZmlybXMgdGhlIGNsZWFuIHJlbmFtaW5nOlxuYGBgY1xuLWludCBwd3JzZXFfcG93ZXJfb24oc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxuK2ludCBwd3JzZXFfZW5hYmxlKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcbmBgYFxuYGBgY1xuLWludCBwd3JzZXFfcG93ZXJfb2ZmKHN0cnVjdCBwd3JzZXFfZGVzYyAqZGVzYylcbitpbnQgcHdyc2VxX2Rpc2FibGUoc3RydWN0IHB3cnNlcV9kZXNjICpkZXNjKVxuYGBgXG5BbmQgaW4gYGhjaV9xY2EuY2A6XG5gYGBjXG4tXHRcdHB3cnNlcV9wb3dlcl9vZmYocG93ZXItXHUwMDNlcHdyc2VxKTtcbitcdFx0cHdyc2VxX2Rpc2FibGUocG93ZXItXHUwMDNlcHdyc2VxKTtcbmBgYFxuYGBgY1xuLVx0XHRyZXR1cm4gcHdyc2VxX3Bvd2VyX29uKHBvd2VyLVx1MDAzZXB3cnNlcSk7XG4rXHRcdHJldHVybiBwd3JzZXFfZW5hYmxlKHBvd2VyLVx1MDAzZXB3cnNlcSk7XG5gYGBcblllcCwgbm8gb3RoZXIgY2hhbmdlcy4gTm8gbG9naWMgdHdlYWtzLCBubyBuZXcgcGFyYW1ldGVycywgbm8gZGF0YSBzdHJ1Y3R1cmUgbW9kaWZpY2F0aW9ucy4gVGhpcyBpcyBhIHB1cmVseSBub24tZnVuY3Rpb25hbCByZWZhY3RvcmluZy5cblxuVGhlcmVmb3JlLCBteSBjb25jbHVzaW9uIGlzIHRoYXQgdGhpcyBwYXRjaCBkb2Vzbid0IHdhcnJhbnQgZnV6emluZy4gSSdsbCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgYW5kIGp1c3RpZnkgaXQgd2l0aCBhIGNsZWFyIHJlYXNvbjogXCJUaGUgcGF0Y2ggb25seSByZW5hbWVzIGBwd3JzZXFfcG93ZXJfb24vb2ZmYCB0byBgcHdyc2VxX2VuYWJsZS9kaXNhYmxlYCBhY3Jvc3MgdGhlIHBvd2VyIHNlcXVlbmNpbmcgc3Vic3lzdGVtIGFuZCBpdHMgY29uc3VtZXJzLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBleGVjdXRpb24gZmxvdy5cIiBEb25lLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzQxLCJPdXRwdXRUb2tlbnMiOjcyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjY2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjA6MDQ6NTIuODgyNDQyMDVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgcmVuYW1lcyBwd3JzZXFfcG93ZXJfb24vb2ZmIHRvIHB3cnNlcV9lbmFibGUvZGlzYWJsZSBhY3Jvc3MgdGhlIHBvd2VyIHNlcXVlbmNpbmcgc3Vic3lzdGVtIGFuZCBpdHMgY29uc3VtZXJzLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBleGVjdXRpb24gZmxvdy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgcmVuYW1lcyBwd3JzZXFfcG93ZXJfb24vb2ZmIHRvIHB3cnNlcV9lbmFibGUvZGlzYWJsZSBhY3Jvc3MgdGhlIHBvd2VyIHNlcXVlbmNpbmcgc3Vic3lzdGVtIGFuZCBpdHMgY29uc3VtZXJzLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBleGVjdXRpb24gZmxvdy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowqvd8s[1] Phase: Running StartedAt: 2026-08-01 20:05:05 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvd8s[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-01 20:05:05 +0000 UTC FinishedAt: 2026-08-01 20:05:09 +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,}