Name: series-workflowjwbdh Phase: Failed StartedAt: 2026-08-30 08:14:39 +0000 UTC FinishedAt: 2026-08-30 08:43:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjwbdh[0] Phase: Succeeded StartedAt: 2026-08-30 08:14:39 +0000 UTC FinishedAt: 2026-08-30 08:43:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjwbdh[0].run-triage Phase: Succeeded StartedAt: 2026-08-30 08:14:39 +0000 UTC FinishedAt: 2026-08-30 08:43:49 +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+CgkJCTx0ZD4yMDI2LzA4LzMwIDA4OjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTRtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7JiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBaXJvaGEgU29DIEdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jKSwgd2hpY2ggaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIHNwZWNpZmljIEFpcm9oYSBTb0NzIChlLmcuLCBFTjc1ODEvQU43NTgzKS4gSXQgcmVxdWlyZXMgcGh5c2ljYWwgU29DIGhhcmR3YXJlIGFuZCBkZXZpY2UgdHJlZSByZXNvdXJjZXMgbm90IGF2YWlsYWJsZSBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlc2UgY29kZSBwYXRocyB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMDg6Mjg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlOTZiZjliZGUzYzMxZDFkMzRmMTVkYzhlYjI4ZDQ4Y2FkNTY3ZTgyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMzAgMDg6Mjg6MjggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmNcbmluZGV4IDY0NjE5ZTlhNzA0ZGQuLmVmYjFkZDY5Y2MxNjUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jXG5AQCAtMywxMiAmIzQzOzMsMTQgQEBcbiAgKiBDb3B5cmlnaHQgKGMpIDIwMjQgQUlST0hBIEluY1xuICAqIEF1dGhvcjogTG9yZW56byBCaWFuY29uaSBcdTAwM2Nsb3JlbnpvQGtlcm5lbC5vcmdcdTAwM2VcbiAgKi9cbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgva3RpbWUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L29mLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9uZXQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L29mX3Jlc2VydmVkX21lbS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGxhdGZvcm1fZGV2aWNlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC90Y3AuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3U2NF9zdGF0c19zeW5jLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvd29ya3F1ZXVlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvZHN0X21ldGFkYXRhLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvcGFnZV9wb29sL2hlbHBlcnMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9wa3RfY2xzLmhcdTAwM2VcbkBAIC02NTcsNiAmIzQzOzY1OSw0NyBAQCBhaXJvaGFfcWRtYV9nZXRfZ2RtX2RldihzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoLCBzdHJ1Y3QgYWlyb2hhX3FkbWFfZGVzYyAqZGVzYylcbiBcdHJldHVybiBwb3J0LVx1MDAzZWRldnNbZF0gPyBwb3J0LVx1MDAzZWRldnNbZF0gOiBFUlJfUFRSKC1FTk9ERVYpO1xuIH1cbiBcbiYjNDM7LyogbnVtYmVyIG9mIGNvbnNlY3V0aXZlIHBvbGxzIHdoZXJlIGh3IGNvbXBsZXRpb24gKFJYX0RNQV9JRFgpIGFkdmFuY2VzXG4mIzQzOyAqIHdoaWxlIHRoZSBzdyBjb25zdW1lciAodGFpbCkgZG9lc24mIzM5O3QsIGJlZm9yZSBkZWNsYXJpbmcgdGhlIHJpbmcgc3R1Y2tcbiYjNDM7ICovXG4mIzQzOyNkZWZpbmUgQUlST0hBX1JYX1NUQUxMX1RIUkVTSE9MRFx0M1xuJiM0MztcbiYjNDM7LyogRGV0ZWN0IGFuIFJYIHJpbmcgd2hlcmUgaHcmIzM5O3Mgb3duIGNvbXBsZXRpb24gcG9pbnRlciAoUlhfRE1BX0lEWCkga2VlcHNcbiYjNDM7ICogbW92aW5nIHdoaWxlIHRoZSBzdyBjb25zdW1lciAocS1cdTAwM2V0YWlsKSBkb2VzbiYjMzk7dCAtIGkuZS4gaHcgaGFzIHdyaXR0ZW5cbiYjNDM7ICogZnVydGhlciBkZXNjcmlwdG9ycyBzb21ld2hlcmUgaW4gdGhlIHJpbmcsIGJ1dCB0aGUgc3RyaWN0bHkgc2VxdWVudGlhbFxuJiM0MzsgKiBjb25zdW1lciBjYW4gbmV2ZXIgcmVhY2ggdGhlbSBiZWNhdXNlIHRoZSBvbmUgYXQgcS1cdTAwM2VoZWFkLCB3aGljaCBpdCBpc1xuJiM0MzsgKiB3YWl0aW5nIG9uLCB3YXMgbmV2ZXIgbWFya2VkIERPTkUuIFRoaXMgaGFwcGVucyB3aGVuIGh3IHdyaXRlcyBhXG4mIzQzOyAqIGNvbXBsZXRlZCBkZXNjcmlwdG9yIHBhc3QgcS1cdTAwM2VoZWFkIGJlZm9yZSBhaXJvaGFfcWRtYV9maWxsX3J4X3F1ZXVlKClcbiYjNDM7ICogaGFzIHBvc3RlZCBhIGZyZXNoIGJ1ZmZlciB0aGVyZSwgZGVjb3VwbGVkIGZyb20gc3cmIzM5O3Mgb3duIHBvc3RpbmdcbiYjNDM7ICogYm9va2tlZXBpbmcuXG4mIzQzOyAqXG4mIzQzOyAqIERlbGliZXJhdGVseSBkb2VzIG5vdCBpbnNwZWN0IHJpbmcvZGVzY3JpcHRvciBtZW1vcnkgY29udGVudCB0byBkZXRlY3RcbiYjNDM7ICogdGhpczogYW4gZWFybGllciB2ZXJzaW9uIHNjYW5uZWQgYWhlYWQgZm9yIGEgRE9ORSBkZXNjcmlwdG9yIGFuZCB0cnVzdGVkXG4mIzQzOyAqIGl0cyBjb250ZW50LCB3aGljaCBjYXVzZWQgYSByZWFsIE9PTSBwYW5pYyBhZnRlciBpdCB3YW5kZXJlZCBpbnRvXG4mIzQzOyAqIGdlbnVpbmVseSB1bmluaXRpYWxpemVkIERNQSBtZW1vcnkgdGhhdCBjb2luY2lkZW50YWxseSBoYWQgdGhlIERPTkUgYml0XG4mIzQzOyAqIHNldC4gUlhfRE1BX0lEWCBpcyBhIGh3IHJlZ2lzdGVyIHdpdGggYSB3ZWxsLWRlZmluZWQgdmFsdWUgcmVnYXJkbGVzcyBvZlxuJiM0MzsgKiByaW5nIGNvbnRlbnQsIHNvIHRoaXMgY2FuJiMzOTt0IG1pc2ZpcmUgb24gZ2FyYmFnZSBtZW1vcnksIGFuZCBpZGxlIHJpbmdzXG4mIzQzOyAqIChubyBodyBwcm9ncmVzcyBlaXRoZXIpIGFyZSBuYXR1cmFsbHkgbGVmdCBhbG9uZS5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyB2b2lkIGFpcm9oYV9xZG1hX3J4X2NoZWNrX3N0YWxsKHN0cnVjdCBhaXJvaGFfcXVldWUgKnEpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWEgPSBxLVx1MDAzZXFkbWE7XG4mIzQzO1x0aW50IHFpZCA9IHEgLSBcdTAwMjZxZG1hLVx1MDAzZXFfcnhbMF07XG4mIzQzO1x0dTMyIGRtYV9pZHggPSBhaXJvaGFfcWRtYV9nZXQocWRtYSwgUkVHX1JYX0RNQV9JRFgocWlkKSxcbiYjNDM7XHRcdFx0XHQgICAgICBSWF9SSU5HX0RNQV9JRFhfTUFTSyk7XG4mIzQzO1xuJiM0MztcdGlmIChxLVx1MDAzZXN0YWxsX3RhaWwgPT0gcS1cdTAwM2V0YWlsIFx1MDAyNlx1MDAyNiBkbWFfaWR4ICE9IHEtXHUwMDNlc3RhbGxfZG1hX2lkeCkge1xuJiM0MztcdFx0aWYgKCYjNDM7JiM0MztxLVx1MDAzZXN0YWxsX2NvdW50IFx1MDAzZT0gQUlST0hBX1JYX1NUQUxMX1RIUkVTSE9MRCBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICAhdGVzdF9hbmRfc2V0X2JpdChxaWQsIHFkbWEtXHUwMDNlcnhfcmVjb3Zlcl9tYXNrKSlcbiYjNDM7XHRcdFx0c2NoZWR1bGVfd29yayhcdTAwMjZxZG1hLVx1MDAzZXJ4X3JlY292ZXJfd29yayk7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdHEtXHUwMDNlc3RhbGxfY291bnQgPSAwO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cS1cdTAwM2VzdGFsbF90YWlsID0gcS1cdTAwM2V0YWlsO1xuJiM0MztcdHEtXHUwMDNlc3RhbGxfZG1hX2lkeCA9IGRtYV9pZHg7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBhaXJvaGFfcWRtYV9yeF9wcm9jZXNzKHN0cnVjdCBhaXJvaGFfcXVldWUgKnEsIGludCBidWRnZXQpXG4ge1xuIFx0ZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyID0gcGFnZV9wb29sX2dldF9kbWFfZGlyKHEtXHUwMDNlcGFnZV9wb29sKTtcbkBAIC02NzUsOCAmIzQzOzcxOCwxMCBAQCBzdGF0aWMgaW50IGFpcm9oYV9xZG1hX3J4X3Byb2Nlc3Moc3RydWN0IGFpcm9oYV9xdWV1ZSAqcSwgaW50IGJ1ZGdldClcbiBcdFx0c3RydWN0IHBhZ2UgKnBhZ2U7XG4gXG4gXHRcdGRlc2NfY3RybCA9IGxlMzJfdG9fY3B1KFJFQURfT05DRShkZXNjLVx1MDAzZWN0cmwpKTtcbi1cdFx0aWYgKCEoZGVzY19jdHJsIFx1MDAyNiBRRE1BX0RFU0NfRE9ORV9NQVNLKSlcbiYjNDM7XHRcdGlmICghKGRlc2NfY3RybCBcdTAwMjYgUURNQV9ERVNDX0RPTkVfTUFTSykpIHtcbiYjNDM7XHRcdFx0YWlyb2hhX3FkbWFfcnhfY2hlY2tfc3RhbGwocSk7XG4gXHRcdFx0YnJlYWs7XG4mIzQzO1x0XHR9XG4gXG4gXHRcdGRtYV9ybWIoKTtcbiBcbkBAIC03ODQsMTMgJiM0Mzs4MjksMTUgQEAgc3RhdGljIGludCBhaXJvaGFfcWRtYV9yeF9uYXBpX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuIFx0XHRpbnQgaSwgcWlkID0gcSAtIFx1MDAyNnFkbWEtXHUwMDNlcV9yeFswXTtcbiBcdFx0aW50IGludHJfcmVnID0gcWlkIFx1MDAzYyBSWF9ET05FX0hJR0hfT0ZGU0VUID8gUURNQV9JTlRfUkVHX0lEWDFcbiBcdFx0XHRcdFx0XHRcdCA6IFFETUFfSU5UX1JFR19JRFgyO1xuJiM0MztcdFx0dTMyIGJpdCA9IHFpZCAlIFJYX0RPTkVfSElHSF9PRkZTRVQ7XG4gXG4gXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUocWRtYS1cdTAwM2VpcnFfYmFua3MpOyBpJiM0MzsmIzQzOykge1xuIFx0XHRcdGlmICghKEJJVChxaWQpIFx1MDAyNiBSWF9JUlFfQkFOS19QSU5fTUFTSyhpKSkpXG4gXHRcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0XHRhaXJvaGFfcWRtYV9pcnFfZW5hYmxlKFx1MDAyNnFkbWEtXHUwMDNlaXJxX2JhbmtzW2ldLCBpbnRyX3JlZyxcbi1cdFx0XHRcdFx0ICAgICAgIEJJVChxaWQgJSBSWF9ET05FX0hJR0hfT0ZGU0VUKSk7XG4mIzQzO1x0XHRcdFx0XHQgICAgICAgQklUKGJpdCkgfFxuJiM0MztcdFx0XHRcdFx0ICAgICAgIEJJVChiaXQgJiM0MzsgUlhfTk9fQ1BVX0RTQ1BfTE9XX09GRlNFVCkpO1xuIFx0XHR9XG4gXHR9XG4gXG5AQCAtODkyLDYgJiM0Mzs5MzksNzYgQEAgc3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfY2xlYW51cF9yeF9xdWV1ZShzdHJ1Y3QgYWlyb2hhX3F1ZXVlICpxKVxuIFx0XHRcdEZJRUxEX1BSRVAoUlhfUklOR19ETUFfSURYX01BU0ssIHEtXHUwMDNldGFpbCkpO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfcnhfcmVjb3Zlcl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYSA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgYWlyb2hhX3FkbWEsXG4mIzQzO1x0XHRcdFx0XHRcdCByeF9yZWNvdmVyX3dvcmspO1xuJiM0MztcdGludCBxaWQ7XG4mIzQzO1xuJiM0MztcdGZvcl9lYWNoX3NldF9iaXQocWlkLCBxZG1hLVx1MDAzZXJ4X3JlY292ZXJfbWFzaywgQUlST0hBX05VTV9SWF9SSU5HKSB7XG4mIzQzO1x0XHRzdHJ1Y3QgYWlyb2hhX3F1ZXVlICpxID0gXHUwMDI2cWRtYS1cdTAwM2VxX3J4W3FpZF07XG4mIzQzO1x0XHRrdGltZV90IHJ4X2RtYV9vZmZfdHM7XG4mIzQzO1x0XHRzNjQgcnhfZG1hX29mZl91cztcbiYjNDM7XHRcdHUzMiBzdGF0dXM7XG4mIzQzO1xuJiM0MztcdFx0aWYgKCFxLVx1MDAzZW5kZXNjKVxuJiM0MztcdFx0XHRnb3RvIG5leHQ7XG4mIzQzO1xuJiM0MztcdFx0bmFwaV9kaXNhYmxlKFx1MDAyNnEtXHUwMDNlbmFwaSk7XG4mIzQzO1xuJiM0MztcdFx0LyogR0xPQkFMX0NGR19SWF9ETUFfRU5fTUFTSyBpcyBwZXItUURNQSwgbm90IHBlci1yaW5nLCBzb1xuJiM0MztcdFx0ICogdGhpcyBwYXVzZXMgZXZlcnkgUlggcmluZyBvbiB0aGlzIFFETUEgaW5zdGFuY2UsIG5vdCBqdXN0XG4mIzQzO1x0XHQgKiB0aGUgc3RhbGxlZCBvbmUgLSB0cmFjayBob3cgbG9uZyBmb3IsIHNpbmNlIHRoYXQmIzM5O3MgdGhlXG4mIzQzO1x0XHQgKiByZWFsLXdvcmxkIGNvc3Qgb2YgcmVjb3Zlcnkgb24gdW5yZWxhdGVkIHJpbmdzLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRyeF9kbWFfb2ZmX3RzID0ga3RpbWVfZ2V0KCk7XG4mIzQzO1xuJiM0MztcdFx0YWlyb2hhX3FkbWFfY2xlYXIocWRtYSwgUkVHX1FETUFfR0xPQkFMX0NGRyxcbiYjNDM7XHRcdFx0XHQgIEdMT0JBTF9DRkdfUlhfRE1BX0VOX01BU0spO1xuJiM0MztcdFx0aWYgKHJlYWRfcG9sbF90aW1lb3V0KGFpcm9oYV9xZG1hX3JyLCBzdGF0dXMsXG4mIzQzO1x0XHRcdFx0ICAgICAgIShzdGF0dXMgXHUwMDI2IEdMT0JBTF9DRkdfUlhfRE1BX0JVU1lfTUFTSyksXG4mIzQzO1x0XHRcdFx0ICAgICAgVVNFQ19QRVJfTVNFQywgNTAgKiBVU0VDX1BFUl9NU0VDLCB0cnVlLFxuJiM0MztcdFx0XHRcdCAgICAgIHFkbWEsIFJFR19RRE1BX0dMT0JBTF9DRkcpKVxuJiM0MztcdFx0XHRkZXZfd2FybihxZG1hLVx1MDAzZWV0aC1cdTAwM2VkZXYsXG4mIzQzO1x0XHRcdFx0IFwmIzM0O3FpZD0lZCBSWCBETUEgYnVzeSB0aW1lb3V0IGR1cmluZyByZWNvdmVyeVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHQgcWlkKTtcbiYjNDM7XG4mIzQzO1x0XHQvKiBEcm9wIHdoYXRldmVyIGlzIGN1cnJlbnRseSBpbiBmbGlnaHQgb24gdGhpcyByaW5nIGFuZFxuJiM0MztcdFx0ICogcmUtYXJtIGl0IGZyb20gYSBrbm93bi1jbGVhbiBzdGF0ZS4gY2xlYW51cF9yeF9xdWV1ZSgpXG4mIzQzO1x0XHQgKiBvbmx5IGV2ZXIgdG91Y2hlcyB0aGUgc3ctb3duZWQgW3RhaWwsIGhlYWQpIHdpbmRvdyBhbmRcbiYjNDM7XHRcdCAqIHJlc3luY3MgYm90aCBSWF9DUFVfSURYIGFuZCBSWF9ETUFfSURYIHRvIGl0LCB3aGljaCBpc1xuJiM0MztcdFx0ICogd2hhdCB1bi13ZWRnZXMgYSByaW5nIHdoZXJlIGh3IHdyb3RlIHBhc3QgdGhlIHN3IGhlYWRcbiYjNDM7XHRcdCAqIHdpdGhvdXQgdGhlIGNvbnN1bWVyIGV2ZXIgYWR2YW5jaW5nIC0gbm8gbmVlZCB0byBmaWd1cmVcbiYjNDM7XHRcdCAqIG91dCB3aGljaCBkZXNjcmlwdG9yIGh3IGFjdHVhbGx5IHVzZWQuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGFpcm9oYV9xZG1hX2NsZWFudXBfcnhfcXVldWUocSk7XG4mIzQzO1x0XHRpZiAocS1cdTAwM2Vza2IpIHtcbiYjNDM7XHRcdFx0LyogZGlzY2FyZCB3aGF0ZXZlciBzY2F0dGVyLWdhdGhlciBmcmFtZSB3YXNcbiYjNDM7XHRcdFx0ICogbWlkLWFzc2VtYmx5IHdoZW4gdGhlIHN0YWxsIHdhcyBoaXQsIGNsZWFudXBfcnhfcXVldWUoKVxuJiM0MztcdFx0XHQgKiBhYm92ZSBvbmx5IHJlc3luY3MgdGhlIHJpbmcsIG5vdCB0aGlzXG4mIzQzO1x0XHRcdCAqL1xuJiM0MztcdFx0XHRkZXZfa2ZyZWVfc2tiKHEtXHUwMDNlc2tiKTtcbiYjNDM7XHRcdFx0cS1cdTAwM2Vza2IgPSBOVUxMO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0YWlyb2hhX3FkbWFfZmlsbF9yeF9xdWV1ZShxKTtcbiYjNDM7XG4mIzQzO1x0XHRhaXJvaGFfcWRtYV9zZXQocWRtYSwgUkVHX1FETUFfR0xPQkFMX0NGRyxcbiYjNDM7XHRcdFx0XHRHTE9CQUxfQ0ZHX1JYX0RNQV9FTl9NQVNLKTtcbiYjNDM7XHRcdHJ4X2RtYV9vZmZfdXMgPSBrdGltZV91c19kZWx0YShrdGltZV9nZXQoKSwgcnhfZG1hX29mZl90cyk7XG4mIzQzO1xuJiM0MztcdFx0cS1cdTAwM2VzdGFsbF9jb3VudCA9IDA7XG4mIzQzO1x0XHRuYXBpX2VuYWJsZShcdTAwMjZxLVx1MDAzZW5hcGkpO1xuJiM0MztcdFx0bmFwaV9zY2hlZHVsZShcdTAwMjZxLVx1MDAzZW5hcGkpO1xuJiM0MztcbiYjNDM7XHRcdHFkbWEtXHUwMDNlcnhfcmVjb3Zlcl9jb3VudCYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRkZXZfd2Fybl9yYXRlbGltaXRlZChxZG1hLVx1MDAzZWV0aC1cdTAwM2VkZXYsXG4mIzQzO1x0XHRcdFx0ICAgICBcJiMzNDtxaWQ9JWQgUlggcmluZyByZWNvdmVyZWQgYWZ0ZXIgaHcgc3RhbGwgKFJYIERNQSBwYXVzZWQgZm9yICVsbGQgdXMgb24gdGhpcyBRRE1BIGluc3RhbmNlKVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHQgICAgIHFpZCwgcnhfZG1hX29mZl91cyk7XG4mIzQzO25leHQ6XG4mIzQzO1x0XHRjbGVhcl9iaXQocWlkLCBxZG1hLVx1MDAzZXJ4X3JlY292ZXJfbWFzayk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgYWlyb2hhX3FkbWFfaW5pdF9yeChzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWEpXG4ge1xuIFx0aW50IGk7XG5AQCAtMTQ2OCwxNiAmIzQzOzE1ODUsMzIgQEAgc3RhdGljIGlycXJldHVybl90IGFpcm9oYV9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkZXZfaW5zdGFuY2UpXG4gXHRpZiAoIXRlc3RfYml0KERFVl9TVEFURV9JTklUSUFMSVpFRCwgXHUwMDI2cWRtYS1cdTAwM2VldGgtXHUwMDNlc3RhdGUpKVxuIFx0XHRyZXR1cm4gSVJRX05PTkU7XG4gXG4tXHRyeF9pbnRyMSA9IGludHJbMV0gXHUwMDI2IFJYX0RPTkVfTE9XX0lOVF9NQVNLO1xuJiM0MztcdC8qIEEgcmluZyBjYW4gYWxzbyByYWlzZSBOT19DUFVfRFNDUCB3aGVuIGl0IHJ1bnMgb3V0IG9mIGZyZWUgUlhcbiYjNDM7XHQgKiBkZXNjcmlwdG9ycyAoZS5nLiBhIGJ1cnN0IG9mIFZJUC1jbGFzc2lmaWVkIGNvbnRyb2wgdHJhZmZpY1xuJiM0MztcdCAqIGZvcmNlZCBvbnRvIGEgc21hbGwgcmluZykuIE9uY2UgYSByaW5nIGlzIGZ1bGx5IGRyYWluZWQgbm8gbW9yZVxuJiM0MztcdCAqIFJYX0RPTkUgaW50ZXJydXB0cyBjYW4gZmlyZSBmb3IgaXQsIHNpbmNlIHRoZXJlIGFyZSBubyBmcmVlXG4mIzQzO1x0ICogZGVzY3JpcHRvcnMgbGVmdCBmb3IgaGFyZHdhcmUgdG8gcmVjZWl2ZSBpbnRvLCBzbyB3aXRob3V0IHRoaXNcbiYjNDM7XHQgKiBOQVBJIGlzIG5ldmVyIHJlc2NoZWR1bGVkIGFuZCB0aGUgcmluZyBuZXZlciBnZXRzIHJlZmlsbGVkIGFnYWluLlxuJiM0MztcdCAqIFRyZWF0IE5PX0NQVV9EU0NQIHRoZSBzYW1lIGFzIFJYX0RPTkUgZm9yIHNjaGVkdWxpbmcgTkFQSTpcbiYjNDM7XHQgKiBhaXJvaGFfcWRtYV9yeF9wcm9jZXNzKCkgdW5jb25kaXRpb25hbGx5IGNhbGxzXG4mIzQzO1x0ICogYWlyb2hhX3FkbWFfZmlsbF9yeF9xdWV1ZSgpIGF0IHRoZSBlbmQgb2YgZXZlcnkgcG9sbCwgZXZlbiB3aGVuXG4mIzQzO1x0ICogemVybyBkZXNjcmlwdG9ycyB3ZXJlIHJlYXBlZCwgc28gdGhpcyBhbG9uZSBpcyBlbm91Z2ggdG8gcmVjb3ZlclxuJiM0MztcdCAqIHRoZSByaW5nLlxuJiM0MztcdCAqL1xuJiM0MztcdHJ4X2ludHIxID0gaW50clsxXSBcdTAwMjYgKFJYX0RPTkVfTE9XX0lOVF9NQVNLIHwgUlhfTk9fQ1BVX0RTQ1BfTE9XX0lOVF9NQVNLKTtcbiBcdGlmIChyeF9pbnRyMSkge1xuIFx0XHRhaXJvaGFfcWRtYV9pcnFfZGlzYWJsZShpcnFfYmFuaywgUURNQV9JTlRfUkVHX0lEWDEsIHJ4X2ludHIxKTtcbi1cdFx0cnhfaW50cl9tYXNrIHw9IHJ4X2ludHIxO1xuJiM0MztcdFx0cnhfaW50cl9tYXNrIHw9IChyeF9pbnRyMSBcdTAwMjYgUlhfRE9ORV9MT1dfSU5UX01BU0spIHxcbiYjNDM7XHRcdFx0XHQoKHJ4X2ludHIxIFx1MDAyNiBSWF9OT19DUFVfRFNDUF9MT1dfSU5UX01BU0spIFx1MDAzZVx1MDAzZVxuJiM0MztcdFx0XHRcdCBSWF9OT19DUFVfRFNDUF9MT1dfT0ZGU0VUKTtcbiBcdH1cbiBcbi1cdHJ4X2ludHIyID0gaW50clsyXSBcdTAwMjYgUlhfRE9ORV9ISUdIX0lOVF9NQVNLO1xuJiM0MztcdHJ4X2ludHIyID0gaW50clsyXSBcdTAwMjYgKFJYX0RPTkVfSElHSF9JTlRfTUFTSyB8IFJYX05PX0NQVV9EU0NQX0hJR0hfSU5UX01BU0spO1xuIFx0aWYgKHJ4X2ludHIyKSB7XG4gXHRcdGFpcm9oYV9xZG1hX2lycV9kaXNhYmxlKGlycV9iYW5rLCBRRE1BX0lOVF9SRUdfSURYMiwgcnhfaW50cjIpO1xuLVx0XHRyeF9pbnRyX21hc2sgfD0gKHJ4X2ludHIyIFx1MDAzY1x1MDAzYyAxNik7XG4mIzQzO1x0XHRyeF9pbnRyX21hc2sgfD0gKChyeF9pbnRyMiBcdTAwMjYgUlhfRE9ORV9ISUdIX0lOVF9NQVNLKSB8XG4mIzQzO1x0XHRcdFx0ICgocnhfaW50cjIgXHUwMDI2IFJYX05PX0NQVV9EU0NQX0hJR0hfSU5UX01BU0spIFx1MDAzZVx1MDAzZVxuJiM0MztcdFx0XHRcdCAgUlhfTk9fQ1BVX0RTQ1BfTE9XX09GRlNFVCkpIFx1MDAzY1x1MDAzYyAxNjtcbiBcdH1cbiBcbiBcdGZvciAoaSA9IDA7IHJ4X2ludHJfbWFzayBcdTAwMjZcdTAwMjYgaSBcdTAwM2MgQVJSQVlfU0laRShxZG1hLVx1MDAzZXFfcngpOyBpJiM0MzsmIzQzOykge1xuQEAgLTE1NzYsNiAmIzQzOzE3MDksOCBAQCBzdGF0aWMgdm9pZCBhaXJvaGFfcWRtYV9jbGVhbnVwKHN0cnVjdCBhaXJvaGFfZXRoICpldGgsXG4ge1xuIFx0aW50IGk7XG4gXG4mIzQzO1x0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZxZG1hLVx1MDAzZXJ4X3JlY292ZXJfd29yayk7XG4mIzQzO1xuIFx0aWYgKHRlc3RfYml0KERFVl9TVEFURV9JTklUSUFMSVpFRCwgXHUwMDI2ZXRoLVx1MDAzZXN0YXRlKSkge1xuIFx0XHR1MzIgc3RhdHVzO1xuIFxuQEAgLTE2MzMsNiAmIzQzOzE3NjgsMTUgQEAgc3RhdGljIGludCBhaXJvaGFfaHdfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuIFx0aWYgKGVycilcbiBcdFx0cmV0dXJuIGVycjtcbiBcbiYjNDM7XHQvKiBJTklUX1dPUksoKSBldmVyeSBpbnN0YW5jZSB1cCBmcm9udCwgYmVmb3JlIGFueSBvZiB0aGVtIGNhbiBmYWlsXG4mIzQzO1x0ICogaW5pdCBhbmQganVtcCB0byB0aGUgZXJyb3IgcGF0aCBiZWxvdywgc2luY2UgdGhhdCBwYXRoIHRlYXJzIGRvd25cbiYjNDM7XHQgKiBldmVyeSBldGgtXHUwMDNlcWRtYVtdIHNsb3QgdW5jb25kaXRpb25hbGx5LCBpbmNsdWRpbmcgb25lcyB0aGlzIGxvb3BcbiYjNDM7XHQgKiBuZXZlciByZWFjaGVkLlxuJiM0MztcdCAqL1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoZXRoLVx1MDAzZXFkbWEpOyBpJiM0MzsmIzQzOylcbiYjNDM7XHRcdElOSVRfV09SSyhcdTAwMjZldGgtXHUwMDNlcWRtYVtpXS5yeF9yZWNvdmVyX3dvcmssXG4mIzQzO1x0XHRcdCAgYWlyb2hhX3FkbWFfcnhfcmVjb3Zlcl93b3JrKTtcbiYjNDM7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGV0aC1cdTAwM2VxZG1hKTsgaSYjNDM7JiM0MzspIHtcbiBcdFx0ZXJyID0gYWlyb2hhX3FkbWFfaW5pdChwZGV2LCBldGgsIFx1MDAyNmV0aC1cdTAwM2VxZG1hW2ldKTtcbiBcdFx0aWYgKGVycilcbkBAIC0xNjgxLDYgJiM0MzsxODI1LDE0IEBAIHN0YXRpYyB2b2lkIGFpcm9oYV9xZG1hX3N0b3BfbmFwaShzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWEpXG4ge1xuIFx0aW50IGk7XG4gXG4mIzQzO1x0LyogTWFrZSBzdXJlIHJ4X3JlY292ZXJfd29yayBpcyBuZWl0aGVyIHJ1bm5pbmcgbm9yIGFibGUgdG8gcmUtYXJtXG4mIzQzO1x0ICogYmVmb3JlIGFueSBuYXBpX2Rpc2FibGUoKSBiZWxvdzogaXQgYWxzbyBjYWxscyBuYXBpX2Rpc2FibGUoKS9cbiYjNDM7XHQgKiBuYXBpX2VuYWJsZSgpIG9uIHFfcnhbXS5uYXBpLCBhbmQgbmFwaV9kaXNhYmxlKCkgb24gYW5cbiYjNDM7XHQgKiBhbHJlYWR5LWRpc2FibGVkIE5BUEkgc3BpbnMgaW4gbmFwaV9kaXNhYmxlX2xvY2tlZCgpIGZvcmV2ZXIsXG4mIzQzO1x0ICogc2luY2Ugb25seSBuYXBpX2VuYWJsZSgpIGNsZWFycyB0aGUgc3RhdGUgaXQgd2FpdHMgb24uXG4mIzQzO1x0ICovXG4mIzQzO1x0ZGlzYWJsZV93b3JrX3N5bmMoXHUwMDI2cWRtYS1cdTAwM2VyeF9yZWNvdmVyX3dvcmspO1xuJiM0MztcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUocWRtYS1cdTAwM2VxX3R4X2lycSk7IGkmIzQzOyYjNDM7KVxuIFx0XHRuYXBpX2Rpc2FibGUoXHUwMDI2cWRtYS1cdTAwM2VxX3R4X2lycVtpXS5uYXBpKTtcbiBcbkBAIC0yNDQ5LDYgJiM0MzsyNjAxLDQ2IEBAIHN0YXRpYyB2b2lkIGFpcm9oYV9ldGh0b29sX2dldF9kcnZpbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4gXHRzdHJzY3B5KGluZm8tXHUwMDNlYnVzX2luZm8sIGRldl9uYW1lKGV0aC1cdTAwM2VkZXYpLCBzaXplb2YoaW5mby1cdTAwM2VidXNfaW5mbykpO1xuIH1cbiBcbiYjNDM7c3RhdGljIGNvbnN0IGNoYXIgYWlyb2hhX2V0aHRvb2xfc3RhdHNfc3RyW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcbiYjNDM7XHRcJiMzNDtyeF9zdGFsbF9yZWNvdmVyXCYjMzQ7LFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgYWlyb2hhX2V0aHRvb2xfZ2V0X3N0cmluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdTMyIHNzZXQsXG4mIzQzO1x0XHRcdFx0ICAgICAgIHU4ICpkYXRhKVxuJiM0Mzt7XG4mIzQzO1x0aW50IGk7XG4mIzQzO1xuJiM0MztcdGlmIChzc2V0ICE9IEVUSF9TU19TVEFUUylcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShhaXJvaGFfZXRodG9vbF9zdGF0c19zdHIpOyBpJiM0MzsmIzQzOylcbiYjNDM7XHRcdGV0aHRvb2xfcHV0cyhcdTAwMjZkYXRhLCBhaXJvaGFfZXRodG9vbF9zdGF0c19zdHJbaV0pO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IGFpcm9oYV9ldGh0b29sX2dldF9zc2V0X2NvdW50KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBzc2V0KVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIHNzZXQgPT0gRVRIX1NTX1NUQVRTID9cbiYjNDM7XHQgICAgICAgQVJSQVlfU0laRShhaXJvaGFfZXRodG9vbF9zdGF0c19zdHIpIDogLUVPUE5PVFNVUFA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIGFpcm9oYV9ldGh0b29sX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4mIzQzO1x0XHRcdFx0XHQgICAgIHN0cnVjdCBldGh0b29sX3N0YXRzICpzdGF0cyxcbiYjNDM7XHRcdFx0XHRcdCAgICAgdTY0ICpkYXRhKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGFpcm9oYV9nZG1fZGV2ICpkZXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuJiM0MztcdHN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYTtcbiYjNDM7XG4mIzQzO1x0cmN1X3JlYWRfbG9jaygpO1xuJiM0MztcdHFkbWEgPSByY3VfZGVyZWZlcmVuY2UoZGV2LVx1MDAzZXFkbWEpO1xuJiM0MztcdC8qIGFnZ3JlZ2F0ZSByZWNvdmVyeSBjb3VudCBmb3IgdGhlIHdob2xlIHFkbWEgaW5zdGFuY2U6IHRoZVxuJiM0MztcdCAqIHN0YWxsZWQgcmluZyBjYW4gY2FycnkgdHJhZmZpYyBmb3IgbW9yZSB0aGFuIG9uZSBuZXRkZXYgKFZJUFxuJiM0MztcdCAqIGNsYXNzaWZpY2F0aW9uIHNoYXJlcyByaW5nIDQgYWNyb3NzIHNldmVyYWwgcHJvdG9jb2xzL3BvcnRzKSxcbiYjNDM7XHQgKiBzbyB0aGVyZSYjMzk7cyBubyBzaW5nbGUgbmV0ZGV2IHRvIGF0dHJpYnV0ZSBhbiBpbmRpdmlkdWFsIGV2ZW50IHRvXG4mIzQzO1x0ICovXG4mIzQzO1x0ZGF0YVswXSA9IHFkbWEgPyBxZG1hLVx1MDAzZXJ4X3JlY292ZXJfY291bnQgOiAwO1xuJiM0MztcdHJjdV9yZWFkX3VubG9jaygpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB2b2lkIGFpcm9oYV9ldGh0b29sX2dldF9tYWNfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbiBcdFx0XHRcdFx0IHN0cnVjdCBldGh0b29sX2V0aF9tYWNfc3RhdHMgKnN0YXRzKVxuIHtcbkBAIC0zMzUxLDYgJiM0MzszNTQzLDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBhaXJvaGFfbmV0ZGV2X29wcyA9IHtcbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGFpcm9oYV9ldGh0b29sX29wcyA9IHtcbiBcdC5nZXRfZHJ2aW5mb1x0XHQ9IGFpcm9oYV9ldGh0b29sX2dldF9kcnZpbmZvLFxuJiM0MztcdC5nZXRfc3RyaW5nc1x0XHQ9IGFpcm9oYV9ldGh0b29sX2dldF9zdHJpbmdzLFxuJiM0MztcdC5nZXRfc3NldF9jb3VudFx0XHQ9IGFpcm9oYV9ldGh0b29sX2dldF9zc2V0X2NvdW50LFxuJiM0MztcdC5nZXRfZXRodG9vbF9zdGF0c1x0PSBhaXJvaGFfZXRodG9vbF9nZXRfZXRodG9vbF9zdGF0cyxcbiBcdC5nZXRfZXRoX21hY19zdGF0cyAgICAgID0gYWlyb2hhX2V0aHRvb2xfZ2V0X21hY19zdGF0cyxcbiBcdC5nZXRfcm1vbl9zdGF0c1x0XHQ9IGFpcm9oYV9ldGh0b29sX2dldF9ybW9uX3N0YXRzLFxuIFx0LmdldF9saW5rX2tzZXR0aW5nc1x0PSBwaHlfZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3MsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmhcbmluZGV4IGZhOWE4ZWRjZTIyZmYuLmNkNzVjMTZkOGQwYzcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oXG5AQCAtNDEsNiAmIzQzOzQxLDcgQEBcbiAjZGVmaW5lIFRYX0RTQ1BfTlVNXHRcdFx0MTAyNFxuICNkZWZpbmUgUlhfRFNDUF9OVU0oX24pXHRcdFx0XFxcbiBcdCgoX24pID09ICAyID8gMTI4IDpcdFx0XFxcbiYjNDM7XHQgKF9uKSA9PSAgNCA/IDEyOCA6XHRcdFxcXG4gXHQgKF9uKSA9PSAxMSA/IDEyOCA6XHRcdFxcXG4gXHQgKF9uKSA9PSAxNSA/IDEyOCA6XHRcdFxcXG4gXHQgKF9uKSA9PSAgMCA/IDEwMjQgOiAxNilcbkBAIC0yMDcsNiAmIzQzOzIwOCwxNSBAQCBzdHJ1Y3QgYWlyb2hhX3F1ZXVlIHtcbiBcdGJvb2wgdHhxX3N0b3BwZWQ7XG4gXHRib29sIGZsdXNoaW5nO1xuIFxuJiM0MztcdC8qIFJYIGh3IHN0YWxsIGRldGVjdGlvbjogbGFzdCBSRUdfUlhfRE1BX0lEWC90YWlsIHNuYXBzaG90IHRha2VuXG4mIzQzO1x0ICogd2hlbmV2ZXIgdGhlIGhlYWQtb2YtbGluZSBkZXNjcmlwdG9yIGlzbiYjMzk7dCBET05FLCBhbmQgaG93IG1hbnlcbiYjNDM7XHQgKiBjb25zZWN1dGl2ZSB0aW1lcyBodyBtYWRlIHByb2dyZXNzIChETUFfSURYIG1vdmVkKSB3aGlsZSB0aGVcbiYjNDM7XHQgKiBjb25zdW1lciAodGFpbCkgZGlkbiYjMzk7dC4gU2VlIGFpcm9oYV9xZG1hX3J4X2NoZWNrX3N0YWxsKCkuXG4mIzQzO1x0ICovXG4mIzQzO1x0dTMyIHN0YWxsX2RtYV9pZHg7XG4mIzQzO1x0dTE2IHN0YWxsX3RhaWw7XG4mIzQzO1x0dTggc3RhbGxfY291bnQ7XG4mIzQzO1xuIFx0c3RydWN0IG5hcGlfc3RydWN0IG5hcGk7XG4gXHRzdHJ1Y3QgcGFnZV9wb29sICpwYWdlX3Bvb2w7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuQEAgLTU2Nyw2ICYjNDM7NTc3LDE4IEBAIHN0cnVjdCBhaXJvaGFfcWRtYSB7XG4gXHRzdHJ1Y3QgYWlyb2hhX3F1ZXVlIHFfdHhbQUlST0hBX05VTV9UWF9SSU5HXTtcbiBcdHN0cnVjdCBhaXJvaGFfcXVldWUgcV9yeFtBSVJPSEFfTlVNX1JYX1JJTkddO1xuIFxuJiM0MztcdC8qIHJlY292ZXJ5IGZvciBSWCByaW5ncyB3aG9zZSBodyBjb21wbGV0aW9uIHBvaW50ZXIgKFJYX0RNQV9JRFgpXG4mIzQzO1x0ICoga2VlcHMgbW92aW5nIHdoaWxlIHRoZSBzdyBjb25zdW1lciBpcyBzdHVjazsgc2VlXG4mIzQzO1x0ICogYWlyb2hhX3FkbWFfcnhfY2hlY2tfc3RhbGwoKSBhbmQgYWlyb2hhX3FkbWFfcnhfcmVjb3Zlcl93b3JrKCkuXG4mIzQzO1x0ICovXG4mIzQzO1x0c3RydWN0IHdvcmtfc3RydWN0IHJ4X3JlY292ZXJfd29yaztcbiYjNDM7XHRERUNMQVJFX0JJVE1BUChyeF9yZWNvdmVyX21hc2ssIEFJUk9IQV9OVU1fUlhfUklORyk7XG4mIzQzO1x0LyogY291bnQgb2YgY29tcGxldGVkIGh3LXN0YWxsIHJlY292ZXJpZXMsIGV4cG9zZWQgdmlhIGV0aHRvb2wgLVNcbiYjNDM7XHQgKiBzbyBhIHJlY292ZXJ5IGV2ZW50IChhbmQgdGhlIHBhY2tldHMgaXQgZHJvcHMpIGlzIG9ic2VydmFibGVcbiYjNDM7XHQgKiB3aXRob3V0IGdyZXBwaW5nIGRtZXNnIGZvciB0aGUgZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoKSBhYm92ZVxuJiM0MztcdCAqL1xuJiM0MztcdHUzMiByeF9yZWNvdmVyX2NvdW50O1xuJiM0MztcbiBcdERFQ0xBUkVfQklUTUFQKHFvc19jaGFubmVsX21hcCwgQUlST0hBX05VTV9RT1NfQ0hBTk5FTFMpO1xuIH07XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMDg6Mjg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTRtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBaXJvaGEgU29DIEdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jKSwgd2hpY2ggaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIHNwZWNpZmljIEFpcm9oYSBTb0NzIChlLmcuLCBFTjc1ODEvQU43NTgzKS4gSXQgcmVxdWlyZXMgcGh5c2ljYWwgU29DIGhhcmR3YXJlIGFuZCBkZXZpY2UgdHJlZSByZXNvdXJjZXMgbm90IGF2YWlsYWJsZSBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlc2UgY29kZSBwYXRocyB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlOTZiZjliZGUzYzMxZDFkMzRmMTVkYzhlYjI4ZDQ4Y2FkNTY3ZTgyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMzAgMDg6Mjg6MjggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYwppbmRleCA2NDYxOWU5YTcwNGRkLi5lZmIxZGQ2OWNjMTY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMKQEAgLTMsMTIgJiM0MzszLDE0IEBACiAgKiBDb3B5cmlnaHQgKGMpIDIwMjQgQUlST0hBIEluYwogICogQXV0aG9yOiBMb3JlbnpvIEJpYW5jb25pICZsdDtsb3JlbnpvQGtlcm5lbC5vcmcmZ3Q7CiAgKi8KJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgva3RpbWUuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9vZi5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L29mX25ldC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L29mX3Jlc2VydmVkX21lbS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BsYXRmb3JtX2RldmljZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3RjcC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3U2NF9zdGF0c19zeW5jLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3dvcmtxdWV1ZS5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9kc3RfbWV0YWRhdGEuaCZndDsKICNpbmNsdWRlICZsdDtuZXQvcGFnZV9wb29sL2hlbHBlcnMuaCZndDsKICNpbmNsdWRlICZsdDtuZXQvcGt0X2Nscy5oJmd0OwpAQCAtNjU3LDYgJiM0Mzs2NTksNDcgQEAgYWlyb2hhX3FkbWFfZ2V0X2dkbV9kZXYoc3RydWN0IGFpcm9oYV9ldGggKmV0aCwgc3RydWN0IGFpcm9oYV9xZG1hX2Rlc2MgKmRlc2MpCiAJcmV0dXJuIHBvcnQtJmd0O2RldnNbZF0gPyBwb3J0LSZndDtkZXZzW2RdIDogRVJSX1BUUigtRU5PREVWKTsKIH0KIAomIzQzOy8qIG51bWJlciBvZiBjb25zZWN1dGl2ZSBwb2xscyB3aGVyZSBodyBjb21wbGV0aW9uIChSWF9ETUFfSURYKSBhZHZhbmNlcwomIzQzOyAqIHdoaWxlIHRoZSBzdyBjb25zdW1lciAodGFpbCkgZG9lc24mIzM5O3QsIGJlZm9yZSBkZWNsYXJpbmcgdGhlIHJpbmcgc3R1Y2sKJiM0MzsgKi8KJiM0MzsjZGVmaW5lIEFJUk9IQV9SWF9TVEFMTF9USFJFU0hPTEQJMwomIzQzOwomIzQzOy8qIERldGVjdCBhbiBSWCByaW5nIHdoZXJlIGh3JiMzOTtzIG93biBjb21wbGV0aW9uIHBvaW50ZXIgKFJYX0RNQV9JRFgpIGtlZXBzCiYjNDM7ICogbW92aW5nIHdoaWxlIHRoZSBzdyBjb25zdW1lciAocS0mZ3Q7dGFpbCkgZG9lc24mIzM5O3QgLSBpLmUuIGh3IGhhcyB3cml0dGVuCiYjNDM7ICogZnVydGhlciBkZXNjcmlwdG9ycyBzb21ld2hlcmUgaW4gdGhlIHJpbmcsIGJ1dCB0aGUgc3RyaWN0bHkgc2VxdWVudGlhbAomIzQzOyAqIGNvbnN1bWVyIGNhbiBuZXZlciByZWFjaCB0aGVtIGJlY2F1c2UgdGhlIG9uZSBhdCBxLSZndDtoZWFkLCB3aGljaCBpdCBpcwomIzQzOyAqIHdhaXRpbmcgb24sIHdhcyBuZXZlciBtYXJrZWQgRE9ORS4gVGhpcyBoYXBwZW5zIHdoZW4gaHcgd3JpdGVzIGEKJiM0MzsgKiBjb21wbGV0ZWQgZGVzY3JpcHRvciBwYXN0IHEtJmd0O2hlYWQgYmVmb3JlIGFpcm9oYV9xZG1hX2ZpbGxfcnhfcXVldWUoKQomIzQzOyAqIGhhcyBwb3N0ZWQgYSBmcmVzaCBidWZmZXIgdGhlcmUsIGRlY291cGxlZCBmcm9tIHN3JiMzOTtzIG93biBwb3N0aW5nCiYjNDM7ICogYm9va2tlZXBpbmcuCiYjNDM7ICoKJiM0MzsgKiBEZWxpYmVyYXRlbHkgZG9lcyBub3QgaW5zcGVjdCByaW5nL2Rlc2NyaXB0b3IgbWVtb3J5IGNvbnRlbnQgdG8gZGV0ZWN0CiYjNDM7ICogdGhpczogYW4gZWFybGllciB2ZXJzaW9uIHNjYW5uZWQgYWhlYWQgZm9yIGEgRE9ORSBkZXNjcmlwdG9yIGFuZCB0cnVzdGVkCiYjNDM7ICogaXRzIGNvbnRlbnQsIHdoaWNoIGNhdXNlZCBhIHJlYWwgT09NIHBhbmljIGFmdGVyIGl0IHdhbmRlcmVkIGludG8KJiM0MzsgKiBnZW51aW5lbHkgdW5pbml0aWFsaXplZCBETUEgbWVtb3J5IHRoYXQgY29pbmNpZGVudGFsbHkgaGFkIHRoZSBET05FIGJpdAomIzQzOyAqIHNldC4gUlhfRE1BX0lEWCBpcyBhIGh3IHJlZ2lzdGVyIHdpdGggYSB3ZWxsLWRlZmluZWQgdmFsdWUgcmVnYXJkbGVzcyBvZgomIzQzOyAqIHJpbmcgY29udGVudCwgc28gdGhpcyBjYW4mIzM5O3QgbWlzZmlyZSBvbiBnYXJiYWdlIG1lbW9yeSwgYW5kIGlkbGUgcmluZ3MKJiM0MzsgKiAobm8gaHcgcHJvZ3Jlc3MgZWl0aGVyKSBhcmUgbmF0dXJhbGx5IGxlZnQgYWxvbmUuCiYjNDM7ICovCiYjNDM7c3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfcnhfY2hlY2tfc3RhbGwoc3RydWN0IGFpcm9oYV9xdWV1ZSAqcSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYSA9IHEtJmd0O3FkbWE7CiYjNDM7CWludCBxaWQgPSBxIC0gJmFtcDtxZG1hLSZndDtxX3J4WzBdOwomIzQzOwl1MzIgZG1hX2lkeCA9IGFpcm9oYV9xZG1hX2dldChxZG1hLCBSRUdfUlhfRE1BX0lEWChxaWQpLAomIzQzOwkJCQkgICAgICBSWF9SSU5HX0RNQV9JRFhfTUFTSyk7CiYjNDM7CiYjNDM7CWlmIChxLSZndDtzdGFsbF90YWlsID09IHEtJmd0O3RhaWwgJmFtcDsmYW1wOyBkbWFfaWR4ICE9IHEtJmd0O3N0YWxsX2RtYV9pZHgpIHsKJiM0MzsJCWlmICgmIzQzOyYjNDM7cS0mZ3Q7c3RhbGxfY291bnQgJmd0Oz0gQUlST0hBX1JYX1NUQUxMX1RIUkVTSE9MRCAmYW1wOyZhbXA7CiYjNDM7CQkgICAgIXRlc3RfYW5kX3NldF9iaXQocWlkLCBxZG1hLSZndDtyeF9yZWNvdmVyX21hc2spKQomIzQzOwkJCXNjaGVkdWxlX3dvcmsoJmFtcDtxZG1hLSZndDtyeF9yZWNvdmVyX3dvcmspOwomIzQzOwl9IGVsc2UgewomIzQzOwkJcS0mZ3Q7c3RhbGxfY291bnQgPSAwOwomIzQzOwl9CiYjNDM7CiYjNDM7CXEtJmd0O3N0YWxsX3RhaWwgPSBxLSZndDt0YWlsOwomIzQzOwlxLSZndDtzdGFsbF9kbWFfaWR4ID0gZG1hX2lkeDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IGFpcm9oYV9xZG1hX3J4X3Byb2Nlc3Moc3RydWN0IGFpcm9oYV9xdWV1ZSAqcSwgaW50IGJ1ZGdldCkKIHsKIAllbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIgPSBwYWdlX3Bvb2xfZ2V0X2RtYV9kaXIocS0mZ3Q7cGFnZV9wb29sKTsKQEAgLTY3NSw4ICYjNDM7NzE4LDEwIEBAIHN0YXRpYyBpbnQgYWlyb2hhX3FkbWFfcnhfcHJvY2VzcyhzdHJ1Y3QgYWlyb2hhX3F1ZXVlICpxLCBpbnQgYnVkZ2V0KQogCQlzdHJ1Y3QgcGFnZSAqcGFnZTsKIAogCQlkZXNjX2N0cmwgPSBsZTMyX3RvX2NwdShSRUFEX09OQ0UoZGVzYy0mZ3Q7Y3RybCkpOwotCQlpZiAoIShkZXNjX2N0cmwgJmFtcDsgUURNQV9ERVNDX0RPTkVfTUFTSykpCiYjNDM7CQlpZiAoIShkZXNjX2N0cmwgJmFtcDsgUURNQV9ERVNDX0RPTkVfTUFTSykpIHsKJiM0MzsJCQlhaXJvaGFfcWRtYV9yeF9jaGVja19zdGFsbChxKTsKIAkJCWJyZWFrOwomIzQzOwkJfQogCiAJCWRtYV9ybWIoKTsKIApAQCAtNzg0LDEzICYjNDM7ODI5LDE1IEBAIHN0YXRpYyBpbnQgYWlyb2hhX3FkbWFfcnhfbmFwaV9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldCkKIAkJaW50IGksIHFpZCA9IHEgLSAmYW1wO3FkbWEtJmd0O3FfcnhbMF07CiAJCWludCBpbnRyX3JlZyA9IHFpZCAmbHQ7IFJYX0RPTkVfSElHSF9PRkZTRVQgPyBRRE1BX0lOVF9SRUdfSURYMQogCQkJCQkJCSA6IFFETUFfSU5UX1JFR19JRFgyOwomIzQzOwkJdTMyIGJpdCA9IHFpZCAlIFJYX0RPTkVfSElHSF9PRkZTRVQ7CiAKIAkJZm9yIChpID0gMDsgaSAmbHQ7IEFSUkFZX1NJWkUocWRtYS0mZ3Q7aXJxX2JhbmtzKTsgaSYjNDM7JiM0MzspIHsKIAkJCWlmICghKEJJVChxaWQpICZhbXA7IFJYX0lSUV9CQU5LX1BJTl9NQVNLKGkpKSkKIAkJCQljb250aW51ZTsKIAogCQkJYWlyb2hhX3FkbWFfaXJxX2VuYWJsZSgmYW1wO3FkbWEtJmd0O2lycV9iYW5rc1tpXSwgaW50cl9yZWcsCi0JCQkJCSAgICAgICBCSVQocWlkICUgUlhfRE9ORV9ISUdIX09GRlNFVCkpOwomIzQzOwkJCQkJICAgICAgIEJJVChiaXQpIHwKJiM0MzsJCQkJCSAgICAgICBCSVQoYml0ICYjNDM7IFJYX05PX0NQVV9EU0NQX0xPV19PRkZTRVQpKTsKIAkJfQogCX0KIApAQCAtODkyLDYgJiM0Mzs5MzksNzYgQEAgc3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfY2xlYW51cF9yeF9xdWV1ZShzdHJ1Y3QgYWlyb2hhX3F1ZXVlICpxKQogCQkJRklFTERfUFJFUChSWF9SSU5HX0RNQV9JRFhfTUFTSywgcS0mZ3Q7dGFpbCkpOwogfQogCiYjNDM7c3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfcnhfcmVjb3Zlcl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYSA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgYWlyb2hhX3FkbWEsCiYjNDM7CQkJCQkJIHJ4X3JlY292ZXJfd29yayk7CiYjNDM7CWludCBxaWQ7CiYjNDM7CiYjNDM7CWZvcl9lYWNoX3NldF9iaXQocWlkLCBxZG1hLSZndDtyeF9yZWNvdmVyX21hc2ssIEFJUk9IQV9OVU1fUlhfUklORykgewomIzQzOwkJc3RydWN0IGFpcm9oYV9xdWV1ZSAqcSA9ICZhbXA7cWRtYS0mZ3Q7cV9yeFtxaWRdOwomIzQzOwkJa3RpbWVfdCByeF9kbWFfb2ZmX3RzOwomIzQzOwkJczY0IHJ4X2RtYV9vZmZfdXM7CiYjNDM7CQl1MzIgc3RhdHVzOwomIzQzOwomIzQzOwkJaWYgKCFxLSZndDtuZGVzYykKJiM0MzsJCQlnb3RvIG5leHQ7CiYjNDM7CiYjNDM7CQluYXBpX2Rpc2FibGUoJmFtcDtxLSZndDtuYXBpKTsKJiM0MzsKJiM0MzsJCS8qIEdMT0JBTF9DRkdfUlhfRE1BX0VOX01BU0sgaXMgcGVyLVFETUEsIG5vdCBwZXItcmluZywgc28KJiM0MzsJCSAqIHRoaXMgcGF1c2VzIGV2ZXJ5IFJYIHJpbmcgb24gdGhpcyBRRE1BIGluc3RhbmNlLCBub3QganVzdAomIzQzOwkJICogdGhlIHN0YWxsZWQgb25lIC0gdHJhY2sgaG93IGxvbmcgZm9yLCBzaW5jZSB0aGF0JiMzOTtzIHRoZQomIzQzOwkJICogcmVhbC13b3JsZCBjb3N0IG9mIHJlY292ZXJ5IG9uIHVucmVsYXRlZCByaW5ncy4KJiM0MzsJCSAqLwomIzQzOwkJcnhfZG1hX29mZl90cyA9IGt0aW1lX2dldCgpOwomIzQzOwomIzQzOwkJYWlyb2hhX3FkbWFfY2xlYXIocWRtYSwgUkVHX1FETUFfR0xPQkFMX0NGRywKJiM0MzsJCQkJICBHTE9CQUxfQ0ZHX1JYX0RNQV9FTl9NQVNLKTsKJiM0MzsJCWlmIChyZWFkX3BvbGxfdGltZW91dChhaXJvaGFfcWRtYV9yciwgc3RhdHVzLAomIzQzOwkJCQkgICAgICAhKHN0YXR1cyAmYW1wOyBHTE9CQUxfQ0ZHX1JYX0RNQV9CVVNZX01BU0spLAomIzQzOwkJCQkgICAgICBVU0VDX1BFUl9NU0VDLCA1MCAqIFVTRUNfUEVSX01TRUMsIHRydWUsCiYjNDM7CQkJCSAgICAgIHFkbWEsIFJFR19RRE1BX0dMT0JBTF9DRkcpKQomIzQzOwkJCWRldl93YXJuKHFkbWEtJmd0O2V0aC0mZ3Q7ZGV2LAomIzQzOwkJCQkgJiMzNDtxaWQ9JWQgUlggRE1BIGJ1c3kgdGltZW91dCBkdXJpbmcgcmVjb3ZlcnlcbiYjMzQ7LAomIzQzOwkJCQkgcWlkKTsKJiM0MzsKJiM0MzsJCS8qIERyb3Agd2hhdGV2ZXIgaXMgY3VycmVudGx5IGluIGZsaWdodCBvbiB0aGlzIHJpbmcgYW5kCiYjNDM7CQkgKiByZS1hcm0gaXQgZnJvbSBhIGtub3duLWNsZWFuIHN0YXRlLiBjbGVhbnVwX3J4X3F1ZXVlKCkKJiM0MzsJCSAqIG9ubHkgZXZlciB0b3VjaGVzIHRoZSBzdy1vd25lZCBbdGFpbCwgaGVhZCkgd2luZG93IGFuZAomIzQzOwkJICogcmVzeW5jcyBib3RoIFJYX0NQVV9JRFggYW5kIFJYX0RNQV9JRFggdG8gaXQsIHdoaWNoIGlzCiYjNDM7CQkgKiB3aGF0IHVuLXdlZGdlcyBhIHJpbmcgd2hlcmUgaHcgd3JvdGUgcGFzdCB0aGUgc3cgaGVhZAomIzQzOwkJICogd2l0aG91dCB0aGUgY29uc3VtZXIgZXZlciBhZHZhbmNpbmcgLSBubyBuZWVkIHRvIGZpZ3VyZQomIzQzOwkJICogb3V0IHdoaWNoIGRlc2NyaXB0b3IgaHcgYWN0dWFsbHkgdXNlZC4KJiM0MzsJCSAqLwomIzQzOwkJYWlyb2hhX3FkbWFfY2xlYW51cF9yeF9xdWV1ZShxKTsKJiM0MzsJCWlmIChxLSZndDtza2IpIHsKJiM0MzsJCQkvKiBkaXNjYXJkIHdoYXRldmVyIHNjYXR0ZXItZ2F0aGVyIGZyYW1lIHdhcwomIzQzOwkJCSAqIG1pZC1hc3NlbWJseSB3aGVuIHRoZSBzdGFsbCB3YXMgaGl0LCBjbGVhbnVwX3J4X3F1ZXVlKCkKJiM0MzsJCQkgKiBhYm92ZSBvbmx5IHJlc3luY3MgdGhlIHJpbmcsIG5vdCB0aGlzCiYjNDM7CQkJICovCiYjNDM7CQkJZGV2X2tmcmVlX3NrYihxLSZndDtza2IpOwomIzQzOwkJCXEtJmd0O3NrYiA9IE5VTEw7CiYjNDM7CQl9CiYjNDM7CQlhaXJvaGFfcWRtYV9maWxsX3J4X3F1ZXVlKHEpOwomIzQzOwomIzQzOwkJYWlyb2hhX3FkbWFfc2V0KHFkbWEsIFJFR19RRE1BX0dMT0JBTF9DRkcsCiYjNDM7CQkJCUdMT0JBTF9DRkdfUlhfRE1BX0VOX01BU0spOwomIzQzOwkJcnhfZG1hX29mZl91cyA9IGt0aW1lX3VzX2RlbHRhKGt0aW1lX2dldCgpLCByeF9kbWFfb2ZmX3RzKTsKJiM0MzsKJiM0MzsJCXEtJmd0O3N0YWxsX2NvdW50ID0gMDsKJiM0MzsJCW5hcGlfZW5hYmxlKCZhbXA7cS0mZ3Q7bmFwaSk7CiYjNDM7CQluYXBpX3NjaGVkdWxlKCZhbXA7cS0mZ3Q7bmFwaSk7CiYjNDM7CiYjNDM7CQlxZG1hLSZndDtyeF9yZWNvdmVyX2NvdW50JiM0MzsmIzQzOzsKJiM0MzsJCWRldl93YXJuX3JhdGVsaW1pdGVkKHFkbWEtJmd0O2V0aC0mZ3Q7ZGV2LAomIzQzOwkJCQkgICAgICYjMzQ7cWlkPSVkIFJYIHJpbmcgcmVjb3ZlcmVkIGFmdGVyIGh3IHN0YWxsIChSWCBETUEgcGF1c2VkIGZvciAlbGxkIHVzIG9uIHRoaXMgUURNQSBpbnN0YW5jZSlcbiYjMzQ7LAomIzQzOwkJCQkgICAgIHFpZCwgcnhfZG1hX29mZl91cyk7CiYjNDM7bmV4dDoKJiM0MzsJCWNsZWFyX2JpdChxaWQsIHFkbWEtJmd0O3J4X3JlY292ZXJfbWFzayk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IGFpcm9oYV9xZG1hX2luaXRfcngoc3RydWN0IGFpcm9oYV9xZG1hICpxZG1hKQogewogCWludCBpOwpAQCAtMTQ2OCwxNiAmIzQzOzE1ODUsMzIgQEAgc3RhdGljIGlycXJldHVybl90IGFpcm9oYV9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkZXZfaW5zdGFuY2UpCiAJaWYgKCF0ZXN0X2JpdChERVZfU1RBVEVfSU5JVElBTElaRUQsICZhbXA7cWRtYS0mZ3Q7ZXRoLSZndDtzdGF0ZSkpCiAJCXJldHVybiBJUlFfTk9ORTsKIAotCXJ4X2ludHIxID0gaW50clsxXSAmYW1wOyBSWF9ET05FX0xPV19JTlRfTUFTSzsKJiM0MzsJLyogQSByaW5nIGNhbiBhbHNvIHJhaXNlIE5PX0NQVV9EU0NQIHdoZW4gaXQgcnVucyBvdXQgb2YgZnJlZSBSWAomIzQzOwkgKiBkZXNjcmlwdG9ycyAoZS5nLiBhIGJ1cnN0IG9mIFZJUC1jbGFzc2lmaWVkIGNvbnRyb2wgdHJhZmZpYwomIzQzOwkgKiBmb3JjZWQgb250byBhIHNtYWxsIHJpbmcpLiBPbmNlIGEgcmluZyBpcyBmdWxseSBkcmFpbmVkIG5vIG1vcmUKJiM0MzsJICogUlhfRE9ORSBpbnRlcnJ1cHRzIGNhbiBmaXJlIGZvciBpdCwgc2luY2UgdGhlcmUgYXJlIG5vIGZyZWUKJiM0MzsJICogZGVzY3JpcHRvcnMgbGVmdCBmb3IgaGFyZHdhcmUgdG8gcmVjZWl2ZSBpbnRvLCBzbyB3aXRob3V0IHRoaXMKJiM0MzsJICogTkFQSSBpcyBuZXZlciByZXNjaGVkdWxlZCBhbmQgdGhlIHJpbmcgbmV2ZXIgZ2V0cyByZWZpbGxlZCBhZ2Fpbi4KJiM0MzsJICogVHJlYXQgTk9fQ1BVX0RTQ1AgdGhlIHNhbWUgYXMgUlhfRE9ORSBmb3Igc2NoZWR1bGluZyBOQVBJOgomIzQzOwkgKiBhaXJvaGFfcWRtYV9yeF9wcm9jZXNzKCkgdW5jb25kaXRpb25hbGx5IGNhbGxzCiYjNDM7CSAqIGFpcm9oYV9xZG1hX2ZpbGxfcnhfcXVldWUoKSBhdCB0aGUgZW5kIG9mIGV2ZXJ5IHBvbGwsIGV2ZW4gd2hlbgomIzQzOwkgKiB6ZXJvIGRlc2NyaXB0b3JzIHdlcmUgcmVhcGVkLCBzbyB0aGlzIGFsb25lIGlzIGVub3VnaCB0byByZWNvdmVyCiYjNDM7CSAqIHRoZSByaW5nLgomIzQzOwkgKi8KJiM0MzsJcnhfaW50cjEgPSBpbnRyWzFdICZhbXA7IChSWF9ET05FX0xPV19JTlRfTUFTSyB8IFJYX05PX0NQVV9EU0NQX0xPV19JTlRfTUFTSyk7CiAJaWYgKHJ4X2ludHIxKSB7CiAJCWFpcm9oYV9xZG1hX2lycV9kaXNhYmxlKGlycV9iYW5rLCBRRE1BX0lOVF9SRUdfSURYMSwgcnhfaW50cjEpOwotCQlyeF9pbnRyX21hc2sgfD0gcnhfaW50cjE7CiYjNDM7CQlyeF9pbnRyX21hc2sgfD0gKHJ4X2ludHIxICZhbXA7IFJYX0RPTkVfTE9XX0lOVF9NQVNLKSB8CiYjNDM7CQkJCSgocnhfaW50cjEgJmFtcDsgUlhfTk9fQ1BVX0RTQ1BfTE9XX0lOVF9NQVNLKSAmZ3Q7Jmd0OwomIzQzOwkJCQkgUlhfTk9fQ1BVX0RTQ1BfTE9XX09GRlNFVCk7CiAJfQogCi0JcnhfaW50cjIgPSBpbnRyWzJdICZhbXA7IFJYX0RPTkVfSElHSF9JTlRfTUFTSzsKJiM0MzsJcnhfaW50cjIgPSBpbnRyWzJdICZhbXA7IChSWF9ET05FX0hJR0hfSU5UX01BU0sgfCBSWF9OT19DUFVfRFNDUF9ISUdIX0lOVF9NQVNLKTsKIAlpZiAocnhfaW50cjIpIHsKIAkJYWlyb2hhX3FkbWFfaXJxX2Rpc2FibGUoaXJxX2JhbmssIFFETUFfSU5UX1JFR19JRFgyLCByeF9pbnRyMik7Ci0JCXJ4X2ludHJfbWFzayB8PSAocnhfaW50cjIgJmx0OyZsdDsgMTYpOwomIzQzOwkJcnhfaW50cl9tYXNrIHw9ICgocnhfaW50cjIgJmFtcDsgUlhfRE9ORV9ISUdIX0lOVF9NQVNLKSB8CiYjNDM7CQkJCSAoKHJ4X2ludHIyICZhbXA7IFJYX05PX0NQVV9EU0NQX0hJR0hfSU5UX01BU0spICZndDsmZ3Q7CiYjNDM7CQkJCSAgUlhfTk9fQ1BVX0RTQ1BfTE9XX09GRlNFVCkpICZsdDsmbHQ7IDE2OwogCX0KIAogCWZvciAoaSA9IDA7IHJ4X2ludHJfbWFzayAmYW1wOyZhbXA7IGkgJmx0OyBBUlJBWV9TSVpFKHFkbWEtJmd0O3FfcngpOyBpJiM0MzsmIzQzOykgewpAQCAtMTU3Niw2ICYjNDM7MTcwOSw4IEBAIHN0YXRpYyB2b2lkIGFpcm9oYV9xZG1hX2NsZWFudXAoc3RydWN0IGFpcm9oYV9ldGggKmV0aCwKIHsKIAlpbnQgaTsKIAomIzQzOwljYW5jZWxfd29ya19zeW5jKCZhbXA7cWRtYS0mZ3Q7cnhfcmVjb3Zlcl93b3JrKTsKJiM0MzsKIAlpZiAodGVzdF9iaXQoREVWX1NUQVRFX0lOSVRJQUxJWkVELCAmYW1wO2V0aC0mZ3Q7c3RhdGUpKSB7CiAJCXUzMiBzdGF0dXM7CiAKQEAgLTE2MzMsNiAmIzQzOzE3NjgsMTUgQEAgc3RhdGljIGludCBhaXJvaGFfaHdfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAKJiM0MzsJLyogSU5JVF9XT1JLKCkgZXZlcnkgaW5zdGFuY2UgdXAgZnJvbnQsIGJlZm9yZSBhbnkgb2YgdGhlbSBjYW4gZmFpbAomIzQzOwkgKiBpbml0IGFuZCBqdW1wIHRvIHRoZSBlcnJvciBwYXRoIGJlbG93LCBzaW5jZSB0aGF0IHBhdGggdGVhcnMgZG93bgomIzQzOwkgKiBldmVyeSBldGgtJmd0O3FkbWFbXSBzbG90IHVuY29uZGl0aW9uYWxseSwgaW5jbHVkaW5nIG9uZXMgdGhpcyBsb29wCiYjNDM7CSAqIG5ldmVyIHJlYWNoZWQuCiYjNDM7CSAqLwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgQVJSQVlfU0laRShldGgtJmd0O3FkbWEpOyBpJiM0MzsmIzQzOykKJiM0MzsJCUlOSVRfV09SSygmYW1wO2V0aC0mZ3Q7cWRtYVtpXS5yeF9yZWNvdmVyX3dvcmssCiYjNDM7CQkJICBhaXJvaGFfcWRtYV9yeF9yZWNvdmVyX3dvcmspOwomIzQzOwogCWZvciAoaSA9IDA7IGkgJmx0OyBBUlJBWV9TSVpFKGV0aC0mZ3Q7cWRtYSk7IGkmIzQzOyYjNDM7KSB7CiAJCWVyciA9IGFpcm9oYV9xZG1hX2luaXQocGRldiwgZXRoLCAmYW1wO2V0aC0mZ3Q7cWRtYVtpXSk7CiAJCWlmIChlcnIpCkBAIC0xNjgxLDYgJiM0MzsxODI1LDE0IEBAIHN0YXRpYyB2b2lkIGFpcm9oYV9xZG1hX3N0b3BfbmFwaShzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWEpCiB7CiAJaW50IGk7CiAKJiM0MzsJLyogTWFrZSBzdXJlIHJ4X3JlY292ZXJfd29yayBpcyBuZWl0aGVyIHJ1bm5pbmcgbm9yIGFibGUgdG8gcmUtYXJtCiYjNDM7CSAqIGJlZm9yZSBhbnkgbmFwaV9kaXNhYmxlKCkgYmVsb3c6IGl0IGFsc28gY2FsbHMgbmFwaV9kaXNhYmxlKCkvCiYjNDM7CSAqIG5hcGlfZW5hYmxlKCkgb24gcV9yeFtdLm5hcGksIGFuZCBuYXBpX2Rpc2FibGUoKSBvbiBhbgomIzQzOwkgKiBhbHJlYWR5LWRpc2FibGVkIE5BUEkgc3BpbnMgaW4gbmFwaV9kaXNhYmxlX2xvY2tlZCgpIGZvcmV2ZXIsCiYjNDM7CSAqIHNpbmNlIG9ubHkgbmFwaV9lbmFibGUoKSBjbGVhcnMgdGhlIHN0YXRlIGl0IHdhaXRzIG9uLgomIzQzOwkgKi8KJiM0MzsJZGlzYWJsZV93b3JrX3N5bmMoJmFtcDtxZG1hLSZndDtyeF9yZWNvdmVyX3dvcmspOwomIzQzOwogCWZvciAoaSA9IDA7IGkgJmx0OyBBUlJBWV9TSVpFKHFkbWEtJmd0O3FfdHhfaXJxKTsgaSYjNDM7JiM0MzspCiAJCW5hcGlfZGlzYWJsZSgmYW1wO3FkbWEtJmd0O3FfdHhfaXJxW2ldLm5hcGkpOwogCkBAIC0yNDQ5LDYgJiM0MzsyNjAxLDQ2IEBAIHN0YXRpYyB2b2lkIGFpcm9oYV9ldGh0b29sX2dldF9kcnZpbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsCiAJc3Ryc2NweShpbmZvLSZndDtidXNfaW5mbywgZGV2X25hbWUoZXRoLSZndDtkZXYpLCBzaXplb2YoaW5mby0mZ3Q7YnVzX2luZm8pKTsKIH0KIAomIzQzO3N0YXRpYyBjb25zdCBjaGFyIGFpcm9oYV9ldGh0b29sX3N0YXRzX3N0cltdW0VUSF9HU1RSSU5HX0xFTl0gPSB7CiYjNDM7CSYjMzQ7cnhfc3RhbGxfcmVjb3ZlciYjMzQ7LAomIzQzO307CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgYWlyb2hhX2V0aHRvb2xfZ2V0X3N0cmluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdTMyIHNzZXQsCiYjNDM7CQkJCSAgICAgICB1OCAqZGF0YSkKJiM0Mzt7CiYjNDM7CWludCBpOwomIzQzOwomIzQzOwlpZiAoc3NldCAhPSBFVEhfU1NfU1RBVFMpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBBUlJBWV9TSVpFKGFpcm9oYV9ldGh0b29sX3N0YXRzX3N0cik7IGkmIzQzOyYjNDM7KQomIzQzOwkJZXRodG9vbF9wdXRzKCZhbXA7ZGF0YSwgYWlyb2hhX2V0aHRvb2xfc3RhdHNfc3RyW2ldKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBhaXJvaGFfZXRodG9vbF9nZXRfc3NldF9jb3VudChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgc3NldCkKJiM0Mzt7CiYjNDM7CXJldHVybiBzc2V0ID09IEVUSF9TU19TVEFUUyA/CiYjNDM7CSAgICAgICBBUlJBWV9TSVpFKGFpcm9oYV9ldGh0b29sX3N0YXRzX3N0cikgOiAtRU9QTk9UU1VQUDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgYWlyb2hhX2V0aHRvb2xfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwKJiM0MzsJCQkJCSAgICAgc3RydWN0IGV0aHRvb2xfc3RhdHMgKnN0YXRzLAomIzQzOwkJCQkJICAgICB1NjQgKmRhdGEpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKmRldiA9IG5ldGRldl9wcml2KG5ldGRldik7CiYjNDM7CXN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYTsKJiM0MzsKJiM0MzsJcmN1X3JlYWRfbG9jaygpOwomIzQzOwlxZG1hID0gcmN1X2RlcmVmZXJlbmNlKGRldi0mZ3Q7cWRtYSk7CiYjNDM7CS8qIGFnZ3JlZ2F0ZSByZWNvdmVyeSBjb3VudCBmb3IgdGhlIHdob2xlIHFkbWEgaW5zdGFuY2U6IHRoZQomIzQzOwkgKiBzdGFsbGVkIHJpbmcgY2FuIGNhcnJ5IHRyYWZmaWMgZm9yIG1vcmUgdGhhbiBvbmUgbmV0ZGV2IChWSVAKJiM0MzsJICogY2xhc3NpZmljYXRpb24gc2hhcmVzIHJpbmcgNCBhY3Jvc3Mgc2V2ZXJhbCBwcm90b2NvbHMvcG9ydHMpLAomIzQzOwkgKiBzbyB0aGVyZSYjMzk7cyBubyBzaW5nbGUgbmV0ZGV2IHRvIGF0dHJpYnV0ZSBhbiBpbmRpdmlkdWFsIGV2ZW50IHRvCiYjNDM7CSAqLwomIzQzOwlkYXRhWzBdID0gcWRtYSA/IHFkbWEtJmd0O3J4X3JlY292ZXJfY291bnQgOiAwOwomIzQzOwlyY3VfcmVhZF91bmxvY2soKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBhaXJvaGFfZXRodG9vbF9nZXRfbWFjX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsCiAJCQkJCSBzdHJ1Y3QgZXRodG9vbF9ldGhfbWFjX3N0YXRzICpzdGF0cykKIHsKQEAgLTMzNTEsNiAmIzQzOzM1NDMsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGFpcm9oYV9uZXRkZXZfb3BzID0gewogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGFpcm9oYV9ldGh0b29sX29wcyA9IHsKIAkuZ2V0X2RydmluZm8JCT0gYWlyb2hhX2V0aHRvb2xfZ2V0X2RydmluZm8sCiYjNDM7CS5nZXRfc3RyaW5ncwkJPSBhaXJvaGFfZXRodG9vbF9nZXRfc3RyaW5ncywKJiM0MzsJLmdldF9zc2V0X2NvdW50CQk9IGFpcm9oYV9ldGh0b29sX2dldF9zc2V0X2NvdW50LAomIzQzOwkuZ2V0X2V0aHRvb2xfc3RhdHMJPSBhaXJvaGFfZXRodG9vbF9nZXRfZXRodG9vbF9zdGF0cywKIAkuZ2V0X2V0aF9tYWNfc3RhdHMgICAgICA9IGFpcm9oYV9ldGh0b29sX2dldF9tYWNfc3RhdHMsCiAJLmdldF9ybW9uX3N0YXRzCQk9IGFpcm9oYV9ldGh0b29sX2dldF9ybW9uX3N0YXRzLAogCS5nZXRfbGlua19rc2V0dGluZ3MJPSBwaHlfZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3MsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaAppbmRleCBmYTlhOGVkY2UyMmZmLi5jZDc1YzE2ZDhkMGM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmgKQEAgLTQxLDYgJiM0Mzs0MSw3IEBACiAjZGVmaW5lIFRYX0RTQ1BfTlVNCQkJMTAyNAogI2RlZmluZSBSWF9EU0NQX05VTShfbikJCQlcCiAJKChfbikgPT0gIDIgPyAxMjggOgkJXAomIzQzOwkgKF9uKSA9PSAgNCA/IDEyOCA6CQlcCiAJIChfbikgPT0gMTEgPyAxMjggOgkJXAogCSAoX24pID09IDE1ID8gMTI4IDoJCVwKIAkgKF9uKSA9PSAgMCA/IDEwMjQgOiAxNikKQEAgLTIwNyw2ICYjNDM7MjA4LDE1IEBAIHN0cnVjdCBhaXJvaGFfcXVldWUgewogCWJvb2wgdHhxX3N0b3BwZWQ7CiAJYm9vbCBmbHVzaGluZzsKIAomIzQzOwkvKiBSWCBodyBzdGFsbCBkZXRlY3Rpb246IGxhc3QgUkVHX1JYX0RNQV9JRFgvdGFpbCBzbmFwc2hvdCB0YWtlbgomIzQzOwkgKiB3aGVuZXZlciB0aGUgaGVhZC1vZi1saW5lIGRlc2NyaXB0b3IgaXNuJiMzOTt0IERPTkUsIGFuZCBob3cgbWFueQomIzQzOwkgKiBjb25zZWN1dGl2ZSB0aW1lcyBodyBtYWRlIHByb2dyZXNzIChETUFfSURYIG1vdmVkKSB3aGlsZSB0aGUKJiM0MzsJICogY29uc3VtZXIgKHRhaWwpIGRpZG4mIzM5O3QuIFNlZSBhaXJvaGFfcWRtYV9yeF9jaGVja19zdGFsbCgpLgomIzQzOwkgKi8KJiM0MzsJdTMyIHN0YWxsX2RtYV9pZHg7CiYjNDM7CXUxNiBzdGFsbF90YWlsOwomIzQzOwl1OCBzdGFsbF9jb3VudDsKJiM0MzsKIAlzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTsKIAlzdHJ1Y3QgcGFnZV9wb29sICpwYWdlX3Bvb2w7CiAJc3RydWN0IHNrX2J1ZmYgKnNrYjsKQEAgLTU2Nyw2ICYjNDM7NTc3LDE4IEBAIHN0cnVjdCBhaXJvaGFfcWRtYSB7CiAJc3RydWN0IGFpcm9oYV9xdWV1ZSBxX3R4W0FJUk9IQV9OVU1fVFhfUklOR107CiAJc3RydWN0IGFpcm9oYV9xdWV1ZSBxX3J4W0FJUk9IQV9OVU1fUlhfUklOR107CiAKJiM0MzsJLyogcmVjb3ZlcnkgZm9yIFJYIHJpbmdzIHdob3NlIGh3IGNvbXBsZXRpb24gcG9pbnRlciAoUlhfRE1BX0lEWCkKJiM0MzsJICoga2VlcHMgbW92aW5nIHdoaWxlIHRoZSBzdyBjb25zdW1lciBpcyBzdHVjazsgc2VlCiYjNDM7CSAqIGFpcm9oYV9xZG1hX3J4X2NoZWNrX3N0YWxsKCkgYW5kIGFpcm9oYV9xZG1hX3J4X3JlY292ZXJfd29yaygpLgomIzQzOwkgKi8KJiM0MzsJc3RydWN0IHdvcmtfc3RydWN0IHJ4X3JlY292ZXJfd29yazsKJiM0MzsJREVDTEFSRV9CSVRNQVAocnhfcmVjb3Zlcl9tYXNrLCBBSVJPSEFfTlVNX1JYX1JJTkcpOwomIzQzOwkvKiBjb3VudCBvZiBjb21wbGV0ZWQgaHctc3RhbGwgcmVjb3ZlcmllcywgZXhwb3NlZCB2aWEgZXRodG9vbCAtUwomIzQzOwkgKiBzbyBhIHJlY292ZXJ5IGV2ZW50IChhbmQgdGhlIHBhY2tldHMgaXQgZHJvcHMpIGlzIG9ic2VydmFibGUKJiM0MzsJICogd2l0aG91dCBncmVwcGluZyBkbWVzZyBmb3IgdGhlIGRldl93YXJuX3JhdGVsaW1pdGVkKCkgYWJvdmUKJiM0MzsJICovCiYjNDM7CXUzMiByeF9yZWNvdmVyX2NvdW50OwomIzQzOwogCURFQ0xBUkVfQklUTUFQKHFvc19jaGFubmVsX21hcCwgQUlST0hBX05VTV9RT1NfQ0hBTk5FTFMpOwogfTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAwODoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTYzCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoaXMgUGF0Y2ggZm9yIHRoZSBBaXJvaGEgRXRoZXJuZXQgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gVGhlIGZpcnN0IHRoaW5nIEkgc2VlIGlzIHRoYXQgdGhpcyBwYXRjaCB0b3VjaGVzIGBhaXJvaGFfZXRoLmNgIGFuZCBgYWlyb2hhX2V0aC5oYCwgYm90aCB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYCBkaXJlY3RvcnkuIFRoYXQmIzM5O3MgYSBzdHJvbmcgaW5kaWNhdGlvbiB0aGlzIGlzIHJlbGF0ZWQgdG8gdGhlIEFpcm9oYSBFdGhlcm5ldCBkcml2ZXIsIGJ1dCBsZXQmIzM5O3MganVzdCBjb25maXJtIHRoYXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgd2UgYXJlIGRlYWxpbmcgd2l0aCBoZXJlLCBzbyBsZXQgbWUgcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhpcyB3aXRoIHRoZSByZWxldmFudCBgS2NvbmZpZ2AgZmlsZSBpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9gIGRpcmVjdG9yeS4gSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgdGhlIG92ZXJhbGwgYnVpbGQgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBkcml2ZXIuIEkmIzM5O2xsIG5lZWQgdGhhdCBjb250ZXh0IHRvIHByb3Blcmx5IGFzc2VzcyB0aGUgY2hhbmdlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAwODozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORVRfQUlST0hBfGFpcm9oYSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMzc4MyBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWc9OD1pZiBORVRfVkVORE9SX0FJUk9IQVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWctOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnOjEwOmNvbmZpZyBORVRfQUlST0hBX05QVVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWctMTEtXHR0cmlzdGF0ZSBcJiMzNDtBaXJvaGEgTlBVIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZy0xNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnOjE4OmNvbmZpZyBORVRfQUlST0hBXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZy0xOS1cdHRyaXN0YXRlIFwmIzM0O0Fpcm9oYSBTb0MgR2lnYWJpdCBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZy0yMC1cdGRlcGVuZHMgb24gTkVUX0RTQSB8fCAhTkVUX0RTQVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWc6MjE6XHRzZWxlY3QgTkVUX0FJUk9IQV9OUFVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnLTIyLVx0c2VsZWN0IFBBR0VfUE9PTFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnLTI2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWc6Mjc6Y29uZmlnIE5FVF9BSVJPSEFfRkxPV19TVEFUU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWctMjgtXHRkZWZhdWx0IHlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnLTI5LVx0Ym9vbCBcJiMzNDtBaXJvaGEgZmxvdyBzdGF0c1wmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWc6MzA6XHRkZXBlbmRzIG9uIE5FVF9BSVJPSEEgXHUwMDI2XHUwMDI2IE5FVF9BSVJPSEFfTlBVXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZy0zMS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGUtNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19ORVRfQUlST0hBKSAmIzQzOz0gYWlyb2hhLWV0aC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGU6NzphaXJvaGEtZXRoLXkgOj0gYWlyb2hhX2V0aC5vIGFpcm9oYV9wcGUub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL01ha2VmaWxlOjg6YWlyb2hhLWV0aC0kKENPTkZJR19ERUJVR19GUykgJiM0Mzs9IGFpcm9oYV9wcGVfZGVidWdmcy5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfTkVUX0FJUk9IQV9OUFUpICYjNDM7PSBhaXJvaGFfbnB1Lm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxOTojaW5jbHVkZSBcJiMzNDthaXJvaGFfcmVncy5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIwOiNpbmNsdWRlIFwmIzM0O2Fpcm9oYV9ldGguaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjI6dTMyIGFpcm9oYV9ycih2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBvZmZzZXQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNzp2b2lkIGFpcm9oYV93cih2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBvZmZzZXQsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMjp1MzIgYWlyb2hhX3Jtdyh2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBvZmZzZXQsIHUzMiBtYXNrLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMy17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM0Olx0dmFsIHw9IChhaXJvaGFfcnIoYmFzZSwgb2Zmc2V0KSBcdTAwMjYgfm1hc2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNTpcdGFpcm9oYV93cihiYXNlLCBvZmZzZXQsIHZhbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQwOnN0YXRpYyB2b2lkIGFpcm9oYV9xZG1hX3NldF9pcnFtYXNrKHN0cnVjdCBhaXJvaGFfaXJxX2JhbmsgKmlycV9iYW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MS1cdFx0XHRcdCAgICBpbnQgaW5kZXgsIHUzMiBjbGVhciwgdTMyIHNldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MzpcdHN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYSA9IGlycV9iYW5rLVx1MDAzZXFkbWE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ0LVx0aW50IGJhbmsgPSBpcnFfYmFuayAtIFx1MDAyNnFkbWEtXHUwMDNlaXJxX2JhbmtzWzBdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTMtXHRpcnFfYmFuay1cdTAwM2VpcnFtYXNrW2luZGV4XSB8PSBzZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU0Olx0YWlyb2hhX3FkbWFfd3IocWRtYSwgUkVHX0lOVF9FTkFCTEUoYmFuaywgaW5kZXgpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NS1cdFx0ICAgICAgIGlycV9iYW5rLVx1MDAzZWlycW1hc2tbaW5kZXhdKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU4LVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU5Olx0YWlyb2hhX3FkbWFfcnIocWRtYSwgUkVHX0lOVF9FTkFCTEUoYmFuaywgaW5kZXgpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjQ6c3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfaXJxX2VuYWJsZShzdHJ1Y3QgYWlyb2hhX2lycV9iYW5rICppcnFfYmFuayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjUtXHRcdFx0XHQgICBpbnQgaW5kZXgsIHUzMiBtYXNrKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02Ni17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY3Olx0YWlyb2hhX3FkbWFfc2V0X2lycW1hc2soaXJxX2JhbmssIGluZGV4LCAwLCBtYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjgtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NzA6c3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfaXJxX2Rpc2FibGUoc3RydWN0IGFpcm9oYV9pcnFfYmFuayAqaXJxX2JhbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTcxLVx0XHRcdFx0ICAgIGludCBpbmRleCwgdTMyIG1hc2spXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTcyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NzM6XHRhaXJvaGFfcWRtYV9zZXRfaXJxbWFzayhpcnFfYmFuaywgaW5kZXgsIG1hc2ssIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03NC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo3NjpzdGF0aWMgaW50IGFpcm9oYV9zZXRfbWFjYWRkcihzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKmRldiwgY29uc3QgdTggKmFkZHIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTc3LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNzgtXHR1OCByZWZfYWRkcltFVEhfQUxFTl0gX19hbGlnbmVkKDIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo3OTpcdHN0cnVjdCBhaXJvaGFfZXRoICpldGggPSBkZXYtXHUwMDNlZXRoO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy04MC1cdHUzMiByZWcsIHZhbCwgbG1pbiwgbG1heDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTg3LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShldGgtXHUwMDNlcG9ydHMpOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo4ODpcdFx0c3RydWN0IGFpcm9oYV9nZG1fcG9ydCAqcG9ydCA9IGV0aC1cdTAwM2Vwb3J0c1tpXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtODktXHRcdGludCBqO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtOTQtXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIEFSUkFZX1NJWkUocG9ydC1cdTAwM2VkZXZzKTsgaiYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6OTU6XHRcdFx0c3RydWN0IGFpcm9oYV9nZG1fZGV2ICppdGVyX2RldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtOTYtXHRcdFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTEwMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTAyOlx0XHRcdGlmIChhaXJvaGFfaXNfbGFuX2dkbV9kZXYoaXRlcl9kZXYpICE9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjEwMzpcdFx0XHQgICAgYWlyb2hhX2lzX2xhbl9nZG1fZGV2KGRldikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTEwNC1cdFx0XHRcdGNvbnRpbnVlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTM1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxMzY6XHRyZWcgPSBhaXJvaGFfaXNfbGFuX2dkbV9kZXYoZGV2KSA/IFJFR19GRV9MQU5fTUFDX0ggOiBSRUdfRkVfV0FOX01BQ19IO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xMzctXHR2YWwgPSAoYWRkclswXSBcdTAwM2NcdTAwM2MgMTYpIHwgKGFkZHJbMV0gXHUwMDNjXHUwMDNjIDgpIHwgYWRkclsyXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTM4Olx0YWlyb2hhX2ZlX3dyKGV0aCwgcmVnLCB2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xMzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE0MDpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9NQUNfTE1JTihyZWcpLCBsbWluKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTQxOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX01BQ19MTUFYKHJlZyksIGxtYXgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE0MzpcdGFpcm9oYV9wcGVfaW5pdF91cGRfbWVtKGRldiwgYWRkcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE0NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTQ4OnN0YXRpYyB2b2lkIGFpcm9oYV9zZXRfZ2RtX3BvcnRfZndkX2NmZyhzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoLCB1MzIgYWRkcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTQ5LVx0XHRcdFx0XHR1MzIgdmFsKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNTE6XHRhaXJvaGFfZmVfcm13KGV0aCwgYWRkciwgR0RNX09DRlFfTUFTSyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTUyLVx0XHQgICAgICBGSUVMRF9QUkVQKEdETV9PQ0ZRX01BU0ssIHZhbCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNTM6XHRhaXJvaGFfZmVfcm13KGV0aCwgYWRkciwgR0RNX01DRlFfTUFTSyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTU0LVx0XHQgICAgICBGSUVMRF9QUkVQKEdETV9NQ0ZRX01BU0ssIHZhbCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNTU6XHRhaXJvaGFfZmVfcm13KGV0aCwgYWRkciwgR0RNX0JDRlFfTUFTSyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTU2LVx0XHQgICAgICBGSUVMRF9QUkVQKEdETV9CQ0ZRX01BU0ssIHZhbCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNTc6XHRhaXJvaGFfZmVfcm13KGV0aCwgYWRkciwgR0RNX1VDRlFfTUFTSyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTU4LVx0XHQgICAgICBGSUVMRF9QUkVQKEdETV9VQ0ZRX01BU0ssIHZhbCkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTYwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNjE6c3RhdGljIGludCBhaXJvaGFfc2V0X3ZpcF9mb3JfZ2RtX3BvcnQoc3RydWN0IGFpcm9oYV9nZG1fZGV2ICpkZXYsIGJvb2wgZW5hYmxlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNjIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNjM6XHRzdHJ1Y3QgYWlyb2hhX2dkbV9wb3J0ICpwb3J0ID0gZGV2LVx1MDAzZXBvcnQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE2NDpcdHN0cnVjdCBhaXJvaGFfZXRoICpldGggPSBkZXYtXHUwMDNlZXRoO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNjUtXHR1MzIgdmlwX3BvcnQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNjgtXHRpZiAoZW5hYmxlKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE2OTpcdFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9WSVBfUE9SVF9FTiwgdmlwX3BvcnQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNzA6XHRcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfRkVfSUZDX1BPUlRfRU4sIHZpcF9wb3J0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTcxLVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTcyOlx0XHRhaXJvaGFfZmVfY2xlYXIoZXRoLCBSRUdfRkVfVklQX1BPUlRfRU4sIHZpcF9wb3J0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTczOlx0XHRhaXJvaGFfZmVfY2xlYXIoZXRoLCBSRUdfRkVfSUZDX1BPUlRfRU4sIHZpcF9wb3J0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTc0LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNzk6c3RhdGljIHZvaWQgYWlyb2hhX2ZlX21hY2NyX2luaXQoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTgwLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE4My1cdGZvciAocCA9IDE7IHAgXHUwMDNjPSBBUlJBWV9TSVpFKGV0aC1cdTAwM2Vwb3J0cyk7IHAmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE4NDpcdFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19HRE1fRldEX0NGRyhwKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTg1LVx0XHRcdCAgICAgIEdETV9UQ1BfQ0tTVU1fTUFTSyB8IEdETV9VRFBfQ0tTVU1fTUFTSyB8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE4Ni1cdFx0XHQgICAgICBHRE1fSVA0X0NLU1VNX01BU0sgfCBHRE1fRFJPUF9DUkNfRVJSX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxODc6XHRcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfR0RNX0xFTl9DRkcocCksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE4OC1cdFx0XHQgICAgICBHRE1fU0hPUlRfTEVOX01BU0sgfCBHRE1fTE9OR19MRU5fTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTkzOlx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fVkxBTl9DVFJMKDEpLCBDRE1fVkxBTl9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xOTQtXHRcdCAgICAgIEZJRUxEX1BSRVAoQ0RNX1ZMQU5fTUFTSywgMHg4MTAwKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE5NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTk2Olx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9DUE9SVF9DRkcsIEZFX0NQT1JUX1BBRCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE5Ny19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE5OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTk5OnN0YXRpYyB2b2lkIGFpcm9oYV9mZV92aXBfc2V0dXAoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjAwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjAxOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDMpLCBFVEhfUF9QUFBfRElTQyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIwMjpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMyksIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9FTl9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjAzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMDQ6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oNCksIFBQUF9MQ1ApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMDU6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDQpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMDYtXHRcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBGSUVMRF9QUkVQKFBBVE5fVFlQRV9NQVNLLCAxKSB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIwOTpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTig2KSwgUFBQX0lQQ1ApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMTA6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDYpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMTEtXHRcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBGSUVMRF9QUkVQKFBBVE5fVFlQRV9NQVNLLCAxKSB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIxNDpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTig3KSwgUFBQX0NIQVApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMTU6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDcpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMTYtXHRcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBGSUVMRF9QUkVQKFBBVE5fVFlQRV9NQVNLLCAxKSB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMTktXHQvKiBCT09UUCAoMHg0MykgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjIwOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDgpLCAweDQzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjIxOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTig4KSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjIyLVx0XHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9TUF9FTl9NQVNLIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIyNS1cdC8qIEJPT1RQICgweDQ0KSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMjY6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oOSksIDB4NDQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMjc6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDkpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMjgtXHRcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX1NQX0VOX01BU0sgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjMxLVx0LyogSVNBS01QICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIzMjpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigxMCksIDB4MWY0MDFmNCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIzMzpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMTApLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMzQtXHRcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX0RQX0VOX01BU0sgfCBQQVROX1NQX0VOX01BU0sgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjM2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMzc6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oMTEpLCBQUFBfSVBWNkNQKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjM4Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTigxMSksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIzOS1cdFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IEZJRUxEX1BSRVAoUEFUTl9UWVBFX01BU0ssIDEpIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI0Mi1cdC8qIERIQ1B2NiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNDM6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oMTIpLCAweDIyMjAyMjMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNDQ6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDEyKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjQ1LVx0XHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9EUF9FTl9NQVNLIHwgUEFUTl9TUF9FTl9NQVNLIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjQ4Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDE5KSwgUFBQX1BBUCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI0OTpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMTkpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNTAtXHRcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBGSUVMRF9QUkVQKFBBVE5fVFlQRV9NQVNLLCAxKSB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNTMtXHQvKiBFVEgtXHUwMDNlRVRIX1BfMTkwNSAoMHg4OTNhKSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNTQ6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oMjApLCAweDg5M2EpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNTU6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDIwKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjU2LVx0XHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9FTl9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNTg6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oMjEpLCBFVEhfUF9MTERQKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjU5Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTigyMSksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2MC1cdFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IFBBVE5fRU5fTUFTSyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI2MzpzdGF0aWMgdTMyIGFpcm9oYV9mZV9nZXRfcHNlX3F1ZXVlX3Jzdl9wYWdlcyhzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNjQtXHRcdFx0XHRcdCAgICAgdTMyIHBvcnQsIHUzMiBxdWV1ZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjY1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjY2Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9QU0VfUVVFVUVfQ0ZHX1dSLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNjctXHRcdCAgICAgIFBTRV9DRkdfUE9SVF9JRF9NQVNLIHwgUFNFX0NGR19RVUVVRV9JRF9NQVNLLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjcwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNzE6XHRyZXR1cm4gYWlyb2hhX2ZlX2dldChldGgsIFJFR19GRV9QU0VfUVVFVUVfQ0ZHX1ZBTCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjcyLVx0XHRcdCAgICAgUFNFX0NGR19PUV9SU1ZfTUFTSyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI3NTpzdGF0aWMgdm9pZCBhaXJvaGFfZmVfc2V0X3BzZV9xdWV1ZV9yc3ZfcGFnZXMoc3RydWN0IGFpcm9oYV9ldGggKmV0aCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjc2LVx0XHRcdFx0XHQgICAgICB1MzIgcG9ydCwgdTMyIHF1ZXVlLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNzcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNzg6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX1BTRV9RVUVVRV9DRkdfVkFMLCBQU0VfQ0ZHX09RX1JTVl9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNzktXHRcdCAgICAgIEZJRUxEX1BSRVAoUFNFX0NGR19PUV9SU1ZfTUFTSywgdmFsKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI4MDpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfRkVfUFNFX1FVRVVFX0NGR19XUixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjgxLVx0XHQgICAgICBQU0VfQ0ZHX1BPUlRfSURfTUFTSyB8IFBTRV9DRkdfUVVFVUVfSURfTUFTSyB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI4ODpzdGF0aWMgdTMyIGFpcm9oYV9mZV9nZXRfcHNlX2FsbF9yc3Yoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjg5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjkwOlx0cmV0dXJuIGFpcm9oYV9mZV9nZXQoZXRoLCBSRUdfRkVfUFNFX0JVRl9TRVQsIFBTRV9BTExSU1ZfTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5MS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjkzOnN0YXRpYyBpbnQgYWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KHN0cnVjdCBhaXJvaGFfZXRoICpldGgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5NC1cdFx0XHRcdCAgICB1MzIgcG9ydCwgdTMyIHF1ZXVlLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yOTUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyOTY6XHR1MzIgb3JpZ192YWwgPSBhaXJvaGFfZmVfZ2V0X3BzZV9xdWV1ZV9yc3ZfcGFnZXMoZXRoLCBwb3J0LCBxdWV1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5Ny1cdHUzMiB0bXAsIGFsbF9yc3YsIGZxX2xpbWl0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yOTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI5OTpcdGFpcm9oYV9mZV9zZXRfcHNlX3F1ZXVlX3Jzdl9wYWdlcyhldGgsIHBvcnQsIHF1ZXVlLCB2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMwMS1cdC8qIG1vZGlmeSBhbGwgcnN2ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMwMjpcdGFsbF9yc3YgPSBhaXJvaGFfZmVfZ2V0X3BzZV9hbGxfcnN2KGV0aCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMwMy1cdGFsbF9yc3YgJiM0Mzs9ICh2YWwgLSBvcmlnX3ZhbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMwNDpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfRkVfUFNFX0JVRl9TRVQsIFBTRV9BTExSU1ZfTUFTSyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzA1LVx0XHQgICAgICBGSUVMRF9QUkVQKFBTRV9BTExSU1ZfTUFTSywgYWxsX3JzdikpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzA3LVx0LyogbW9kaWZ5IGh0aGQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzA4Olx0ZnFfbGltaXQgPSBhaXJvaGFfZmVfZ2V0KGV0aCwgUFNFX0ZRX0NGRywgUFNFX0ZRX0xJTUlUX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMDktXHR0bXAgPSBmcV9saW1pdCAtIGFsbF9yc3YgLSAweDIwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMTA6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX1BTRV9TSEFSRV9VU0VEX1RIRCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzExLVx0XHQgICAgICBQU0VfU0hBUkVfVVNFRF9IVEhEX01BU0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMTQtXHR0bXAgPSBmcV9saW1pdCAtIGFsbF9yc3YgLSAweDEwMDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzE1Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19QU0VfU0hBUkVfVVNFRF9USEQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxNi1cdFx0ICAgICAgUFNFX1NIQVJFX1VTRURfTVRIRF9NQVNLLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzE4LVx0dG1wID0gKDMgKiB0bXApIFx1MDAzZVx1MDAzZSAyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMTk6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX1BTRV9CVUZfU0VULFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMjAtXHRcdCAgICAgIFBTRV9TSEFSRV9VU0VEX0xUSERfTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMyNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzI2OnN0YXRpYyB2b2lkIGFpcm9oYV9mZV9wc2VfcG9ydHNfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMjcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNDM6XHRpZiAoYWlyb2hhX3BwZV9pc19lbmFibGVkKGV0aCwgMSkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQ0LVx0XHR1MzIgYWxsX3Jzdjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0Ni1cdFx0LyogaHcgbWlzc2VzIFBQRTIgb3EgcnN2ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM0NzpcdFx0YWxsX3JzdiA9IGFpcm9oYV9mZV9nZXRfcHNlX2FsbF9yc3YoZXRoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQ4LVx0XHRhbGxfcnN2ICYjNDM7PSBQU0VfUlNWX1BBR0VTICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQ5LVx0XHRcdCAgIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfUFBFMl07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM1MDpcdFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9QU0VfQlVGX1NFVCwgUFNFX0FMTFJTVl9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNTEtXHRcdFx0ICAgICAgRklFTERfUFJFUChQU0VfQUxMUlNWX01BU0ssIGFsbF9yc3YpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM1NS1cdGZvciAocSA9IDA7IHEgXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfQ0RNMV07IHEmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNTY6XHRcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0NETTEsIHEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM1Ny1cdFx0XHRcdFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzU5LVx0Zm9yIChxID0gMDsgcSBcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9HRE0xXTsgcSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM2MDpcdFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfR0RNMSwgcSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzYxLVx0XHRcdFx0XHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNjMtXHRmb3IgKHEgPSA2OyBxIFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0dETTJdOyBxJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzY0Olx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9HRE0yLCBxLCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzY1LVx0LyogR0RNMyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNjYtXHRmb3IgKHEgPSAwOyBxIFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0dETTNdOyBxJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzY3Olx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9HRE0zLCBxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNjgtXHRcdFx0XHRcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3MS1cdFx0aWYgKHEgXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfUFBFMV0gLyAyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNzI6XHRcdFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfUFBFMSwgcSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzczLVx0XHRcdFx0XHRcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzc0LVx0XHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM3NTpcdFx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9QUEUxLCBxLCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzc2LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzc4LVx0Zm9yIChxID0gMDsgcSBcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9DRE0yXTsgcSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM3OTpcdFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfQ0RNMiwgcSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzgwLVx0XHRcdFx0XHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zODItXHRmb3IgKHEgPSAwOyBxIFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0NETTNdIC0gMTsgcSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM4MzpcdFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfQ0RNMywgcSwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM4NC1cdC8qIENETTQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzg1LVx0Zm9yIChxID0gNDsgcSBcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9DRE00XTsgcSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM4NjpcdFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfQ0RNNCwgcSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzg3LVx0XHRcdFx0XHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM4ODpcdGlmIChhaXJvaGFfcHBlX2lzX2VuYWJsZWQoZXRoLCAxKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zODktXHRcdC8qIFBQRTIgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM5MS1cdFx0XHRpZiAocSBcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9QUEUyXSAvIDIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM5MjpcdFx0XHRcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX1BQRTIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM5My1cdFx0XHRcdFx0XHRcdCBxLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzk1LVx0XHRcdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mzk2Olx0XHRcdFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfUFBFMixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzk3LVx0XHRcdFx0XHRcdFx0IHEsIDApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDAxLVx0Zm9yIChxID0gMDsgcSBcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9HRE00XTsgcSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQwMjpcdFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfR0RNNCwgcSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDAzLVx0XHRcdFx0XHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MDUtXHRmb3IgKHEgPSAwOyBxIFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0NETTVdOyBxJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDA2Olx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9DRE01LCBxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MDctXHRcdFx0XHRcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQwOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDEwOnN0YXRpYyBpbnQgYWlyb2hhX2ZlX21jX3ZsYW5fY2xlYXIoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDExLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQxNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDE4Olx0XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfTUNfVkxBTl9EQVRBLCAweDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MjEtXHRcdCAgICAgIE1DX1ZMQU5fQ0ZHX1RBQkxFX1NFTF9NQVNLIHwgTUNfVkxBTl9DRkdfUldfTUFTSztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDIyOlx0XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfTUNfVkxBTl9DRkcsIHZhbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQyMzpcdFx0ZXJyID0gcmVhZF9wb2xsX3RpbWVvdXQoYWlyb2hhX2ZlX3JyLCB2YWwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQyNC1cdFx0XHRcdFx0dmFsIFx1MDAyNiBNQ19WTEFOX0NGR19DTURfRE9ORV9NQVNLLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDMwLVx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBBSVJPSEFfRkVfTUNfTUFYX1ZMQU5fUE9SVDsgaiYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDMxOlx0XHRcdGFpcm9oYV9mZV93cihldGgsIFJFR19NQ19WTEFOX0RBVEEsIDB4MCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQzMi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQzNS1cdFx0XHQgICAgICBNQ19WTEFOX0NGR19SV19NQVNLO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MzY6XHRcdFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX01DX1ZMQU5fQ0ZHLCB2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0Mzc6XHRcdFx0ZXJyID0gcmVhZF9wb2xsX3RpbWVvdXQoYWlyb2hhX2ZlX3JyLCB2YWwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQzOC1cdFx0XHRcdFx0XHR2YWwgXHUwMDI2IE1DX1ZMQU5fQ0ZHX0NNRF9ET05FX01BU0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ1MDpzdGF0aWMgdm9pZCBhaXJvaGFfZmVfY3Jzbl9xc2VsX2luaXQoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDUxLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDUyLVx0LyogQ0RNMV9DUlNOX1FTRUwgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDUzOlx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDEsIENSU05fMjIgXHUwMDNlXHUwMDNlIDIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NTQtXHRcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yMiksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NTYtXHRcdFx0XHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0NTc6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMSwgQ1JTTl8wOCBcdTAwM2VcdTAwM2UgMiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ1OC1cdFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzA4KSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ2MC1cdFx0XHRcdCBDRE1fQ1JTTl9RU0VMX1ExKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ2MTpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgxLCBDUlNOXzIxIFx1MDAzZVx1MDAzZSAyKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDYyLVx0XHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMjEpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDY0LVx0XHRcdFx0IENETV9DUlNOX1FTRUxfUTEpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDY1Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDEsIENSU05fMjQgXHUwMDNlXHUwMDNlIDIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NjYtXHRcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yNCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NjgtXHRcdFx0XHQgQ0RNX0NSU05fUVNFTF9RNikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0Njk6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMSwgQ1JTTl8yNSBcdTAwM2VcdTAwM2UgMiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ3MC1cdFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzI1KSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ3My1cdC8qIENETTJfQ1JTTl9RU0VMICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ3NDpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgyLCBDUlNOXzA4IFx1MDAzZVx1MDAzZSAyKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDc1LVx0XHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMDgpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDc3LVx0XHRcdFx0IENETV9DUlNOX1FTRUxfUTEpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDc4Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDIsIENSU05fMjEgXHUwMDNlXHUwMDNlIDIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NzktXHRcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yMSksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00ODEtXHRcdFx0XHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0ODI6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMiwgQ1JTTl8yMiBcdTAwM2VcdTAwM2UgMiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ4My1cdFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzIyKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ4NS1cdFx0XHRcdCBDRE1fQ1JTTl9RU0VMX1ExKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ4NjpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgyLCBDUlNOXzI0IFx1MDAzZVx1MDAzZSAyKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDg3LVx0XHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMjQpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDg5LVx0XHRcdFx0IENETV9DUlNOX1FTRUxfUTYpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDkwOlx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDIsIENSU05fMjUgXHUwMDNlXHUwMDNlIDIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00OTEtXHRcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yNSksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00OTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ5NjpzdGF0aWMgaW50IGFpcm9oYV9mZV9pbml0KHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ5Ny17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ5ODpcdGFpcm9oYV9mZV9tYWNjcl9pbml0KGV0aCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ5OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTAwLVx0LyogUFNFIElRIHJlc2VydmUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTAxOlx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19QU0VfSVFfUkVWMSwgUFNFX0lRX1JFUzFfUDJfTUFTSyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTAyLVx0XHQgICAgICBGSUVMRF9QUkVQKFBTRV9JUV9SRVMxX1AyX01BU0ssIDB4MTApKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTAzOlx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19QU0VfSVFfUkVWMixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTA0LVx0XHQgICAgICBQU0VfSVFfUkVTMl9QNV9NQVNLIHwgUFNFX0lRX1JFUzJfUDRfTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUwOC1cdC8qIGVuYWJsZSBGRSBjb3B5IGVuZ2luZSBmb3IgS0EvRFBJICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUwOTpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9QQ0VfQ0ZHLCBQQ0VfRFBJX0VOX01BU0sgfCBQQ0VfS0FfRU5fTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUxMC1cdC8qIHNldCB2aXAgcXVldWUgc2VsZWN0aW9uIHRvIHJpbmcgMSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MTE6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9GV0RfQ0ZHKDEpLCBDRE1fVklQX1FTRUxfTUFTSyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTEyLVx0XHQgICAgICBGSUVMRF9QUkVQKENETV9WSVBfUVNFTF9NQVNLLCAweDQpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTEzOlx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fRldEX0NGRygyKSwgQ0RNX1ZJUF9RU0VMX01BU0ssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUxNC1cdFx0ICAgICAgRklFTERfUFJFUChDRE1fVklQX1FTRUxfTUFTSywgMHg0KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUxNS1cdC8qIHNldCBHRE00IHNvdXJjZSBpbnRlcmZhY2Ugb2Zmc2V0IHRvIDggKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTE2Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19HRE1fU1JDX1BPUlRfU0VUKDQpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MTctXHRcdCAgICAgIEdETV9TUE9SVF9PRkYyX01BU0sgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTI0LVx0Lyogc2V0IFBTRSBQYWdlIGFzIDEyOEIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTI1Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9ETUFfR0xPX0NGRyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTI2LVx0XHQgICAgICBGRV9ETUFfR0xPX0wyX1NQQUNFX01BU0sgfCBGRV9ETUFfR0xPX1BHX1NaX01BU0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MjgtXHRcdCAgICAgIEZFX0RNQV9HTE9fUEdfU1pfTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUyOTpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9SU1RfR0xPX0NGRyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTMwLVx0XHQgICAgIEZFX1JTVF9DT1JFX01BU0sgfCBGRV9SU1RfR0RNM19NQklfQVJCX01BU0sgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTM2LVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUzNzpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9DRE0xX09RX01BUDAsIEJJVCg0KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUzODpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9DRE0xX09RX01BUDEsIEJJVCgyOCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1Mzk6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfQ0RNMV9PUV9NQVAyLCBCSVQoNCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NDA6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfQ0RNMV9PUV9NQVAzLCBCSVQoMjgpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTQxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NDI6XHRhaXJvaGFfZmVfdmlwX3NldHVwKGV0aCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU0MzpcdGFpcm9oYV9mZV9wc2VfcG9ydHNfaW5pdChldGgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU0NTpcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfR0RNX01JU0NfQ0ZHLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NDYtXHRcdCAgICAgIEdETTJfUkRNX0FDS19XQUlUX1BSRUZfTUFTSyB8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU0Ny1cdFx0ICAgICAgR0RNMl9DSE5fVkxEX01PREVfTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU0ODpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0ZXRF9DRkcoMiksIENETV9PQU1fUVNFTF9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NDktXHRcdCAgICAgIEZJRUxEX1BSRVAoQ0RNX09BTV9RU0VMX01BU0ssIDE1KSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NTItXHQvKiBOUFUgQ29yZS0zLCBOUFUgQnJpZGdlIENoYW5uZWwtMyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NTM6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0lQX0ZSQUdfRlAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU1NC1cdFx0ICAgICAgSVBfRlJBR01FTlRfUE9SVF9NQVNLIHwgSVBfRlJBR01FTlRfTkJRX01BU0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NTctXHQvKiBRRE1BIExBTiwgUlggUmluZy0yMiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NTg6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0lQX0ZSQUdfRlAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU1OS1cdFx0ICAgICAgSVBfQVNTRU1CTEVfUE9SVF9NQVNLIHwgSVBfQVNTRU1CTEVfTkJRX01BU0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU2MzpcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfR0RNX0ZXRF9DRkcoQUlST0hBX0dETTNfSURYKSwgR0RNX1BBRF9FTl9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTY0Olx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19HRE1fRldEX0NGRyhBSVJPSEFfR0RNNF9JRFgpLCBHRE1fUEFEX0VOX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2Ni1cdC8qIEVuYWJsZSBzcGxpdCBmb3IgTUlCIGNvdW50ZXJzIGZvciBHRE0zIGFuZCBHRE00ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU2NzpcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfRkVfR0RNX01JQl9DRkcoQUlST0hBX0dETTNfSURYKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTY4LVx0XHQgICAgICBGRV9HRE1fVFhfTUlCX1NQTElUX0VOX01BU0sgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NjktXHRcdCAgICAgIEZFX0dETV9SWF9NSUJfU1BMSVRfRU5fTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU3MDpcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfRkVfR0RNX01JQl9DRkcoQUlST0hBX0dETTRfSURYKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTcxLVx0XHQgICAgICBGRV9HRE1fVFhfTUlCX1NQTElUX0VOX01BU0sgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTczLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NzQ6XHRhaXJvaGFfZmVfY3Jzbl9xc2VsX2luaXQoZXRoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NzY6XHRhaXJvaGFfZmVfY2xlYXIoZXRoLCBSRUdfRkVfQ1BPUlRfQ0ZHLCBGRV9DUE9SVF9RVUVVRV9YRkNfTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU3NzpcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfRkVfQ1BPUlRfQ0ZHLCBGRV9DUE9SVF9QT1JUX1hGQ19NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NzktXHQvKiBkZWZhdWx0IGFnaW5nIG1vZGUgZm9yIG1iaSB1bmxvY2sgaXNzdWUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTgwOlx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19HRE1fQ0hOX1JMUygyKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTgxLVx0XHQgICAgICBNQklfUlhfQUdFX1NFTF9NQVNLIHwgTUJJX1RYX0FHRV9TRUxfTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU4NS1cdC8qIGRpc2FibGUgSUZDIGJ5IGRlZmF1bHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTg2Olx0YWlyb2hhX2ZlX2NsZWFyKGV0aCwgUkVHX0ZFX0NTUl9JRkNfQ0ZHLCBGRV9JRkNfRU5fTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU4Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTg4LVx0LyogZW5hYmxlIDE6TiB2bGFuIGFjdGlvbiwgaW5pdCB2bGFuIHRhYmxlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU4OTpcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfTUNfVkxBTl9FTiwgTUNfVkxBTl9FTl9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTkwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1OTE6XHRyZXR1cm4gYWlyb2hhX2ZlX21jX3ZsYW5fY2xlYXIoZXRoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTkyLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTkzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1OTQ6c3RhdGljIGludCBhaXJvaGFfcWRtYV9maWxsX3J4X3F1ZXVlKHN0cnVjdCBhaXJvaGFfcXVldWUgKnEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU5NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU5NjpcdHN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYSA9IHEtXHUwMDNlcWRtYTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTk3LVx0aW50IHFpZCA9IHEgLSBcdTAwMjZxZG1hLVx1MDAzZXFfcnhbMF07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02MDAtXHR3aGlsZSAocS1cdTAwM2VxdWV1ZWQgXHUwMDNjIHEtXHUwMDNlbmRlc2MgLSAxKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjYwMTpcdFx0c3RydWN0IGFpcm9oYV9xdWV1ZV9lbnRyeSAqZSA9IFx1MDAyNnEtXHUwMDNlZW50cnlbcS1cdTAwM2VoZWFkXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjAyOlx0XHRzdHJ1Y3QgYWlyb2hhX3FkbWFfZGVzYyAqZGVzYyA9IFx1MDAyNnEtXHUwMDNlZGVzY1txLVx1MDAzZWhlYWRdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02MDMtXHRcdHN0cnVjdCBwYWdlICpwYWdlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjMyLVx0aWYgKG5mcmFtZXMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjYzMzpcdFx0YWlyb2hhX3FkbWFfcm13KHFkbWEsIFJFR19SWF9DUFVfSURYKHFpZCksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTYzNC1cdFx0XHRcdFJYX1JJTkdfQ1BVX0lEWF9NQVNLLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjM5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2NDA6c3RhdGljIHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY0MTphaXJvaGFfcWRtYV9nZXRfZ2RtX2RldihzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoLCBzdHJ1Y3QgYWlyb2hhX3FkbWFfZGVzYyAqZGVzYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjQyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjQzOlx0c3RydWN0IGFpcm9oYV9nZG1fcG9ydCAqcG9ydDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjQ0LVx0dTE2IHAsIGQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NzEtICogd2FpdGluZyBvbiwgd2FzIG5ldmVyIG1hcmtlZCBET05FLiBUaGlzIGhhcHBlbnMgd2hlbiBodyB3cml0ZXMgYVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2NzI6ICogY29tcGxldGVkIGRlc2NyaXB0b3IgcGFzdCBxLVx1MDAzZWhlYWQgYmVmb3JlIGFpcm9oYV9xZG1hX2ZpbGxfcnhfcXVldWUoKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NzMtICogaGFzIHBvc3RlZCBhIGZyZXNoIGJ1ZmZlciB0aGVyZSwgZGVjb3VwbGVkIGZyb20gc3cmIzM5O3Mgb3duIHBvc3Rpbmdcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY4My0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Njg0OnN0YXRpYyB2b2lkIGFpcm9oYV9xZG1hX3J4X2NoZWNrX3N0YWxsKHN0cnVjdCBhaXJvaGFfcXVldWUgKnEpXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAwODozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzU0NQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O2QgYXBwcm9hY2ggdGhpcyB0YXNrLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIEFpcm9oYSBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpSaWdodCwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhpcyBBaXJvaGEgRXRoZXJuZXQgZHJpdmVyLiBNeSBmaXJzdCBwb3J0IG9mIGNhbGwgd2lsbCBiZSB0aGUgYEtjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSB0aGUgb25lIGxvY2F0ZWQgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIGdvb2Qgc3R1ZmYgaXMgZGVmaW5lZCDigJMgZGVwZW5kZW5jaWVzLCBhbnkgYXJjaGl0ZWN0dXJhbCBjb25zdHJhaW50cywgYW5kIGFueSBwbGF0Zm9ybS1zcGVjaWZpYyByZXF1aXJlbWVudHMuIEJ5IGV4YW1pbmluZyB0aGlzIGZpbGUsIEkgY2FuIHF1aWNrbHkgZ3Jhc3Agd2hhdCBuZWVkcyB0byBiZSBlbmFibGVkLCB3aGF0IG90aGVyIGNvbXBvbmVudHMgaXQgcmVsaWVzIG9uLCBhbmQgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBoYXJkd2FyZSBjb25kaXRpb25zIGl0IGV4cGVjdHMgdG8gZmluZC4gVW5kZXJzdGFuZGluZyB0aGVzZSBkZXBlbmRlbmNpZXMgYW5kIGNvbnN0cmFpbnRzIGlzIGNydWNpYWwgYmVmb3JlIEkgY2FuIGV2ZW4gc3RhcnQgdGhpbmtpbmcgYWJvdXQgaW50ZWdyYXRpb24gb3IgbW9kaWZpY2F0aW9uLiBFc3NlbnRpYWxseSwgdGhpcyBpcyB0aGUga2V5IHRvIHVubG9ja2luZyBob3cgdGhpcyBkcml2ZXIgKmZpdHMqIGludG8gdGhlIGJpZ2dlciBwaWN0dXJlIG9mIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbS4gSSBuZWVkIHRvIHNlZSB3aGF0JiMzOTtzIHdoYXQgYmVmb3JlIG1vdmluZyBmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDA4OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgTkVUX1ZFTkRPUl9BSVJPSEFcbiAgIDM6XHRcdGJvb2wgXCYjMzQ7QWlyb2hhIGRldmljZXNcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gQVJDSF9BSVJPSEEgfHwgQ09NUElMRV9URVNUXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIElmIHlvdSBoYXZlIGEgQWlyb2hhIFNvQyB3aXRoIGV0aGVybmV0LCBzYXkgWS5cbiAgIDc6XHRcbiAgIDg6XHRpZiBORVRfVkVORE9SX0FJUk9IQVxuICAgOTpcdFxuICAxMDpcdGNvbmZpZyBORVRfQUlST0hBX05QVVxuICAxMTpcdFx0dHJpc3RhdGUgXCYjMzQ7QWlyb2hhIE5QVSBzdXBwb3J0XCYjMzQ7XG4gIDEyOlx0XHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcbiAgMTM6XHRcdHNlbGVjdCBSRUdNQVBfTU1JT1xuICAxNDpcdFx0aGVscFxuICAxNTpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBBaXJvaGEgTmV0d29yayBQcm9jZXNzb3IgKE5QVSkgYXZhaWxhYmxlXG4gIDE2Olx0XHQgIG9uIHRoZSBBaXJvaGEgU29jIGZhbWlseS5cbiAgMTc6XHRcbiAgMTg6XHRjb25maWcgTkVUX0FJUk9IQVxuICAxOTpcdFx0dHJpc3RhdGUgXCYjMzQ7QWlyb2hhIFNvQyBHaWdhYml0IEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbiAgMjA6XHRcdGRlcGVuZHMgb24gTkVUX0RTQSB8fCAhTkVUX0RTQVxuICAyMTpcdFx0c2VsZWN0IE5FVF9BSVJPSEFfTlBVXG4gIDIyOlx0XHRzZWxlY3QgUEFHRV9QT09MXG4gIDIzOlx0XHRoZWxwXG4gIDI0Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBnaWdhYml0IGV0aGVybmV0IE1BQ3MgaW4gdGhlXG4gIDI1Olx0XHQgIEFpcm9oYSBTb0MgZmFtaWx5LlxuICAyNjpcdFxuICAyNzpcdGNvbmZpZyBORVRfQUlST0hBX0ZMT1dfU1RBVFNcbiAgMjg6XHRcdGRlZmF1bHQgeVxuICAyOTpcdFx0Ym9vbCBcJiMzNDtBaXJvaGEgZmxvdyBzdGF0c1wmIzM0O1xuICAzMDpcdFx0ZGVwZW5kcyBvbiBORVRfQUlST0hBIFx1MDAyNlx1MDAyNiBORVRfQUlST0hBX05QVVxuICAzMTpcdFx0aGVscFxuICAzMjpcdFx0ICBFbmFibGUgQWlyb2hhIGZsb3d0YWJsZSBzdGF0aXN0aWMgY291bnRlcnMuXG4gIDMzOlx0XG4gIDM0Olx0ZW5kaWYgI05FVF9WRU5ET1JfQUlST0hBXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMDg6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjRtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQyNjkKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiA2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5FVF9BSVJPSEEgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgTkVUX0FJUk9IQWAgZHJpdmVyLiBJdCYjMzk7cyBhbiBFdGhlcm5ldCBTb0MgZHJpdmVyIHNwZWNpZmljYWxseSBmb3IgQWlyb2hhIFNvQ3MsIHdoaWNoIG1ha2VzIGltbWVkaWF0ZSBzZW5zZSBnaXZlbiB0aGUgbmFtZS4gVGhlIGBkZXBlbmRzIG9uIEFSQ0hfQUlST0hBIHx8IENPTVBJTEVfVEVTVGAgY29uZGl0aW9uIGlzIGZhaXJseSBzdHJhaWdodGZvcndhcmQsIGxpa2VseSBpbmRpY2F0aW5nIGl0IGVpdGhlciB0YXJnZXRzIHRoZSBBaXJvaGEgYXJjaGl0ZWN0dXJlIG9yIGlzIGVuYWJsZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMgZHVyaW5nIHRoZSBidWlsZC4KCk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IEhvdyBpcyB0aGlzIGRyaXZlciBpbnRlZ3JhdGVkPyBJcyBpdCBhIHBsYXRmb3JtIGRldmljZSBkcml2ZXIgcnVubmluZyBvbiB0aGUgU29DIGl0c2VsZj8gVG8gdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IsIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGUgYGFpcm9oYV9ldGguY2Agc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSB0aGUgcHJvYmUgZnVuY3Rpb24gYW5kIHRoZSBkZXZpY2UgbWF0Y2hpbmcgbG9naWMuIFRob3NlIGFyZSB0aGUgdGVsbC10YWxlIHNpZ25zIG9mIGhvdyB0aGUga2VybmVsIGlkZW50aWZpZXMgYW5kIGluaXRpYWxpemVzIHRoZSBoYXJkd2FyZSBpdCBjb250cm9scy4gSSYjMzk7bGwgbmVlZCB0byBzZWUgaG93IHRoZSBkcml2ZXIgaXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBwbGF0Zm9ybSB0byBkZXRlcm1pbmUgaWYgdGhlIGRldmljZSBpcyBmb3VuZCBhbmQsIGFzIHN1Y2gsIGlmIG15IHBsYXRmb3JtIGlzIGNvcnJlY3RseSBzdXBwb3J0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMDg6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWlyb2hhX3Byb2JlfGFpcm9oYV9kcml2ZXJ8bW9kdWxlX3BsYXRmb3JtX2RyaXZlcnxwbGF0Zm9ybV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYz0zNzU1PXN0YXRpYyBpbnQgYWlyb2hhX3JlZ2lzdGVyX2dkbV9kZXZpY2VzKHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNzgzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNzg0OnN0YXRpYyBpbnQgYWlyb2hhX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3ODUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM9NDE0Nz1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBvZl9haXJvaGFfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MTQ4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MTQ5OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGFpcm9oYV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQxNTA6XHQucHJvYmUgPSBhaXJvaGFfcHJvYmUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQxNTEtXHQucmVtb3ZlID0gYWlyb2hhX3JlbW92ZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQxNTYtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDE1Nzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGFpcm9oYV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MTU4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM9ODA2PXN0YXRpYyB2b2lkIGFpcm9oYV9ucHVfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy04MTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjgxNTpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBhaXJvaGFfbnB1X2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtODE2LVx0LnByb2JlID0gYWlyb2hhX25wdV9wcm9iZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTgyMi19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo4MjM6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihhaXJvaGFfbnB1X2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTgyNC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAwODozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTIwNQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyB0aGUgYWlyb2hhX3Byb2JlKioKCk9rYXksIHNvIEkgbmVlZCB0byBkaWcgaW50byB0aGUgYGFpcm9oYV9wcm9iZWAgZnVuY3Rpb24uIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGhvdyBkb2VzIHRoaXMgdGhpbmcgb3BlcmF0ZT8gV2hhdCBzcGVjaWZpYyBoYXJkd2FyZSByZXNvdXJjZXMgYW5kIERldmljZSBUcmVlIG5vZGVzIGRvZXMgaXQgbmVlZCB0byBzdWNjZXNzZnVsbHkgZnVuY3Rpb24/IFVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcyBpcyBjcml0aWNhbCBmb3IgdHJvdWJsZXNob290aW5nLCBkZWJ1Z2dpbmcsIG9yIGV2ZW4ganVzdCBtb2RpZnlpbmcgaXRzIGJlaGF2aW9yLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc2NvcGUgYW5kIHRoZSBrZXkgaW50ZXJmYWNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMDg6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzc4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszNzgwOlx0XG4zNzgxOlx0XHRyZXR1cm4gMDtcbjM3ODI6XHR9XG4zNzgzOlx0XG4zNzg0Olx0c3RhdGljIGludCBhaXJvaGFfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbjM3ODU6XHR7XG4zNzg2Olx0XHRzdHJ1Y3QgcmVzZXRfY29udHJvbF9idWxrX2RhdGEgKnhzaV9yc3RzO1xuMzc4NzpcdFx0c3RydWN0IGRldmljZV9ub2RlICpucDtcbjM3ODg6XHRcdHN0cnVjdCBhaXJvaGFfZXRoICpldGg7XG4zNzg5Olx0XHRpbnQgaSwgZXJyO1xuMzc5MDpcdFxuMzc5MTpcdFx0ZXRoID0gZGV2bV9remFsbG9jKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBzaXplb2YoKmV0aCksIEdGUF9LRVJORUwpO1xuMzc5MjpcdFx0aWYgKCFldGgpXG4zNzkzOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuMzc5NDpcdFxuMzc5NTpcdFx0ZXRoLVx1MDAzZXNvYyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG4zNzk2Olx0XHRpZiAoIWV0aC1cdTAwM2Vzb2MpXG4zNzk3Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuMzc5ODpcdFxuMzc5OTpcdFx0ZXRoLVx1MDAzZWRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuMzgwMDpcdFxuMzgwMTpcdFx0ZXJyID0gZG1hX3NldF9tYXNrX2FuZF9jb2hlcmVudChldGgtXHUwMDNlZGV2LCBETUFfQklUX01BU0soMzIpKTtcbjM4MDI6XHRcdGlmIChlcnIpIHtcbjM4MDM6XHRcdFx0ZGV2X2VycihldGgtXHUwMDNlZGV2LCBcJiMzNDtmYWlsZWQgY29uZmlndXJpbmcgRE1BIG1hc2tcXG5cJiMzNDspO1xuMzgwNDpcdFx0XHRyZXR1cm4gZXJyO1xuMzgwNTpcdFx0fVxuMzgwNjpcdFxuMzgwNzpcdFx0ZXRoLVx1MDAzZWZlX3JlZ3MgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2VfYnluYW1lKHBkZXYsIFwmIzM0O2ZlXCYjMzQ7KTtcbjM4MDg6XHRcdGlmIChJU19FUlIoZXRoLVx1MDAzZWZlX3JlZ3MpKVxuMzgwOTpcdFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShldGgtXHUwMDNlZGV2LCBQVFJfRVJSKGV0aC1cdTAwM2VmZV9yZWdzKSxcbjM4MTA6XHRcdFx0XHRcdCAgICAgXCYjMzQ7ZmFpbGVkIHRvIGlvbWFwIGZlIHJlZ3NcXG5cJiMzNDspO1xuMzgxMTpcdFxuMzgxMjpcdFx0ZXRoLVx1MDAzZXJzdHNbMF0uaWQgPSBcJiMzNDtmZVwmIzM0OztcbjM4MTM6XHRcdGV0aC1cdTAwM2Vyc3RzWzFdLmlkID0gXCYjMzQ7cGRtYVwmIzM0OztcbjM4MTQ6XHRcdGV0aC1cdTAwM2Vyc3RzWzJdLmlkID0gXCYjMzQ7cWRtYVwmIzM0OztcbjM4MTU6XHRcdGVyciA9IGRldm1fcmVzZXRfY29udHJvbF9idWxrX2dldF9leGNsdXNpdmUoZXRoLVx1MDAzZWRldixcbjM4MTY6XHRcdFx0XHRcdFx0XHQgICAgQVJSQVlfU0laRShldGgtXHUwMDNlcnN0cyksXG4zODE3Olx0XHRcdFx0XHRcdFx0ICAgIGV0aC1cdTAwM2Vyc3RzKTtcbjM4MTg6XHRcdGlmIChlcnIpIHtcbjM4MTk6XHRcdFx0ZGV2X2VycihldGgtXHUwMDNlZGV2LCBcJiMzNDtmYWlsZWQgdG8gZ2V0IGJ1bGsgcmVzZXQgbGluZXNcXG5cJiMzNDspO1xuMzgyMDpcdFx0XHRyZXR1cm4gZXJyO1xuMzgyMTpcdFx0fVxuMzgyMjpcdFxuMzgyMzpcdFx0eHNpX3JzdHMgPSBkZXZtX2tjYWxsb2MoZXRoLVx1MDAzZWRldixcbjM4MjQ6XHRcdFx0XHRcdGV0aC1cdTAwM2Vzb2MtXHUwMDNlbnVtX3hzaV9yc3RzLCBzaXplb2YoKnhzaV9yc3RzKSxcbjM4MjU6XHRcdFx0XHRcdEdGUF9LRVJORUwpO1xuMzgyNjpcdFx0aWYgKCF4c2lfcnN0cylcbjM4Mjc6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4zODI4Olx0XG4zODI5Olx0XHRldGgtXHUwMDNleHNpX3JzdHMgPSB4c2lfcnN0cztcbjM4MzA6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGV0aC1cdTAwM2Vzb2MtXHUwMDNlbnVtX3hzaV9yc3RzOyBpJiM0MzsmIzQzOylcbjM4MzE6XHRcdFx0ZXRoLVx1MDAzZXhzaV9yc3RzW2ldLmlkID0gZXRoLVx1MDAzZXNvYy1cdTAwM2V4c2lfcnN0c19uYW1lc1tpXTtcbjM4MzI6XHRcbjM4MzM6XHRcdGVyciA9IGRldm1fcmVzZXRfY29udHJvbF9idWxrX2dldF9leGNsdXNpdmUoZXRoLVx1MDAzZWRldixcbjM4MzQ6XHRcdFx0XHRcdFx0XHQgICAgZXRoLVx1MDAzZXNvYy1cdTAwM2VudW1feHNpX3JzdHMsXG4zODM1Olx0XHRcdFx0XHRcdFx0ICAgIGV0aC1cdTAwM2V4c2lfcnN0cyk7XG4zODM2Olx0XHRpZiAoZXJyKSB7XG4zODM3Olx0XHRcdGRldl9lcnIoZXRoLVx1MDAzZWRldiwgXCYjMzQ7ZmFpbGVkIHRvIGdldCBidWxrIHhzaSByZXNldCBsaW5lc1xcblwmIzM0Oyk7XG4zODM4Olx0XHRcdHJldHVybiBlcnI7XG4zODM5Olx0XHR9XG4zODQwOlx0XG4zODQxOlx0XHRldGgtXHUwMDNlbmFwaV9kZXYgPSBhbGxvY19uZXRkZXZfZHVtbXkoMCk7XG4zODQyOlx0XHRpZiAoIWV0aC1cdTAwM2VuYXBpX2RldilcbjM4NDM6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4zODQ0Olx0XG4zODQ1Olx0XHQvKiBFbmFibGUgdGhyZWFkZWQgTkFQSSBieSBkZWZhdWx0ICovXG4zODQ2Olx0XHRldGgtXHUwMDNlbmFwaV9kZXYtXHUwMDNldGhyZWFkZWQgPSB0cnVlO1xuMzg0NzpcdFx0c3Ryc2NweShldGgtXHUwMDNlbmFwaV9kZXYtXHUwMDNlbmFtZSwgXCYjMzQ7cWRtYV9ldGhcJiMzNDssIHNpemVvZihldGgtXHUwMDNlbmFwaV9kZXYtXHUwMDNlbmFtZSkpO1xuMzg0ODpcdFx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgZXRoKTtcbjM4NDk6XHRcbjM4NTA6XHRcdGVyciA9IGFpcm9oYV9od19pbml0KHBkZXYsIGV0aCk7XG4zODUxOlx0XHRpZiAoZXJyKVxuMzg1MjpcdFx0XHRnb3RvIGVycm9yX25ldGRldl9mcmVlO1xuMzg1MzpcdFxuMzg1NDpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShldGgtXHUwMDNlcWRtYSk7IGkmIzQzOyYjNDM7KSB7XG4zODU1Olx0XHRcdGFpcm9oYV9xZG1hX3N0YXJ0X25hcGkoXHUwMDI2ZXRoLVx1MDAzZXFkbWFbaV0pO1xuMzg1NjpcdFx0XHRhaXJvaGFfcWRtYV9zZXQoXHUwMDI2ZXRoLVx1MDAzZXFkbWFbaV0sIFJFR19RRE1BX0dMT0JBTF9DRkcsXG4zODU3Olx0XHRcdFx0XHRHTE9CQUxfQ0ZHX1RYX0RNQV9FTl9NQVNLIHxcbjM4NTg6XHRcdFx0XHRcdEdMT0JBTF9DRkdfUlhfRE1BX0VOX01BU0spO1xuMzg1OTpcdFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAwODozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjY3MwoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyB0aGUgYGFpcm9oYV9wcm9iZWAgRnVuY3Rpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBhaXJvaGFfcHJvYmVgLiBUaGUgbmFtZSBpdHNlbGYgc3VnZ2VzdHMgaXQmIzM5O3MgYSBwcm9iZSBmdW5jdGlvbiwgbGlrZWx5IGFzc29jaWF0ZWQgd2l0aCBhbiBTb0MgcGxhdGZvcm0gZHJpdmVyLCBhbmQganVkZ2luZyBieSB0aGUgYGFpcm9oYWAgcHJlZml4LCBpdCYjMzk7cyBzcGVjaWZpYyB0byB0aGF0IHZlbmRvciYjMzk7cyBoYXJkd2FyZS4gVGhlIGNsdWUgdGhhdCBjZW1lbnRzIHRoaXMgaXMgdGhlIE9GIGRldmljZSB0cmVlIG1hdGNoLCBgb2ZfYWlyb2hhX21hdGNoYC4gVGhhdCB0ZWxscyBtZSBpdCYjMzk7cyB1c2luZyB0aGUgT3BlbiBGaXJtd2FyZSBkZXZpY2UgdHJlZSB0byBpZGVudGlmeSBhbmQgY29uZmlndXJlIHNwZWNpZmljIEFpcm9oYSBoYXJkd2FyZSB3aXRoaW4gYSBsYXJnZXIgc3lzdGVtLiBJIG5lZWQgdG8gZm9jdXMgb24gd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMuIEkmIzM5O2xsIGp1bXAgZGlyZWN0bHkgdG8gbGluZXMgNDE0MC00MTUwIHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiBUaGF0JiMzOTtzIHVzdWFsbHkgd2hlcmUgdGhlIG1lYXQgb2YgdGhlIGRyaXZlciBpbnRlcmFjdGlvbiB3aXRoIHRoZSBoYXJkd2FyZSBiZWdpbnMuIEnigJltIGV4cGVjdGluZyB0byBzZWUgdGhpbmdzIGxpa2UgcmVzb3VyY2UgcmVxdWVzdHMgKG1lbW9yeSByZWdpb25zLCBJUlFzKSwgaW5pdGlhbGl6YXRpb25zLCBhbmQgcG90ZW50aWFsbHkgc29tZSBkZXZpY2Utc3BlY2lmaWMgc2V0dXAgb3IgY29uZmlndXJhdGlvbiBiYXNlZCBvbiB0aGUgZGV2aWNlIHRyZWUgZGF0YS4gSSYjMzk7bSBrZWVuIHRvIHNlZSB0aGUgYXBwcm9hY2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDA4OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQxMzUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NDEzNTpcdFx0Lm9wcyA9IHtcbjQxMzY6XHRcdFx0LmdldF9zcG9ydCA9IGFpcm9oYV9hbjc1ODNfZ2V0X3Nwb3J0LFxuNDEzNzpcdFx0XHQuZ2V0X3ZpcF9wb3J0ID0gYWlyb2hhX2FuNzU4M19nZXRfdmlwX3BvcnQsXG40MTM4Olx0XHRcdC5nZXRfZGV2X2Zyb21fc3BvcnQgPSBhaXJvaGFfYW43NTgzX2dldF9kZXZfZnJvbV9zcG9ydCxcbjQxMzk6XHRcdH0sXG40MTQwOlx0fTtcbjQxNDE6XHRcbjQxNDI6XHRzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9haXJvaGFfbWF0Y2hbXSA9IHtcbjQxNDM6XHRcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDthaXJvaGEsZW43NTgxLWV0aFwmIzM0OywgLmRhdGEgPSBcdTAwMjZlbjc1ODFfc29jX2RhdGEgfSxcbjQxNDQ6XHRcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDthaXJvaGEsYW43NTgzLWV0aFwmIzM0OywgLmRhdGEgPSBcdTAwMjZhbjc1ODNfc29jX2RhdGEgfSxcbjQxNDU6XHRcdHsgLyogc2VudGluZWwgKi8gfVxuNDE0NjpcdH07XG40MTQ3Olx0TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgb2ZfYWlyb2hhX21hdGNoKTtcbjQxNDg6XHRcbjQxNDk6XHRzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBhaXJvaGFfZHJpdmVyID0ge1xuNDE1MDpcdFx0LnByb2JlID0gYWlyb2hhX3Byb2JlLFxuNDE1MTpcdFx0LnJlbW92ZSA9IGFpcm9oYV9yZW1vdmUsXG40MTUyOlx0XHQuZHJpdmVyID0ge1xuNDE1MzpcdFx0XHQubmFtZSA9IEtCVUlMRF9NT0ROQU1FLFxuNDE1NDpcdFx0XHQub2ZfbWF0Y2hfdGFibGUgPSBvZl9haXJvaGFfbWF0Y2gsXG40MTU1Olx0XHR9LFxuNDE1NjpcdH07XG40MTU3Olx0bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihhaXJvaGFfZHJpdmVyKTtcbjQxNTg6XHRcbjQxNTk6XHRNT0RVTEVfTElDRU5TRShcJiMzNDtHUEwgdjJcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAwODozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzQyMQoJCQkJCQkJb3V0cHV0OiAxMjQKCQkJCQkJCXRob3VnaHRzOiA4MTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQSBEZWVwIERpdmUgaW50byBWaXJ0dWFsaXplZCBSZWFjaGFiaWxpdHkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBkcml2ZXIsIGBhaXJvaGFfZXRoYCwgaXMgYSBuby1nbyBmb3IgZnV6emluZyBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZSBjb3JlIG9mIG15IGFuYWx5c2lzIHJldm9sdmVzIGFyb3VuZCBpdHMgZnVuZGFtZW50YWwgZGVwZW5kZW5jeSBvbiB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSDigJMgc3BlY2lmaWNhbGx5LCB0aGUgQWlyb2hhIEVONzU4MS9BTjc1ODMgU29DIGV0aGVybmV0IGNvbnRyb2xsZXIuIFRoaXMgaXNuJiMzOTt0IGp1c3QgYSBnZW5lcmljIG5ldHdvcmsgZGV2aWNlOyBpdCYjMzk7cyBpbnRyaWNhdGVseSB0aWVkIHRvIGEgc3BlY2lmaWMgU3lzdGVtIG9uIGEgQ2hpcCwgYW5kIHRoYXTigJlzIHRoZSBmaXJzdCByZWQgZmxhZy4KClRoZSBjb2RlIGl0c2VsZiwgYXMgSSB1bmRlcnN0YW5kIGl0LCByZWxpZXMgaGVhdmlseSBvbiBEZXZpY2UgVHJlZSAoRFQpIG5vZGVzIChgYWlyb2hhLGVuNzU4MS1ldGhgLCBldGMuKSBhbmQgdGhlIGFzc29jaWF0ZWQgTU1JTyByZWdpc3RlcnMgKCYjMzQ7ZmUmIzM0OywgJiMzNDtxZG1hJiMzNDssIGV0Yy4pLiBTdGFuZGFyZCBRRU1VLCB0aGUgdXN1YWwgd29ya2hvcnNlIGZvciBmdXp6aW5nLCBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoaXMgQWlyb2hhIGhhcmR3YXJlLCBhbmQgbmVpdGhlciBkb2VzIEdDRS4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYSBwbGF0Zm9ybSBkcml2ZXIgaGVyZSwgaW5zdGFudGlhdGVkIG9ubHkgdmlhIHRoZSBEZXZpY2UgVHJlZSBvbiB0aGVzZSBBaXJvaGEgU29Dcy4gSXQgbmVlZHMgdmVyeSBzcGVjaWZpYyBoYXJkd2FyZSBjb250ZXh0IHRvIGV2ZW4gKnByb2JlKi4gTm8gZW11bGF0aW9uLCBubyBkZXZpY2UgdHJlZSwgbm8gYWNjZXNzLgoKTGV0JiMzOTtzIGNhcmVmdWxseSBleGFtaW5lIHRoZSBpbnN0cnVjdGlvbnMgYWdhaW4uIEFoLCB5ZXMsIHRoZXJlJiMzOTtzIHRoZSByZWxldmFudCBjbGF1c2UgYWJvdXQgY29kZSBwYXRocyB0aGF0IGFyZSBpbmhlcmVudGx5IHVucmVhY2hhYmxlIGluIFFFTVUvR0NFLCBldmVuIHdpdGggc29mdHdhcmUgZW11bGF0aW9uLiBWZW5kb3Itc3BlY2lmaWMgZHJpdmVycywgUENJZSwgU21hcnROSUNzLCBHUFVz4oCUYWxsIHJlcXVpcmUgdGhhdCBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IHdlIGxhY2suICpUaGlzKiBkZWZpbml0ZWx5IGZhbGxzIGludG8gdGhhdCBjYXRlZ29yeS4gVGhlIGBhaXJvaGFfZXRoYCBkcml2ZXIgaXMgYSAqcGxhdGZvcm0qIGRyaXZlciB0aGF0IGlzIGVudGlyZWx5IGRlcGVuZGVudCBvbiB0aGlzIEFpcm9oYSBTb0MuCgpOb3csIGNvdWxkIHNvbWVvbmUgdHJ5IHRvIGZvcmNlLWZlZWQgaXQgYSBkdW1teSBwbGF0Zm9ybSBkZXZpY2U/IE1heWJlLCBidXQgZXZlbiBpZiB0aGV5IGRpZCwgdGhlIGRyaXZlciYjMzk7cyByZWxpYW5jZSBvbiBzcGVjaWZpYyBEVCBub2RlcyBhbmQgYGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZV9ieW5hbWVgIHRvIGFjY2VzcyB0aG9zZSBoYXJkd2FyZSByZWdpc3RlcnMgd2lsbCB0cmlwIHRoZW0gdXAuIFRoZSBwcm9iZSB3aWxsIGZhaWwgaW1tZWRpYXRlbHkuIFVzZXJzcGFjZSBjYW4mIzM5O3QganVzdCBjcmVhdGUgYXJiaXRyYXJ5IERldmljZSBUcmVlIGVudHJpZXMsIHNvIHRoYXQmIzM5O3MgYSBub24tc3RhcnRlci4KClNvLCBsZXQmIzM5O3MgYmUgbWV0aG9kaWNhbDoKCjEuICBGaWxlIG1vZGlmaWNhdGlvbiBpcyBjbGVhcjogYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmNgIGFuZCBgLmhgLgoyLiAgSGFyZHdhcmUgZGVwZW5kZW5jZSBpcyBhYnNvbHV0ZTogQWlyb2hhIFNvQyBHaWdhYml0IEV0aGVybmV0IGNvbnRyb2xsZXIsIHBsYXRmb3JtIGRldmljZSAoYGFpcm9oYSxlbjc1ODEtZXRoYCwgYGFpcm9oYSxhbjc1ODMtZXRoYCkuCjMuICBSZWFjaGFiaWxpdHkgaW4gUUVNVS9HQ0UgaXMgaW1wb3NzaWJsZS4gVGhpcyBoYXJkd2FyZSBzaW1wbHkgaXNuJiMzOTt0IHRoZXJlLCBhbmQgd2l0aG91dCBpdCwgdGhlIGRyaXZlciB3b24mIzM5O3QgZXZlbiBsb2FkLgoKVGhlIGNvbmNsdXNpb24gaXMgY2xlYXI6IGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBgZmFsc2VgLiBUaGlzIGlzbiYjMzk7dCBhIGZ1enphYmxlIHRhcmdldCBpbiBvdXIgY3VycmVudCBzZXR1cC4KCk15IHJlY29tbWVuZGF0aW9uPyBMZXQmIzM5O3MgdmVyaWZ5IHRoZXNlIGRldGFpbHMgd2l0aCB0aGUgZm9sbG93aW5nOgoqICAgV29ydGhGdXp6aW5nOiBmYWxzZQoqICAgRm9jdXNTeW1ib2xzOiBcWyBdCiogICBFbmFibGVDb25maWdzOiBcWyBdCgpBbmQgdGhlIHJlYXNvbmluZz8gV2VsbCwgaXQgc2hvdWxkIGJlIGNvbmNpc2UgYW5kIGl0IGlzOiB0aGlzIHBhdGNoIG1vZGlmaWVzIHRoZSBBaXJvaGEgU29DIEV0aGVybmV0IGRyaXZlciAoYGFpcm9oYV9ldGhgKSwgd2hpY2ggaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIEFpcm9oYSBTb0NzIChzdWNoIGFzIEVONzU4MS9BTjc1ODMpLiBJdCByZXF1aXJlcyBzcGVjaWZpYyBTb0MgaGFyZHdhcmUvRFQgcmVzb3VyY2VzIGFuZCBjYW5ub3QgYmUgcHJvYmVkIG9yIGV4ZWN1dGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLgoKT2theSwgbGV0JiMzOTtzIGluZm9ybSBgc2V0LXJlc3VsdHNgIHRvb2wgd2l0aCB0aGVzZSBhcmd1bWVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDA4OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFpcm9oYSBTb0MgR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMpLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgQWlyb2hhIFNvQ3MgKGUuZy4sIEVONzU4MS9BTjc1ODMpLiBJdCByZXF1aXJlcyBwaHlzaWNhbCBTb0MgaGFyZHdhcmUgYW5kIGRldmljZSB0cmVlIHJlc291cmNlcyBub3QgYXZhaWxhYmxlIG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFpcm9oYSBTb0MgR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMpLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgQWlyb2hhIFNvQ3MgKGUuZy4sIEVONzU4MS9BTjc1ODMpLiBJdCByZXF1aXJlcyBwaHlzaWNhbCBTb0MgaGFyZHdhcmUgYW5kIGRldmljZSB0cmVlIHJlc291cmNlcyBub3QgYXZhaWxhYmxlIG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMDg6NDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDA4OjI4OjI5LjAzMTc0MTE3M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg3NjU5MTM1ODMyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBaXJvaGEgU29DIEdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jKSwgd2hpY2ggaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIHNwZWNpZmljIEFpcm9oYSBTb0NzIChlLmcuLCBFTjc1ODEvQU43NTgzKS4gSXQgcmVxdWlyZXMgcGh5c2ljYWwgU29DIGhhcmR3YXJlIGFuZCBkZXZpY2UgdHJlZSByZXNvdXJjZXMgbm90IGF2YWlsYWJsZSBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlc2UgY29kZSBwYXRocyB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDA4OjI4OjI5LjAzMTc0NTkyM1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIwNTQ5MTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZTk2YmY5YmRlM2MzMWQxZDM0ZjE1ZGM4ZWIyOGQ0OGNhZDU2N2U4MlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyAzMCAwODoyODoyOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguY1xcbmluZGV4IDY0NjE5ZTlhNzA0ZGQuLmVmYjFkZDY5Y2MxNjUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmNcXG5AQCAtMywxMiArMywxNCBAQFxcbiAgKiBDb3B5cmlnaHQgKGMpIDIwMjQgQUlST0hBIEluY1xcbiAgKiBBdXRob3I6IExvcmVuem8gQmlhbmNvbmkgXFx1MDAzY2xvcmVuem9Aa2VybmVsLm9yZ1xcdTAwM2VcXG4gICovXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9rdGltZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvb2YuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mX25ldC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvb2ZfcmVzZXJ2ZWRfbWVtLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3RjcC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvdTY0X3N0YXRzX3N5bmMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3dvcmtxdWV1ZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L2RzdF9tZXRhZGF0YS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvcGt0X2Nscy5oXFx1MDAzZVxcbkBAIC02NTcsNiArNjU5LDQ3IEBAIGFpcm9oYV9xZG1hX2dldF9nZG1fZGV2KHN0cnVjdCBhaXJvaGFfZXRoICpldGgsIHN0cnVjdCBhaXJvaGFfcWRtYV9kZXNjICpkZXNjKVxcbiBcXHRyZXR1cm4gcG9ydC1cXHUwMDNlZGV2c1tkXSA/IHBvcnQtXFx1MDAzZWRldnNbZF0gOiBFUlJfUFRSKC1FTk9ERVYpO1xcbiB9XFxuIFxcbisvKiBudW1iZXIgb2YgY29uc2VjdXRpdmUgcG9sbHMgd2hlcmUgaHcgY29tcGxldGlvbiAoUlhfRE1BX0lEWCkgYWR2YW5jZXNcXG4rICogd2hpbGUgdGhlIHN3IGNvbnN1bWVyICh0YWlsKSBkb2Vzbid0LCBiZWZvcmUgZGVjbGFyaW5nIHRoZSByaW5nIHN0dWNrXFxuKyAqL1xcbisjZGVmaW5lIEFJUk9IQV9SWF9TVEFMTF9USFJFU0hPTERcXHQzXFxuK1xcbisvKiBEZXRlY3QgYW4gUlggcmluZyB3aGVyZSBodydzIG93biBjb21wbGV0aW9uIHBvaW50ZXIgKFJYX0RNQV9JRFgpIGtlZXBzXFxuKyAqIG1vdmluZyB3aGlsZSB0aGUgc3cgY29uc3VtZXIgKHEtXFx1MDAzZXRhaWwpIGRvZXNuJ3QgLSBpLmUuIGh3IGhhcyB3cml0dGVuXFxuKyAqIGZ1cnRoZXIgZGVzY3JpcHRvcnMgc29tZXdoZXJlIGluIHRoZSByaW5nLCBidXQgdGhlIHN0cmljdGx5IHNlcXVlbnRpYWxcXG4rICogY29uc3VtZXIgY2FuIG5ldmVyIHJlYWNoIHRoZW0gYmVjYXVzZSB0aGUgb25lIGF0IHEtXFx1MDAzZWhlYWQsIHdoaWNoIGl0IGlzXFxuKyAqIHdhaXRpbmcgb24sIHdhcyBuZXZlciBtYXJrZWQgRE9ORS4gVGhpcyBoYXBwZW5zIHdoZW4gaHcgd3JpdGVzIGFcXG4rICogY29tcGxldGVkIGRlc2NyaXB0b3IgcGFzdCBxLVxcdTAwM2VoZWFkIGJlZm9yZSBhaXJvaGFfcWRtYV9maWxsX3J4X3F1ZXVlKClcXG4rICogaGFzIHBvc3RlZCBhIGZyZXNoIGJ1ZmZlciB0aGVyZSwgZGVjb3VwbGVkIGZyb20gc3cncyBvd24gcG9zdGluZ1xcbisgKiBib29ra2VlcGluZy5cXG4rICpcXG4rICogRGVsaWJlcmF0ZWx5IGRvZXMgbm90IGluc3BlY3QgcmluZy9kZXNjcmlwdG9yIG1lbW9yeSBjb250ZW50IHRvIGRldGVjdFxcbisgKiB0aGlzOiBhbiBlYXJsaWVyIHZlcnNpb24gc2Nhbm5lZCBhaGVhZCBmb3IgYSBET05FIGRlc2NyaXB0b3IgYW5kIHRydXN0ZWRcXG4rICogaXRzIGNvbnRlbnQsIHdoaWNoIGNhdXNlZCBhIHJlYWwgT09NIHBhbmljIGFmdGVyIGl0IHdhbmRlcmVkIGludG9cXG4rICogZ2VudWluZWx5IHVuaW5pdGlhbGl6ZWQgRE1BIG1lbW9yeSB0aGF0IGNvaW5jaWRlbnRhbGx5IGhhZCB0aGUgRE9ORSBiaXRcXG4rICogc2V0LiBSWF9ETUFfSURYIGlzIGEgaHcgcmVnaXN0ZXIgd2l0aCBhIHdlbGwtZGVmaW5lZCB2YWx1ZSByZWdhcmRsZXNzIG9mXFxuKyAqIHJpbmcgY29udGVudCwgc28gdGhpcyBjYW4ndCBtaXNmaXJlIG9uIGdhcmJhZ2UgbWVtb3J5LCBhbmQgaWRsZSByaW5nc1xcbisgKiAobm8gaHcgcHJvZ3Jlc3MgZWl0aGVyKSBhcmUgbmF0dXJhbGx5IGxlZnQgYWxvbmUuXFxuKyAqL1xcbitzdGF0aWMgdm9pZCBhaXJvaGFfcWRtYV9yeF9jaGVja19zdGFsbChzdHJ1Y3QgYWlyb2hhX3F1ZXVlICpxKVxcbit7XFxuK1xcdHN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYSA9IHEtXFx1MDAzZXFkbWE7XFxuK1xcdGludCBxaWQgPSBxIC0gXFx1MDAyNnFkbWEtXFx1MDAzZXFfcnhbMF07XFxuK1xcdHUzMiBkbWFfaWR4ID0gYWlyb2hhX3FkbWFfZ2V0KHFkbWEsIFJFR19SWF9ETUFfSURYKHFpZCksXFxuK1xcdFxcdFxcdFxcdCAgICAgIFJYX1JJTkdfRE1BX0lEWF9NQVNLKTtcXG4rXFxuK1xcdGlmIChxLVxcdTAwM2VzdGFsbF90YWlsID09IHEtXFx1MDAzZXRhaWwgXFx1MDAyNlxcdTAwMjYgZG1hX2lkeCAhPSBxLVxcdTAwM2VzdGFsbF9kbWFfaWR4KSB7XFxuK1xcdFxcdGlmICgrK3EtXFx1MDAzZXN0YWxsX2NvdW50IFxcdTAwM2U9IEFJUk9IQV9SWF9TVEFMTF9USFJFU0hPTEQgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgICF0ZXN0X2FuZF9zZXRfYml0KHFpZCwgcWRtYS1cXHUwMDNlcnhfcmVjb3Zlcl9tYXNrKSlcXG4rXFx0XFx0XFx0c2NoZWR1bGVfd29yayhcXHUwMDI2cWRtYS1cXHUwMDNlcnhfcmVjb3Zlcl93b3JrKTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0cS1cXHUwMDNlc3RhbGxfY291bnQgPSAwO1xcbitcXHR9XFxuK1xcbitcXHRxLVxcdTAwM2VzdGFsbF90YWlsID0gcS1cXHUwMDNldGFpbDtcXG4rXFx0cS1cXHUwMDNlc3RhbGxfZG1hX2lkeCA9IGRtYV9pZHg7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgYWlyb2hhX3FkbWFfcnhfcHJvY2VzcyhzdHJ1Y3QgYWlyb2hhX3F1ZXVlICpxLCBpbnQgYnVkZ2V0KVxcbiB7XFxuIFxcdGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpciA9IHBhZ2VfcG9vbF9nZXRfZG1hX2RpcihxLVxcdTAwM2VwYWdlX3Bvb2wpO1xcbkBAIC02NzUsOCArNzE4LDEwIEBAIHN0YXRpYyBpbnQgYWlyb2hhX3FkbWFfcnhfcHJvY2VzcyhzdHJ1Y3QgYWlyb2hhX3F1ZXVlICpxLCBpbnQgYnVkZ2V0KVxcbiBcXHRcXHRzdHJ1Y3QgcGFnZSAqcGFnZTtcXG4gXFxuIFxcdFxcdGRlc2NfY3RybCA9IGxlMzJfdG9fY3B1KFJFQURfT05DRShkZXNjLVxcdTAwM2VjdHJsKSk7XFxuLVxcdFxcdGlmICghKGRlc2NfY3RybCBcXHUwMDI2IFFETUFfREVTQ19ET05FX01BU0spKVxcbitcXHRcXHRpZiAoIShkZXNjX2N0cmwgXFx1MDAyNiBRRE1BX0RFU0NfRE9ORV9NQVNLKSkge1xcbitcXHRcXHRcXHRhaXJvaGFfcWRtYV9yeF9jaGVja19zdGFsbChxKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdH1cXG4gXFxuIFxcdFxcdGRtYV9ybWIoKTtcXG4gXFxuQEAgLTc4NCwxMyArODI5LDE1IEBAIHN0YXRpYyBpbnQgYWlyb2hhX3FkbWFfcnhfbmFwaV9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldClcXG4gXFx0XFx0aW50IGksIHFpZCA9IHEgLSBcXHUwMDI2cWRtYS1cXHUwMDNlcV9yeFswXTtcXG4gXFx0XFx0aW50IGludHJfcmVnID0gcWlkIFxcdTAwM2MgUlhfRE9ORV9ISUdIX09GRlNFVCA/IFFETUFfSU5UX1JFR19JRFgxXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdCA6IFFETUFfSU5UX1JFR19JRFgyO1xcbitcXHRcXHR1MzIgYml0ID0gcWlkICUgUlhfRE9ORV9ISUdIX09GRlNFVDtcXG4gXFxuIFxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKHFkbWEtXFx1MDAzZWlycV9iYW5rcyk7IGkrKykge1xcbiBcXHRcXHRcXHRpZiAoIShCSVQocWlkKSBcXHUwMDI2IFJYX0lSUV9CQU5LX1BJTl9NQVNLKGkpKSlcXG4gXFx0XFx0XFx0XFx0Y29udGludWU7XFxuIFxcbiBcXHRcXHRcXHRhaXJvaGFfcWRtYV9pcnFfZW5hYmxlKFxcdTAwMjZxZG1hLVxcdTAwM2VpcnFfYmFua3NbaV0sIGludHJfcmVnLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgICAgQklUKHFpZCAlIFJYX0RPTkVfSElHSF9PRkZTRVQpKTtcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgIEJJVChiaXQpIHxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgIEJJVChiaXQgKyBSWF9OT19DUFVfRFNDUF9MT1dfT0ZGU0VUKSk7XFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXG5AQCAtODkyLDYgKzkzOSw3NiBAQCBzdGF0aWMgdm9pZCBhaXJvaGFfcWRtYV9jbGVhbnVwX3J4X3F1ZXVlKHN0cnVjdCBhaXJvaGFfcXVldWUgKnEpXFxuIFxcdFxcdFxcdEZJRUxEX1BSRVAoUlhfUklOR19ETUFfSURYX01BU0ssIHEtXFx1MDAzZXRhaWwpKTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfcnhfcmVjb3Zlcl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4re1xcbitcXHRzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWEgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGFpcm9oYV9xZG1hLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgcnhfcmVjb3Zlcl93b3JrKTtcXG4rXFx0aW50IHFpZDtcXG4rXFxuK1xcdGZvcl9lYWNoX3NldF9iaXQocWlkLCBxZG1hLVxcdTAwM2VyeF9yZWNvdmVyX21hc2ssIEFJUk9IQV9OVU1fUlhfUklORykge1xcbitcXHRcXHRzdHJ1Y3QgYWlyb2hhX3F1ZXVlICpxID0gXFx1MDAyNnFkbWEtXFx1MDAzZXFfcnhbcWlkXTtcXG4rXFx0XFx0a3RpbWVfdCByeF9kbWFfb2ZmX3RzO1xcbitcXHRcXHRzNjQgcnhfZG1hX29mZl91cztcXG4rXFx0XFx0dTMyIHN0YXR1cztcXG4rXFxuK1xcdFxcdGlmICghcS1cXHUwMDNlbmRlc2MpXFxuK1xcdFxcdFxcdGdvdG8gbmV4dDtcXG4rXFxuK1xcdFxcdG5hcGlfZGlzYWJsZShcXHUwMDI2cS1cXHUwMDNlbmFwaSk7XFxuK1xcbitcXHRcXHQvKiBHTE9CQUxfQ0ZHX1JYX0RNQV9FTl9NQVNLIGlzIHBlci1RRE1BLCBub3QgcGVyLXJpbmcsIHNvXFxuK1xcdFxcdCAqIHRoaXMgcGF1c2VzIGV2ZXJ5IFJYIHJpbmcgb24gdGhpcyBRRE1BIGluc3RhbmNlLCBub3QganVzdFxcbitcXHRcXHQgKiB0aGUgc3RhbGxlZCBvbmUgLSB0cmFjayBob3cgbG9uZyBmb3IsIHNpbmNlIHRoYXQncyB0aGVcXG4rXFx0XFx0ICogcmVhbC13b3JsZCBjb3N0IG9mIHJlY292ZXJ5IG9uIHVucmVsYXRlZCByaW5ncy5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdHJ4X2RtYV9vZmZfdHMgPSBrdGltZV9nZXQoKTtcXG4rXFxuK1xcdFxcdGFpcm9oYV9xZG1hX2NsZWFyKHFkbWEsIFJFR19RRE1BX0dMT0JBTF9DRkcsXFxuK1xcdFxcdFxcdFxcdCAgR0xPQkFMX0NGR19SWF9ETUFfRU5fTUFTSyk7XFxuK1xcdFxcdGlmIChyZWFkX3BvbGxfdGltZW91dChhaXJvaGFfcWRtYV9yciwgc3RhdHVzLFxcbitcXHRcXHRcXHRcXHQgICAgICAhKHN0YXR1cyBcXHUwMDI2IEdMT0JBTF9DRkdfUlhfRE1BX0JVU1lfTUFTSyksXFxuK1xcdFxcdFxcdFxcdCAgICAgIFVTRUNfUEVSX01TRUMsIDUwICogVVNFQ19QRVJfTVNFQywgdHJ1ZSxcXG4rXFx0XFx0XFx0XFx0ICAgICAgcWRtYSwgUkVHX1FETUFfR0xPQkFMX0NGRykpXFxuK1xcdFxcdFxcdGRldl93YXJuKHFkbWEtXFx1MDAzZWV0aC1cXHUwMDNlZGV2LFxcbitcXHRcXHRcXHRcXHQgXFxcInFpZD0lZCBSWCBETUEgYnVzeSB0aW1lb3V0IGR1cmluZyByZWNvdmVyeVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0IHFpZCk7XFxuK1xcbitcXHRcXHQvKiBEcm9wIHdoYXRldmVyIGlzIGN1cnJlbnRseSBpbiBmbGlnaHQgb24gdGhpcyByaW5nIGFuZFxcbitcXHRcXHQgKiByZS1hcm0gaXQgZnJvbSBhIGtub3duLWNsZWFuIHN0YXRlLiBjbGVhbnVwX3J4X3F1ZXVlKClcXG4rXFx0XFx0ICogb25seSBldmVyIHRvdWNoZXMgdGhlIHN3LW93bmVkIFt0YWlsLCBoZWFkKSB3aW5kb3cgYW5kXFxuK1xcdFxcdCAqIHJlc3luY3MgYm90aCBSWF9DUFVfSURYIGFuZCBSWF9ETUFfSURYIHRvIGl0LCB3aGljaCBpc1xcbitcXHRcXHQgKiB3aGF0IHVuLXdlZGdlcyBhIHJpbmcgd2hlcmUgaHcgd3JvdGUgcGFzdCB0aGUgc3cgaGVhZFxcbitcXHRcXHQgKiB3aXRob3V0IHRoZSBjb25zdW1lciBldmVyIGFkdmFuY2luZyAtIG5vIG5lZWQgdG8gZmlndXJlXFxuK1xcdFxcdCAqIG91dCB3aGljaCBkZXNjcmlwdG9yIGh3IGFjdHVhbGx5IHVzZWQuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRhaXJvaGFfcWRtYV9jbGVhbnVwX3J4X3F1ZXVlKHEpO1xcbitcXHRcXHRpZiAocS1cXHUwMDNlc2tiKSB7XFxuK1xcdFxcdFxcdC8qIGRpc2NhcmQgd2hhdGV2ZXIgc2NhdHRlci1nYXRoZXIgZnJhbWUgd2FzXFxuK1xcdFxcdFxcdCAqIG1pZC1hc3NlbWJseSB3aGVuIHRoZSBzdGFsbCB3YXMgaGl0LCBjbGVhbnVwX3J4X3F1ZXVlKClcXG4rXFx0XFx0XFx0ICogYWJvdmUgb25seSByZXN5bmNzIHRoZSByaW5nLCBub3QgdGhpc1xcbitcXHRcXHRcXHQgKi9cXG4rXFx0XFx0XFx0ZGV2X2tmcmVlX3NrYihxLVxcdTAwM2Vza2IpO1xcbitcXHRcXHRcXHRxLVxcdTAwM2Vza2IgPSBOVUxMO1xcbitcXHRcXHR9XFxuK1xcdFxcdGFpcm9oYV9xZG1hX2ZpbGxfcnhfcXVldWUocSk7XFxuK1xcbitcXHRcXHRhaXJvaGFfcWRtYV9zZXQocWRtYSwgUkVHX1FETUFfR0xPQkFMX0NGRyxcXG4rXFx0XFx0XFx0XFx0R0xPQkFMX0NGR19SWF9ETUFfRU5fTUFTSyk7XFxuK1xcdFxcdHJ4X2RtYV9vZmZfdXMgPSBrdGltZV91c19kZWx0YShrdGltZV9nZXQoKSwgcnhfZG1hX29mZl90cyk7XFxuK1xcbitcXHRcXHRxLVxcdTAwM2VzdGFsbF9jb3VudCA9IDA7XFxuK1xcdFxcdG5hcGlfZW5hYmxlKFxcdTAwMjZxLVxcdTAwM2VuYXBpKTtcXG4rXFx0XFx0bmFwaV9zY2hlZHVsZShcXHUwMDI2cS1cXHUwMDNlbmFwaSk7XFxuK1xcbitcXHRcXHRxZG1hLVxcdTAwM2VyeF9yZWNvdmVyX2NvdW50Kys7XFxuK1xcdFxcdGRldl93YXJuX3JhdGVsaW1pdGVkKHFkbWEtXFx1MDAzZWV0aC1cXHUwMDNlZGV2LFxcbitcXHRcXHRcXHRcXHQgICAgIFxcXCJxaWQ9JWQgUlggcmluZyByZWNvdmVyZWQgYWZ0ZXIgaHcgc3RhbGwgKFJYIERNQSBwYXVzZWQgZm9yICVsbGQgdXMgb24gdGhpcyBRRE1BIGluc3RhbmNlKVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0ICAgICBxaWQsIHJ4X2RtYV9vZmZfdXMpO1xcbituZXh0OlxcbitcXHRcXHRjbGVhcl9iaXQocWlkLCBxZG1hLVxcdTAwM2VyeF9yZWNvdmVyX21hc2spO1xcbitcXHR9XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgYWlyb2hhX3FkbWFfaW5pdF9yeChzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWEpXFxuIHtcXG4gXFx0aW50IGk7XFxuQEAgLTE0NjgsMTYgKzE1ODUsMzIgQEAgc3RhdGljIGlycXJldHVybl90IGFpcm9oYV9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkZXZfaW5zdGFuY2UpXFxuIFxcdGlmICghdGVzdF9iaXQoREVWX1NUQVRFX0lOSVRJQUxJWkVELCBcXHUwMDI2cWRtYS1cXHUwMDNlZXRoLVxcdTAwM2VzdGF0ZSkpXFxuIFxcdFxcdHJldHVybiBJUlFfTk9ORTtcXG4gXFxuLVxcdHJ4X2ludHIxID0gaW50clsxXSBcXHUwMDI2IFJYX0RPTkVfTE9XX0lOVF9NQVNLO1xcbitcXHQvKiBBIHJpbmcgY2FuIGFsc28gcmFpc2UgTk9fQ1BVX0RTQ1Agd2hlbiBpdCBydW5zIG91dCBvZiBmcmVlIFJYXFxuK1xcdCAqIGRlc2NyaXB0b3JzIChlLmcuIGEgYnVyc3Qgb2YgVklQLWNsYXNzaWZpZWQgY29udHJvbCB0cmFmZmljXFxuK1xcdCAqIGZvcmNlZCBvbnRvIGEgc21hbGwgcmluZykuIE9uY2UgYSByaW5nIGlzIGZ1bGx5IGRyYWluZWQgbm8gbW9yZVxcbitcXHQgKiBSWF9ET05FIGludGVycnVwdHMgY2FuIGZpcmUgZm9yIGl0LCBzaW5jZSB0aGVyZSBhcmUgbm8gZnJlZVxcbitcXHQgKiBkZXNjcmlwdG9ycyBsZWZ0IGZvciBoYXJkd2FyZSB0byByZWNlaXZlIGludG8sIHNvIHdpdGhvdXQgdGhpc1xcbitcXHQgKiBOQVBJIGlzIG5ldmVyIHJlc2NoZWR1bGVkIGFuZCB0aGUgcmluZyBuZXZlciBnZXRzIHJlZmlsbGVkIGFnYWluLlxcbitcXHQgKiBUcmVhdCBOT19DUFVfRFNDUCB0aGUgc2FtZSBhcyBSWF9ET05FIGZvciBzY2hlZHVsaW5nIE5BUEk6XFxuK1xcdCAqIGFpcm9oYV9xZG1hX3J4X3Byb2Nlc3MoKSB1bmNvbmRpdGlvbmFsbHkgY2FsbHNcXG4rXFx0ICogYWlyb2hhX3FkbWFfZmlsbF9yeF9xdWV1ZSgpIGF0IHRoZSBlbmQgb2YgZXZlcnkgcG9sbCwgZXZlbiB3aGVuXFxuK1xcdCAqIHplcm8gZGVzY3JpcHRvcnMgd2VyZSByZWFwZWQsIHNvIHRoaXMgYWxvbmUgaXMgZW5vdWdoIHRvIHJlY292ZXJcXG4rXFx0ICogdGhlIHJpbmcuXFxuK1xcdCAqL1xcbitcXHRyeF9pbnRyMSA9IGludHJbMV0gXFx1MDAyNiAoUlhfRE9ORV9MT1dfSU5UX01BU0sgfCBSWF9OT19DUFVfRFNDUF9MT1dfSU5UX01BU0spO1xcbiBcXHRpZiAocnhfaW50cjEpIHtcXG4gXFx0XFx0YWlyb2hhX3FkbWFfaXJxX2Rpc2FibGUoaXJxX2JhbmssIFFETUFfSU5UX1JFR19JRFgxLCByeF9pbnRyMSk7XFxuLVxcdFxcdHJ4X2ludHJfbWFzayB8PSByeF9pbnRyMTtcXG4rXFx0XFx0cnhfaW50cl9tYXNrIHw9IChyeF9pbnRyMSBcXHUwMDI2IFJYX0RPTkVfTE9XX0lOVF9NQVNLKSB8XFxuK1xcdFxcdFxcdFxcdCgocnhfaW50cjEgXFx1MDAyNiBSWF9OT19DUFVfRFNDUF9MT1dfSU5UX01BU0spIFxcdTAwM2VcXHUwMDNlXFxuK1xcdFxcdFxcdFxcdCBSWF9OT19DUFVfRFNDUF9MT1dfT0ZGU0VUKTtcXG4gXFx0fVxcbiBcXG4tXFx0cnhfaW50cjIgPSBpbnRyWzJdIFxcdTAwMjYgUlhfRE9ORV9ISUdIX0lOVF9NQVNLO1xcbitcXHRyeF9pbnRyMiA9IGludHJbMl0gXFx1MDAyNiAoUlhfRE9ORV9ISUdIX0lOVF9NQVNLIHwgUlhfTk9fQ1BVX0RTQ1BfSElHSF9JTlRfTUFTSyk7XFxuIFxcdGlmIChyeF9pbnRyMikge1xcbiBcXHRcXHRhaXJvaGFfcWRtYV9pcnFfZGlzYWJsZShpcnFfYmFuaywgUURNQV9JTlRfUkVHX0lEWDIsIHJ4X2ludHIyKTtcXG4tXFx0XFx0cnhfaW50cl9tYXNrIHw9IChyeF9pbnRyMiBcXHUwMDNjXFx1MDAzYyAxNik7XFxuK1xcdFxcdHJ4X2ludHJfbWFzayB8PSAoKHJ4X2ludHIyIFxcdTAwMjYgUlhfRE9ORV9ISUdIX0lOVF9NQVNLKSB8XFxuK1xcdFxcdFxcdFxcdCAoKHJ4X2ludHIyIFxcdTAwMjYgUlhfTk9fQ1BVX0RTQ1BfSElHSF9JTlRfTUFTSykgXFx1MDAzZVxcdTAwM2VcXG4rXFx0XFx0XFx0XFx0ICBSWF9OT19DUFVfRFNDUF9MT1dfT0ZGU0VUKSkgXFx1MDAzY1xcdTAwM2MgMTY7XFxuIFxcdH1cXG4gXFxuIFxcdGZvciAoaSA9IDA7IHJ4X2ludHJfbWFzayBcXHUwMDI2XFx1MDAyNiBpIFxcdTAwM2MgQVJSQVlfU0laRShxZG1hLVxcdTAwM2VxX3J4KTsgaSsrKSB7XFxuQEAgLTE1NzYsNiArMTcwOSw4IEBAIHN0YXRpYyB2b2lkIGFpcm9oYV9xZG1hX2NsZWFudXAoc3RydWN0IGFpcm9oYV9ldGggKmV0aCxcXG4ge1xcbiBcXHRpbnQgaTtcXG4gXFxuK1xcdGNhbmNlbF93b3JrX3N5bmMoXFx1MDAyNnFkbWEtXFx1MDAzZXJ4X3JlY292ZXJfd29yayk7XFxuK1xcbiBcXHRpZiAodGVzdF9iaXQoREVWX1NUQVRFX0lOSVRJQUxJWkVELCBcXHUwMDI2ZXRoLVxcdTAwM2VzdGF0ZSkpIHtcXG4gXFx0XFx0dTMyIHN0YXR1cztcXG4gXFxuQEAgLTE2MzMsNiArMTc2OCwxNSBAQCBzdGF0aWMgaW50IGFpcm9oYV9od19pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdHJldHVybiBlcnI7XFxuIFxcbitcXHQvKiBJTklUX1dPUksoKSBldmVyeSBpbnN0YW5jZSB1cCBmcm9udCwgYmVmb3JlIGFueSBvZiB0aGVtIGNhbiBmYWlsXFxuK1xcdCAqIGluaXQgYW5kIGp1bXAgdG8gdGhlIGVycm9yIHBhdGggYmVsb3csIHNpbmNlIHRoYXQgcGF0aCB0ZWFycyBkb3duXFxuK1xcdCAqIGV2ZXJ5IGV0aC1cXHUwMDNlcWRtYVtdIHNsb3QgdW5jb25kaXRpb25hbGx5LCBpbmNsdWRpbmcgb25lcyB0aGlzIGxvb3BcXG4rXFx0ICogbmV2ZXIgcmVhY2hlZC5cXG4rXFx0ICovXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGV0aC1cXHUwMDNlcWRtYSk7IGkrKylcXG4rXFx0XFx0SU5JVF9XT1JLKFxcdTAwMjZldGgtXFx1MDAzZXFkbWFbaV0ucnhfcmVjb3Zlcl93b3JrLFxcbitcXHRcXHRcXHQgIGFpcm9oYV9xZG1hX3J4X3JlY292ZXJfd29yayk7XFxuK1xcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShldGgtXFx1MDAzZXFkbWEpOyBpKyspIHtcXG4gXFx0XFx0ZXJyID0gYWlyb2hhX3FkbWFfaW5pdChwZGV2LCBldGgsIFxcdTAwMjZldGgtXFx1MDAzZXFkbWFbaV0pO1xcbiBcXHRcXHRpZiAoZXJyKVxcbkBAIC0xNjgxLDYgKzE4MjUsMTQgQEAgc3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfc3RvcF9uYXBpKHN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYSlcXG4ge1xcbiBcXHRpbnQgaTtcXG4gXFxuK1xcdC8qIE1ha2Ugc3VyZSByeF9yZWNvdmVyX3dvcmsgaXMgbmVpdGhlciBydW5uaW5nIG5vciBhYmxlIHRvIHJlLWFybVxcbitcXHQgKiBiZWZvcmUgYW55IG5hcGlfZGlzYWJsZSgpIGJlbG93OiBpdCBhbHNvIGNhbGxzIG5hcGlfZGlzYWJsZSgpL1xcbitcXHQgKiBuYXBpX2VuYWJsZSgpIG9uIHFfcnhbXS5uYXBpLCBhbmQgbmFwaV9kaXNhYmxlKCkgb24gYW5cXG4rXFx0ICogYWxyZWFkeS1kaXNhYmxlZCBOQVBJIHNwaW5zIGluIG5hcGlfZGlzYWJsZV9sb2NrZWQoKSBmb3JldmVyLFxcbitcXHQgKiBzaW5jZSBvbmx5IG5hcGlfZW5hYmxlKCkgY2xlYXJzIHRoZSBzdGF0ZSBpdCB3YWl0cyBvbi5cXG4rXFx0ICovXFxuK1xcdGRpc2FibGVfd29ya19zeW5jKFxcdTAwMjZxZG1hLVxcdTAwM2VyeF9yZWNvdmVyX3dvcmspO1xcbitcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUocWRtYS1cXHUwMDNlcV90eF9pcnEpOyBpKyspXFxuIFxcdFxcdG5hcGlfZGlzYWJsZShcXHUwMDI2cWRtYS1cXHUwMDNlcV90eF9pcnFbaV0ubmFwaSk7XFxuIFxcbkBAIC0yNDQ5LDYgKzI2MDEsNDYgQEAgc3RhdGljIHZvaWQgYWlyb2hhX2V0aHRvb2xfZ2V0X2RydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4gXFx0c3Ryc2NweShpbmZvLVxcdTAwM2VidXNfaW5mbywgZGV2X25hbWUoZXRoLVxcdTAwM2VkZXYpLCBzaXplb2YoaW5mby1cXHUwMDNlYnVzX2luZm8pKTtcXG4gfVxcbiBcXG4rc3RhdGljIGNvbnN0IGNoYXIgYWlyb2hhX2V0aHRvb2xfc3RhdHNfc3RyW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcXG4rXFx0XFxcInJ4X3N0YWxsX3JlY292ZXJcXFwiLFxcbit9O1xcbitcXG4rc3RhdGljIHZvaWQgYWlyb2hhX2V0aHRvb2xfZ2V0X3N0cmluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdTMyIHNzZXQsXFxuK1xcdFxcdFxcdFxcdCAgICAgICB1OCAqZGF0YSlcXG4re1xcbitcXHRpbnQgaTtcXG4rXFxuK1xcdGlmIChzc2V0ICE9IEVUSF9TU19TVEFUUylcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoYWlyb2hhX2V0aHRvb2xfc3RhdHNfc3RyKTsgaSsrKVxcbitcXHRcXHRldGh0b29sX3B1dHMoXFx1MDAyNmRhdGEsIGFpcm9oYV9ldGh0b29sX3N0YXRzX3N0cltpXSk7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgYWlyb2hhX2V0aHRvb2xfZ2V0X3NzZXRfY291bnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHNzZXQpXFxuK3tcXG4rXFx0cmV0dXJuIHNzZXQgPT0gRVRIX1NTX1NUQVRTID9cXG4rXFx0ICAgICAgIEFSUkFZX1NJWkUoYWlyb2hhX2V0aHRvb2xfc3RhdHNfc3RyKSA6IC1FT1BOT1RTVVBQO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBhaXJvaGFfZXRodG9vbF9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbitcXHRcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBldGh0b29sX3N0YXRzICpzdGF0cyxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICB1NjQgKmRhdGEpXFxuK3tcXG4rXFx0c3RydWN0IGFpcm9oYV9nZG1fZGV2ICpkZXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbitcXHRzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWE7XFxuK1xcbitcXHRyY3VfcmVhZF9sb2NrKCk7XFxuK1xcdHFkbWEgPSByY3VfZGVyZWZlcmVuY2UoZGV2LVxcdTAwM2VxZG1hKTtcXG4rXFx0LyogYWdncmVnYXRlIHJlY292ZXJ5IGNvdW50IGZvciB0aGUgd2hvbGUgcWRtYSBpbnN0YW5jZTogdGhlXFxuK1xcdCAqIHN0YWxsZWQgcmluZyBjYW4gY2FycnkgdHJhZmZpYyBmb3IgbW9yZSB0aGFuIG9uZSBuZXRkZXYgKFZJUFxcbitcXHQgKiBjbGFzc2lmaWNhdGlvbiBzaGFyZXMgcmluZyA0IGFjcm9zcyBzZXZlcmFsIHByb3RvY29scy9wb3J0cyksXFxuK1xcdCAqIHNvIHRoZXJlJ3Mgbm8gc2luZ2xlIG5ldGRldiB0byBhdHRyaWJ1dGUgYW4gaW5kaXZpZHVhbCBldmVudCB0b1xcbitcXHQgKi9cXG4rXFx0ZGF0YVswXSA9IHFkbWEgPyBxZG1hLVxcdTAwM2VyeF9yZWNvdmVyX2NvdW50IDogMDtcXG4rXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIGFpcm9oYV9ldGh0b29sX2dldF9tYWNfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4gXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBldGh0b29sX2V0aF9tYWNfc3RhdHMgKnN0YXRzKVxcbiB7XFxuQEAgLTMzNTEsNiArMzU0Myw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgYWlyb2hhX25ldGRldl9vcHMgPSB7XFxuIFxcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGFpcm9oYV9ldGh0b29sX29wcyA9IHtcXG4gXFx0LmdldF9kcnZpbmZvXFx0XFx0PSBhaXJvaGFfZXRodG9vbF9nZXRfZHJ2aW5mbyxcXG4rXFx0LmdldF9zdHJpbmdzXFx0XFx0PSBhaXJvaGFfZXRodG9vbF9nZXRfc3RyaW5ncyxcXG4rXFx0LmdldF9zc2V0X2NvdW50XFx0XFx0PSBhaXJvaGFfZXRodG9vbF9nZXRfc3NldF9jb3VudCxcXG4rXFx0LmdldF9ldGh0b29sX3N0YXRzXFx0PSBhaXJvaGFfZXRodG9vbF9nZXRfZXRodG9vbF9zdGF0cyxcXG4gXFx0LmdldF9ldGhfbWFjX3N0YXRzICAgICAgPSBhaXJvaGFfZXRodG9vbF9nZXRfbWFjX3N0YXRzLFxcbiBcXHQuZ2V0X3Jtb25fc3RhdHNcXHRcXHQ9IGFpcm9oYV9ldGh0b29sX2dldF9ybW9uX3N0YXRzLFxcbiBcXHQuZ2V0X2xpbmtfa3NldHRpbmdzXFx0PSBwaHlfZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3MsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oXFxuaW5kZXggZmE5YThlZGNlMjJmZi4uY2Q3NWMxNmQ4ZDBjNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaFxcbkBAIC00MSw2ICs0MSw3IEBAXFxuICNkZWZpbmUgVFhfRFNDUF9OVU1cXHRcXHRcXHQxMDI0XFxuICNkZWZpbmUgUlhfRFNDUF9OVU0oX24pXFx0XFx0XFx0XFxcXFxcbiBcXHQoKF9uKSA9PSAgMiA/IDEyOCA6XFx0XFx0XFxcXFxcbitcXHQgKF9uKSA9PSAgNCA/IDEyOCA6XFx0XFx0XFxcXFxcbiBcXHQgKF9uKSA9PSAxMSA/IDEyOCA6XFx0XFx0XFxcXFxcbiBcXHQgKF9uKSA9PSAxNSA/IDEyOCA6XFx0XFx0XFxcXFxcbiBcXHQgKF9uKSA9PSAgMCA/IDEwMjQgOiAxNilcXG5AQCAtMjA3LDYgKzIwOCwxNSBAQCBzdHJ1Y3QgYWlyb2hhX3F1ZXVlIHtcXG4gXFx0Ym9vbCB0eHFfc3RvcHBlZDtcXG4gXFx0Ym9vbCBmbHVzaGluZztcXG4gXFxuK1xcdC8qIFJYIGh3IHN0YWxsIGRldGVjdGlvbjogbGFzdCBSRUdfUlhfRE1BX0lEWC90YWlsIHNuYXBzaG90IHRha2VuXFxuK1xcdCAqIHdoZW5ldmVyIHRoZSBoZWFkLW9mLWxpbmUgZGVzY3JpcHRvciBpc24ndCBET05FLCBhbmQgaG93IG1hbnlcXG4rXFx0ICogY29uc2VjdXRpdmUgdGltZXMgaHcgbWFkZSBwcm9ncmVzcyAoRE1BX0lEWCBtb3ZlZCkgd2hpbGUgdGhlXFxuK1xcdCAqIGNvbnN1bWVyICh0YWlsKSBkaWRuJ3QuIFNlZSBhaXJvaGFfcWRtYV9yeF9jaGVja19zdGFsbCgpLlxcbitcXHQgKi9cXG4rXFx0dTMyIHN0YWxsX2RtYV9pZHg7XFxuK1xcdHUxNiBzdGFsbF90YWlsO1xcbitcXHR1OCBzdGFsbF9jb3VudDtcXG4rXFxuIFxcdHN0cnVjdCBuYXBpX3N0cnVjdCBuYXBpO1xcbiBcXHRzdHJ1Y3QgcGFnZV9wb29sICpwYWdlX3Bvb2w7XFxuIFxcdHN0cnVjdCBza19idWZmICpza2I7XFxuQEAgLTU2Nyw2ICs1NzcsMTggQEAgc3RydWN0IGFpcm9oYV9xZG1hIHtcXG4gXFx0c3RydWN0IGFpcm9oYV9xdWV1ZSBxX3R4W0FJUk9IQV9OVU1fVFhfUklOR107XFxuIFxcdHN0cnVjdCBhaXJvaGFfcXVldWUgcV9yeFtBSVJPSEFfTlVNX1JYX1JJTkddO1xcbiBcXG4rXFx0LyogcmVjb3ZlcnkgZm9yIFJYIHJpbmdzIHdob3NlIGh3IGNvbXBsZXRpb24gcG9pbnRlciAoUlhfRE1BX0lEWClcXG4rXFx0ICoga2VlcHMgbW92aW5nIHdoaWxlIHRoZSBzdyBjb25zdW1lciBpcyBzdHVjazsgc2VlXFxuK1xcdCAqIGFpcm9oYV9xZG1hX3J4X2NoZWNrX3N0YWxsKCkgYW5kIGFpcm9oYV9xZG1hX3J4X3JlY292ZXJfd29yaygpLlxcbitcXHQgKi9cXG4rXFx0c3RydWN0IHdvcmtfc3RydWN0IHJ4X3JlY292ZXJfd29yaztcXG4rXFx0REVDTEFSRV9CSVRNQVAocnhfcmVjb3Zlcl9tYXNrLCBBSVJPSEFfTlVNX1JYX1JJTkcpO1xcbitcXHQvKiBjb3VudCBvZiBjb21wbGV0ZWQgaHctc3RhbGwgcmVjb3ZlcmllcywgZXhwb3NlZCB2aWEgZXRodG9vbCAtU1xcbitcXHQgKiBzbyBhIHJlY292ZXJ5IGV2ZW50IChhbmQgdGhlIHBhY2tldHMgaXQgZHJvcHMpIGlzIG9ic2VydmFibGVcXG4rXFx0ICogd2l0aG91dCBncmVwcGluZyBkbWVzZyBmb3IgdGhlIGRldl93YXJuX3JhdGVsaW1pdGVkKCkgYWJvdmVcXG4rXFx0ICovXFxuK1xcdHUzMiByeF9yZWNvdmVyX2NvdW50O1xcbitcXG4gXFx0REVDTEFSRV9CSVRNQVAocW9zX2NoYW5uZWxfbWFwLCBBSVJPSEFfTlVNX1FPU19DSEFOTkVMUyk7XFxuIH07XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQwODoyODoyOS40NTI4OTk2NTJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjg3NjE3MDE4NjI3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFpcm9oYSBTb0MgR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMpLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgQWlyb2hhIFNvQ3MgKGUuZy4sIEVONzU4MS9BTjc1ODMpLiBJdCByZXF1aXJlcyBwaHlzaWNhbCBTb0MgaGFyZHdhcmUgYW5kIGRldmljZSB0cmVlIHJlc291cmNlcyBub3QgYXZhaWxhYmxlIG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZTk2YmY5YmRlM2MzMWQxZDM0ZjE1ZGM4ZWIyOGQ0OGNhZDU2N2U4MlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDMwIDA4OjI4OjI4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmNcbmluZGV4IDY0NjE5ZTlhNzA0ZGQuLmVmYjFkZDY5Y2MxNjUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jXG5AQCAtMywxMiArMywxNCBAQFxuICAqIENvcHlyaWdodCAoYykgMjAyNCBBSVJPSEEgSW5jXG4gICogQXV0aG9yOiBMb3JlbnpvIEJpYW5jb25pIFx1MDAzY2xvcmVuem9Aa2VybmVsLm9yZ1x1MDAzZVxuICAqL1xuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2t0aW1lLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2ZfbmV0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9yZXNlcnZlZF9tZW0uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdGNwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC91NjRfc3RhdHNfc3luYy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvd29ya3F1ZXVlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvZHN0X21ldGFkYXRhLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvcGFnZV9wb29sL2hlbHBlcnMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9wa3RfY2xzLmhcdTAwM2VcbkBAIC02NTcsNiArNjU5LDQ3IEBAIGFpcm9oYV9xZG1hX2dldF9nZG1fZGV2KHN0cnVjdCBhaXJvaGFfZXRoICpldGgsIHN0cnVjdCBhaXJvaGFfcWRtYV9kZXNjICpkZXNjKVxuIFx0cmV0dXJuIHBvcnQtXHUwMDNlZGV2c1tkXSA/IHBvcnQtXHUwMDNlZGV2c1tkXSA6IEVSUl9QVFIoLUVOT0RFVik7XG4gfVxuIFxuKy8qIG51bWJlciBvZiBjb25zZWN1dGl2ZSBwb2xscyB3aGVyZSBodyBjb21wbGV0aW9uIChSWF9ETUFfSURYKSBhZHZhbmNlc1xuKyAqIHdoaWxlIHRoZSBzdyBjb25zdW1lciAodGFpbCkgZG9lc24ndCwgYmVmb3JlIGRlY2xhcmluZyB0aGUgcmluZyBzdHVja1xuKyAqL1xuKyNkZWZpbmUgQUlST0hBX1JYX1NUQUxMX1RIUkVTSE9MRFx0M1xuK1xuKy8qIERldGVjdCBhbiBSWCByaW5nIHdoZXJlIGh3J3Mgb3duIGNvbXBsZXRpb24gcG9pbnRlciAoUlhfRE1BX0lEWCkga2VlcHNcbisgKiBtb3Zpbmcgd2hpbGUgdGhlIHN3IGNvbnN1bWVyIChxLVx1MDAzZXRhaWwpIGRvZXNuJ3QgLSBpLmUuIGh3IGhhcyB3cml0dGVuXG4rICogZnVydGhlciBkZXNjcmlwdG9ycyBzb21ld2hlcmUgaW4gdGhlIHJpbmcsIGJ1dCB0aGUgc3RyaWN0bHkgc2VxdWVudGlhbFxuKyAqIGNvbnN1bWVyIGNhbiBuZXZlciByZWFjaCB0aGVtIGJlY2F1c2UgdGhlIG9uZSBhdCBxLVx1MDAzZWhlYWQsIHdoaWNoIGl0IGlzXG4rICogd2FpdGluZyBvbiwgd2FzIG5ldmVyIG1hcmtlZCBET05FLiBUaGlzIGhhcHBlbnMgd2hlbiBodyB3cml0ZXMgYVxuKyAqIGNvbXBsZXRlZCBkZXNjcmlwdG9yIHBhc3QgcS1cdTAwM2VoZWFkIGJlZm9yZSBhaXJvaGFfcWRtYV9maWxsX3J4X3F1ZXVlKClcbisgKiBoYXMgcG9zdGVkIGEgZnJlc2ggYnVmZmVyIHRoZXJlLCBkZWNvdXBsZWQgZnJvbSBzdydzIG93biBwb3N0aW5nXG4rICogYm9va2tlZXBpbmcuXG4rICpcbisgKiBEZWxpYmVyYXRlbHkgZG9lcyBub3QgaW5zcGVjdCByaW5nL2Rlc2NyaXB0b3IgbWVtb3J5IGNvbnRlbnQgdG8gZGV0ZWN0XG4rICogdGhpczogYW4gZWFybGllciB2ZXJzaW9uIHNjYW5uZWQgYWhlYWQgZm9yIGEgRE9ORSBkZXNjcmlwdG9yIGFuZCB0cnVzdGVkXG4rICogaXRzIGNvbnRlbnQsIHdoaWNoIGNhdXNlZCBhIHJlYWwgT09NIHBhbmljIGFmdGVyIGl0IHdhbmRlcmVkIGludG9cbisgKiBnZW51aW5lbHkgdW5pbml0aWFsaXplZCBETUEgbWVtb3J5IHRoYXQgY29pbmNpZGVudGFsbHkgaGFkIHRoZSBET05FIGJpdFxuKyAqIHNldC4gUlhfRE1BX0lEWCBpcyBhIGh3IHJlZ2lzdGVyIHdpdGggYSB3ZWxsLWRlZmluZWQgdmFsdWUgcmVnYXJkbGVzcyBvZlxuKyAqIHJpbmcgY29udGVudCwgc28gdGhpcyBjYW4ndCBtaXNmaXJlIG9uIGdhcmJhZ2UgbWVtb3J5LCBhbmQgaWRsZSByaW5nc1xuKyAqIChubyBodyBwcm9ncmVzcyBlaXRoZXIpIGFyZSBuYXR1cmFsbHkgbGVmdCBhbG9uZS5cbisgKi9cbitzdGF0aWMgdm9pZCBhaXJvaGFfcWRtYV9yeF9jaGVja19zdGFsbChzdHJ1Y3QgYWlyb2hhX3F1ZXVlICpxKVxuK3tcbitcdHN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYSA9IHEtXHUwMDNlcWRtYTtcbitcdGludCBxaWQgPSBxIC0gXHUwMDI2cWRtYS1cdTAwM2VxX3J4WzBdO1xuK1x0dTMyIGRtYV9pZHggPSBhaXJvaGFfcWRtYV9nZXQocWRtYSwgUkVHX1JYX0RNQV9JRFgocWlkKSxcbitcdFx0XHRcdCAgICAgIFJYX1JJTkdfRE1BX0lEWF9NQVNLKTtcbitcbitcdGlmIChxLVx1MDAzZXN0YWxsX3RhaWwgPT0gcS1cdTAwM2V0YWlsIFx1MDAyNlx1MDAyNiBkbWFfaWR4ICE9IHEtXHUwMDNlc3RhbGxfZG1hX2lkeCkge1xuK1x0XHRpZiAoKytxLVx1MDAzZXN0YWxsX2NvdW50IFx1MDAzZT0gQUlST0hBX1JYX1NUQUxMX1RIUkVTSE9MRCBcdTAwMjZcdTAwMjZcbitcdFx0ICAgICF0ZXN0X2FuZF9zZXRfYml0KHFpZCwgcWRtYS1cdTAwM2VyeF9yZWNvdmVyX21hc2spKVxuK1x0XHRcdHNjaGVkdWxlX3dvcmsoXHUwMDI2cWRtYS1cdTAwM2VyeF9yZWNvdmVyX3dvcmspO1xuK1x0fSBlbHNlIHtcbitcdFx0cS1cdTAwM2VzdGFsbF9jb3VudCA9IDA7XG4rXHR9XG4rXG4rXHRxLVx1MDAzZXN0YWxsX3RhaWwgPSBxLVx1MDAzZXRhaWw7XG4rXHRxLVx1MDAzZXN0YWxsX2RtYV9pZHggPSBkbWFfaWR4O1xuK31cbitcbiBzdGF0aWMgaW50IGFpcm9oYV9xZG1hX3J4X3Byb2Nlc3Moc3RydWN0IGFpcm9oYV9xdWV1ZSAqcSwgaW50IGJ1ZGdldClcbiB7XG4gXHRlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIgPSBwYWdlX3Bvb2xfZ2V0X2RtYV9kaXIocS1cdTAwM2VwYWdlX3Bvb2wpO1xuQEAgLTY3NSw4ICs3MTgsMTAgQEAgc3RhdGljIGludCBhaXJvaGFfcWRtYV9yeF9wcm9jZXNzKHN0cnVjdCBhaXJvaGFfcXVldWUgKnEsIGludCBidWRnZXQpXG4gXHRcdHN0cnVjdCBwYWdlICpwYWdlO1xuIFxuIFx0XHRkZXNjX2N0cmwgPSBsZTMyX3RvX2NwdShSRUFEX09OQ0UoZGVzYy1cdTAwM2VjdHJsKSk7XG4tXHRcdGlmICghKGRlc2NfY3RybCBcdTAwMjYgUURNQV9ERVNDX0RPTkVfTUFTSykpXG4rXHRcdGlmICghKGRlc2NfY3RybCBcdTAwMjYgUURNQV9ERVNDX0RPTkVfTUFTSykpIHtcbitcdFx0XHRhaXJvaGFfcWRtYV9yeF9jaGVja19zdGFsbChxKTtcbiBcdFx0XHRicmVhaztcbitcdFx0fVxuIFxuIFx0XHRkbWFfcm1iKCk7XG4gXG5AQCAtNzg0LDEzICs4MjksMTUgQEAgc3RhdGljIGludCBhaXJvaGFfcWRtYV9yeF9uYXBpX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuIFx0XHRpbnQgaSwgcWlkID0gcSAtIFx1MDAyNnFkbWEtXHUwMDNlcV9yeFswXTtcbiBcdFx0aW50IGludHJfcmVnID0gcWlkIFx1MDAzYyBSWF9ET05FX0hJR0hfT0ZGU0VUID8gUURNQV9JTlRfUkVHX0lEWDFcbiBcdFx0XHRcdFx0XHRcdCA6IFFETUFfSU5UX1JFR19JRFgyO1xuK1x0XHR1MzIgYml0ID0gcWlkICUgUlhfRE9ORV9ISUdIX09GRlNFVDtcbiBcbiBcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShxZG1hLVx1MDAzZWlycV9iYW5rcyk7IGkrKykge1xuIFx0XHRcdGlmICghKEJJVChxaWQpIFx1MDAyNiBSWF9JUlFfQkFOS19QSU5fTUFTSyhpKSkpXG4gXHRcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0XHRhaXJvaGFfcWRtYV9pcnFfZW5hYmxlKFx1MDAyNnFkbWEtXHUwMDNlaXJxX2JhbmtzW2ldLCBpbnRyX3JlZyxcbi1cdFx0XHRcdFx0ICAgICAgIEJJVChxaWQgJSBSWF9ET05FX0hJR0hfT0ZGU0VUKSk7XG4rXHRcdFx0XHRcdCAgICAgICBCSVQoYml0KSB8XG4rXHRcdFx0XHRcdCAgICAgICBCSVQoYml0ICsgUlhfTk9fQ1BVX0RTQ1BfTE9XX09GRlNFVCkpO1xuIFx0XHR9XG4gXHR9XG4gXG5AQCAtODkyLDYgKzkzOSw3NiBAQCBzdGF0aWMgdm9pZCBhaXJvaGFfcWRtYV9jbGVhbnVwX3J4X3F1ZXVlKHN0cnVjdCBhaXJvaGFfcXVldWUgKnEpXG4gXHRcdFx0RklFTERfUFJFUChSWF9SSU5HX0RNQV9JRFhfTUFTSywgcS1cdTAwM2V0YWlsKSk7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIGFpcm9oYV9xZG1hX3J4X3JlY292ZXJfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4re1xuK1x0c3RydWN0IGFpcm9oYV9xZG1hICpxZG1hID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBhaXJvaGFfcWRtYSxcbitcdFx0XHRcdFx0XHQgcnhfcmVjb3Zlcl93b3JrKTtcbitcdGludCBxaWQ7XG4rXG4rXHRmb3JfZWFjaF9zZXRfYml0KHFpZCwgcWRtYS1cdTAwM2VyeF9yZWNvdmVyX21hc2ssIEFJUk9IQV9OVU1fUlhfUklORykge1xuK1x0XHRzdHJ1Y3QgYWlyb2hhX3F1ZXVlICpxID0gXHUwMDI2cWRtYS1cdTAwM2VxX3J4W3FpZF07XG4rXHRcdGt0aW1lX3QgcnhfZG1hX29mZl90cztcbitcdFx0czY0IHJ4X2RtYV9vZmZfdXM7XG4rXHRcdHUzMiBzdGF0dXM7XG4rXG4rXHRcdGlmICghcS1cdTAwM2VuZGVzYylcbitcdFx0XHRnb3RvIG5leHQ7XG4rXG4rXHRcdG5hcGlfZGlzYWJsZShcdTAwMjZxLVx1MDAzZW5hcGkpO1xuK1xuK1x0XHQvKiBHTE9CQUxfQ0ZHX1JYX0RNQV9FTl9NQVNLIGlzIHBlci1RRE1BLCBub3QgcGVyLXJpbmcsIHNvXG4rXHRcdCAqIHRoaXMgcGF1c2VzIGV2ZXJ5IFJYIHJpbmcgb24gdGhpcyBRRE1BIGluc3RhbmNlLCBub3QganVzdFxuK1x0XHQgKiB0aGUgc3RhbGxlZCBvbmUgLSB0cmFjayBob3cgbG9uZyBmb3IsIHNpbmNlIHRoYXQncyB0aGVcbitcdFx0ICogcmVhbC13b3JsZCBjb3N0IG9mIHJlY292ZXJ5IG9uIHVucmVsYXRlZCByaW5ncy5cbitcdFx0ICovXG4rXHRcdHJ4X2RtYV9vZmZfdHMgPSBrdGltZV9nZXQoKTtcbitcbitcdFx0YWlyb2hhX3FkbWFfY2xlYXIocWRtYSwgUkVHX1FETUFfR0xPQkFMX0NGRyxcbitcdFx0XHRcdCAgR0xPQkFMX0NGR19SWF9ETUFfRU5fTUFTSyk7XG4rXHRcdGlmIChyZWFkX3BvbGxfdGltZW91dChhaXJvaGFfcWRtYV9yciwgc3RhdHVzLFxuK1x0XHRcdFx0ICAgICAgIShzdGF0dXMgXHUwMDI2IEdMT0JBTF9DRkdfUlhfRE1BX0JVU1lfTUFTSyksXG4rXHRcdFx0XHQgICAgICBVU0VDX1BFUl9NU0VDLCA1MCAqIFVTRUNfUEVSX01TRUMsIHRydWUsXG4rXHRcdFx0XHQgICAgICBxZG1hLCBSRUdfUURNQV9HTE9CQUxfQ0ZHKSlcbitcdFx0XHRkZXZfd2FybihxZG1hLVx1MDAzZWV0aC1cdTAwM2VkZXYsXG4rXHRcdFx0XHQgXCJxaWQ9JWQgUlggRE1BIGJ1c3kgdGltZW91dCBkdXJpbmcgcmVjb3ZlcnlcXG5cIixcbitcdFx0XHRcdCBxaWQpO1xuK1xuK1x0XHQvKiBEcm9wIHdoYXRldmVyIGlzIGN1cnJlbnRseSBpbiBmbGlnaHQgb24gdGhpcyByaW5nIGFuZFxuK1x0XHQgKiByZS1hcm0gaXQgZnJvbSBhIGtub3duLWNsZWFuIHN0YXRlLiBjbGVhbnVwX3J4X3F1ZXVlKClcbitcdFx0ICogb25seSBldmVyIHRvdWNoZXMgdGhlIHN3LW93bmVkIFt0YWlsLCBoZWFkKSB3aW5kb3cgYW5kXG4rXHRcdCAqIHJlc3luY3MgYm90aCBSWF9DUFVfSURYIGFuZCBSWF9ETUFfSURYIHRvIGl0LCB3aGljaCBpc1xuK1x0XHQgKiB3aGF0IHVuLXdlZGdlcyBhIHJpbmcgd2hlcmUgaHcgd3JvdGUgcGFzdCB0aGUgc3cgaGVhZFxuK1x0XHQgKiB3aXRob3V0IHRoZSBjb25zdW1lciBldmVyIGFkdmFuY2luZyAtIG5vIG5lZWQgdG8gZmlndXJlXG4rXHRcdCAqIG91dCB3aGljaCBkZXNjcmlwdG9yIGh3IGFjdHVhbGx5IHVzZWQuXG4rXHRcdCAqL1xuK1x0XHRhaXJvaGFfcWRtYV9jbGVhbnVwX3J4X3F1ZXVlKHEpO1xuK1x0XHRpZiAocS1cdTAwM2Vza2IpIHtcbitcdFx0XHQvKiBkaXNjYXJkIHdoYXRldmVyIHNjYXR0ZXItZ2F0aGVyIGZyYW1lIHdhc1xuK1x0XHRcdCAqIG1pZC1hc3NlbWJseSB3aGVuIHRoZSBzdGFsbCB3YXMgaGl0LCBjbGVhbnVwX3J4X3F1ZXVlKClcbitcdFx0XHQgKiBhYm92ZSBvbmx5IHJlc3luY3MgdGhlIHJpbmcsIG5vdCB0aGlzXG4rXHRcdFx0ICovXG4rXHRcdFx0ZGV2X2tmcmVlX3NrYihxLVx1MDAzZXNrYik7XG4rXHRcdFx0cS1cdTAwM2Vza2IgPSBOVUxMO1xuK1x0XHR9XG4rXHRcdGFpcm9oYV9xZG1hX2ZpbGxfcnhfcXVldWUocSk7XG4rXG4rXHRcdGFpcm9oYV9xZG1hX3NldChxZG1hLCBSRUdfUURNQV9HTE9CQUxfQ0ZHLFxuK1x0XHRcdFx0R0xPQkFMX0NGR19SWF9ETUFfRU5fTUFTSyk7XG4rXHRcdHJ4X2RtYV9vZmZfdXMgPSBrdGltZV91c19kZWx0YShrdGltZV9nZXQoKSwgcnhfZG1hX29mZl90cyk7XG4rXG4rXHRcdHEtXHUwMDNlc3RhbGxfY291bnQgPSAwO1xuK1x0XHRuYXBpX2VuYWJsZShcdTAwMjZxLVx1MDAzZW5hcGkpO1xuK1x0XHRuYXBpX3NjaGVkdWxlKFx1MDAyNnEtXHUwMDNlbmFwaSk7XG4rXG4rXHRcdHFkbWEtXHUwMDNlcnhfcmVjb3Zlcl9jb3VudCsrO1xuK1x0XHRkZXZfd2Fybl9yYXRlbGltaXRlZChxZG1hLVx1MDAzZWV0aC1cdTAwM2VkZXYsXG4rXHRcdFx0XHQgICAgIFwicWlkPSVkIFJYIHJpbmcgcmVjb3ZlcmVkIGFmdGVyIGh3IHN0YWxsIChSWCBETUEgcGF1c2VkIGZvciAlbGxkIHVzIG9uIHRoaXMgUURNQSBpbnN0YW5jZSlcXG5cIixcbitcdFx0XHRcdCAgICAgcWlkLCByeF9kbWFfb2ZmX3VzKTtcbituZXh0OlxuK1x0XHRjbGVhcl9iaXQocWlkLCBxZG1hLVx1MDAzZXJ4X3JlY292ZXJfbWFzayk7XG4rXHR9XG4rfVxuK1xuIHN0YXRpYyBpbnQgYWlyb2hhX3FkbWFfaW5pdF9yeChzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWEpXG4ge1xuIFx0aW50IGk7XG5AQCAtMTQ2OCwxNiArMTU4NSwzMiBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgYWlyb2hhX2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSlcbiBcdGlmICghdGVzdF9iaXQoREVWX1NUQVRFX0lOSVRJQUxJWkVELCBcdTAwMjZxZG1hLVx1MDAzZWV0aC1cdTAwM2VzdGF0ZSkpXG4gXHRcdHJldHVybiBJUlFfTk9ORTtcbiBcbi1cdHJ4X2ludHIxID0gaW50clsxXSBcdTAwMjYgUlhfRE9ORV9MT1dfSU5UX01BU0s7XG4rXHQvKiBBIHJpbmcgY2FuIGFsc28gcmFpc2UgTk9fQ1BVX0RTQ1Agd2hlbiBpdCBydW5zIG91dCBvZiBmcmVlIFJYXG4rXHQgKiBkZXNjcmlwdG9ycyAoZS5nLiBhIGJ1cnN0IG9mIFZJUC1jbGFzc2lmaWVkIGNvbnRyb2wgdHJhZmZpY1xuK1x0ICogZm9yY2VkIG9udG8gYSBzbWFsbCByaW5nKS4gT25jZSBhIHJpbmcgaXMgZnVsbHkgZHJhaW5lZCBubyBtb3JlXG4rXHQgKiBSWF9ET05FIGludGVycnVwdHMgY2FuIGZpcmUgZm9yIGl0LCBzaW5jZSB0aGVyZSBhcmUgbm8gZnJlZVxuK1x0ICogZGVzY3JpcHRvcnMgbGVmdCBmb3IgaGFyZHdhcmUgdG8gcmVjZWl2ZSBpbnRvLCBzbyB3aXRob3V0IHRoaXNcbitcdCAqIE5BUEkgaXMgbmV2ZXIgcmVzY2hlZHVsZWQgYW5kIHRoZSByaW5nIG5ldmVyIGdldHMgcmVmaWxsZWQgYWdhaW4uXG4rXHQgKiBUcmVhdCBOT19DUFVfRFNDUCB0aGUgc2FtZSBhcyBSWF9ET05FIGZvciBzY2hlZHVsaW5nIE5BUEk6XG4rXHQgKiBhaXJvaGFfcWRtYV9yeF9wcm9jZXNzKCkgdW5jb25kaXRpb25hbGx5IGNhbGxzXG4rXHQgKiBhaXJvaGFfcWRtYV9maWxsX3J4X3F1ZXVlKCkgYXQgdGhlIGVuZCBvZiBldmVyeSBwb2xsLCBldmVuIHdoZW5cbitcdCAqIHplcm8gZGVzY3JpcHRvcnMgd2VyZSByZWFwZWQsIHNvIHRoaXMgYWxvbmUgaXMgZW5vdWdoIHRvIHJlY292ZXJcbitcdCAqIHRoZSByaW5nLlxuK1x0ICovXG4rXHRyeF9pbnRyMSA9IGludHJbMV0gXHUwMDI2IChSWF9ET05FX0xPV19JTlRfTUFTSyB8IFJYX05PX0NQVV9EU0NQX0xPV19JTlRfTUFTSyk7XG4gXHRpZiAocnhfaW50cjEpIHtcbiBcdFx0YWlyb2hhX3FkbWFfaXJxX2Rpc2FibGUoaXJxX2JhbmssIFFETUFfSU5UX1JFR19JRFgxLCByeF9pbnRyMSk7XG4tXHRcdHJ4X2ludHJfbWFzayB8PSByeF9pbnRyMTtcbitcdFx0cnhfaW50cl9tYXNrIHw9IChyeF9pbnRyMSBcdTAwMjYgUlhfRE9ORV9MT1dfSU5UX01BU0spIHxcbitcdFx0XHRcdCgocnhfaW50cjEgXHUwMDI2IFJYX05PX0NQVV9EU0NQX0xPV19JTlRfTUFTSykgXHUwMDNlXHUwMDNlXG4rXHRcdFx0XHQgUlhfTk9fQ1BVX0RTQ1BfTE9XX09GRlNFVCk7XG4gXHR9XG4gXG4tXHRyeF9pbnRyMiA9IGludHJbMl0gXHUwMDI2IFJYX0RPTkVfSElHSF9JTlRfTUFTSztcbitcdHJ4X2ludHIyID0gaW50clsyXSBcdTAwMjYgKFJYX0RPTkVfSElHSF9JTlRfTUFTSyB8IFJYX05PX0NQVV9EU0NQX0hJR0hfSU5UX01BU0spO1xuIFx0aWYgKHJ4X2ludHIyKSB7XG4gXHRcdGFpcm9oYV9xZG1hX2lycV9kaXNhYmxlKGlycV9iYW5rLCBRRE1BX0lOVF9SRUdfSURYMiwgcnhfaW50cjIpO1xuLVx0XHRyeF9pbnRyX21hc2sgfD0gKHJ4X2ludHIyIFx1MDAzY1x1MDAzYyAxNik7XG4rXHRcdHJ4X2ludHJfbWFzayB8PSAoKHJ4X2ludHIyIFx1MDAyNiBSWF9ET05FX0hJR0hfSU5UX01BU0spIHxcbitcdFx0XHRcdCAoKHJ4X2ludHIyIFx1MDAyNiBSWF9OT19DUFVfRFNDUF9ISUdIX0lOVF9NQVNLKSBcdTAwM2VcdTAwM2VcbitcdFx0XHRcdCAgUlhfTk9fQ1BVX0RTQ1BfTE9XX09GRlNFVCkpIFx1MDAzY1x1MDAzYyAxNjtcbiBcdH1cbiBcbiBcdGZvciAoaSA9IDA7IHJ4X2ludHJfbWFzayBcdTAwMjZcdTAwMjYgaSBcdTAwM2MgQVJSQVlfU0laRShxZG1hLVx1MDAzZXFfcngpOyBpKyspIHtcbkBAIC0xNTc2LDYgKzE3MDksOCBAQCBzdGF0aWMgdm9pZCBhaXJvaGFfcWRtYV9jbGVhbnVwKHN0cnVjdCBhaXJvaGFfZXRoICpldGgsXG4ge1xuIFx0aW50IGk7XG4gXG4rXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNnFkbWEtXHUwMDNlcnhfcmVjb3Zlcl93b3JrKTtcbitcbiBcdGlmICh0ZXN0X2JpdChERVZfU1RBVEVfSU5JVElBTElaRUQsIFx1MDAyNmV0aC1cdTAwM2VzdGF0ZSkpIHtcbiBcdFx0dTMyIHN0YXR1cztcbiBcbkBAIC0xNjMzLDYgKzE3NjgsMTUgQEAgc3RhdGljIGludCBhaXJvaGFfaHdfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuIFx0aWYgKGVycilcbiBcdFx0cmV0dXJuIGVycjtcbiBcbitcdC8qIElOSVRfV09SSygpIGV2ZXJ5IGluc3RhbmNlIHVwIGZyb250LCBiZWZvcmUgYW55IG9mIHRoZW0gY2FuIGZhaWxcbitcdCAqIGluaXQgYW5kIGp1bXAgdG8gdGhlIGVycm9yIHBhdGggYmVsb3csIHNpbmNlIHRoYXQgcGF0aCB0ZWFycyBkb3duXG4rXHQgKiBldmVyeSBldGgtXHUwMDNlcWRtYVtdIHNsb3QgdW5jb25kaXRpb25hbGx5LCBpbmNsdWRpbmcgb25lcyB0aGlzIGxvb3BcbitcdCAqIG5ldmVyIHJlYWNoZWQuXG4rXHQgKi9cbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoZXRoLVx1MDAzZXFkbWEpOyBpKyspXG4rXHRcdElOSVRfV09SSyhcdTAwMjZldGgtXHUwMDNlcWRtYVtpXS5yeF9yZWNvdmVyX3dvcmssXG4rXHRcdFx0ICBhaXJvaGFfcWRtYV9yeF9yZWNvdmVyX3dvcmspO1xuK1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShldGgtXHUwMDNlcWRtYSk7IGkrKykge1xuIFx0XHRlcnIgPSBhaXJvaGFfcWRtYV9pbml0KHBkZXYsIGV0aCwgXHUwMDI2ZXRoLVx1MDAzZXFkbWFbaV0pO1xuIFx0XHRpZiAoZXJyKVxuQEAgLTE2ODEsNiArMTgyNSwxNCBAQCBzdGF0aWMgdm9pZCBhaXJvaGFfcWRtYV9zdG9wX25hcGkoc3RydWN0IGFpcm9oYV9xZG1hICpxZG1hKVxuIHtcbiBcdGludCBpO1xuIFxuK1x0LyogTWFrZSBzdXJlIHJ4X3JlY292ZXJfd29yayBpcyBuZWl0aGVyIHJ1bm5pbmcgbm9yIGFibGUgdG8gcmUtYXJtXG4rXHQgKiBiZWZvcmUgYW55IG5hcGlfZGlzYWJsZSgpIGJlbG93OiBpdCBhbHNvIGNhbGxzIG5hcGlfZGlzYWJsZSgpL1xuK1x0ICogbmFwaV9lbmFibGUoKSBvbiBxX3J4W10ubmFwaSwgYW5kIG5hcGlfZGlzYWJsZSgpIG9uIGFuXG4rXHQgKiBhbHJlYWR5LWRpc2FibGVkIE5BUEkgc3BpbnMgaW4gbmFwaV9kaXNhYmxlX2xvY2tlZCgpIGZvcmV2ZXIsXG4rXHQgKiBzaW5jZSBvbmx5IG5hcGlfZW5hYmxlKCkgY2xlYXJzIHRoZSBzdGF0ZSBpdCB3YWl0cyBvbi5cbitcdCAqL1xuK1x0ZGlzYWJsZV93b3JrX3N5bmMoXHUwMDI2cWRtYS1cdTAwM2VyeF9yZWNvdmVyX3dvcmspO1xuK1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShxZG1hLVx1MDAzZXFfdHhfaXJxKTsgaSsrKVxuIFx0XHRuYXBpX2Rpc2FibGUoXHUwMDI2cWRtYS1cdTAwM2VxX3R4X2lycVtpXS5uYXBpKTtcbiBcbkBAIC0yNDQ5LDYgKzI2MDEsNDYgQEAgc3RhdGljIHZvaWQgYWlyb2hhX2V0aHRvb2xfZ2V0X2RydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbiBcdHN0cnNjcHkoaW5mby1cdTAwM2VidXNfaW5mbywgZGV2X25hbWUoZXRoLVx1MDAzZWRldiksIHNpemVvZihpbmZvLVx1MDAzZWJ1c19pbmZvKSk7XG4gfVxuIFxuK3N0YXRpYyBjb25zdCBjaGFyIGFpcm9oYV9ldGh0b29sX3N0YXRzX3N0cltdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XG4rXHRcInJ4X3N0YWxsX3JlY292ZXJcIixcbit9O1xuK1xuK3N0YXRpYyB2b2lkIGFpcm9oYV9ldGh0b29sX2dldF9zdHJpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHUzMiBzc2V0LFxuK1x0XHRcdFx0ICAgICAgIHU4ICpkYXRhKVxuK3tcbitcdGludCBpO1xuK1xuK1x0aWYgKHNzZXQgIT0gRVRIX1NTX1NUQVRTKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGFpcm9oYV9ldGh0b29sX3N0YXRzX3N0cik7IGkrKylcbitcdFx0ZXRodG9vbF9wdXRzKFx1MDAyNmRhdGEsIGFpcm9oYV9ldGh0b29sX3N0YXRzX3N0cltpXSk7XG4rfVxuK1xuK3N0YXRpYyBpbnQgYWlyb2hhX2V0aHRvb2xfZ2V0X3NzZXRfY291bnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHNzZXQpXG4re1xuK1x0cmV0dXJuIHNzZXQgPT0gRVRIX1NTX1NUQVRTID9cbitcdCAgICAgICBBUlJBWV9TSVpFKGFpcm9oYV9ldGh0b29sX3N0YXRzX3N0cikgOiAtRU9QTk9UU1VQUDtcbit9XG4rXG4rc3RhdGljIHZvaWQgYWlyb2hhX2V0aHRvb2xfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbitcdFx0XHRcdFx0ICAgICBzdHJ1Y3QgZXRodG9vbF9zdGF0cyAqc3RhdHMsXG4rXHRcdFx0XHRcdCAgICAgdTY0ICpkYXRhKVxuK3tcbitcdHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbitcdHN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYTtcbitcbitcdHJjdV9yZWFkX2xvY2soKTtcbitcdHFkbWEgPSByY3VfZGVyZWZlcmVuY2UoZGV2LVx1MDAzZXFkbWEpO1xuK1x0LyogYWdncmVnYXRlIHJlY292ZXJ5IGNvdW50IGZvciB0aGUgd2hvbGUgcWRtYSBpbnN0YW5jZTogdGhlXG4rXHQgKiBzdGFsbGVkIHJpbmcgY2FuIGNhcnJ5IHRyYWZmaWMgZm9yIG1vcmUgdGhhbiBvbmUgbmV0ZGV2IChWSVBcbitcdCAqIGNsYXNzaWZpY2F0aW9uIHNoYXJlcyByaW5nIDQgYWNyb3NzIHNldmVyYWwgcHJvdG9jb2xzL3BvcnRzKSxcbitcdCAqIHNvIHRoZXJlJ3Mgbm8gc2luZ2xlIG5ldGRldiB0byBhdHRyaWJ1dGUgYW4gaW5kaXZpZHVhbCBldmVudCB0b1xuK1x0ICovXG4rXHRkYXRhWzBdID0gcWRtYSA/IHFkbWEtXHUwMDNlcnhfcmVjb3Zlcl9jb3VudCA6IDA7XG4rXHRyY3VfcmVhZF91bmxvY2soKTtcbit9XG4rXG4gc3RhdGljIHZvaWQgYWlyb2hhX2V0aHRvb2xfZ2V0X21hY19zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuIFx0XHRcdFx0XHQgc3RydWN0IGV0aHRvb2xfZXRoX21hY19zdGF0cyAqc3RhdHMpXG4ge1xuQEAgLTMzNTEsNiArMzU0Myw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgYWlyb2hhX25ldGRldl9vcHMgPSB7XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBhaXJvaGFfZXRodG9vbF9vcHMgPSB7XG4gXHQuZ2V0X2RydmluZm9cdFx0PSBhaXJvaGFfZXRodG9vbF9nZXRfZHJ2aW5mbyxcbitcdC5nZXRfc3RyaW5nc1x0XHQ9IGFpcm9oYV9ldGh0b29sX2dldF9zdHJpbmdzLFxuK1x0LmdldF9zc2V0X2NvdW50XHRcdD0gYWlyb2hhX2V0aHRvb2xfZ2V0X3NzZXRfY291bnQsXG4rXHQuZ2V0X2V0aHRvb2xfc3RhdHNcdD0gYWlyb2hhX2V0aHRvb2xfZ2V0X2V0aHRvb2xfc3RhdHMsXG4gXHQuZ2V0X2V0aF9tYWNfc3RhdHMgICAgICA9IGFpcm9oYV9ldGh0b29sX2dldF9tYWNfc3RhdHMsXG4gXHQuZ2V0X3Jtb25fc3RhdHNcdFx0PSBhaXJvaGFfZXRodG9vbF9nZXRfcm1vbl9zdGF0cyxcbiBcdC5nZXRfbGlua19rc2V0dGluZ3NcdD0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oXG5pbmRleCBmYTlhOGVkY2UyMmZmLi5jZDc1YzE2ZDhkMGM3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaFxuQEAgLTQxLDYgKzQxLDcgQEBcbiAjZGVmaW5lIFRYX0RTQ1BfTlVNXHRcdFx0MTAyNFxuICNkZWZpbmUgUlhfRFNDUF9OVU0oX24pXHRcdFx0XFxcbiBcdCgoX24pID09ICAyID8gMTI4IDpcdFx0XFxcbitcdCAoX24pID09ICA0ID8gMTI4IDpcdFx0XFxcbiBcdCAoX24pID09IDExID8gMTI4IDpcdFx0XFxcbiBcdCAoX24pID09IDE1ID8gMTI4IDpcdFx0XFxcbiBcdCAoX24pID09ICAwID8gMTAyNCA6IDE2KVxuQEAgLTIwNyw2ICsyMDgsMTUgQEAgc3RydWN0IGFpcm9oYV9xdWV1ZSB7XG4gXHRib29sIHR4cV9zdG9wcGVkO1xuIFx0Ym9vbCBmbHVzaGluZztcbiBcbitcdC8qIFJYIGh3IHN0YWxsIGRldGVjdGlvbjogbGFzdCBSRUdfUlhfRE1BX0lEWC90YWlsIHNuYXBzaG90IHRha2VuXG4rXHQgKiB3aGVuZXZlciB0aGUgaGVhZC1vZi1saW5lIGRlc2NyaXB0b3IgaXNuJ3QgRE9ORSwgYW5kIGhvdyBtYW55XG4rXHQgKiBjb25zZWN1dGl2ZSB0aW1lcyBodyBtYWRlIHByb2dyZXNzIChETUFfSURYIG1vdmVkKSB3aGlsZSB0aGVcbitcdCAqIGNvbnN1bWVyICh0YWlsKSBkaWRuJ3QuIFNlZSBhaXJvaGFfcWRtYV9yeF9jaGVja19zdGFsbCgpLlxuK1x0ICovXG4rXHR1MzIgc3RhbGxfZG1hX2lkeDtcbitcdHUxNiBzdGFsbF90YWlsO1xuK1x0dTggc3RhbGxfY291bnQ7XG4rXG4gXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTtcbiBcdHN0cnVjdCBwYWdlX3Bvb2wgKnBhZ2VfcG9vbDtcbiBcdHN0cnVjdCBza19idWZmICpza2I7XG5AQCAtNTY3LDYgKzU3NywxOCBAQCBzdHJ1Y3QgYWlyb2hhX3FkbWEge1xuIFx0c3RydWN0IGFpcm9oYV9xdWV1ZSBxX3R4W0FJUk9IQV9OVU1fVFhfUklOR107XG4gXHRzdHJ1Y3QgYWlyb2hhX3F1ZXVlIHFfcnhbQUlST0hBX05VTV9SWF9SSU5HXTtcbiBcbitcdC8qIHJlY292ZXJ5IGZvciBSWCByaW5ncyB3aG9zZSBodyBjb21wbGV0aW9uIHBvaW50ZXIgKFJYX0RNQV9JRFgpXG4rXHQgKiBrZWVwcyBtb3Zpbmcgd2hpbGUgdGhlIHN3IGNvbnN1bWVyIGlzIHN0dWNrOyBzZWVcbitcdCAqIGFpcm9oYV9xZG1hX3J4X2NoZWNrX3N0YWxsKCkgYW5kIGFpcm9oYV9xZG1hX3J4X3JlY292ZXJfd29yaygpLlxuK1x0ICovXG4rXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgcnhfcmVjb3Zlcl93b3JrO1xuK1x0REVDTEFSRV9CSVRNQVAocnhfcmVjb3Zlcl9tYXNrLCBBSVJPSEFfTlVNX1JYX1JJTkcpO1xuK1x0LyogY291bnQgb2YgY29tcGxldGVkIGh3LXN0YWxsIHJlY292ZXJpZXMsIGV4cG9zZWQgdmlhIGV0aHRvb2wgLVNcbitcdCAqIHNvIGEgcmVjb3ZlcnkgZXZlbnQgKGFuZCB0aGUgcGFja2V0cyBpdCBkcm9wcykgaXMgb2JzZXJ2YWJsZVxuK1x0ICogd2l0aG91dCBncmVwcGluZyBkbWVzZyBmb3IgdGhlIGRldl93YXJuX3JhdGVsaW1pdGVkKCkgYWJvdmVcbitcdCAqL1xuK1x0dTMyIHJ4X3JlY292ZXJfY291bnQ7XG4rXG4gXHRERUNMQVJFX0JJVE1BUChxb3NfY2hhbm5lbF9tYXAsIEFJUk9IQV9OVU1fUU9TX0NIQU5ORUxTKTtcbiB9O1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMDg6Mjg6MjkuNDUyOTAxMTAyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE0MjkzOTU5NjA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGlzIFBhdGNoIGZvciB0aGUgQWlyb2hhIEV0aGVybmV0IERyaXZlcioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBUaGUgZmlyc3QgdGhpbmcgSSBzZWUgaXMgdGhhdCB0aGlzIHBhdGNoIHRvdWNoZXMgYGFpcm9oYV9ldGguY2AgYW5kIGBhaXJvaGFfZXRoLmhgLCBib3RoIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9gIGRpcmVjdG9yeS4gVGhhdCdzIGEgc3Ryb25nIGluZGljYXRpb24gdGhpcyBpcyByZWxhdGVkIHRvIHRoZSBBaXJvaGEgRXRoZXJuZXQgZHJpdmVyLCBidXQgbGV0J3MganVzdCBjb25maXJtIHRoYXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgd2UgYXJlIGRlYWxpbmcgd2l0aCBoZXJlLCBzbyBsZXQgbWUgcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhpcyB3aXRoIHRoZSByZWxldmFudCBgS2NvbmZpZ2AgZmlsZSBpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9gIGRpcmVjdG9yeS4gSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgdGhlIG92ZXJhbGwgYnVpbGQgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBkcml2ZXIuIEknbGwgbmVlZCB0aGF0IGNvbnRleHQgdG8gcHJvcGVybHkgYXNzZXNzIHRoZSBjaGFuZ2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTYzLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQwODozMjowMy43NDY4NjQxNDdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODA3MTAxMDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkVUX0FJUk9IQXxhaXJvaGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMzc4MyBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWc9OD1pZiBORVRfVkVORE9SX0FJUk9IQVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnLTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWc6MTA6Y29uZmlnIE5FVF9BSVJPSEFfTlBVXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWctMTEtXFx0dHJpc3RhdGUgXFxcIkFpcm9oYSBOUFUgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnLTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnOjE4OmNvbmZpZyBORVRfQUlST0hBXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWctMTktXFx0dHJpc3RhdGUgXFxcIkFpcm9oYSBTb0MgR2lnYWJpdCBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnLTIwLVxcdGRlcGVuZHMgb24gTkVUX0RTQSB8fCAhTkVUX0RTQVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnOjIxOlxcdHNlbGVjdCBORVRfQUlST0hBX05QVVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnLTIyLVxcdHNlbGVjdCBQQUdFX1BPT0xcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnLTI2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnOjI3OmNvbmZpZyBORVRfQUlST0hBX0ZMT1dfU1RBVFNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZy0yOC1cXHRkZWZhdWx0IHlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZy0yOS1cXHRib29sIFxcXCJBaXJvaGEgZmxvdyBzdGF0c1xcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZzozMDpcXHRkZXBlbmRzIG9uIE5FVF9BSVJPSEEgXFx1MDAyNlxcdTAwMjYgTkVUX0FJUk9IQV9OUFVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZy0zMS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGUtNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfTkVUX0FJUk9IQSkgKz0gYWlyb2hhLWV0aC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL01ha2VmaWxlOjc6YWlyb2hhLWV0aC15IDo9IGFpcm9oYV9ldGgubyBhaXJvaGFfcHBlLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGU6ODphaXJvaGEtZXRoLSQoQ09ORklHX0RFQlVHX0ZTKSArPSBhaXJvaGFfcHBlX2RlYnVnZnMub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19ORVRfQUlST0hBX05QVSkgKz0gYWlyb2hhX25wdS5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTk6I2luY2x1ZGUgXFxcImFpcm9oYV9yZWdzLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMDojaW5jbHVkZSBcXFwiYWlyb2hhX2V0aC5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMjp1MzIgYWlyb2hhX3JyKHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIG9mZnNldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNzp2b2lkIGFpcm9oYV93cih2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBvZmZzZXQsIHUzMiB2YWwpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yOC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzI6dTMyIGFpcm9oYV9ybXcodm9pZCBfX2lvbWVtICpiYXNlLCB1MzIgb2Zmc2V0LCB1MzIgbWFzaywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM0OlxcdHZhbCB8PSAoYWlyb2hhX3JyKGJhc2UsIG9mZnNldCkgXFx1MDAyNiB+bWFzayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNTpcXHRhaXJvaGFfd3IoYmFzZSwgb2Zmc2V0LCB2YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDA6c3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfc2V0X2lycW1hc2soc3RydWN0IGFpcm9oYV9pcnFfYmFuayAqaXJxX2JhbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MS1cXHRcXHRcXHRcXHQgICAgaW50IGluZGV4LCB1MzIgY2xlYXIsIHUzMiBzZXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00Mi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MzpcXHRzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWEgPSBpcnFfYmFuay1cXHUwMDNlcWRtYTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ0LVxcdGludCBiYW5rID0gaXJxX2JhbmsgLSBcXHUwMDI2cWRtYS1cXHUwMDNlaXJxX2JhbmtzWzBdO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01My1cXHRpcnFfYmFuay1cXHUwMDNlaXJxbWFza1tpbmRleF0gfD0gc2V0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTQ6XFx0YWlyb2hhX3FkbWFfd3IocWRtYSwgUkVHX0lOVF9FTkFCTEUoYmFuaywgaW5kZXgpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTUtXFx0XFx0ICAgICAgIGlycV9iYW5rLVxcdTAwM2VpcnFtYXNrW2luZGV4XSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU4LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTk6XFx0YWlyb2hhX3FkbWFfcnIocWRtYSwgUkVHX0lOVF9FTkFCTEUoYmFuaywgaW5kZXgpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTYwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY0OnN0YXRpYyB2b2lkIGFpcm9oYV9xZG1hX2lycV9lbmFibGUoc3RydWN0IGFpcm9oYV9pcnFfYmFuayAqaXJxX2JhbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NS1cXHRcXHRcXHRcXHQgICBpbnQgaW5kZXgsIHUzMiBtYXNrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Njc6XFx0YWlyb2hhX3FkbWFfc2V0X2lycW1hc2soaXJxX2JhbmssIGluZGV4LCAwLCBtYXNrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY4LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NzA6c3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfaXJxX2Rpc2FibGUoc3RydWN0IGFpcm9oYV9pcnFfYmFuayAqaXJxX2JhbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03MS1cXHRcXHRcXHRcXHQgICAgaW50IGluZGV4LCB1MzIgbWFzaylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTcyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjczOlxcdGFpcm9oYV9xZG1hX3NldF9pcnFtYXNrKGlycV9iYW5rLCBpbmRleCwgbWFzaywgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03NC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjc2OnN0YXRpYyBpbnQgYWlyb2hhX3NldF9tYWNhZGRyKHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2LCBjb25zdCB1OCAqYWRkcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTc3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTc4LVxcdHU4IHJlZl9hZGRyW0VUSF9BTEVOXSBfX2FsaWduZWQoMik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo3OTpcXHRzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoID0gZGV2LVxcdTAwM2VldGg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy04MC1cXHR1MzIgcmVnLCB2YWwsIGxtaW4sIGxtYXg7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTg3LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGV0aC1cXHUwMDNlcG9ydHMpOyBpKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjg4OlxcdFxcdHN0cnVjdCBhaXJvaGFfZ2RtX3BvcnQgKnBvcnQgPSBldGgtXFx1MDAzZXBvcnRzW2ldO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtODktXFx0XFx0aW50IGo7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTk0LVxcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBBUlJBWV9TSVpFKHBvcnQtXFx1MDAzZWRldnMpOyBqKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjk1OlxcdFxcdFxcdHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqaXRlcl9kZXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy05Ni1cXHRcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xMDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxMDI6XFx0XFx0XFx0aWYgKGFpcm9oYV9pc19sYW5fZ2RtX2RldihpdGVyX2RldikgIT1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjEwMzpcXHRcXHRcXHQgICAgYWlyb2hhX2lzX2xhbl9nZG1fZGV2KGRldikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xMDQtXFx0XFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTEzNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjEzNjpcXHRyZWcgPSBhaXJvaGFfaXNfbGFuX2dkbV9kZXYoZGV2KSA/IFJFR19GRV9MQU5fTUFDX0ggOiBSRUdfRkVfV0FOX01BQ19IO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTM3LVxcdHZhbCA9IChhZGRyWzBdIFxcdTAwM2NcXHUwMDNjIDE2KSB8IChhZGRyWzFdIFxcdTAwM2NcXHUwMDNjIDgpIHwgYWRkclsyXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjEzODpcXHRhaXJvaGFfZmVfd3IoZXRoLCByZWcsIHZhbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xMzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNDA6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX01BQ19MTUlOKHJlZyksIGxtaW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTQxOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9NQUNfTE1BWChyZWcpLCBsbWF4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE0MzpcXHRhaXJvaGFfcHBlX2luaXRfdXBkX21lbShkZXYsIGFkZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTQ0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNDg6c3RhdGljIHZvaWQgYWlyb2hhX3NldF9nZG1fcG9ydF9md2RfY2ZnKHN0cnVjdCBhaXJvaGFfZXRoICpldGgsIHUzMiBhZGRyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTQ5LVxcdFxcdFxcdFxcdFxcdHUzMiB2YWwpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTUxOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBhZGRyLCBHRE1fT0NGUV9NQVNLLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTUyLVxcdFxcdCAgICAgIEZJRUxEX1BSRVAoR0RNX09DRlFfTUFTSywgdmFsKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNTM6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIGFkZHIsIEdETV9NQ0ZRX01BU0ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTQtXFx0XFx0ICAgICAgRklFTERfUFJFUChHRE1fTUNGUV9NQVNLLCB2YWwpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE1NTpcXHRhaXJvaGFfZmVfcm13KGV0aCwgYWRkciwgR0RNX0JDRlFfTUFTSyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE1Ni1cXHRcXHQgICAgICBGSUVMRF9QUkVQKEdETV9CQ0ZRX01BU0ssIHZhbCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTU3OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBhZGRyLCBHRE1fVUNGUV9NQVNLLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTU4LVxcdFxcdCAgICAgIEZJRUxEX1BSRVAoR0RNX1VDRlFfTUFTSywgdmFsKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE2MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE2MTpzdGF0aWMgaW50IGFpcm9oYV9zZXRfdmlwX2Zvcl9nZG1fcG9ydChzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKmRldiwgYm9vbCBlbmFibGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNjIte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTYzOlxcdHN0cnVjdCBhaXJvaGFfZ2RtX3BvcnQgKnBvcnQgPSBkZXYtXFx1MDAzZXBvcnQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNjQ6XFx0c3RydWN0IGFpcm9oYV9ldGggKmV0aCA9IGRldi1cXHUwMDNlZXRoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTY1LVxcdHUzMiB2aXBfcG9ydDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTY4LVxcdGlmIChlbmFibGUpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE2OTpcXHRcXHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0ZFX1ZJUF9QT1JUX0VOLCB2aXBfcG9ydCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNzA6XFx0XFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9JRkNfUE9SVF9FTiwgdmlwX3BvcnQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTcxLVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNzI6XFx0XFx0YWlyb2hhX2ZlX2NsZWFyKGV0aCwgUkVHX0ZFX1ZJUF9QT1JUX0VOLCB2aXBfcG9ydCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNzM6XFx0XFx0YWlyb2hhX2ZlX2NsZWFyKGV0aCwgUkVHX0ZFX0lGQ19QT1JUX0VOLCB2aXBfcG9ydCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNzQtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNzk6c3RhdGljIHZvaWQgYWlyb2hhX2ZlX21hY2NyX2luaXQoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE4MC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE4My1cXHRmb3IgKHAgPSAxOyBwIFxcdTAwM2M9IEFSUkFZX1NJWkUoZXRoLVxcdTAwM2Vwb3J0cyk7IHArKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTg0OlxcdFxcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfR0RNX0ZXRF9DRkcocCksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xODUtXFx0XFx0XFx0ICAgICAgR0RNX1RDUF9DS1NVTV9NQVNLIHwgR0RNX1VEUF9DS1NVTV9NQVNLIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE4Ni1cXHRcXHRcXHQgICAgICBHRE1fSVA0X0NLU1VNX01BU0sgfCBHRE1fRFJPUF9DUkNfRVJSX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTg3OlxcdFxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfR0RNX0xFTl9DRkcocCksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xODgtXFx0XFx0XFx0ICAgICAgR0RNX1NIT1JUX0xFTl9NQVNLIHwgR0RNX0xPTkdfTEVOX01BU0ssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE5Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE5MzpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9WTEFOX0NUUkwoMSksIENETV9WTEFOX01BU0ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xOTQtXFx0XFx0ICAgICAgRklFTERfUFJFUChDRE1fVkxBTl9NQVNLLCAweDgxMDApKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE5NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE5NjpcXHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0ZFX0NQT1JUX0NGRywgRkVfQ1BPUlRfUEFEKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE5Ny19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xOTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxOTk6c3RhdGljIHZvaWQgYWlyb2hhX2ZlX3ZpcF9zZXR1cChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjAwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIwMTpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oMyksIEVUSF9QX1BQUF9ESVNDKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIwMjpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDMpLCBQQVROX0ZDUFVfRU5fTUFTSyB8IFBBVE5fRU5fTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMDQ6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDQpLCBQUFBfTENQKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIwNTpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDQpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjA2LVxcdFxcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBGSUVMRF9QUkVQKFBBVE5fVFlQRV9NQVNLLCAxKSB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIwOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIwOTpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oNiksIFBQUF9JUENQKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIxMDpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDYpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjExLVxcdFxcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBGSUVMRF9QUkVQKFBBVE5fVFlQRV9NQVNLLCAxKSB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIxMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIxNDpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oNyksIFBQUF9DSEFQKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIxNTpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDcpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjE2LVxcdFxcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBGSUVMRF9QUkVQKFBBVE5fVFlQRV9NQVNLLCAxKSB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIxOS1cXHQvKiBCT09UUCAoMHg0MykgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIyMDpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oOCksIDB4NDMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjIxOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oOCksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMjItXFx0XFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IFBBVE5fU1BfRU5fTUFTSyB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIyNS1cXHQvKiBCT09UUCAoMHg0NCkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIyNjpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oOSksIDB4NDQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjI3OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oOSksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMjgtXFx0XFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IFBBVE5fU1BfRU5fTUFTSyB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIzMS1cXHQvKiBJU0FLTVAgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIzMjpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oMTApLCAweDFmNDAxZjQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjMzOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMTApLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjM0LVxcdFxcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX0RQX0VOX01BU0sgfCBQQVROX1NQX0VOX01BU0sgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMzc6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDExKSwgUFBQX0lQVjZDUCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMzg6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTigxMSksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMzktXFx0XFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IEZJRUxEX1BSRVAoUEFUTl9UWVBFX01BU0ssIDEpIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjQyLVxcdC8qIERIQ1B2NiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjQzOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigxMiksIDB4MjIyMDIyMyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNDQ6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTigxMiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNDUtXFx0XFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IFBBVE5fRFBfRU5fTUFTSyB8IFBBVE5fU1BfRU5fTUFTSyB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI0Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI0ODpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oMTkpLCBQUFBfUEFQKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI0OTpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDE5KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI1MC1cXHRcXHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgRklFTERfUFJFUChQQVROX1RZUEVfTUFTSywgMSkgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNTMtXFx0LyogRVRILVxcdTAwM2VFVEhfUF8xOTA1ICgweDg5M2EpICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNTQ6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDIwKSwgMHg4OTNhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI1NTpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDIwKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI1Ni1cXHRcXHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9FTl9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI1ODpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oMjEpLCBFVEhfUF9MTERQKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI1OTpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDIxKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2MC1cXHRcXHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9FTl9NQVNLKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjYyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjYzOnN0YXRpYyB1MzIgYWlyb2hhX2ZlX2dldF9wc2VfcXVldWVfcnN2X3BhZ2VzKHN0cnVjdCBhaXJvaGFfZXRoICpldGgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNjQtXFx0XFx0XFx0XFx0XFx0ICAgICB1MzIgcG9ydCwgdTMyIHF1ZXVlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjY1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI2NjpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX1BTRV9RVUVVRV9DRkdfV1IsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNjctXFx0XFx0ICAgICAgUFNFX0NGR19QT1JUX0lEX01BU0sgfCBQU0VfQ0ZHX1FVRVVFX0lEX01BU0ssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI3MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI3MTpcXHRyZXR1cm4gYWlyb2hhX2ZlX2dldChldGgsIFJFR19GRV9QU0VfUVVFVUVfQ0ZHX1ZBTCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI3Mi1cXHRcXHRcXHQgICAgIFBTRV9DRkdfT1FfUlNWX01BU0spO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNzU6c3RhdGljIHZvaWQgYWlyb2hhX2ZlX3NldF9wc2VfcXVldWVfcnN2X3BhZ2VzKHN0cnVjdCBhaXJvaGFfZXRoICpldGgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNzYtXFx0XFx0XFx0XFx0XFx0ICAgICAgdTMyIHBvcnQsIHUzMiBxdWV1ZSwgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI3Ny17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNzg6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9QU0VfUVVFVUVfQ0ZHX1ZBTCwgUFNFX0NGR19PUV9SU1ZfTUFTSyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI3OS1cXHRcXHQgICAgICBGSUVMRF9QUkVQKFBTRV9DRkdfT1FfUlNWX01BU0ssIHZhbCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjgwOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfRkVfUFNFX1FVRVVFX0NGR19XUixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI4MS1cXHRcXHQgICAgICBQU0VfQ0ZHX1BPUlRfSURfTUFTSyB8IFBTRV9DRkdfUVVFVUVfSURfTUFTSyB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI4Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI4ODpzdGF0aWMgdTMyIGFpcm9oYV9mZV9nZXRfcHNlX2FsbF9yc3Yoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI4OS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyOTA6XFx0cmV0dXJuIGFpcm9oYV9mZV9nZXQoZXRoLCBSRUdfRkVfUFNFX0JVRl9TRVQsIFBTRV9BTExSU1ZfTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yOTEtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjkzOnN0YXRpYyBpbnQgYWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KHN0cnVjdCBhaXJvaGFfZXRoICpldGgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yOTQtXFx0XFx0XFx0XFx0ICAgIHUzMiBwb3J0LCB1MzIgcXVldWUsIHUzMiB2YWwpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yOTUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjk2OlxcdHUzMiBvcmlnX3ZhbCA9IGFpcm9oYV9mZV9nZXRfcHNlX3F1ZXVlX3Jzdl9wYWdlcyhldGgsIHBvcnQsIHF1ZXVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5Ny1cXHR1MzIgdG1wLCBhbGxfcnN2LCBmcV9saW1pdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI5OTpcXHRhaXJvaGFfZmVfc2V0X3BzZV9xdWV1ZV9yc3ZfcGFnZXMoZXRoLCBwb3J0LCBxdWV1ZSwgdmFsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMwMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMwMS1cXHQvKiBtb2RpZnkgYWxsIHJzdiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzAyOlxcdGFsbF9yc3YgPSBhaXJvaGFfZmVfZ2V0X3BzZV9hbGxfcnN2KGV0aCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMDMtXFx0YWxsX3JzdiArPSAodmFsIC0gb3JpZ192YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzA0OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfRkVfUFNFX0JVRl9TRVQsIFBTRV9BTExSU1ZfTUFTSyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMwNS1cXHRcXHQgICAgICBGSUVMRF9QUkVQKFBTRV9BTExSU1ZfTUFTSywgYWxsX3JzdikpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMDctXFx0LyogbW9kaWZ5IGh0aGQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMwODpcXHRmcV9saW1pdCA9IGFpcm9oYV9mZV9nZXQoZXRoLCBQU0VfRlFfQ0ZHLCBQU0VfRlFfTElNSVRfTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMDktXFx0dG1wID0gZnFfbGltaXQgLSBhbGxfcnN2IC0gMHgyMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMxMDpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX1BTRV9TSEFSRV9VU0VEX1RIRCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxMS1cXHRcXHQgICAgICBQU0VfU0hBUkVfVVNFRF9IVEhEX01BU0ssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxNC1cXHR0bXAgPSBmcV9saW1pdCAtIGFsbF9yc3YgLSAweDEwMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMxNTpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX1BTRV9TSEFSRV9VU0VEX1RIRCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxNi1cXHRcXHQgICAgICBQU0VfU0hBUkVfVVNFRF9NVEhEX01BU0ssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxOC1cXHR0bXAgPSAoMyAqIHRtcCkgXFx1MDAzZVxcdTAwM2UgMjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMxOTpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX1BTRV9CVUZfU0VULFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzIwLVxcdFxcdCAgICAgIFBTRV9TSEFSRV9VU0VEX0xUSERfTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzI2OnN0YXRpYyB2b2lkIGFpcm9oYV9mZV9wc2VfcG9ydHNfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzI3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzQzOlxcdGlmIChhaXJvaGFfcHBlX2lzX2VuYWJsZWQoZXRoLCAxKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQ0LVxcdFxcdHUzMiBhbGxfcnN2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDYtXFx0XFx0LyogaHcgbWlzc2VzIFBQRTIgb3EgcnN2ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNDc6XFx0XFx0YWxsX3JzdiA9IGFpcm9oYV9mZV9nZXRfcHNlX2FsbF9yc3YoZXRoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0OC1cXHRcXHRhbGxfcnN2ICs9IFBTRV9SU1ZfUEFHRVMgKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQ5LVxcdFxcdFxcdCAgIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfUFBFMl07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNTA6XFx0XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9QU0VfQlVGX1NFVCwgUFNFX0FMTFJTVl9NQVNLLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzUxLVxcdFxcdFxcdCAgICAgIEZJRUxEX1BSRVAoUFNFX0FMTFJTVl9NQVNLLCBhbGxfcnN2KSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM1NS1cXHRmb3IgKHEgPSAwOyBxIFxcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9DRE0xXTsgcSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzU2OlxcdFxcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0NETTEsIHEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNTctXFx0XFx0XFx0XFx0XFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNTktXFx0Zm9yIChxID0gMDsgcSBcXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfR0RNMV07IHErKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM2MDpcXHRcXHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9HRE0xLCBxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzYxLVxcdFxcdFxcdFxcdFxcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzYzLVxcdGZvciAocSA9IDY7IHEgXFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0dETTJdOyBxKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNjQ6XFx0XFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfR0RNMiwgcSwgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNjUtXFx0LyogR0RNMyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzY2LVxcdGZvciAocSA9IDA7IHEgXFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0dETTNdOyBxKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNjc6XFx0XFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfR0RNMywgcSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM2OC1cXHRcXHRcXHRcXHRcXHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3MS1cXHRcXHRpZiAocSBcXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfUFBFMV0gLyAyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzcyOlxcdFxcdFxcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX1BQRTEsIHEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNzMtXFx0XFx0XFx0XFx0XFx0XFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzc0LVxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM3NTpcXHRcXHRcXHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9QUEUxLCBxLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3Ni1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3OC1cXHRmb3IgKHEgPSAwOyBxIFxcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9DRE0yXTsgcSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mzc5OlxcdFxcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0NETTIsIHEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zODAtXFx0XFx0XFx0XFx0XFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zODItXFx0Zm9yIChxID0gMDsgcSBcXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfQ0RNM10gLSAxOyBxKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozODM6XFx0XFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfQ0RNMywgcSwgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zODQtXFx0LyogQ0RNNCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzg1LVxcdGZvciAocSA9IDQ7IHEgXFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0NETTRdOyBxKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozODY6XFx0XFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfQ0RNNCwgcSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM4Ny1cXHRcXHRcXHRcXHRcXHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozODg6XFx0aWYgKGFpcm9oYV9wcGVfaXNfZW5hYmxlZChldGgsIDEpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zODktXFx0XFx0LyogUFBFMiAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOTEtXFx0XFx0XFx0aWYgKHEgXFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX1BQRTJdIC8gMilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM5MjpcXHRcXHRcXHRcXHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9QUEUyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzkzLVxcdFxcdFxcdFxcdFxcdFxcdFxcdCBxLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOTUtXFx0XFx0XFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mzk2OlxcdFxcdFxcdFxcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX1BQRTIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOTctXFx0XFx0XFx0XFx0XFx0XFx0XFx0IHEsIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MDEtXFx0Zm9yIChxID0gMDsgcSBcXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfR0RNNF07IHErKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQwMjpcXHRcXHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9HRE00LCBxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDAzLVxcdFxcdFxcdFxcdFxcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDA1LVxcdGZvciAocSA9IDA7IHEgXFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0NETTVdOyBxKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MDY6XFx0XFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfQ0RNNSwgcSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQwNy1cXHRcXHRcXHRcXHRcXHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQwOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQxMDpzdGF0aWMgaW50IGFpcm9oYV9mZV9tY192bGFuX2NsZWFyKHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MTEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MTg6XFx0XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX01DX1ZMQU5fREFUQSwgMHgwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQxOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDIxLVxcdFxcdCAgICAgIE1DX1ZMQU5fQ0ZHX1RBQkxFX1NFTF9NQVNLIHwgTUNfVkxBTl9DRkdfUldfTUFTSztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQyMjpcXHRcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfTUNfVkxBTl9DRkcsIHZhbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MjM6XFx0XFx0ZXJyID0gcmVhZF9wb2xsX3RpbWVvdXQoYWlyb2hhX2ZlX3JyLCB2YWwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MjQtXFx0XFx0XFx0XFx0XFx0dmFsIFxcdTAwMjYgTUNfVkxBTl9DRkdfQ01EX0RPTkVfTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDMwLVxcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBBSVJPSEFfRkVfTUNfTUFYX1ZMQU5fUE9SVDsgaisrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MzE6XFx0XFx0XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX01DX1ZMQU5fREFUQSwgMHgwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQzMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDM1LVxcdFxcdFxcdCAgICAgIE1DX1ZMQU5fQ0ZHX1JXX01BU0s7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MzY6XFx0XFx0XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX01DX1ZMQU5fQ0ZHLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDM3OlxcdFxcdFxcdGVyciA9IHJlYWRfcG9sbF90aW1lb3V0KGFpcm9oYV9mZV9yciwgdmFsLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDM4LVxcdFxcdFxcdFxcdFxcdFxcdHZhbCBcXHUwMDI2IE1DX1ZMQU5fQ0ZHX0NNRF9ET05FX01BU0ssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ1MDpzdGF0aWMgdm9pZCBhaXJvaGFfZmVfY3Jzbl9xc2VsX2luaXQoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ1MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NTItXFx0LyogQ0RNMV9DUlNOX1FTRUwgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ1MzpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMSwgQ1JTTl8yMiBcXHUwMDNlXFx1MDAzZSAyKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ1NC1cXHRcXHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMjIpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NTYtXFx0XFx0XFx0XFx0IENETV9DUlNOX1FTRUxfUTEpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ1NzpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMSwgQ1JTTl8wOCBcXHUwMDNlXFx1MDAzZSAyKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ1OC1cXHRcXHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMDgpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NjAtXFx0XFx0XFx0XFx0IENETV9DUlNOX1FTRUxfUTEpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ2MTpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMSwgQ1JTTl8yMSBcXHUwMDNlXFx1MDAzZSAyKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ2Mi1cXHRcXHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMjEpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NjQtXFx0XFx0XFx0XFx0IENETV9DUlNOX1FTRUxfUTEpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ2NTpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMSwgQ1JTTl8yNCBcXHUwMDNlXFx1MDAzZSAyKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ2Ni1cXHRcXHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMjQpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NjgtXFx0XFx0XFx0XFx0IENETV9DUlNOX1FTRUxfUTYpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ2OTpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMSwgQ1JTTl8yNSBcXHUwMDNlXFx1MDAzZSAyKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ3MC1cXHRcXHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMjUpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NzMtXFx0LyogQ0RNMl9DUlNOX1FTRUwgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ3NDpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMiwgQ1JTTl8wOCBcXHUwMDNlXFx1MDAzZSAyKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ3NS1cXHRcXHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMDgpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NzctXFx0XFx0XFx0XFx0IENETV9DUlNOX1FTRUxfUTEpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ3ODpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMiwgQ1JTTl8yMSBcXHUwMDNlXFx1MDAzZSAyKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ3OS1cXHRcXHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMjEpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00ODEtXFx0XFx0XFx0XFx0IENETV9DUlNOX1FTRUxfUTEpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ4MjpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMiwgQ1JTTl8yMiBcXHUwMDNlXFx1MDAzZSAyKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ4My1cXHRcXHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMjIpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00ODUtXFx0XFx0XFx0XFx0IENETV9DUlNOX1FTRUxfUTEpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ4NjpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMiwgQ1JTTl8yNCBcXHUwMDNlXFx1MDAzZSAyKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ4Ny1cXHRcXHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMjQpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00ODktXFx0XFx0XFx0XFx0IENETV9DUlNOX1FTRUxfUTYpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ5MDpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMiwgQ1JTTl8yNSBcXHUwMDNlXFx1MDAzZSAyKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ5MS1cXHRcXHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMjUpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00OTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0OTY6c3RhdGljIGludCBhaXJvaGFfZmVfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDk3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ5ODpcXHRhaXJvaGFfZmVfbWFjY3JfaW5pdChldGgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDk5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTAwLVxcdC8qIFBTRSBJUSByZXNlcnZlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MDE6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19QU0VfSVFfUkVWMSwgUFNFX0lRX1JFUzFfUDJfTUFTSyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUwMi1cXHRcXHQgICAgICBGSUVMRF9QUkVQKFBTRV9JUV9SRVMxX1AyX01BU0ssIDB4MTApKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUwMzpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX1BTRV9JUV9SRVYyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTA0LVxcdFxcdCAgICAgIFBTRV9JUV9SRVMyX1A1X01BU0sgfCBQU0VfSVFfUkVTMl9QNF9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MDgtXFx0LyogZW5hYmxlIEZFIGNvcHkgZW5naW5lIGZvciBLQS9EUEkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUwOTpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfUENFX0NGRywgUENFX0RQSV9FTl9NQVNLIHwgUENFX0tBX0VOX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTEwLVxcdC8qIHNldCB2aXAgcXVldWUgc2VsZWN0aW9uIHRvIHJpbmcgMSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTExOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0ZXRF9DRkcoMSksIENETV9WSVBfUVNFTF9NQVNLLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTEyLVxcdFxcdCAgICAgIEZJRUxEX1BSRVAoQ0RNX1ZJUF9RU0VMX01BU0ssIDB4NCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTEzOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0ZXRF9DRkcoMiksIENETV9WSVBfUVNFTF9NQVNLLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTE0LVxcdFxcdCAgICAgIEZJRUxEX1BSRVAoQ0RNX1ZJUF9RU0VMX01BU0ssIDB4NCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTE1LVxcdC8qIHNldCBHRE00IHNvdXJjZSBpbnRlcmZhY2Ugb2Zmc2V0IHRvIDggKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUxNjpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0dETV9TUkNfUE9SVF9TRVQoNCksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MTctXFx0XFx0ICAgICAgR0RNX1NQT1JUX09GRjJfTUFTSyB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUyNC1cXHQvKiBzZXQgUFNFIFBhZ2UgYXMgMTI4QiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTI1OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfRkVfRE1BX0dMT19DRkcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MjYtXFx0XFx0ICAgICAgRkVfRE1BX0dMT19MMl9TUEFDRV9NQVNLIHwgRkVfRE1BX0dMT19QR19TWl9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MjgtXFx0XFx0ICAgICAgRkVfRE1BX0dMT19QR19TWl9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUyOTpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfUlNUX0dMT19DRkcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MzAtXFx0XFx0ICAgICBGRV9SU1RfQ09SRV9NQVNLIHwgRkVfUlNUX0dETTNfTUJJX0FSQl9NQVNLIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTM2LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTM3OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9DRE0xX09RX01BUDAsIEJJVCg0KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1Mzg6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX0NETTFfT1FfTUFQMSwgQklUKDI4KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1Mzk6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX0NETTFfT1FfTUFQMiwgQklUKDQpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU0MDpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfQ0RNMV9PUV9NQVAzLCBCSVQoMjgpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU0MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU0MjpcXHRhaXJvaGFfZmVfdmlwX3NldHVwKGV0aCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NDM6XFx0YWlyb2hhX2ZlX3BzZV9wb3J0c19pbml0KGV0aCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NDU6XFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19HRE1fTUlTQ19DRkcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NDYtXFx0XFx0ICAgICAgR0RNMl9SRE1fQUNLX1dBSVRfUFJFRl9NQVNLIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU0Ny1cXHRcXHQgICAgICBHRE0yX0NITl9WTERfTU9ERV9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU0ODpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9GV0RfQ0ZHKDIpLCBDRE1fT0FNX1FTRUxfTUFTSyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU0OS1cXHRcXHQgICAgICBGSUVMRF9QUkVQKENETV9PQU1fUVNFTF9NQVNLLCAxNSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NTItXFx0LyogTlBVIENvcmUtMywgTlBVIEJyaWRnZSBDaGFubmVsLTMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU1MzpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0lQX0ZSQUdfRlAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NTQtXFx0XFx0ICAgICAgSVBfRlJBR01FTlRfUE9SVF9NQVNLIHwgSVBfRlJBR01FTlRfTkJRX01BU0ssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU1Ny1cXHQvKiBRRE1BIExBTiwgUlggUmluZy0yMiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTU4OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfSVBfRlJBR19GUCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU1OS1cXHRcXHQgICAgICBJUF9BU1NFTUJMRV9QT1JUX01BU0sgfCBJUF9BU1NFTUJMRV9OQlFfTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTYyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTYzOlxcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfR0RNX0ZXRF9DRkcoQUlST0hBX0dETTNfSURYKSwgR0RNX1BBRF9FTl9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU2NDpcXHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0dETV9GV0RfQ0ZHKEFJUk9IQV9HRE00X0lEWCksIEdETV9QQURfRU5fTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NjYtXFx0LyogRW5hYmxlIHNwbGl0IGZvciBNSUIgY291bnRlcnMgZm9yIEdETTMgYW5kIEdETTQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU2NzpcXHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0ZFX0dETV9NSUJfQ0ZHKEFJUk9IQV9HRE0zX0lEWCksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NjgtXFx0XFx0ICAgICAgRkVfR0RNX1RYX01JQl9TUExJVF9FTl9NQVNLIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2OS1cXHRcXHQgICAgICBGRV9HRE1fUlhfTUlCX1NQTElUX0VOX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTcwOlxcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfRkVfR0RNX01JQl9DRkcoQUlST0hBX0dETTRfSURYKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU3MS1cXHRcXHQgICAgICBGRV9HRE1fVFhfTUlCX1NQTElUX0VOX01BU0sgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NzQ6XFx0YWlyb2hhX2ZlX2Nyc25fcXNlbF9pbml0KGV0aCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NzY6XFx0YWlyb2hhX2ZlX2NsZWFyKGV0aCwgUkVHX0ZFX0NQT1JUX0NGRywgRkVfQ1BPUlRfUVVFVUVfWEZDX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTc3OlxcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfRkVfQ1BPUlRfQ0ZHLCBGRV9DUE9SVF9QT1JUX1hGQ19NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU3OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU3OS1cXHQvKiBkZWZhdWx0IGFnaW5nIG1vZGUgZm9yIG1iaSB1bmxvY2sgaXNzdWUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU4MDpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0dETV9DSE5fUkxTKDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTgxLVxcdFxcdCAgICAgIE1CSV9SWF9BR0VfU0VMX01BU0sgfCBNQklfVFhfQUdFX1NFTF9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01ODUtXFx0LyogZGlzYWJsZSBJRkMgYnkgZGVmYXVsdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTg2OlxcdGFpcm9oYV9mZV9jbGVhcihldGgsIFJFR19GRV9DU1JfSUZDX0NGRywgRkVfSUZDX0VOX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTg3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTg4LVxcdC8qIGVuYWJsZSAxOk4gdmxhbiBhY3Rpb24sIGluaXQgdmxhbiB0YWJsZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTg5OlxcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfTUNfVkxBTl9FTiwgTUNfVkxBTl9FTl9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU5MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU5MTpcXHRyZXR1cm4gYWlyb2hhX2ZlX21jX3ZsYW5fY2xlYXIoZXRoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU5Mi19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01OTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1OTQ6c3RhdGljIGludCBhaXJvaGFfcWRtYV9maWxsX3J4X3F1ZXVlKHN0cnVjdCBhaXJvaGFfcXVldWUgKnEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01OTUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTk2OlxcdHN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYSA9IHEtXFx1MDAzZXFkbWE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01OTctXFx0aW50IHFpZCA9IHEgLSBcXHUwMDI2cWRtYS1cXHUwMDNlcV9yeFswXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjAwLVxcdHdoaWxlIChxLVxcdTAwM2VxdWV1ZWQgXFx1MDAzYyBxLVxcdTAwM2VuZGVzYyAtIDEpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjYwMTpcXHRcXHRzdHJ1Y3QgYWlyb2hhX3F1ZXVlX2VudHJ5ICplID0gXFx1MDAyNnEtXFx1MDAzZWVudHJ5W3EtXFx1MDAzZWhlYWRdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjAyOlxcdFxcdHN0cnVjdCBhaXJvaGFfcWRtYV9kZXNjICpkZXNjID0gXFx1MDAyNnEtXFx1MDAzZWRlc2NbcS1cXHUwMDNlaGVhZF07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02MDMtXFx0XFx0c3RydWN0IHBhZ2UgKnBhZ2U7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTYzMi1cXHRpZiAobmZyYW1lcylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjYzMzpcXHRcXHRhaXJvaGFfcWRtYV9ybXcocWRtYSwgUkVHX1JYX0NQVV9JRFgocWlkKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTYzNC1cXHRcXHRcXHRcXHRSWF9SSU5HX0NQVV9JRFhfTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjM5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjQwOnN0YXRpYyBzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjQxOmFpcm9oYV9xZG1hX2dldF9nZG1fZGV2KHN0cnVjdCBhaXJvaGFfZXRoICpldGgsIHN0cnVjdCBhaXJvaGFfcWRtYV9kZXNjICpkZXNjKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjQyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY0MzpcXHRzdHJ1Y3QgYWlyb2hhX2dkbV9wb3J0ICpwb3J0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjQ0LVxcdHUxNiBwLCBkO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NzEtICogd2FpdGluZyBvbiwgd2FzIG5ldmVyIG1hcmtlZCBET05FLiBUaGlzIGhhcHBlbnMgd2hlbiBodyB3cml0ZXMgYVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjcyOiAqIGNvbXBsZXRlZCBkZXNjcmlwdG9yIHBhc3QgcS1cXHUwMDNlaGVhZCBiZWZvcmUgYWlyb2hhX3FkbWFfZmlsbF9yeF9xdWV1ZSgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NzMtICogaGFzIHBvc3RlZCBhIGZyZXNoIGJ1ZmZlciB0aGVyZSwgZGVjb3VwbGVkIGZyb20gc3cncyBvd24gcG9zdGluZ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02ODMtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2ODQ6c3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfcnhfY2hlY2tfc3RhbGwoc3RydWN0IGFpcm9oYV9xdWV1ZSAqcSlcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMDg6MzI6MDMuODI3NTc5MTUxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjM3OTc1NTg4NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgaG93IEknZCBhcHByb2FjaCB0aGlzIHRhc2ssIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBBaXJvaGEgRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhpcyBBaXJvaGEgRXRoZXJuZXQgZHJpdmVyLiBNeSBmaXJzdCBwb3J0IG9mIGNhbGwgd2lsbCBiZSB0aGUgYEtjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSB0aGUgb25lIGxvY2F0ZWQgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnYC4gVGhhdCdzIHdoZXJlIGFsbCB0aGUgZ29vZCBzdHVmZiBpcyBkZWZpbmVkIOKAkyBkZXBlbmRlbmNpZXMsIGFueSBhcmNoaXRlY3R1cmFsIGNvbnN0cmFpbnRzLCBhbmQgYW55IHBsYXRmb3JtLXNwZWNpZmljIHJlcXVpcmVtZW50cy4gQnkgZXhhbWluaW5nIHRoaXMgZmlsZSwgSSBjYW4gcXVpY2tseSBncmFzcCB3aGF0IG5lZWRzIHRvIGJlIGVuYWJsZWQsIHdoYXQgb3RoZXIgY29tcG9uZW50cyBpdCByZWxpZXMgb24sIGFuZCBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGhhcmR3YXJlIGNvbmRpdGlvbnMgaXQgZXhwZWN0cyB0byBmaW5kLiBVbmRlcnN0YW5kaW5nIHRoZXNlIGRlcGVuZGVuY2llcyBhbmQgY29uc3RyYWludHMgaXMgY3J1Y2lhbCBiZWZvcmUgSSBjYW4gZXZlbiBzdGFydCB0aGlua2luZyBhYm91dCBpbnRlZ3JhdGlvbiBvciBtb2RpZmljYXRpb24uIEVzc2VudGlhbGx5LCB0aGlzIGlzIHRoZSBrZXkgdG8gdW5sb2NraW5nIGhvdyB0aGlzIGRyaXZlciAqZml0cyogaW50byB0aGUgYmlnZ2VyIHBpY3R1cmUgb2YgdGhlIG5ldHdvcmtpbmcgc3Vic3lzdGVtLiBJIG5lZWQgdG8gc2VlIHdoYXQncyB3aGF0IGJlZm9yZSBtb3ZpbmcgZm9yd2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM1NDUsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQwODozMzowNy42MjUxNDEzMjFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDU3MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBORVRfVkVORE9SX0FJUk9IQVxcbiAgIDM6XFx0XFx0Ym9vbCBcXFwiQWlyb2hhIGRldmljZXNcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIEFSQ0hfQUlST0hBIHx8IENPTVBJTEVfVEVTVFxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIEFpcm9oYSBTb0Mgd2l0aCBldGhlcm5ldCwgc2F5IFkuXFxuICAgNzpcXHRcXG4gICA4OlxcdGlmIE5FVF9WRU5ET1JfQUlST0hBXFxuICAgOTpcXHRcXG4gIDEwOlxcdGNvbmZpZyBORVRfQUlST0hBX05QVVxcbiAgMTE6XFx0XFx0dHJpc3RhdGUgXFxcIkFpcm9oYSBOUFUgc3VwcG9ydFxcXCJcXG4gIDEyOlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgMTM6XFx0XFx0c2VsZWN0IFJFR01BUF9NTUlPXFxuICAxNDpcXHRcXHRoZWxwXFxuICAxNTpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIEFpcm9oYSBOZXR3b3JrIFByb2Nlc3NvciAoTlBVKSBhdmFpbGFibGVcXG4gIDE2OlxcdFxcdCAgb24gdGhlIEFpcm9oYSBTb2MgZmFtaWx5LlxcbiAgMTc6XFx0XFxuICAxODpcXHRjb25maWcgTkVUX0FJUk9IQVxcbiAgMTk6XFx0XFx0dHJpc3RhdGUgXFxcIkFpcm9oYSBTb0MgR2lnYWJpdCBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcbiAgMjA6XFx0XFx0ZGVwZW5kcyBvbiBORVRfRFNBIHx8ICFORVRfRFNBXFxuICAyMTpcXHRcXHRzZWxlY3QgTkVUX0FJUk9IQV9OUFVcXG4gIDIyOlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gIDIzOlxcdFxcdGhlbHBcXG4gIDI0OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIGdpZ2FiaXQgZXRoZXJuZXQgTUFDcyBpbiB0aGVcXG4gIDI1OlxcdFxcdCAgQWlyb2hhIFNvQyBmYW1pbHkuXFxuICAyNjpcXHRcXG4gIDI3OlxcdGNvbmZpZyBORVRfQUlST0hBX0ZMT1dfU1RBVFNcXG4gIDI4OlxcdFxcdGRlZmF1bHQgeVxcbiAgMjk6XFx0XFx0Ym9vbCBcXFwiQWlyb2hhIGZsb3cgc3RhdHNcXFwiXFxuICAzMDpcXHRcXHRkZXBlbmRzIG9uIE5FVF9BSVJPSEEgXFx1MDAyNlxcdTAwMjYgTkVUX0FJUk9IQV9OUFVcXG4gIDMxOlxcdFxcdGhlbHBcXG4gIDMyOlxcdFxcdCAgRW5hYmxlIEFpcm9oYSBmbG93dGFibGUgc3RhdGlzdGljIGNvdW50ZXJzLlxcbiAgMzM6XFx0XFxuICAzNDpcXHRlbmRpZiAjTkVUX1ZFTkRPUl9BSVJPSEFcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMDg6MzM6MDcuNjI1MjQ5ODAxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjU1MjE3NzEwMDI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTkVUX0FJUk9IQSBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBgTkVUX0FJUk9IQWAgZHJpdmVyLiBJdCdzIGFuIEV0aGVybmV0IFNvQyBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciBBaXJvaGEgU29Dcywgd2hpY2ggbWFrZXMgaW1tZWRpYXRlIHNlbnNlIGdpdmVuIHRoZSBuYW1lLiBUaGUgYGRlcGVuZHMgb24gQVJDSF9BSVJPSEEgfHwgQ09NUElMRV9URVNUYCBjb25kaXRpb24gaXMgZmFpcmx5IHN0cmFpZ2h0Zm9yd2FyZCwgbGlrZWx5IGluZGljYXRpbmcgaXQgZWl0aGVyIHRhcmdldHMgdGhlIEFpcm9oYSBhcmNoaXRlY3R1cmUgb3IgaXMgZW5hYmxlZCBmb3IgdGVzdGluZyBwdXJwb3NlcyBkdXJpbmcgdGhlIGJ1aWxkLlxuXG5Ob3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBIb3cgaXMgdGhpcyBkcml2ZXIgaW50ZWdyYXRlZD8gSXMgaXQgYSBwbGF0Zm9ybSBkZXZpY2UgZHJpdmVyIHJ1bm5pbmcgb24gdGhlIFNvQyBpdHNlbGY/IFRvIHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yLCBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgdGhlIGBhaXJvaGFfZXRoLmNgIHNvdXJjZSBjb2RlLCBzcGVjaWZpY2FsbHkgdGhlIHByb2JlIGZ1bmN0aW9uIGFuZCB0aGUgZGV2aWNlIG1hdGNoaW5nIGxvZ2ljLiBUaG9zZSBhcmUgdGhlIHRlbGwtdGFsZSBzaWducyBvZiBob3cgdGhlIGtlcm5lbCBpZGVudGlmaWVzIGFuZCBpbml0aWFsaXplcyB0aGUgaGFyZHdhcmUgaXQgY29udHJvbHMuIEknbGwgbmVlZCB0byBzZWUgaG93IHRoZSBkcml2ZXIgaXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBwbGF0Zm9ybSB0byBkZXRlcm1pbmUgaWYgdGhlIGRldmljZSBpcyBmb3VuZCBhbmQsIGFzIHN1Y2gsIGlmIG15IHBsYXRmb3JtIGlzIGNvcnJlY3RseSBzdXBwb3J0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MjY5LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQwODozNzoyMi44NDI5NjM1MjlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc0ODAyOTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFpcm9oYV9wcm9iZXxhaXJvaGFfZHJpdmVyfG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXJ8cGxhdGZvcm1fZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jPTM3NTU9c3RhdGljIGludCBhaXJvaGFfcmVnaXN0ZXJfZ2RtX2RldmljZXMoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzc4My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM3ODQ6c3RhdGljIGludCBhaXJvaGFfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3ODUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYz00MTQ3PU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG9mX2Fpcm9oYV9tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MTQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDE0OTpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBhaXJvaGFfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDE1MDpcXHQucHJvYmUgPSBhaXJvaGFfcHJvYmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MTUxLVxcdC5yZW1vdmUgPSBhaXJvaGFfcmVtb3ZlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MTU2LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MTU3Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoYWlyb2hhX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MTU4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYz04MDY9c3RhdGljIHZvaWQgYWlyb2hhX25wdV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtODE0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6ODE1OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGFpcm9oYV9ucHVfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtODE2LVxcdC5wcm9iZSA9IGFpcm9oYV9ucHVfcHJvYmUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTgyMi19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6ODIzOm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoYWlyb2hhX25wdV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtODI0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQwODozNzoyMy4zMTc3NzEzNjRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MzM1MTA1NTQ3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBhaXJvaGFfcHJvYmUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGBhaXJvaGFfcHJvYmVgIGZ1bmN0aW9uLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBob3cgZG9lcyB0aGlzIHRoaW5nIG9wZXJhdGU/IFdoYXQgc3BlY2lmaWMgaGFyZHdhcmUgcmVzb3VyY2VzIGFuZCBEZXZpY2UgVHJlZSBub2RlcyBkb2VzIGl0IG5lZWQgdG8gc3VjY2Vzc2Z1bGx5IGZ1bmN0aW9uPyBVbmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmNpZXMgaXMgY3JpdGljYWwgZm9yIHRyb3VibGVzaG9vdGluZywgZGVidWdnaW5nLCBvciBldmVuIGp1c3QgbW9kaWZ5aW5nIGl0cyBiZWhhdmlvci4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHNjb3BlIGFuZCB0aGUga2V5IGludGVyZmFjZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MjA1LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMDg6Mzg6MDYuNjY4ODI4NDc3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NTE5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM3ODAsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjM3ODA6XFx0XFxuMzc4MTpcXHRcXHRyZXR1cm4gMDtcXG4zNzgyOlxcdH1cXG4zNzgzOlxcdFxcbjM3ODQ6XFx0c3RhdGljIGludCBhaXJvaGFfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4zNzg1OlxcdHtcXG4zNzg2OlxcdFxcdHN0cnVjdCByZXNldF9jb250cm9sX2J1bGtfZGF0YSAqeHNpX3JzdHM7XFxuMzc4NzpcXHRcXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wO1xcbjM3ODg6XFx0XFx0c3RydWN0IGFpcm9oYV9ldGggKmV0aDtcXG4zNzg5OlxcdFxcdGludCBpLCBlcnI7XFxuMzc5MDpcXHRcXG4zNzkxOlxcdFxcdGV0aCA9IGRldm1fa3phbGxvYyhcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBzaXplb2YoKmV0aCksIEdGUF9LRVJORUwpO1xcbjM3OTI6XFx0XFx0aWYgKCFldGgpXFxuMzc5MzpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4zNzk0OlxcdFxcbjM3OTU6XFx0XFx0ZXRoLVxcdTAwM2Vzb2MgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuMzc5NjpcXHRcXHRpZiAoIWV0aC1cXHUwMDNlc29jKVxcbjM3OTc6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuMzc5ODpcXHRcXG4zNzk5OlxcdFxcdGV0aC1cXHUwMDNlZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG4zODAwOlxcdFxcbjM4MDE6XFx0XFx0ZXJyID0gZG1hX3NldF9tYXNrX2FuZF9jb2hlcmVudChldGgtXFx1MDAzZWRldiwgRE1BX0JJVF9NQVNLKDMyKSk7XFxuMzgwMjpcXHRcXHRpZiAoZXJyKSB7XFxuMzgwMzpcXHRcXHRcXHRkZXZfZXJyKGV0aC1cXHUwMDNlZGV2LCBcXFwiZmFpbGVkIGNvbmZpZ3VyaW5nIERNQSBtYXNrXFxcXG5cXFwiKTtcXG4zODA0OlxcdFxcdFxcdHJldHVybiBlcnI7XFxuMzgwNTpcXHRcXHR9XFxuMzgwNjpcXHRcXG4zODA3OlxcdFxcdGV0aC1cXHUwMDNlZmVfcmVncyA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZV9ieW5hbWUocGRldiwgXFxcImZlXFxcIik7XFxuMzgwODpcXHRcXHRpZiAoSVNfRVJSKGV0aC1cXHUwMDNlZmVfcmVncykpXFxuMzgwOTpcXHRcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShldGgtXFx1MDAzZWRldiwgUFRSX0VSUihldGgtXFx1MDAzZWZlX3JlZ3MpLFxcbjM4MTA6XFx0XFx0XFx0XFx0XFx0ICAgICBcXFwiZmFpbGVkIHRvIGlvbWFwIGZlIHJlZ3NcXFxcblxcXCIpO1xcbjM4MTE6XFx0XFxuMzgxMjpcXHRcXHRldGgtXFx1MDAzZXJzdHNbMF0uaWQgPSBcXFwiZmVcXFwiO1xcbjM4MTM6XFx0XFx0ZXRoLVxcdTAwM2Vyc3RzWzFdLmlkID0gXFxcInBkbWFcXFwiO1xcbjM4MTQ6XFx0XFx0ZXRoLVxcdTAwM2Vyc3RzWzJdLmlkID0gXFxcInFkbWFcXFwiO1xcbjM4MTU6XFx0XFx0ZXJyID0gZGV2bV9yZXNldF9jb250cm9sX2J1bGtfZ2V0X2V4Y2x1c2l2ZShldGgtXFx1MDAzZWRldixcXG4zODE2OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBBUlJBWV9TSVpFKGV0aC1cXHUwMDNlcnN0cyksXFxuMzgxNzpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgZXRoLVxcdTAwM2Vyc3RzKTtcXG4zODE4OlxcdFxcdGlmIChlcnIpIHtcXG4zODE5OlxcdFxcdFxcdGRldl9lcnIoZXRoLVxcdTAwM2VkZXYsIFxcXCJmYWlsZWQgdG8gZ2V0IGJ1bGsgcmVzZXQgbGluZXNcXFxcblxcXCIpO1xcbjM4MjA6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4zODIxOlxcdFxcdH1cXG4zODIyOlxcdFxcbjM4MjM6XFx0XFx0eHNpX3JzdHMgPSBkZXZtX2tjYWxsb2MoZXRoLVxcdTAwM2VkZXYsXFxuMzgyNDpcXHRcXHRcXHRcXHRcXHRldGgtXFx1MDAzZXNvYy1cXHUwMDNlbnVtX3hzaV9yc3RzLCBzaXplb2YoKnhzaV9yc3RzKSxcXG4zODI1OlxcdFxcdFxcdFxcdFxcdEdGUF9LRVJORUwpO1xcbjM4MjY6XFx0XFx0aWYgKCF4c2lfcnN0cylcXG4zODI3OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjM4Mjg6XFx0XFxuMzgyOTpcXHRcXHRldGgtXFx1MDAzZXhzaV9yc3RzID0geHNpX3JzdHM7XFxuMzgzMDpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZXRoLVxcdTAwM2Vzb2MtXFx1MDAzZW51bV94c2lfcnN0czsgaSsrKVxcbjM4MzE6XFx0XFx0XFx0ZXRoLVxcdTAwM2V4c2lfcnN0c1tpXS5pZCA9IGV0aC1cXHUwMDNlc29jLVxcdTAwM2V4c2lfcnN0c19uYW1lc1tpXTtcXG4zODMyOlxcdFxcbjM4MzM6XFx0XFx0ZXJyID0gZGV2bV9yZXNldF9jb250cm9sX2J1bGtfZ2V0X2V4Y2x1c2l2ZShldGgtXFx1MDAzZWRldixcXG4zODM0OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBldGgtXFx1MDAzZXNvYy1cXHUwMDNlbnVtX3hzaV9yc3RzLFxcbjM4MzU6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIGV0aC1cXHUwMDNleHNpX3JzdHMpO1xcbjM4MzY6XFx0XFx0aWYgKGVycikge1xcbjM4Mzc6XFx0XFx0XFx0ZGV2X2VycihldGgtXFx1MDAzZWRldiwgXFxcImZhaWxlZCB0byBnZXQgYnVsayB4c2kgcmVzZXQgbGluZXNcXFxcblxcXCIpO1xcbjM4Mzg6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4zODM5OlxcdFxcdH1cXG4zODQwOlxcdFxcbjM4NDE6XFx0XFx0ZXRoLVxcdTAwM2VuYXBpX2RldiA9IGFsbG9jX25ldGRldl9kdW1teSgwKTtcXG4zODQyOlxcdFxcdGlmICghZXRoLVxcdTAwM2VuYXBpX2RldilcXG4zODQzOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjM4NDQ6XFx0XFxuMzg0NTpcXHRcXHQvKiBFbmFibGUgdGhyZWFkZWQgTkFQSSBieSBkZWZhdWx0ICovXFxuMzg0NjpcXHRcXHRldGgtXFx1MDAzZW5hcGlfZGV2LVxcdTAwM2V0aHJlYWRlZCA9IHRydWU7XFxuMzg0NzpcXHRcXHRzdHJzY3B5KGV0aC1cXHUwMDNlbmFwaV9kZXYtXFx1MDAzZW5hbWUsIFxcXCJxZG1hX2V0aFxcXCIsIHNpemVvZihldGgtXFx1MDAzZW5hcGlfZGV2LVxcdTAwM2VuYW1lKSk7XFxuMzg0ODpcXHRcXHRwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBldGgpO1xcbjM4NDk6XFx0XFxuMzg1MDpcXHRcXHRlcnIgPSBhaXJvaGFfaHdfaW5pdChwZGV2LCBldGgpO1xcbjM4NTE6XFx0XFx0aWYgKGVycilcXG4zODUyOlxcdFxcdFxcdGdvdG8gZXJyb3JfbmV0ZGV2X2ZyZWU7XFxuMzg1MzpcXHRcXG4zODU0OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGV0aC1cXHUwMDNlcWRtYSk7IGkrKykge1xcbjM4NTU6XFx0XFx0XFx0YWlyb2hhX3FkbWFfc3RhcnRfbmFwaShcXHUwMDI2ZXRoLVxcdTAwM2VxZG1hW2ldKTtcXG4zODU2OlxcdFxcdFxcdGFpcm9oYV9xZG1hX3NldChcXHUwMDI2ZXRoLVxcdTAwM2VxZG1hW2ldLCBSRUdfUURNQV9HTE9CQUxfQ0ZHLFxcbjM4NTc6XFx0XFx0XFx0XFx0XFx0R0xPQkFMX0NGR19UWF9ETUFfRU5fTUFTSyB8XFxuMzg1ODpcXHRcXHRcXHRcXHRcXHRHTE9CQUxfQ0ZHX1JYX0RNQV9FTl9NQVNLKTtcXG4zODU5OlxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMDg6Mzg6MDYuNjY5MDc1ODY2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjg4MDk2NjY2NzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIGBhaXJvaGFfcHJvYmVgIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGFpcm9oYV9wcm9iZWAuIFRoZSBuYW1lIGl0c2VsZiBzdWdnZXN0cyBpdCdzIGEgcHJvYmUgZnVuY3Rpb24sIGxpa2VseSBhc3NvY2lhdGVkIHdpdGggYW4gU29DIHBsYXRmb3JtIGRyaXZlciwgYW5kIGp1ZGdpbmcgYnkgdGhlIGBhaXJvaGFgIHByZWZpeCwgaXQncyBzcGVjaWZpYyB0byB0aGF0IHZlbmRvcidzIGhhcmR3YXJlLiBUaGUgY2x1ZSB0aGF0IGNlbWVudHMgdGhpcyBpcyB0aGUgT0YgZGV2aWNlIHRyZWUgbWF0Y2gsIGBvZl9haXJvaGFfbWF0Y2hgLiBUaGF0IHRlbGxzIG1lIGl0J3MgdXNpbmcgdGhlIE9wZW4gRmlybXdhcmUgZGV2aWNlIHRyZWUgdG8gaWRlbnRpZnkgYW5kIGNvbmZpZ3VyZSBzcGVjaWZpYyBBaXJvaGEgaGFyZHdhcmUgd2l0aGluIGEgbGFyZ2VyIHN5c3RlbS4gSSBuZWVkIHRvIGZvY3VzIG9uIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLiBJJ2xsIGp1bXAgZGlyZWN0bHkgdG8gbGluZXMgNDE0MC00MTUwIHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiBUaGF0J3MgdXN1YWxseSB3aGVyZSB0aGUgbWVhdCBvZiB0aGUgZHJpdmVyIGludGVyYWN0aW9uIHdpdGggdGhlIGhhcmR3YXJlIGJlZ2lucy4gSeKAmW0gZXhwZWN0aW5nIHRvIHNlZSB0aGluZ3MgbGlrZSByZXNvdXJjZSByZXF1ZXN0cyAobWVtb3J5IHJlZ2lvbnMsIElSUXMpLCBpbml0aWFsaXphdGlvbnMsIGFuZCBwb3RlbnRpYWxseSBzb21lIGRldmljZS1zcGVjaWZpYyBzZXR1cCBvciBjb25maWd1cmF0aW9uIGJhc2VkIG9uIHRoZSBkZXZpY2UgdHJlZSBkYXRhLiBJJ20ga2VlbiB0byBzZWUgdGhlIGFwcHJvYWNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjY3MywiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMDg6Mzk6MzQuNzY1NzQ1MDExWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MDM1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQxMzUsXG4gIFwiTGluZUNvdW50XCI6IDI1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjQxMzU6XFx0XFx0Lm9wcyA9IHtcXG40MTM2OlxcdFxcdFxcdC5nZXRfc3BvcnQgPSBhaXJvaGFfYW43NTgzX2dldF9zcG9ydCxcXG40MTM3OlxcdFxcdFxcdC5nZXRfdmlwX3BvcnQgPSBhaXJvaGFfYW43NTgzX2dldF92aXBfcG9ydCxcXG40MTM4OlxcdFxcdFxcdC5nZXRfZGV2X2Zyb21fc3BvcnQgPSBhaXJvaGFfYW43NTgzX2dldF9kZXZfZnJvbV9zcG9ydCxcXG40MTM5OlxcdFxcdH0sXFxuNDE0MDpcXHR9O1xcbjQxNDE6XFx0XFxuNDE0MjpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9haXJvaGFfbWF0Y2hbXSA9IHtcXG40MTQzOlxcdFxcdHsgLmNvbXBhdGlibGUgPSBcXFwiYWlyb2hhLGVuNzU4MS1ldGhcXFwiLCAuZGF0YSA9IFxcdTAwMjZlbjc1ODFfc29jX2RhdGEgfSxcXG40MTQ0OlxcdFxcdHsgLmNvbXBhdGlibGUgPSBcXFwiYWlyb2hhLGFuNzU4My1ldGhcXFwiLCAuZGF0YSA9IFxcdTAwMjZhbjc1ODNfc29jX2RhdGEgfSxcXG40MTQ1OlxcdFxcdHsgLyogc2VudGluZWwgKi8gfVxcbjQxNDY6XFx0fTtcXG40MTQ3OlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG9mX2Fpcm9oYV9tYXRjaCk7XFxuNDE0ODpcXHRcXG40MTQ5OlxcdHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGFpcm9oYV9kcml2ZXIgPSB7XFxuNDE1MDpcXHRcXHQucHJvYmUgPSBhaXJvaGFfcHJvYmUsXFxuNDE1MTpcXHRcXHQucmVtb3ZlID0gYWlyb2hhX3JlbW92ZSxcXG40MTUyOlxcdFxcdC5kcml2ZXIgPSB7XFxuNDE1MzpcXHRcXHRcXHQubmFtZSA9IEtCVUlMRF9NT0ROQU1FLFxcbjQxNTQ6XFx0XFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gb2ZfYWlyb2hhX21hdGNoLFxcbjQxNTU6XFx0XFx0fSxcXG40MTU2OlxcdH07XFxuNDE1NzpcXHRtb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGFpcm9oYV9kcml2ZXIpO1xcbjQxNTg6XFx0XFxuNDE1OTpcXHRNT0RVTEVfTElDRU5TRShcXFwiR1BMIHYyXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDA4OjM5OjM0Ljc2NTkwNzQ1MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTA4NTcxNTMyMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQSBEZWVwIERpdmUgaW50byBWaXJ0dWFsaXplZCBSZWFjaGFiaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgZHJpdmVyLCBgYWlyb2hhX2V0aGAsIGlzIGEgbm8tZ28gZm9yIGZ1enppbmcgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgY29yZSBvZiBteSBhbmFseXNpcyByZXZvbHZlcyBhcm91bmQgaXRzIGZ1bmRhbWVudGFsIGRlcGVuZGVuY3kgb24gdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUg4oCTIHNwZWNpZmljYWxseSwgdGhlIEFpcm9oYSBFTjc1ODEvQU43NTgzIFNvQyBldGhlcm5ldCBjb250cm9sbGVyLiBUaGlzIGlzbid0IGp1c3QgYSBnZW5lcmljIG5ldHdvcmsgZGV2aWNlOyBpdCdzIGludHJpY2F0ZWx5IHRpZWQgdG8gYSBzcGVjaWZpYyBTeXN0ZW0gb24gYSBDaGlwLCBhbmQgdGhhdOKAmXMgdGhlIGZpcnN0IHJlZCBmbGFnLlxuXG5UaGUgY29kZSBpdHNlbGYsIGFzIEkgdW5kZXJzdGFuZCBpdCwgcmVsaWVzIGhlYXZpbHkgb24gRGV2aWNlIFRyZWUgKERUKSBub2RlcyAoYGFpcm9oYSxlbjc1ODEtZXRoYCwgZXRjLikgYW5kIHRoZSBhc3NvY2lhdGVkIE1NSU8gcmVnaXN0ZXJzIChcImZlXCIsIFwicWRtYVwiLCBldGMuKS4gU3RhbmRhcmQgUUVNVSwgdGhlIHVzdWFsIHdvcmtob3JzZSBmb3IgZnV6emluZywgZG9lc24ndCBlbXVsYXRlIHRoaXMgQWlyb2hhIGhhcmR3YXJlLCBhbmQgbmVpdGhlciBkb2VzIEdDRS4gV2UncmUgdGFsa2luZyBhYm91dCBhIHBsYXRmb3JtIGRyaXZlciBoZXJlLCBpbnN0YW50aWF0ZWQgb25seSB2aWEgdGhlIERldmljZSBUcmVlIG9uIHRoZXNlIEFpcm9oYSBTb0NzLiBJdCBuZWVkcyB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIGNvbnRleHQgdG8gZXZlbiAqcHJvYmUqLiBObyBlbXVsYXRpb24sIG5vIGRldmljZSB0cmVlLCBubyBhY2Nlc3MuXG5cbkxldCdzIGNhcmVmdWxseSBleGFtaW5lIHRoZSBpbnN0cnVjdGlvbnMgYWdhaW4uIEFoLCB5ZXMsIHRoZXJlJ3MgdGhlIHJlbGV2YW50IGNsYXVzZSBhYm91dCBjb2RlIHBhdGhzIHRoYXQgYXJlIGluaGVyZW50bHkgdW5yZWFjaGFibGUgaW4gUUVNVS9HQ0UsIGV2ZW4gd2l0aCBzb2Z0d2FyZSBlbXVsYXRpb24uIFZlbmRvci1zcGVjaWZpYyBkcml2ZXJzLCBQQ0llLCBTbWFydE5JQ3MsIEdQVXPigJRhbGwgcmVxdWlyZSB0aGF0IHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgd2UgbGFjay4gKlRoaXMqIGRlZmluaXRlbHkgZmFsbHMgaW50byB0aGF0IGNhdGVnb3J5LiBUaGUgYGFpcm9oYV9ldGhgIGRyaXZlciBpcyBhICpwbGF0Zm9ybSogZHJpdmVyIHRoYXQgaXMgZW50aXJlbHkgZGVwZW5kZW50IG9uIHRoaXMgQWlyb2hhIFNvQy5cblxuTm93LCBjb3VsZCBzb21lb25lIHRyeSB0byBmb3JjZS1mZWVkIGl0IGEgZHVtbXkgcGxhdGZvcm0gZGV2aWNlPyBNYXliZSwgYnV0IGV2ZW4gaWYgdGhleSBkaWQsIHRoZSBkcml2ZXIncyByZWxpYW5jZSBvbiBzcGVjaWZpYyBEVCBub2RlcyBhbmQgYGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZV9ieW5hbWVgIHRvIGFjY2VzcyB0aG9zZSBoYXJkd2FyZSByZWdpc3RlcnMgd2lsbCB0cmlwIHRoZW0gdXAuIFRoZSBwcm9iZSB3aWxsIGZhaWwgaW1tZWRpYXRlbHkuIFVzZXJzcGFjZSBjYW4ndCBqdXN0IGNyZWF0ZSBhcmJpdHJhcnkgRGV2aWNlIFRyZWUgZW50cmllcywgc28gdGhhdCdzIGEgbm9uLXN0YXJ0ZXIuXG5cblNvLCBsZXQncyBiZSBtZXRob2RpY2FsOlxuXG4xLiAgRmlsZSBtb2RpZmljYXRpb24gaXMgY2xlYXI6IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jYCBhbmQgYC5oYC5cbjIuICBIYXJkd2FyZSBkZXBlbmRlbmNlIGlzIGFic29sdXRlOiBBaXJvaGEgU29DIEdpZ2FiaXQgRXRoZXJuZXQgY29udHJvbGxlciwgcGxhdGZvcm0gZGV2aWNlIChgYWlyb2hhLGVuNzU4MS1ldGhgLCBgYWlyb2hhLGFuNzU4My1ldGhgKS5cbjMuICBSZWFjaGFiaWxpdHkgaW4gUUVNVS9HQ0UgaXMgaW1wb3NzaWJsZS4gVGhpcyBoYXJkd2FyZSBzaW1wbHkgaXNuJ3QgdGhlcmUsIGFuZCB3aXRob3V0IGl0LCB0aGUgZHJpdmVyIHdvbid0IGV2ZW4gbG9hZC5cblxuVGhlIGNvbmNsdXNpb24gaXMgY2xlYXI6IGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBgZmFsc2VgLiBUaGlzIGlzbid0IGEgZnV6emFibGUgdGFyZ2V0IGluIG91ciBjdXJyZW50IHNldHVwLlxuXG5NeSByZWNvbW1lbmRhdGlvbj8gTGV0J3MgdmVyaWZ5IHRoZXNlIGRldGFpbHMgd2l0aCB0aGUgZm9sbG93aW5nOlxuKiAgIFdvcnRoRnV6emluZzogZmFsc2VcbiogICBGb2N1c1N5bWJvbHM6IFxcWyBdXG4qICAgRW5hYmxlQ29uZmlnczogXFxbIF1cblxuQW5kIHRoZSByZWFzb25pbmc/IFdlbGwsIGl0IHNob3VsZCBiZSBjb25jaXNlIGFuZCBpdCBpczogdGhpcyBwYXRjaCBtb2RpZmllcyB0aGUgQWlyb2hhIFNvQyBFdGhlcm5ldCBkcml2ZXIgKGBhaXJvaGFfZXRoYCksIHdoaWNoIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBBaXJvaGEgU29DcyAoc3VjaCBhcyBFTjc1ODEvQU43NTgzKS4gSXQgcmVxdWlyZXMgc3BlY2lmaWMgU29DIGhhcmR3YXJlL0RUIHJlc291cmNlcyBhbmQgY2Fubm90IGJlIHByb2JlZCBvciBleGVjdXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS5cblxuT2theSwgbGV0J3MgaW5mb3JtIGBzZXQtcmVzdWx0c2AgdG9vbCB3aXRoIHRoZXNlIGFyZ3VtZW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc0MjEsIk91dHB1dFRva2VucyI6MTI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODE4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMDg6NDM6MDUuNjIzMDYyOTYxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE4MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFpcm9oYSBTb0MgR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMpLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgQWlyb2hhIFNvQ3MgKGUuZy4sIEVONzU4MS9BTjc1ODMpLiBJdCByZXF1aXJlcyBwaHlzaWNhbCBTb0MgaGFyZHdhcmUgYW5kIGRldmljZSB0cmVlIHJlc291cmNlcyBub3QgYXZhaWxhYmxlIG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFpcm9oYSBTb0MgR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMpLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgQWlyb2hhIFNvQ3MgKGUuZy4sIEVONzU4MS9BTjc1ODMpLiBJdCByZXF1aXJlcyBwaHlzaWNhbCBTb0MgaGFyZHdhcmUgYW5kIGRldmljZSB0cmVlIHJlc291cmNlcyBub3QgYXZhaWxhYmxlIG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMDg6NDM6MDUuNjIzMDg3NzkxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowjwbdh[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-30 08:14:39 +0000 UTC FinishedAt: 2026-08-30 08:43:07 +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+CgkJCTx0ZD4yMDI2LzA4LzMwIDA4OjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTRtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7JiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBaXJvaGEgU29DIEdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jKSwgd2hpY2ggaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIHNwZWNpZmljIEFpcm9oYSBTb0NzIChlLmcuLCBFTjc1ODEvQU43NTgzKS4gSXQgcmVxdWlyZXMgcGh5c2ljYWwgU29DIGhhcmR3YXJlIGFuZCBkZXZpY2UgdHJlZSByZXNvdXJjZXMgbm90IGF2YWlsYWJsZSBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlc2UgY29kZSBwYXRocyB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMDg6Mjg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlOTZiZjliZGUzYzMxZDFkMzRmMTVkYzhlYjI4ZDQ4Y2FkNTY3ZTgyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMzAgMDg6Mjg6MjggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmNcbmluZGV4IDY0NjE5ZTlhNzA0ZGQuLmVmYjFkZDY5Y2MxNjUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jXG5AQCAtMywxMiAmIzQzOzMsMTQgQEBcbiAgKiBDb3B5cmlnaHQgKGMpIDIwMjQgQUlST0hBIEluY1xuICAqIEF1dGhvcjogTG9yZW56byBCaWFuY29uaSBcdTAwM2Nsb3JlbnpvQGtlcm5lbC5vcmdcdTAwM2VcbiAgKi9cbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgva3RpbWUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L29mLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9uZXQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L29mX3Jlc2VydmVkX21lbS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGxhdGZvcm1fZGV2aWNlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC90Y3AuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3U2NF9zdGF0c19zeW5jLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvd29ya3F1ZXVlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvZHN0X21ldGFkYXRhLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvcGFnZV9wb29sL2hlbHBlcnMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9wa3RfY2xzLmhcdTAwM2VcbkBAIC02NTcsNiAmIzQzOzY1OSw0NyBAQCBhaXJvaGFfcWRtYV9nZXRfZ2RtX2RldihzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoLCBzdHJ1Y3QgYWlyb2hhX3FkbWFfZGVzYyAqZGVzYylcbiBcdHJldHVybiBwb3J0LVx1MDAzZWRldnNbZF0gPyBwb3J0LVx1MDAzZWRldnNbZF0gOiBFUlJfUFRSKC1FTk9ERVYpO1xuIH1cbiBcbiYjNDM7LyogbnVtYmVyIG9mIGNvbnNlY3V0aXZlIHBvbGxzIHdoZXJlIGh3IGNvbXBsZXRpb24gKFJYX0RNQV9JRFgpIGFkdmFuY2VzXG4mIzQzOyAqIHdoaWxlIHRoZSBzdyBjb25zdW1lciAodGFpbCkgZG9lc24mIzM5O3QsIGJlZm9yZSBkZWNsYXJpbmcgdGhlIHJpbmcgc3R1Y2tcbiYjNDM7ICovXG4mIzQzOyNkZWZpbmUgQUlST0hBX1JYX1NUQUxMX1RIUkVTSE9MRFx0M1xuJiM0MztcbiYjNDM7LyogRGV0ZWN0IGFuIFJYIHJpbmcgd2hlcmUgaHcmIzM5O3Mgb3duIGNvbXBsZXRpb24gcG9pbnRlciAoUlhfRE1BX0lEWCkga2VlcHNcbiYjNDM7ICogbW92aW5nIHdoaWxlIHRoZSBzdyBjb25zdW1lciAocS1cdTAwM2V0YWlsKSBkb2VzbiYjMzk7dCAtIGkuZS4gaHcgaGFzIHdyaXR0ZW5cbiYjNDM7ICogZnVydGhlciBkZXNjcmlwdG9ycyBzb21ld2hlcmUgaW4gdGhlIHJpbmcsIGJ1dCB0aGUgc3RyaWN0bHkgc2VxdWVudGlhbFxuJiM0MzsgKiBjb25zdW1lciBjYW4gbmV2ZXIgcmVhY2ggdGhlbSBiZWNhdXNlIHRoZSBvbmUgYXQgcS1cdTAwM2VoZWFkLCB3aGljaCBpdCBpc1xuJiM0MzsgKiB3YWl0aW5nIG9uLCB3YXMgbmV2ZXIgbWFya2VkIERPTkUuIFRoaXMgaGFwcGVucyB3aGVuIGh3IHdyaXRlcyBhXG4mIzQzOyAqIGNvbXBsZXRlZCBkZXNjcmlwdG9yIHBhc3QgcS1cdTAwM2VoZWFkIGJlZm9yZSBhaXJvaGFfcWRtYV9maWxsX3J4X3F1ZXVlKClcbiYjNDM7ICogaGFzIHBvc3RlZCBhIGZyZXNoIGJ1ZmZlciB0aGVyZSwgZGVjb3VwbGVkIGZyb20gc3cmIzM5O3Mgb3duIHBvc3RpbmdcbiYjNDM7ICogYm9va2tlZXBpbmcuXG4mIzQzOyAqXG4mIzQzOyAqIERlbGliZXJhdGVseSBkb2VzIG5vdCBpbnNwZWN0IHJpbmcvZGVzY3JpcHRvciBtZW1vcnkgY29udGVudCB0byBkZXRlY3RcbiYjNDM7ICogdGhpczogYW4gZWFybGllciB2ZXJzaW9uIHNjYW5uZWQgYWhlYWQgZm9yIGEgRE9ORSBkZXNjcmlwdG9yIGFuZCB0cnVzdGVkXG4mIzQzOyAqIGl0cyBjb250ZW50LCB3aGljaCBjYXVzZWQgYSByZWFsIE9PTSBwYW5pYyBhZnRlciBpdCB3YW5kZXJlZCBpbnRvXG4mIzQzOyAqIGdlbnVpbmVseSB1bmluaXRpYWxpemVkIERNQSBtZW1vcnkgdGhhdCBjb2luY2lkZW50YWxseSBoYWQgdGhlIERPTkUgYml0XG4mIzQzOyAqIHNldC4gUlhfRE1BX0lEWCBpcyBhIGh3IHJlZ2lzdGVyIHdpdGggYSB3ZWxsLWRlZmluZWQgdmFsdWUgcmVnYXJkbGVzcyBvZlxuJiM0MzsgKiByaW5nIGNvbnRlbnQsIHNvIHRoaXMgY2FuJiMzOTt0IG1pc2ZpcmUgb24gZ2FyYmFnZSBtZW1vcnksIGFuZCBpZGxlIHJpbmdzXG4mIzQzOyAqIChubyBodyBwcm9ncmVzcyBlaXRoZXIpIGFyZSBuYXR1cmFsbHkgbGVmdCBhbG9uZS5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyB2b2lkIGFpcm9oYV9xZG1hX3J4X2NoZWNrX3N0YWxsKHN0cnVjdCBhaXJvaGFfcXVldWUgKnEpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWEgPSBxLVx1MDAzZXFkbWE7XG4mIzQzO1x0aW50IHFpZCA9IHEgLSBcdTAwMjZxZG1hLVx1MDAzZXFfcnhbMF07XG4mIzQzO1x0dTMyIGRtYV9pZHggPSBhaXJvaGFfcWRtYV9nZXQocWRtYSwgUkVHX1JYX0RNQV9JRFgocWlkKSxcbiYjNDM7XHRcdFx0XHQgICAgICBSWF9SSU5HX0RNQV9JRFhfTUFTSyk7XG4mIzQzO1xuJiM0MztcdGlmIChxLVx1MDAzZXN0YWxsX3RhaWwgPT0gcS1cdTAwM2V0YWlsIFx1MDAyNlx1MDAyNiBkbWFfaWR4ICE9IHEtXHUwMDNlc3RhbGxfZG1hX2lkeCkge1xuJiM0MztcdFx0aWYgKCYjNDM7JiM0MztxLVx1MDAzZXN0YWxsX2NvdW50IFx1MDAzZT0gQUlST0hBX1JYX1NUQUxMX1RIUkVTSE9MRCBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICAhdGVzdF9hbmRfc2V0X2JpdChxaWQsIHFkbWEtXHUwMDNlcnhfcmVjb3Zlcl9tYXNrKSlcbiYjNDM7XHRcdFx0c2NoZWR1bGVfd29yayhcdTAwMjZxZG1hLVx1MDAzZXJ4X3JlY292ZXJfd29yayk7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdHEtXHUwMDNlc3RhbGxfY291bnQgPSAwO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cS1cdTAwM2VzdGFsbF90YWlsID0gcS1cdTAwM2V0YWlsO1xuJiM0MztcdHEtXHUwMDNlc3RhbGxfZG1hX2lkeCA9IGRtYV9pZHg7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBhaXJvaGFfcWRtYV9yeF9wcm9jZXNzKHN0cnVjdCBhaXJvaGFfcXVldWUgKnEsIGludCBidWRnZXQpXG4ge1xuIFx0ZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyID0gcGFnZV9wb29sX2dldF9kbWFfZGlyKHEtXHUwMDNlcGFnZV9wb29sKTtcbkBAIC02NzUsOCAmIzQzOzcxOCwxMCBAQCBzdGF0aWMgaW50IGFpcm9oYV9xZG1hX3J4X3Byb2Nlc3Moc3RydWN0IGFpcm9oYV9xdWV1ZSAqcSwgaW50IGJ1ZGdldClcbiBcdFx0c3RydWN0IHBhZ2UgKnBhZ2U7XG4gXG4gXHRcdGRlc2NfY3RybCA9IGxlMzJfdG9fY3B1KFJFQURfT05DRShkZXNjLVx1MDAzZWN0cmwpKTtcbi1cdFx0aWYgKCEoZGVzY19jdHJsIFx1MDAyNiBRRE1BX0RFU0NfRE9ORV9NQVNLKSlcbiYjNDM7XHRcdGlmICghKGRlc2NfY3RybCBcdTAwMjYgUURNQV9ERVNDX0RPTkVfTUFTSykpIHtcbiYjNDM7XHRcdFx0YWlyb2hhX3FkbWFfcnhfY2hlY2tfc3RhbGwocSk7XG4gXHRcdFx0YnJlYWs7XG4mIzQzO1x0XHR9XG4gXG4gXHRcdGRtYV9ybWIoKTtcbiBcbkBAIC03ODQsMTMgJiM0Mzs4MjksMTUgQEAgc3RhdGljIGludCBhaXJvaGFfcWRtYV9yeF9uYXBpX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuIFx0XHRpbnQgaSwgcWlkID0gcSAtIFx1MDAyNnFkbWEtXHUwMDNlcV9yeFswXTtcbiBcdFx0aW50IGludHJfcmVnID0gcWlkIFx1MDAzYyBSWF9ET05FX0hJR0hfT0ZGU0VUID8gUURNQV9JTlRfUkVHX0lEWDFcbiBcdFx0XHRcdFx0XHRcdCA6IFFETUFfSU5UX1JFR19JRFgyO1xuJiM0MztcdFx0dTMyIGJpdCA9IHFpZCAlIFJYX0RPTkVfSElHSF9PRkZTRVQ7XG4gXG4gXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUocWRtYS1cdTAwM2VpcnFfYmFua3MpOyBpJiM0MzsmIzQzOykge1xuIFx0XHRcdGlmICghKEJJVChxaWQpIFx1MDAyNiBSWF9JUlFfQkFOS19QSU5fTUFTSyhpKSkpXG4gXHRcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0XHRhaXJvaGFfcWRtYV9pcnFfZW5hYmxlKFx1MDAyNnFkbWEtXHUwMDNlaXJxX2JhbmtzW2ldLCBpbnRyX3JlZyxcbi1cdFx0XHRcdFx0ICAgICAgIEJJVChxaWQgJSBSWF9ET05FX0hJR0hfT0ZGU0VUKSk7XG4mIzQzO1x0XHRcdFx0XHQgICAgICAgQklUKGJpdCkgfFxuJiM0MztcdFx0XHRcdFx0ICAgICAgIEJJVChiaXQgJiM0MzsgUlhfTk9fQ1BVX0RTQ1BfTE9XX09GRlNFVCkpO1xuIFx0XHR9XG4gXHR9XG4gXG5AQCAtODkyLDYgJiM0Mzs5MzksNzYgQEAgc3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfY2xlYW51cF9yeF9xdWV1ZShzdHJ1Y3QgYWlyb2hhX3F1ZXVlICpxKVxuIFx0XHRcdEZJRUxEX1BSRVAoUlhfUklOR19ETUFfSURYX01BU0ssIHEtXHUwMDNldGFpbCkpO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfcnhfcmVjb3Zlcl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYSA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgYWlyb2hhX3FkbWEsXG4mIzQzO1x0XHRcdFx0XHRcdCByeF9yZWNvdmVyX3dvcmspO1xuJiM0MztcdGludCBxaWQ7XG4mIzQzO1xuJiM0MztcdGZvcl9lYWNoX3NldF9iaXQocWlkLCBxZG1hLVx1MDAzZXJ4X3JlY292ZXJfbWFzaywgQUlST0hBX05VTV9SWF9SSU5HKSB7XG4mIzQzO1x0XHRzdHJ1Y3QgYWlyb2hhX3F1ZXVlICpxID0gXHUwMDI2cWRtYS1cdTAwM2VxX3J4W3FpZF07XG4mIzQzO1x0XHRrdGltZV90IHJ4X2RtYV9vZmZfdHM7XG4mIzQzO1x0XHRzNjQgcnhfZG1hX29mZl91cztcbiYjNDM7XHRcdHUzMiBzdGF0dXM7XG4mIzQzO1xuJiM0MztcdFx0aWYgKCFxLVx1MDAzZW5kZXNjKVxuJiM0MztcdFx0XHRnb3RvIG5leHQ7XG4mIzQzO1xuJiM0MztcdFx0bmFwaV9kaXNhYmxlKFx1MDAyNnEtXHUwMDNlbmFwaSk7XG4mIzQzO1xuJiM0MztcdFx0LyogR0xPQkFMX0NGR19SWF9ETUFfRU5fTUFTSyBpcyBwZXItUURNQSwgbm90IHBlci1yaW5nLCBzb1xuJiM0MztcdFx0ICogdGhpcyBwYXVzZXMgZXZlcnkgUlggcmluZyBvbiB0aGlzIFFETUEgaW5zdGFuY2UsIG5vdCBqdXN0XG4mIzQzO1x0XHQgKiB0aGUgc3RhbGxlZCBvbmUgLSB0cmFjayBob3cgbG9uZyBmb3IsIHNpbmNlIHRoYXQmIzM5O3MgdGhlXG4mIzQzO1x0XHQgKiByZWFsLXdvcmxkIGNvc3Qgb2YgcmVjb3Zlcnkgb24gdW5yZWxhdGVkIHJpbmdzLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRyeF9kbWFfb2ZmX3RzID0ga3RpbWVfZ2V0KCk7XG4mIzQzO1xuJiM0MztcdFx0YWlyb2hhX3FkbWFfY2xlYXIocWRtYSwgUkVHX1FETUFfR0xPQkFMX0NGRyxcbiYjNDM7XHRcdFx0XHQgIEdMT0JBTF9DRkdfUlhfRE1BX0VOX01BU0spO1xuJiM0MztcdFx0aWYgKHJlYWRfcG9sbF90aW1lb3V0KGFpcm9oYV9xZG1hX3JyLCBzdGF0dXMsXG4mIzQzO1x0XHRcdFx0ICAgICAgIShzdGF0dXMgXHUwMDI2IEdMT0JBTF9DRkdfUlhfRE1BX0JVU1lfTUFTSyksXG4mIzQzO1x0XHRcdFx0ICAgICAgVVNFQ19QRVJfTVNFQywgNTAgKiBVU0VDX1BFUl9NU0VDLCB0cnVlLFxuJiM0MztcdFx0XHRcdCAgICAgIHFkbWEsIFJFR19RRE1BX0dMT0JBTF9DRkcpKVxuJiM0MztcdFx0XHRkZXZfd2FybihxZG1hLVx1MDAzZWV0aC1cdTAwM2VkZXYsXG4mIzQzO1x0XHRcdFx0IFwmIzM0O3FpZD0lZCBSWCBETUEgYnVzeSB0aW1lb3V0IGR1cmluZyByZWNvdmVyeVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHQgcWlkKTtcbiYjNDM7XG4mIzQzO1x0XHQvKiBEcm9wIHdoYXRldmVyIGlzIGN1cnJlbnRseSBpbiBmbGlnaHQgb24gdGhpcyByaW5nIGFuZFxuJiM0MztcdFx0ICogcmUtYXJtIGl0IGZyb20gYSBrbm93bi1jbGVhbiBzdGF0ZS4gY2xlYW51cF9yeF9xdWV1ZSgpXG4mIzQzO1x0XHQgKiBvbmx5IGV2ZXIgdG91Y2hlcyB0aGUgc3ctb3duZWQgW3RhaWwsIGhlYWQpIHdpbmRvdyBhbmRcbiYjNDM7XHRcdCAqIHJlc3luY3MgYm90aCBSWF9DUFVfSURYIGFuZCBSWF9ETUFfSURYIHRvIGl0LCB3aGljaCBpc1xuJiM0MztcdFx0ICogd2hhdCB1bi13ZWRnZXMgYSByaW5nIHdoZXJlIGh3IHdyb3RlIHBhc3QgdGhlIHN3IGhlYWRcbiYjNDM7XHRcdCAqIHdpdGhvdXQgdGhlIGNvbnN1bWVyIGV2ZXIgYWR2YW5jaW5nIC0gbm8gbmVlZCB0byBmaWd1cmVcbiYjNDM7XHRcdCAqIG91dCB3aGljaCBkZXNjcmlwdG9yIGh3IGFjdHVhbGx5IHVzZWQuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGFpcm9oYV9xZG1hX2NsZWFudXBfcnhfcXVldWUocSk7XG4mIzQzO1x0XHRpZiAocS1cdTAwM2Vza2IpIHtcbiYjNDM7XHRcdFx0LyogZGlzY2FyZCB3aGF0ZXZlciBzY2F0dGVyLWdhdGhlciBmcmFtZSB3YXNcbiYjNDM7XHRcdFx0ICogbWlkLWFzc2VtYmx5IHdoZW4gdGhlIHN0YWxsIHdhcyBoaXQsIGNsZWFudXBfcnhfcXVldWUoKVxuJiM0MztcdFx0XHQgKiBhYm92ZSBvbmx5IHJlc3luY3MgdGhlIHJpbmcsIG5vdCB0aGlzXG4mIzQzO1x0XHRcdCAqL1xuJiM0MztcdFx0XHRkZXZfa2ZyZWVfc2tiKHEtXHUwMDNlc2tiKTtcbiYjNDM7XHRcdFx0cS1cdTAwM2Vza2IgPSBOVUxMO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0YWlyb2hhX3FkbWFfZmlsbF9yeF9xdWV1ZShxKTtcbiYjNDM7XG4mIzQzO1x0XHRhaXJvaGFfcWRtYV9zZXQocWRtYSwgUkVHX1FETUFfR0xPQkFMX0NGRyxcbiYjNDM7XHRcdFx0XHRHTE9CQUxfQ0ZHX1JYX0RNQV9FTl9NQVNLKTtcbiYjNDM7XHRcdHJ4X2RtYV9vZmZfdXMgPSBrdGltZV91c19kZWx0YShrdGltZV9nZXQoKSwgcnhfZG1hX29mZl90cyk7XG4mIzQzO1xuJiM0MztcdFx0cS1cdTAwM2VzdGFsbF9jb3VudCA9IDA7XG4mIzQzO1x0XHRuYXBpX2VuYWJsZShcdTAwMjZxLVx1MDAzZW5hcGkpO1xuJiM0MztcdFx0bmFwaV9zY2hlZHVsZShcdTAwMjZxLVx1MDAzZW5hcGkpO1xuJiM0MztcbiYjNDM7XHRcdHFkbWEtXHUwMDNlcnhfcmVjb3Zlcl9jb3VudCYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRkZXZfd2Fybl9yYXRlbGltaXRlZChxZG1hLVx1MDAzZWV0aC1cdTAwM2VkZXYsXG4mIzQzO1x0XHRcdFx0ICAgICBcJiMzNDtxaWQ9JWQgUlggcmluZyByZWNvdmVyZWQgYWZ0ZXIgaHcgc3RhbGwgKFJYIERNQSBwYXVzZWQgZm9yICVsbGQgdXMgb24gdGhpcyBRRE1BIGluc3RhbmNlKVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHQgICAgIHFpZCwgcnhfZG1hX29mZl91cyk7XG4mIzQzO25leHQ6XG4mIzQzO1x0XHRjbGVhcl9iaXQocWlkLCBxZG1hLVx1MDAzZXJ4X3JlY292ZXJfbWFzayk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgYWlyb2hhX3FkbWFfaW5pdF9yeChzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWEpXG4ge1xuIFx0aW50IGk7XG5AQCAtMTQ2OCwxNiAmIzQzOzE1ODUsMzIgQEAgc3RhdGljIGlycXJldHVybl90IGFpcm9oYV9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkZXZfaW5zdGFuY2UpXG4gXHRpZiAoIXRlc3RfYml0KERFVl9TVEFURV9JTklUSUFMSVpFRCwgXHUwMDI2cWRtYS1cdTAwM2VldGgtXHUwMDNlc3RhdGUpKVxuIFx0XHRyZXR1cm4gSVJRX05PTkU7XG4gXG4tXHRyeF9pbnRyMSA9IGludHJbMV0gXHUwMDI2IFJYX0RPTkVfTE9XX0lOVF9NQVNLO1xuJiM0MztcdC8qIEEgcmluZyBjYW4gYWxzbyByYWlzZSBOT19DUFVfRFNDUCB3aGVuIGl0IHJ1bnMgb3V0IG9mIGZyZWUgUlhcbiYjNDM7XHQgKiBkZXNjcmlwdG9ycyAoZS5nLiBhIGJ1cnN0IG9mIFZJUC1jbGFzc2lmaWVkIGNvbnRyb2wgdHJhZmZpY1xuJiM0MztcdCAqIGZvcmNlZCBvbnRvIGEgc21hbGwgcmluZykuIE9uY2UgYSByaW5nIGlzIGZ1bGx5IGRyYWluZWQgbm8gbW9yZVxuJiM0MztcdCAqIFJYX0RPTkUgaW50ZXJydXB0cyBjYW4gZmlyZSBmb3IgaXQsIHNpbmNlIHRoZXJlIGFyZSBubyBmcmVlXG4mIzQzO1x0ICogZGVzY3JpcHRvcnMgbGVmdCBmb3IgaGFyZHdhcmUgdG8gcmVjZWl2ZSBpbnRvLCBzbyB3aXRob3V0IHRoaXNcbiYjNDM7XHQgKiBOQVBJIGlzIG5ldmVyIHJlc2NoZWR1bGVkIGFuZCB0aGUgcmluZyBuZXZlciBnZXRzIHJlZmlsbGVkIGFnYWluLlxuJiM0MztcdCAqIFRyZWF0IE5PX0NQVV9EU0NQIHRoZSBzYW1lIGFzIFJYX0RPTkUgZm9yIHNjaGVkdWxpbmcgTkFQSTpcbiYjNDM7XHQgKiBhaXJvaGFfcWRtYV9yeF9wcm9jZXNzKCkgdW5jb25kaXRpb25hbGx5IGNhbGxzXG4mIzQzO1x0ICogYWlyb2hhX3FkbWFfZmlsbF9yeF9xdWV1ZSgpIGF0IHRoZSBlbmQgb2YgZXZlcnkgcG9sbCwgZXZlbiB3aGVuXG4mIzQzO1x0ICogemVybyBkZXNjcmlwdG9ycyB3ZXJlIHJlYXBlZCwgc28gdGhpcyBhbG9uZSBpcyBlbm91Z2ggdG8gcmVjb3ZlclxuJiM0MztcdCAqIHRoZSByaW5nLlxuJiM0MztcdCAqL1xuJiM0MztcdHJ4X2ludHIxID0gaW50clsxXSBcdTAwMjYgKFJYX0RPTkVfTE9XX0lOVF9NQVNLIHwgUlhfTk9fQ1BVX0RTQ1BfTE9XX0lOVF9NQVNLKTtcbiBcdGlmIChyeF9pbnRyMSkge1xuIFx0XHRhaXJvaGFfcWRtYV9pcnFfZGlzYWJsZShpcnFfYmFuaywgUURNQV9JTlRfUkVHX0lEWDEsIHJ4X2ludHIxKTtcbi1cdFx0cnhfaW50cl9tYXNrIHw9IHJ4X2ludHIxO1xuJiM0MztcdFx0cnhfaW50cl9tYXNrIHw9IChyeF9pbnRyMSBcdTAwMjYgUlhfRE9ORV9MT1dfSU5UX01BU0spIHxcbiYjNDM7XHRcdFx0XHQoKHJ4X2ludHIxIFx1MDAyNiBSWF9OT19DUFVfRFNDUF9MT1dfSU5UX01BU0spIFx1MDAzZVx1MDAzZVxuJiM0MztcdFx0XHRcdCBSWF9OT19DUFVfRFNDUF9MT1dfT0ZGU0VUKTtcbiBcdH1cbiBcbi1cdHJ4X2ludHIyID0gaW50clsyXSBcdTAwMjYgUlhfRE9ORV9ISUdIX0lOVF9NQVNLO1xuJiM0MztcdHJ4X2ludHIyID0gaW50clsyXSBcdTAwMjYgKFJYX0RPTkVfSElHSF9JTlRfTUFTSyB8IFJYX05PX0NQVV9EU0NQX0hJR0hfSU5UX01BU0spO1xuIFx0aWYgKHJ4X2ludHIyKSB7XG4gXHRcdGFpcm9oYV9xZG1hX2lycV9kaXNhYmxlKGlycV9iYW5rLCBRRE1BX0lOVF9SRUdfSURYMiwgcnhfaW50cjIpO1xuLVx0XHRyeF9pbnRyX21hc2sgfD0gKHJ4X2ludHIyIFx1MDAzY1x1MDAzYyAxNik7XG4mIzQzO1x0XHRyeF9pbnRyX21hc2sgfD0gKChyeF9pbnRyMiBcdTAwMjYgUlhfRE9ORV9ISUdIX0lOVF9NQVNLKSB8XG4mIzQzO1x0XHRcdFx0ICgocnhfaW50cjIgXHUwMDI2IFJYX05PX0NQVV9EU0NQX0hJR0hfSU5UX01BU0spIFx1MDAzZVx1MDAzZVxuJiM0MztcdFx0XHRcdCAgUlhfTk9fQ1BVX0RTQ1BfTE9XX09GRlNFVCkpIFx1MDAzY1x1MDAzYyAxNjtcbiBcdH1cbiBcbiBcdGZvciAoaSA9IDA7IHJ4X2ludHJfbWFzayBcdTAwMjZcdTAwMjYgaSBcdTAwM2MgQVJSQVlfU0laRShxZG1hLVx1MDAzZXFfcngpOyBpJiM0MzsmIzQzOykge1xuQEAgLTE1NzYsNiAmIzQzOzE3MDksOCBAQCBzdGF0aWMgdm9pZCBhaXJvaGFfcWRtYV9jbGVhbnVwKHN0cnVjdCBhaXJvaGFfZXRoICpldGgsXG4ge1xuIFx0aW50IGk7XG4gXG4mIzQzO1x0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZxZG1hLVx1MDAzZXJ4X3JlY292ZXJfd29yayk7XG4mIzQzO1xuIFx0aWYgKHRlc3RfYml0KERFVl9TVEFURV9JTklUSUFMSVpFRCwgXHUwMDI2ZXRoLVx1MDAzZXN0YXRlKSkge1xuIFx0XHR1MzIgc3RhdHVzO1xuIFxuQEAgLTE2MzMsNiAmIzQzOzE3NjgsMTUgQEAgc3RhdGljIGludCBhaXJvaGFfaHdfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuIFx0aWYgKGVycilcbiBcdFx0cmV0dXJuIGVycjtcbiBcbiYjNDM7XHQvKiBJTklUX1dPUksoKSBldmVyeSBpbnN0YW5jZSB1cCBmcm9udCwgYmVmb3JlIGFueSBvZiB0aGVtIGNhbiBmYWlsXG4mIzQzO1x0ICogaW5pdCBhbmQganVtcCB0byB0aGUgZXJyb3IgcGF0aCBiZWxvdywgc2luY2UgdGhhdCBwYXRoIHRlYXJzIGRvd25cbiYjNDM7XHQgKiBldmVyeSBldGgtXHUwMDNlcWRtYVtdIHNsb3QgdW5jb25kaXRpb25hbGx5LCBpbmNsdWRpbmcgb25lcyB0aGlzIGxvb3BcbiYjNDM7XHQgKiBuZXZlciByZWFjaGVkLlxuJiM0MztcdCAqL1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoZXRoLVx1MDAzZXFkbWEpOyBpJiM0MzsmIzQzOylcbiYjNDM7XHRcdElOSVRfV09SSyhcdTAwMjZldGgtXHUwMDNlcWRtYVtpXS5yeF9yZWNvdmVyX3dvcmssXG4mIzQzO1x0XHRcdCAgYWlyb2hhX3FkbWFfcnhfcmVjb3Zlcl93b3JrKTtcbiYjNDM7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGV0aC1cdTAwM2VxZG1hKTsgaSYjNDM7JiM0MzspIHtcbiBcdFx0ZXJyID0gYWlyb2hhX3FkbWFfaW5pdChwZGV2LCBldGgsIFx1MDAyNmV0aC1cdTAwM2VxZG1hW2ldKTtcbiBcdFx0aWYgKGVycilcbkBAIC0xNjgxLDYgJiM0MzsxODI1LDE0IEBAIHN0YXRpYyB2b2lkIGFpcm9oYV9xZG1hX3N0b3BfbmFwaShzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWEpXG4ge1xuIFx0aW50IGk7XG4gXG4mIzQzO1x0LyogTWFrZSBzdXJlIHJ4X3JlY292ZXJfd29yayBpcyBuZWl0aGVyIHJ1bm5pbmcgbm9yIGFibGUgdG8gcmUtYXJtXG4mIzQzO1x0ICogYmVmb3JlIGFueSBuYXBpX2Rpc2FibGUoKSBiZWxvdzogaXQgYWxzbyBjYWxscyBuYXBpX2Rpc2FibGUoKS9cbiYjNDM7XHQgKiBuYXBpX2VuYWJsZSgpIG9uIHFfcnhbXS5uYXBpLCBhbmQgbmFwaV9kaXNhYmxlKCkgb24gYW5cbiYjNDM7XHQgKiBhbHJlYWR5LWRpc2FibGVkIE5BUEkgc3BpbnMgaW4gbmFwaV9kaXNhYmxlX2xvY2tlZCgpIGZvcmV2ZXIsXG4mIzQzO1x0ICogc2luY2Ugb25seSBuYXBpX2VuYWJsZSgpIGNsZWFycyB0aGUgc3RhdGUgaXQgd2FpdHMgb24uXG4mIzQzO1x0ICovXG4mIzQzO1x0ZGlzYWJsZV93b3JrX3N5bmMoXHUwMDI2cWRtYS1cdTAwM2VyeF9yZWNvdmVyX3dvcmspO1xuJiM0MztcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUocWRtYS1cdTAwM2VxX3R4X2lycSk7IGkmIzQzOyYjNDM7KVxuIFx0XHRuYXBpX2Rpc2FibGUoXHUwMDI2cWRtYS1cdTAwM2VxX3R4X2lycVtpXS5uYXBpKTtcbiBcbkBAIC0yNDQ5LDYgJiM0MzsyNjAxLDQ2IEBAIHN0YXRpYyB2b2lkIGFpcm9oYV9ldGh0b29sX2dldF9kcnZpbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4gXHRzdHJzY3B5KGluZm8tXHUwMDNlYnVzX2luZm8sIGRldl9uYW1lKGV0aC1cdTAwM2VkZXYpLCBzaXplb2YoaW5mby1cdTAwM2VidXNfaW5mbykpO1xuIH1cbiBcbiYjNDM7c3RhdGljIGNvbnN0IGNoYXIgYWlyb2hhX2V0aHRvb2xfc3RhdHNfc3RyW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcbiYjNDM7XHRcJiMzNDtyeF9zdGFsbF9yZWNvdmVyXCYjMzQ7LFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgYWlyb2hhX2V0aHRvb2xfZ2V0X3N0cmluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdTMyIHNzZXQsXG4mIzQzO1x0XHRcdFx0ICAgICAgIHU4ICpkYXRhKVxuJiM0Mzt7XG4mIzQzO1x0aW50IGk7XG4mIzQzO1xuJiM0MztcdGlmIChzc2V0ICE9IEVUSF9TU19TVEFUUylcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShhaXJvaGFfZXRodG9vbF9zdGF0c19zdHIpOyBpJiM0MzsmIzQzOylcbiYjNDM7XHRcdGV0aHRvb2xfcHV0cyhcdTAwMjZkYXRhLCBhaXJvaGFfZXRodG9vbF9zdGF0c19zdHJbaV0pO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IGFpcm9oYV9ldGh0b29sX2dldF9zc2V0X2NvdW50KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBzc2V0KVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIHNzZXQgPT0gRVRIX1NTX1NUQVRTID9cbiYjNDM7XHQgICAgICAgQVJSQVlfU0laRShhaXJvaGFfZXRodG9vbF9zdGF0c19zdHIpIDogLUVPUE5PVFNVUFA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIGFpcm9oYV9ldGh0b29sX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4mIzQzO1x0XHRcdFx0XHQgICAgIHN0cnVjdCBldGh0b29sX3N0YXRzICpzdGF0cyxcbiYjNDM7XHRcdFx0XHRcdCAgICAgdTY0ICpkYXRhKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGFpcm9oYV9nZG1fZGV2ICpkZXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuJiM0MztcdHN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYTtcbiYjNDM7XG4mIzQzO1x0cmN1X3JlYWRfbG9jaygpO1xuJiM0MztcdHFkbWEgPSByY3VfZGVyZWZlcmVuY2UoZGV2LVx1MDAzZXFkbWEpO1xuJiM0MztcdC8qIGFnZ3JlZ2F0ZSByZWNvdmVyeSBjb3VudCBmb3IgdGhlIHdob2xlIHFkbWEgaW5zdGFuY2U6IHRoZVxuJiM0MztcdCAqIHN0YWxsZWQgcmluZyBjYW4gY2FycnkgdHJhZmZpYyBmb3IgbW9yZSB0aGFuIG9uZSBuZXRkZXYgKFZJUFxuJiM0MztcdCAqIGNsYXNzaWZpY2F0aW9uIHNoYXJlcyByaW5nIDQgYWNyb3NzIHNldmVyYWwgcHJvdG9jb2xzL3BvcnRzKSxcbiYjNDM7XHQgKiBzbyB0aGVyZSYjMzk7cyBubyBzaW5nbGUgbmV0ZGV2IHRvIGF0dHJpYnV0ZSBhbiBpbmRpdmlkdWFsIGV2ZW50IHRvXG4mIzQzO1x0ICovXG4mIzQzO1x0ZGF0YVswXSA9IHFkbWEgPyBxZG1hLVx1MDAzZXJ4X3JlY292ZXJfY291bnQgOiAwO1xuJiM0MztcdHJjdV9yZWFkX3VubG9jaygpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB2b2lkIGFpcm9oYV9ldGh0b29sX2dldF9tYWNfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbiBcdFx0XHRcdFx0IHN0cnVjdCBldGh0b29sX2V0aF9tYWNfc3RhdHMgKnN0YXRzKVxuIHtcbkBAIC0zMzUxLDYgJiM0MzszNTQzLDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBhaXJvaGFfbmV0ZGV2X29wcyA9IHtcbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGFpcm9oYV9ldGh0b29sX29wcyA9IHtcbiBcdC5nZXRfZHJ2aW5mb1x0XHQ9IGFpcm9oYV9ldGh0b29sX2dldF9kcnZpbmZvLFxuJiM0MztcdC5nZXRfc3RyaW5nc1x0XHQ9IGFpcm9oYV9ldGh0b29sX2dldF9zdHJpbmdzLFxuJiM0MztcdC5nZXRfc3NldF9jb3VudFx0XHQ9IGFpcm9oYV9ldGh0b29sX2dldF9zc2V0X2NvdW50LFxuJiM0MztcdC5nZXRfZXRodG9vbF9zdGF0c1x0PSBhaXJvaGFfZXRodG9vbF9nZXRfZXRodG9vbF9zdGF0cyxcbiBcdC5nZXRfZXRoX21hY19zdGF0cyAgICAgID0gYWlyb2hhX2V0aHRvb2xfZ2V0X21hY19zdGF0cyxcbiBcdC5nZXRfcm1vbl9zdGF0c1x0XHQ9IGFpcm9oYV9ldGh0b29sX2dldF9ybW9uX3N0YXRzLFxuIFx0LmdldF9saW5rX2tzZXR0aW5nc1x0PSBwaHlfZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3MsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmhcbmluZGV4IGZhOWE4ZWRjZTIyZmYuLmNkNzVjMTZkOGQwYzcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oXG5AQCAtNDEsNiAmIzQzOzQxLDcgQEBcbiAjZGVmaW5lIFRYX0RTQ1BfTlVNXHRcdFx0MTAyNFxuICNkZWZpbmUgUlhfRFNDUF9OVU0oX24pXHRcdFx0XFxcbiBcdCgoX24pID09ICAyID8gMTI4IDpcdFx0XFxcbiYjNDM7XHQgKF9uKSA9PSAgNCA/IDEyOCA6XHRcdFxcXG4gXHQgKF9uKSA9PSAxMSA/IDEyOCA6XHRcdFxcXG4gXHQgKF9uKSA9PSAxNSA/IDEyOCA6XHRcdFxcXG4gXHQgKF9uKSA9PSAgMCA/IDEwMjQgOiAxNilcbkBAIC0yMDcsNiAmIzQzOzIwOCwxNSBAQCBzdHJ1Y3QgYWlyb2hhX3F1ZXVlIHtcbiBcdGJvb2wgdHhxX3N0b3BwZWQ7XG4gXHRib29sIGZsdXNoaW5nO1xuIFxuJiM0MztcdC8qIFJYIGh3IHN0YWxsIGRldGVjdGlvbjogbGFzdCBSRUdfUlhfRE1BX0lEWC90YWlsIHNuYXBzaG90IHRha2VuXG4mIzQzO1x0ICogd2hlbmV2ZXIgdGhlIGhlYWQtb2YtbGluZSBkZXNjcmlwdG9yIGlzbiYjMzk7dCBET05FLCBhbmQgaG93IG1hbnlcbiYjNDM7XHQgKiBjb25zZWN1dGl2ZSB0aW1lcyBodyBtYWRlIHByb2dyZXNzIChETUFfSURYIG1vdmVkKSB3aGlsZSB0aGVcbiYjNDM7XHQgKiBjb25zdW1lciAodGFpbCkgZGlkbiYjMzk7dC4gU2VlIGFpcm9oYV9xZG1hX3J4X2NoZWNrX3N0YWxsKCkuXG4mIzQzO1x0ICovXG4mIzQzO1x0dTMyIHN0YWxsX2RtYV9pZHg7XG4mIzQzO1x0dTE2IHN0YWxsX3RhaWw7XG4mIzQzO1x0dTggc3RhbGxfY291bnQ7XG4mIzQzO1xuIFx0c3RydWN0IG5hcGlfc3RydWN0IG5hcGk7XG4gXHRzdHJ1Y3QgcGFnZV9wb29sICpwYWdlX3Bvb2w7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuQEAgLTU2Nyw2ICYjNDM7NTc3LDE4IEBAIHN0cnVjdCBhaXJvaGFfcWRtYSB7XG4gXHRzdHJ1Y3QgYWlyb2hhX3F1ZXVlIHFfdHhbQUlST0hBX05VTV9UWF9SSU5HXTtcbiBcdHN0cnVjdCBhaXJvaGFfcXVldWUgcV9yeFtBSVJPSEFfTlVNX1JYX1JJTkddO1xuIFxuJiM0MztcdC8qIHJlY292ZXJ5IGZvciBSWCByaW5ncyB3aG9zZSBodyBjb21wbGV0aW9uIHBvaW50ZXIgKFJYX0RNQV9JRFgpXG4mIzQzO1x0ICoga2VlcHMgbW92aW5nIHdoaWxlIHRoZSBzdyBjb25zdW1lciBpcyBzdHVjazsgc2VlXG4mIzQzO1x0ICogYWlyb2hhX3FkbWFfcnhfY2hlY2tfc3RhbGwoKSBhbmQgYWlyb2hhX3FkbWFfcnhfcmVjb3Zlcl93b3JrKCkuXG4mIzQzO1x0ICovXG4mIzQzO1x0c3RydWN0IHdvcmtfc3RydWN0IHJ4X3JlY292ZXJfd29yaztcbiYjNDM7XHRERUNMQVJFX0JJVE1BUChyeF9yZWNvdmVyX21hc2ssIEFJUk9IQV9OVU1fUlhfUklORyk7XG4mIzQzO1x0LyogY291bnQgb2YgY29tcGxldGVkIGh3LXN0YWxsIHJlY292ZXJpZXMsIGV4cG9zZWQgdmlhIGV0aHRvb2wgLVNcbiYjNDM7XHQgKiBzbyBhIHJlY292ZXJ5IGV2ZW50IChhbmQgdGhlIHBhY2tldHMgaXQgZHJvcHMpIGlzIG9ic2VydmFibGVcbiYjNDM7XHQgKiB3aXRob3V0IGdyZXBwaW5nIGRtZXNnIGZvciB0aGUgZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoKSBhYm92ZVxuJiM0MztcdCAqL1xuJiM0MztcdHUzMiByeF9yZWNvdmVyX2NvdW50O1xuJiM0MztcbiBcdERFQ0xBUkVfQklUTUFQKHFvc19jaGFubmVsX21hcCwgQUlST0hBX05VTV9RT1NfQ0hBTk5FTFMpO1xuIH07XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMDg6Mjg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTRtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBaXJvaGEgU29DIEdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jKSwgd2hpY2ggaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIHNwZWNpZmljIEFpcm9oYSBTb0NzIChlLmcuLCBFTjc1ODEvQU43NTgzKS4gSXQgcmVxdWlyZXMgcGh5c2ljYWwgU29DIGhhcmR3YXJlIGFuZCBkZXZpY2UgdHJlZSByZXNvdXJjZXMgbm90IGF2YWlsYWJsZSBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlc2UgY29kZSBwYXRocyB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlOTZiZjliZGUzYzMxZDFkMzRmMTVkYzhlYjI4ZDQ4Y2FkNTY3ZTgyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMzAgMDg6Mjg6MjggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYwppbmRleCA2NDYxOWU5YTcwNGRkLi5lZmIxZGQ2OWNjMTY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMKQEAgLTMsMTIgJiM0MzszLDE0IEBACiAgKiBDb3B5cmlnaHQgKGMpIDIwMjQgQUlST0hBIEluYwogICogQXV0aG9yOiBMb3JlbnpvIEJpYW5jb25pICZsdDtsb3JlbnpvQGtlcm5lbC5vcmcmZ3Q7CiAgKi8KJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgva3RpbWUuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9vZi5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L29mX25ldC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L29mX3Jlc2VydmVkX21lbS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BsYXRmb3JtX2RldmljZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3RjcC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3U2NF9zdGF0c19zeW5jLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3dvcmtxdWV1ZS5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9kc3RfbWV0YWRhdGEuaCZndDsKICNpbmNsdWRlICZsdDtuZXQvcGFnZV9wb29sL2hlbHBlcnMuaCZndDsKICNpbmNsdWRlICZsdDtuZXQvcGt0X2Nscy5oJmd0OwpAQCAtNjU3LDYgJiM0Mzs2NTksNDcgQEAgYWlyb2hhX3FkbWFfZ2V0X2dkbV9kZXYoc3RydWN0IGFpcm9oYV9ldGggKmV0aCwgc3RydWN0IGFpcm9oYV9xZG1hX2Rlc2MgKmRlc2MpCiAJcmV0dXJuIHBvcnQtJmd0O2RldnNbZF0gPyBwb3J0LSZndDtkZXZzW2RdIDogRVJSX1BUUigtRU5PREVWKTsKIH0KIAomIzQzOy8qIG51bWJlciBvZiBjb25zZWN1dGl2ZSBwb2xscyB3aGVyZSBodyBjb21wbGV0aW9uIChSWF9ETUFfSURYKSBhZHZhbmNlcwomIzQzOyAqIHdoaWxlIHRoZSBzdyBjb25zdW1lciAodGFpbCkgZG9lc24mIzM5O3QsIGJlZm9yZSBkZWNsYXJpbmcgdGhlIHJpbmcgc3R1Y2sKJiM0MzsgKi8KJiM0MzsjZGVmaW5lIEFJUk9IQV9SWF9TVEFMTF9USFJFU0hPTEQJMwomIzQzOwomIzQzOy8qIERldGVjdCBhbiBSWCByaW5nIHdoZXJlIGh3JiMzOTtzIG93biBjb21wbGV0aW9uIHBvaW50ZXIgKFJYX0RNQV9JRFgpIGtlZXBzCiYjNDM7ICogbW92aW5nIHdoaWxlIHRoZSBzdyBjb25zdW1lciAocS0mZ3Q7dGFpbCkgZG9lc24mIzM5O3QgLSBpLmUuIGh3IGhhcyB3cml0dGVuCiYjNDM7ICogZnVydGhlciBkZXNjcmlwdG9ycyBzb21ld2hlcmUgaW4gdGhlIHJpbmcsIGJ1dCB0aGUgc3RyaWN0bHkgc2VxdWVudGlhbAomIzQzOyAqIGNvbnN1bWVyIGNhbiBuZXZlciByZWFjaCB0aGVtIGJlY2F1c2UgdGhlIG9uZSBhdCBxLSZndDtoZWFkLCB3aGljaCBpdCBpcwomIzQzOyAqIHdhaXRpbmcgb24sIHdhcyBuZXZlciBtYXJrZWQgRE9ORS4gVGhpcyBoYXBwZW5zIHdoZW4gaHcgd3JpdGVzIGEKJiM0MzsgKiBjb21wbGV0ZWQgZGVzY3JpcHRvciBwYXN0IHEtJmd0O2hlYWQgYmVmb3JlIGFpcm9oYV9xZG1hX2ZpbGxfcnhfcXVldWUoKQomIzQzOyAqIGhhcyBwb3N0ZWQgYSBmcmVzaCBidWZmZXIgdGhlcmUsIGRlY291cGxlZCBmcm9tIHN3JiMzOTtzIG93biBwb3N0aW5nCiYjNDM7ICogYm9va2tlZXBpbmcuCiYjNDM7ICoKJiM0MzsgKiBEZWxpYmVyYXRlbHkgZG9lcyBub3QgaW5zcGVjdCByaW5nL2Rlc2NyaXB0b3IgbWVtb3J5IGNvbnRlbnQgdG8gZGV0ZWN0CiYjNDM7ICogdGhpczogYW4gZWFybGllciB2ZXJzaW9uIHNjYW5uZWQgYWhlYWQgZm9yIGEgRE9ORSBkZXNjcmlwdG9yIGFuZCB0cnVzdGVkCiYjNDM7ICogaXRzIGNvbnRlbnQsIHdoaWNoIGNhdXNlZCBhIHJlYWwgT09NIHBhbmljIGFmdGVyIGl0IHdhbmRlcmVkIGludG8KJiM0MzsgKiBnZW51aW5lbHkgdW5pbml0aWFsaXplZCBETUEgbWVtb3J5IHRoYXQgY29pbmNpZGVudGFsbHkgaGFkIHRoZSBET05FIGJpdAomIzQzOyAqIHNldC4gUlhfRE1BX0lEWCBpcyBhIGh3IHJlZ2lzdGVyIHdpdGggYSB3ZWxsLWRlZmluZWQgdmFsdWUgcmVnYXJkbGVzcyBvZgomIzQzOyAqIHJpbmcgY29udGVudCwgc28gdGhpcyBjYW4mIzM5O3QgbWlzZmlyZSBvbiBnYXJiYWdlIG1lbW9yeSwgYW5kIGlkbGUgcmluZ3MKJiM0MzsgKiAobm8gaHcgcHJvZ3Jlc3MgZWl0aGVyKSBhcmUgbmF0dXJhbGx5IGxlZnQgYWxvbmUuCiYjNDM7ICovCiYjNDM7c3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfcnhfY2hlY2tfc3RhbGwoc3RydWN0IGFpcm9oYV9xdWV1ZSAqcSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYSA9IHEtJmd0O3FkbWE7CiYjNDM7CWludCBxaWQgPSBxIC0gJmFtcDtxZG1hLSZndDtxX3J4WzBdOwomIzQzOwl1MzIgZG1hX2lkeCA9IGFpcm9oYV9xZG1hX2dldChxZG1hLCBSRUdfUlhfRE1BX0lEWChxaWQpLAomIzQzOwkJCQkgICAgICBSWF9SSU5HX0RNQV9JRFhfTUFTSyk7CiYjNDM7CiYjNDM7CWlmIChxLSZndDtzdGFsbF90YWlsID09IHEtJmd0O3RhaWwgJmFtcDsmYW1wOyBkbWFfaWR4ICE9IHEtJmd0O3N0YWxsX2RtYV9pZHgpIHsKJiM0MzsJCWlmICgmIzQzOyYjNDM7cS0mZ3Q7c3RhbGxfY291bnQgJmd0Oz0gQUlST0hBX1JYX1NUQUxMX1RIUkVTSE9MRCAmYW1wOyZhbXA7CiYjNDM7CQkgICAgIXRlc3RfYW5kX3NldF9iaXQocWlkLCBxZG1hLSZndDtyeF9yZWNvdmVyX21hc2spKQomIzQzOwkJCXNjaGVkdWxlX3dvcmsoJmFtcDtxZG1hLSZndDtyeF9yZWNvdmVyX3dvcmspOwomIzQzOwl9IGVsc2UgewomIzQzOwkJcS0mZ3Q7c3RhbGxfY291bnQgPSAwOwomIzQzOwl9CiYjNDM7CiYjNDM7CXEtJmd0O3N0YWxsX3RhaWwgPSBxLSZndDt0YWlsOwomIzQzOwlxLSZndDtzdGFsbF9kbWFfaWR4ID0gZG1hX2lkeDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IGFpcm9oYV9xZG1hX3J4X3Byb2Nlc3Moc3RydWN0IGFpcm9oYV9xdWV1ZSAqcSwgaW50IGJ1ZGdldCkKIHsKIAllbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIgPSBwYWdlX3Bvb2xfZ2V0X2RtYV9kaXIocS0mZ3Q7cGFnZV9wb29sKTsKQEAgLTY3NSw4ICYjNDM7NzE4LDEwIEBAIHN0YXRpYyBpbnQgYWlyb2hhX3FkbWFfcnhfcHJvY2VzcyhzdHJ1Y3QgYWlyb2hhX3F1ZXVlICpxLCBpbnQgYnVkZ2V0KQogCQlzdHJ1Y3QgcGFnZSAqcGFnZTsKIAogCQlkZXNjX2N0cmwgPSBsZTMyX3RvX2NwdShSRUFEX09OQ0UoZGVzYy0mZ3Q7Y3RybCkpOwotCQlpZiAoIShkZXNjX2N0cmwgJmFtcDsgUURNQV9ERVNDX0RPTkVfTUFTSykpCiYjNDM7CQlpZiAoIShkZXNjX2N0cmwgJmFtcDsgUURNQV9ERVNDX0RPTkVfTUFTSykpIHsKJiM0MzsJCQlhaXJvaGFfcWRtYV9yeF9jaGVja19zdGFsbChxKTsKIAkJCWJyZWFrOwomIzQzOwkJfQogCiAJCWRtYV9ybWIoKTsKIApAQCAtNzg0LDEzICYjNDM7ODI5LDE1IEBAIHN0YXRpYyBpbnQgYWlyb2hhX3FkbWFfcnhfbmFwaV9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldCkKIAkJaW50IGksIHFpZCA9IHEgLSAmYW1wO3FkbWEtJmd0O3FfcnhbMF07CiAJCWludCBpbnRyX3JlZyA9IHFpZCAmbHQ7IFJYX0RPTkVfSElHSF9PRkZTRVQgPyBRRE1BX0lOVF9SRUdfSURYMQogCQkJCQkJCSA6IFFETUFfSU5UX1JFR19JRFgyOwomIzQzOwkJdTMyIGJpdCA9IHFpZCAlIFJYX0RPTkVfSElHSF9PRkZTRVQ7CiAKIAkJZm9yIChpID0gMDsgaSAmbHQ7IEFSUkFZX1NJWkUocWRtYS0mZ3Q7aXJxX2JhbmtzKTsgaSYjNDM7JiM0MzspIHsKIAkJCWlmICghKEJJVChxaWQpICZhbXA7IFJYX0lSUV9CQU5LX1BJTl9NQVNLKGkpKSkKIAkJCQljb250aW51ZTsKIAogCQkJYWlyb2hhX3FkbWFfaXJxX2VuYWJsZSgmYW1wO3FkbWEtJmd0O2lycV9iYW5rc1tpXSwgaW50cl9yZWcsCi0JCQkJCSAgICAgICBCSVQocWlkICUgUlhfRE9ORV9ISUdIX09GRlNFVCkpOwomIzQzOwkJCQkJICAgICAgIEJJVChiaXQpIHwKJiM0MzsJCQkJCSAgICAgICBCSVQoYml0ICYjNDM7IFJYX05PX0NQVV9EU0NQX0xPV19PRkZTRVQpKTsKIAkJfQogCX0KIApAQCAtODkyLDYgJiM0Mzs5MzksNzYgQEAgc3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfY2xlYW51cF9yeF9xdWV1ZShzdHJ1Y3QgYWlyb2hhX3F1ZXVlICpxKQogCQkJRklFTERfUFJFUChSWF9SSU5HX0RNQV9JRFhfTUFTSywgcS0mZ3Q7dGFpbCkpOwogfQogCiYjNDM7c3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfcnhfcmVjb3Zlcl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYSA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgYWlyb2hhX3FkbWEsCiYjNDM7CQkJCQkJIHJ4X3JlY292ZXJfd29yayk7CiYjNDM7CWludCBxaWQ7CiYjNDM7CiYjNDM7CWZvcl9lYWNoX3NldF9iaXQocWlkLCBxZG1hLSZndDtyeF9yZWNvdmVyX21hc2ssIEFJUk9IQV9OVU1fUlhfUklORykgewomIzQzOwkJc3RydWN0IGFpcm9oYV9xdWV1ZSAqcSA9ICZhbXA7cWRtYS0mZ3Q7cV9yeFtxaWRdOwomIzQzOwkJa3RpbWVfdCByeF9kbWFfb2ZmX3RzOwomIzQzOwkJczY0IHJ4X2RtYV9vZmZfdXM7CiYjNDM7CQl1MzIgc3RhdHVzOwomIzQzOwomIzQzOwkJaWYgKCFxLSZndDtuZGVzYykKJiM0MzsJCQlnb3RvIG5leHQ7CiYjNDM7CiYjNDM7CQluYXBpX2Rpc2FibGUoJmFtcDtxLSZndDtuYXBpKTsKJiM0MzsKJiM0MzsJCS8qIEdMT0JBTF9DRkdfUlhfRE1BX0VOX01BU0sgaXMgcGVyLVFETUEsIG5vdCBwZXItcmluZywgc28KJiM0MzsJCSAqIHRoaXMgcGF1c2VzIGV2ZXJ5IFJYIHJpbmcgb24gdGhpcyBRRE1BIGluc3RhbmNlLCBub3QganVzdAomIzQzOwkJICogdGhlIHN0YWxsZWQgb25lIC0gdHJhY2sgaG93IGxvbmcgZm9yLCBzaW5jZSB0aGF0JiMzOTtzIHRoZQomIzQzOwkJICogcmVhbC13b3JsZCBjb3N0IG9mIHJlY292ZXJ5IG9uIHVucmVsYXRlZCByaW5ncy4KJiM0MzsJCSAqLwomIzQzOwkJcnhfZG1hX29mZl90cyA9IGt0aW1lX2dldCgpOwomIzQzOwomIzQzOwkJYWlyb2hhX3FkbWFfY2xlYXIocWRtYSwgUkVHX1FETUFfR0xPQkFMX0NGRywKJiM0MzsJCQkJICBHTE9CQUxfQ0ZHX1JYX0RNQV9FTl9NQVNLKTsKJiM0MzsJCWlmIChyZWFkX3BvbGxfdGltZW91dChhaXJvaGFfcWRtYV9yciwgc3RhdHVzLAomIzQzOwkJCQkgICAgICAhKHN0YXR1cyAmYW1wOyBHTE9CQUxfQ0ZHX1JYX0RNQV9CVVNZX01BU0spLAomIzQzOwkJCQkgICAgICBVU0VDX1BFUl9NU0VDLCA1MCAqIFVTRUNfUEVSX01TRUMsIHRydWUsCiYjNDM7CQkJCSAgICAgIHFkbWEsIFJFR19RRE1BX0dMT0JBTF9DRkcpKQomIzQzOwkJCWRldl93YXJuKHFkbWEtJmd0O2V0aC0mZ3Q7ZGV2LAomIzQzOwkJCQkgJiMzNDtxaWQ9JWQgUlggRE1BIGJ1c3kgdGltZW91dCBkdXJpbmcgcmVjb3ZlcnlcbiYjMzQ7LAomIzQzOwkJCQkgcWlkKTsKJiM0MzsKJiM0MzsJCS8qIERyb3Agd2hhdGV2ZXIgaXMgY3VycmVudGx5IGluIGZsaWdodCBvbiB0aGlzIHJpbmcgYW5kCiYjNDM7CQkgKiByZS1hcm0gaXQgZnJvbSBhIGtub3duLWNsZWFuIHN0YXRlLiBjbGVhbnVwX3J4X3F1ZXVlKCkKJiM0MzsJCSAqIG9ubHkgZXZlciB0b3VjaGVzIHRoZSBzdy1vd25lZCBbdGFpbCwgaGVhZCkgd2luZG93IGFuZAomIzQzOwkJICogcmVzeW5jcyBib3RoIFJYX0NQVV9JRFggYW5kIFJYX0RNQV9JRFggdG8gaXQsIHdoaWNoIGlzCiYjNDM7CQkgKiB3aGF0IHVuLXdlZGdlcyBhIHJpbmcgd2hlcmUgaHcgd3JvdGUgcGFzdCB0aGUgc3cgaGVhZAomIzQzOwkJICogd2l0aG91dCB0aGUgY29uc3VtZXIgZXZlciBhZHZhbmNpbmcgLSBubyBuZWVkIHRvIGZpZ3VyZQomIzQzOwkJICogb3V0IHdoaWNoIGRlc2NyaXB0b3IgaHcgYWN0dWFsbHkgdXNlZC4KJiM0MzsJCSAqLwomIzQzOwkJYWlyb2hhX3FkbWFfY2xlYW51cF9yeF9xdWV1ZShxKTsKJiM0MzsJCWlmIChxLSZndDtza2IpIHsKJiM0MzsJCQkvKiBkaXNjYXJkIHdoYXRldmVyIHNjYXR0ZXItZ2F0aGVyIGZyYW1lIHdhcwomIzQzOwkJCSAqIG1pZC1hc3NlbWJseSB3aGVuIHRoZSBzdGFsbCB3YXMgaGl0LCBjbGVhbnVwX3J4X3F1ZXVlKCkKJiM0MzsJCQkgKiBhYm92ZSBvbmx5IHJlc3luY3MgdGhlIHJpbmcsIG5vdCB0aGlzCiYjNDM7CQkJICovCiYjNDM7CQkJZGV2X2tmcmVlX3NrYihxLSZndDtza2IpOwomIzQzOwkJCXEtJmd0O3NrYiA9IE5VTEw7CiYjNDM7CQl9CiYjNDM7CQlhaXJvaGFfcWRtYV9maWxsX3J4X3F1ZXVlKHEpOwomIzQzOwomIzQzOwkJYWlyb2hhX3FkbWFfc2V0KHFkbWEsIFJFR19RRE1BX0dMT0JBTF9DRkcsCiYjNDM7CQkJCUdMT0JBTF9DRkdfUlhfRE1BX0VOX01BU0spOwomIzQzOwkJcnhfZG1hX29mZl91cyA9IGt0aW1lX3VzX2RlbHRhKGt0aW1lX2dldCgpLCByeF9kbWFfb2ZmX3RzKTsKJiM0MzsKJiM0MzsJCXEtJmd0O3N0YWxsX2NvdW50ID0gMDsKJiM0MzsJCW5hcGlfZW5hYmxlKCZhbXA7cS0mZ3Q7bmFwaSk7CiYjNDM7CQluYXBpX3NjaGVkdWxlKCZhbXA7cS0mZ3Q7bmFwaSk7CiYjNDM7CiYjNDM7CQlxZG1hLSZndDtyeF9yZWNvdmVyX2NvdW50JiM0MzsmIzQzOzsKJiM0MzsJCWRldl93YXJuX3JhdGVsaW1pdGVkKHFkbWEtJmd0O2V0aC0mZ3Q7ZGV2LAomIzQzOwkJCQkgICAgICYjMzQ7cWlkPSVkIFJYIHJpbmcgcmVjb3ZlcmVkIGFmdGVyIGh3IHN0YWxsIChSWCBETUEgcGF1c2VkIGZvciAlbGxkIHVzIG9uIHRoaXMgUURNQSBpbnN0YW5jZSlcbiYjMzQ7LAomIzQzOwkJCQkgICAgIHFpZCwgcnhfZG1hX29mZl91cyk7CiYjNDM7bmV4dDoKJiM0MzsJCWNsZWFyX2JpdChxaWQsIHFkbWEtJmd0O3J4X3JlY292ZXJfbWFzayk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IGFpcm9oYV9xZG1hX2luaXRfcngoc3RydWN0IGFpcm9oYV9xZG1hICpxZG1hKQogewogCWludCBpOwpAQCAtMTQ2OCwxNiAmIzQzOzE1ODUsMzIgQEAgc3RhdGljIGlycXJldHVybl90IGFpcm9oYV9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkZXZfaW5zdGFuY2UpCiAJaWYgKCF0ZXN0X2JpdChERVZfU1RBVEVfSU5JVElBTElaRUQsICZhbXA7cWRtYS0mZ3Q7ZXRoLSZndDtzdGF0ZSkpCiAJCXJldHVybiBJUlFfTk9ORTsKIAotCXJ4X2ludHIxID0gaW50clsxXSAmYW1wOyBSWF9ET05FX0xPV19JTlRfTUFTSzsKJiM0MzsJLyogQSByaW5nIGNhbiBhbHNvIHJhaXNlIE5PX0NQVV9EU0NQIHdoZW4gaXQgcnVucyBvdXQgb2YgZnJlZSBSWAomIzQzOwkgKiBkZXNjcmlwdG9ycyAoZS5nLiBhIGJ1cnN0IG9mIFZJUC1jbGFzc2lmaWVkIGNvbnRyb2wgdHJhZmZpYwomIzQzOwkgKiBmb3JjZWQgb250byBhIHNtYWxsIHJpbmcpLiBPbmNlIGEgcmluZyBpcyBmdWxseSBkcmFpbmVkIG5vIG1vcmUKJiM0MzsJICogUlhfRE9ORSBpbnRlcnJ1cHRzIGNhbiBmaXJlIGZvciBpdCwgc2luY2UgdGhlcmUgYXJlIG5vIGZyZWUKJiM0MzsJICogZGVzY3JpcHRvcnMgbGVmdCBmb3IgaGFyZHdhcmUgdG8gcmVjZWl2ZSBpbnRvLCBzbyB3aXRob3V0IHRoaXMKJiM0MzsJICogTkFQSSBpcyBuZXZlciByZXNjaGVkdWxlZCBhbmQgdGhlIHJpbmcgbmV2ZXIgZ2V0cyByZWZpbGxlZCBhZ2Fpbi4KJiM0MzsJICogVHJlYXQgTk9fQ1BVX0RTQ1AgdGhlIHNhbWUgYXMgUlhfRE9ORSBmb3Igc2NoZWR1bGluZyBOQVBJOgomIzQzOwkgKiBhaXJvaGFfcWRtYV9yeF9wcm9jZXNzKCkgdW5jb25kaXRpb25hbGx5IGNhbGxzCiYjNDM7CSAqIGFpcm9oYV9xZG1hX2ZpbGxfcnhfcXVldWUoKSBhdCB0aGUgZW5kIG9mIGV2ZXJ5IHBvbGwsIGV2ZW4gd2hlbgomIzQzOwkgKiB6ZXJvIGRlc2NyaXB0b3JzIHdlcmUgcmVhcGVkLCBzbyB0aGlzIGFsb25lIGlzIGVub3VnaCB0byByZWNvdmVyCiYjNDM7CSAqIHRoZSByaW5nLgomIzQzOwkgKi8KJiM0MzsJcnhfaW50cjEgPSBpbnRyWzFdICZhbXA7IChSWF9ET05FX0xPV19JTlRfTUFTSyB8IFJYX05PX0NQVV9EU0NQX0xPV19JTlRfTUFTSyk7CiAJaWYgKHJ4X2ludHIxKSB7CiAJCWFpcm9oYV9xZG1hX2lycV9kaXNhYmxlKGlycV9iYW5rLCBRRE1BX0lOVF9SRUdfSURYMSwgcnhfaW50cjEpOwotCQlyeF9pbnRyX21hc2sgfD0gcnhfaW50cjE7CiYjNDM7CQlyeF9pbnRyX21hc2sgfD0gKHJ4X2ludHIxICZhbXA7IFJYX0RPTkVfTE9XX0lOVF9NQVNLKSB8CiYjNDM7CQkJCSgocnhfaW50cjEgJmFtcDsgUlhfTk9fQ1BVX0RTQ1BfTE9XX0lOVF9NQVNLKSAmZ3Q7Jmd0OwomIzQzOwkJCQkgUlhfTk9fQ1BVX0RTQ1BfTE9XX09GRlNFVCk7CiAJfQogCi0JcnhfaW50cjIgPSBpbnRyWzJdICZhbXA7IFJYX0RPTkVfSElHSF9JTlRfTUFTSzsKJiM0MzsJcnhfaW50cjIgPSBpbnRyWzJdICZhbXA7IChSWF9ET05FX0hJR0hfSU5UX01BU0sgfCBSWF9OT19DUFVfRFNDUF9ISUdIX0lOVF9NQVNLKTsKIAlpZiAocnhfaW50cjIpIHsKIAkJYWlyb2hhX3FkbWFfaXJxX2Rpc2FibGUoaXJxX2JhbmssIFFETUFfSU5UX1JFR19JRFgyLCByeF9pbnRyMik7Ci0JCXJ4X2ludHJfbWFzayB8PSAocnhfaW50cjIgJmx0OyZsdDsgMTYpOwomIzQzOwkJcnhfaW50cl9tYXNrIHw9ICgocnhfaW50cjIgJmFtcDsgUlhfRE9ORV9ISUdIX0lOVF9NQVNLKSB8CiYjNDM7CQkJCSAoKHJ4X2ludHIyICZhbXA7IFJYX05PX0NQVV9EU0NQX0hJR0hfSU5UX01BU0spICZndDsmZ3Q7CiYjNDM7CQkJCSAgUlhfTk9fQ1BVX0RTQ1BfTE9XX09GRlNFVCkpICZsdDsmbHQ7IDE2OwogCX0KIAogCWZvciAoaSA9IDA7IHJ4X2ludHJfbWFzayAmYW1wOyZhbXA7IGkgJmx0OyBBUlJBWV9TSVpFKHFkbWEtJmd0O3FfcngpOyBpJiM0MzsmIzQzOykgewpAQCAtMTU3Niw2ICYjNDM7MTcwOSw4IEBAIHN0YXRpYyB2b2lkIGFpcm9oYV9xZG1hX2NsZWFudXAoc3RydWN0IGFpcm9oYV9ldGggKmV0aCwKIHsKIAlpbnQgaTsKIAomIzQzOwljYW5jZWxfd29ya19zeW5jKCZhbXA7cWRtYS0mZ3Q7cnhfcmVjb3Zlcl93b3JrKTsKJiM0MzsKIAlpZiAodGVzdF9iaXQoREVWX1NUQVRFX0lOSVRJQUxJWkVELCAmYW1wO2V0aC0mZ3Q7c3RhdGUpKSB7CiAJCXUzMiBzdGF0dXM7CiAKQEAgLTE2MzMsNiAmIzQzOzE3NjgsMTUgQEAgc3RhdGljIGludCBhaXJvaGFfaHdfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAKJiM0MzsJLyogSU5JVF9XT1JLKCkgZXZlcnkgaW5zdGFuY2UgdXAgZnJvbnQsIGJlZm9yZSBhbnkgb2YgdGhlbSBjYW4gZmFpbAomIzQzOwkgKiBpbml0IGFuZCBqdW1wIHRvIHRoZSBlcnJvciBwYXRoIGJlbG93LCBzaW5jZSB0aGF0IHBhdGggdGVhcnMgZG93bgomIzQzOwkgKiBldmVyeSBldGgtJmd0O3FkbWFbXSBzbG90IHVuY29uZGl0aW9uYWxseSwgaW5jbHVkaW5nIG9uZXMgdGhpcyBsb29wCiYjNDM7CSAqIG5ldmVyIHJlYWNoZWQuCiYjNDM7CSAqLwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgQVJSQVlfU0laRShldGgtJmd0O3FkbWEpOyBpJiM0MzsmIzQzOykKJiM0MzsJCUlOSVRfV09SSygmYW1wO2V0aC0mZ3Q7cWRtYVtpXS5yeF9yZWNvdmVyX3dvcmssCiYjNDM7CQkJICBhaXJvaGFfcWRtYV9yeF9yZWNvdmVyX3dvcmspOwomIzQzOwogCWZvciAoaSA9IDA7IGkgJmx0OyBBUlJBWV9TSVpFKGV0aC0mZ3Q7cWRtYSk7IGkmIzQzOyYjNDM7KSB7CiAJCWVyciA9IGFpcm9oYV9xZG1hX2luaXQocGRldiwgZXRoLCAmYW1wO2V0aC0mZ3Q7cWRtYVtpXSk7CiAJCWlmIChlcnIpCkBAIC0xNjgxLDYgJiM0MzsxODI1LDE0IEBAIHN0YXRpYyB2b2lkIGFpcm9oYV9xZG1hX3N0b3BfbmFwaShzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWEpCiB7CiAJaW50IGk7CiAKJiM0MzsJLyogTWFrZSBzdXJlIHJ4X3JlY292ZXJfd29yayBpcyBuZWl0aGVyIHJ1bm5pbmcgbm9yIGFibGUgdG8gcmUtYXJtCiYjNDM7CSAqIGJlZm9yZSBhbnkgbmFwaV9kaXNhYmxlKCkgYmVsb3c6IGl0IGFsc28gY2FsbHMgbmFwaV9kaXNhYmxlKCkvCiYjNDM7CSAqIG5hcGlfZW5hYmxlKCkgb24gcV9yeFtdLm5hcGksIGFuZCBuYXBpX2Rpc2FibGUoKSBvbiBhbgomIzQzOwkgKiBhbHJlYWR5LWRpc2FibGVkIE5BUEkgc3BpbnMgaW4gbmFwaV9kaXNhYmxlX2xvY2tlZCgpIGZvcmV2ZXIsCiYjNDM7CSAqIHNpbmNlIG9ubHkgbmFwaV9lbmFibGUoKSBjbGVhcnMgdGhlIHN0YXRlIGl0IHdhaXRzIG9uLgomIzQzOwkgKi8KJiM0MzsJZGlzYWJsZV93b3JrX3N5bmMoJmFtcDtxZG1hLSZndDtyeF9yZWNvdmVyX3dvcmspOwomIzQzOwogCWZvciAoaSA9IDA7IGkgJmx0OyBBUlJBWV9TSVpFKHFkbWEtJmd0O3FfdHhfaXJxKTsgaSYjNDM7JiM0MzspCiAJCW5hcGlfZGlzYWJsZSgmYW1wO3FkbWEtJmd0O3FfdHhfaXJxW2ldLm5hcGkpOwogCkBAIC0yNDQ5LDYgJiM0MzsyNjAxLDQ2IEBAIHN0YXRpYyB2b2lkIGFpcm9oYV9ldGh0b29sX2dldF9kcnZpbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsCiAJc3Ryc2NweShpbmZvLSZndDtidXNfaW5mbywgZGV2X25hbWUoZXRoLSZndDtkZXYpLCBzaXplb2YoaW5mby0mZ3Q7YnVzX2luZm8pKTsKIH0KIAomIzQzO3N0YXRpYyBjb25zdCBjaGFyIGFpcm9oYV9ldGh0b29sX3N0YXRzX3N0cltdW0VUSF9HU1RSSU5HX0xFTl0gPSB7CiYjNDM7CSYjMzQ7cnhfc3RhbGxfcmVjb3ZlciYjMzQ7LAomIzQzO307CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgYWlyb2hhX2V0aHRvb2xfZ2V0X3N0cmluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdTMyIHNzZXQsCiYjNDM7CQkJCSAgICAgICB1OCAqZGF0YSkKJiM0Mzt7CiYjNDM7CWludCBpOwomIzQzOwomIzQzOwlpZiAoc3NldCAhPSBFVEhfU1NfU1RBVFMpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBBUlJBWV9TSVpFKGFpcm9oYV9ldGh0b29sX3N0YXRzX3N0cik7IGkmIzQzOyYjNDM7KQomIzQzOwkJZXRodG9vbF9wdXRzKCZhbXA7ZGF0YSwgYWlyb2hhX2V0aHRvb2xfc3RhdHNfc3RyW2ldKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBhaXJvaGFfZXRodG9vbF9nZXRfc3NldF9jb3VudChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgc3NldCkKJiM0Mzt7CiYjNDM7CXJldHVybiBzc2V0ID09IEVUSF9TU19TVEFUUyA/CiYjNDM7CSAgICAgICBBUlJBWV9TSVpFKGFpcm9oYV9ldGh0b29sX3N0YXRzX3N0cikgOiAtRU9QTk9UU1VQUDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgYWlyb2hhX2V0aHRvb2xfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwKJiM0MzsJCQkJCSAgICAgc3RydWN0IGV0aHRvb2xfc3RhdHMgKnN0YXRzLAomIzQzOwkJCQkJICAgICB1NjQgKmRhdGEpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKmRldiA9IG5ldGRldl9wcml2KG5ldGRldik7CiYjNDM7CXN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYTsKJiM0MzsKJiM0MzsJcmN1X3JlYWRfbG9jaygpOwomIzQzOwlxZG1hID0gcmN1X2RlcmVmZXJlbmNlKGRldi0mZ3Q7cWRtYSk7CiYjNDM7CS8qIGFnZ3JlZ2F0ZSByZWNvdmVyeSBjb3VudCBmb3IgdGhlIHdob2xlIHFkbWEgaW5zdGFuY2U6IHRoZQomIzQzOwkgKiBzdGFsbGVkIHJpbmcgY2FuIGNhcnJ5IHRyYWZmaWMgZm9yIG1vcmUgdGhhbiBvbmUgbmV0ZGV2IChWSVAKJiM0MzsJICogY2xhc3NpZmljYXRpb24gc2hhcmVzIHJpbmcgNCBhY3Jvc3Mgc2V2ZXJhbCBwcm90b2NvbHMvcG9ydHMpLAomIzQzOwkgKiBzbyB0aGVyZSYjMzk7cyBubyBzaW5nbGUgbmV0ZGV2IHRvIGF0dHJpYnV0ZSBhbiBpbmRpdmlkdWFsIGV2ZW50IHRvCiYjNDM7CSAqLwomIzQzOwlkYXRhWzBdID0gcWRtYSA/IHFkbWEtJmd0O3J4X3JlY292ZXJfY291bnQgOiAwOwomIzQzOwlyY3VfcmVhZF91bmxvY2soKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBhaXJvaGFfZXRodG9vbF9nZXRfbWFjX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsCiAJCQkJCSBzdHJ1Y3QgZXRodG9vbF9ldGhfbWFjX3N0YXRzICpzdGF0cykKIHsKQEAgLTMzNTEsNiAmIzQzOzM1NDMsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGFpcm9oYV9uZXRkZXZfb3BzID0gewogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGFpcm9oYV9ldGh0b29sX29wcyA9IHsKIAkuZ2V0X2RydmluZm8JCT0gYWlyb2hhX2V0aHRvb2xfZ2V0X2RydmluZm8sCiYjNDM7CS5nZXRfc3RyaW5ncwkJPSBhaXJvaGFfZXRodG9vbF9nZXRfc3RyaW5ncywKJiM0MzsJLmdldF9zc2V0X2NvdW50CQk9IGFpcm9oYV9ldGh0b29sX2dldF9zc2V0X2NvdW50LAomIzQzOwkuZ2V0X2V0aHRvb2xfc3RhdHMJPSBhaXJvaGFfZXRodG9vbF9nZXRfZXRodG9vbF9zdGF0cywKIAkuZ2V0X2V0aF9tYWNfc3RhdHMgICAgICA9IGFpcm9oYV9ldGh0b29sX2dldF9tYWNfc3RhdHMsCiAJLmdldF9ybW9uX3N0YXRzCQk9IGFpcm9oYV9ldGh0b29sX2dldF9ybW9uX3N0YXRzLAogCS5nZXRfbGlua19rc2V0dGluZ3MJPSBwaHlfZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3MsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaAppbmRleCBmYTlhOGVkY2UyMmZmLi5jZDc1YzE2ZDhkMGM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmgKQEAgLTQxLDYgJiM0Mzs0MSw3IEBACiAjZGVmaW5lIFRYX0RTQ1BfTlVNCQkJMTAyNAogI2RlZmluZSBSWF9EU0NQX05VTShfbikJCQlcCiAJKChfbikgPT0gIDIgPyAxMjggOgkJXAomIzQzOwkgKF9uKSA9PSAgNCA/IDEyOCA6CQlcCiAJIChfbikgPT0gMTEgPyAxMjggOgkJXAogCSAoX24pID09IDE1ID8gMTI4IDoJCVwKIAkgKF9uKSA9PSAgMCA/IDEwMjQgOiAxNikKQEAgLTIwNyw2ICYjNDM7MjA4LDE1IEBAIHN0cnVjdCBhaXJvaGFfcXVldWUgewogCWJvb2wgdHhxX3N0b3BwZWQ7CiAJYm9vbCBmbHVzaGluZzsKIAomIzQzOwkvKiBSWCBodyBzdGFsbCBkZXRlY3Rpb246IGxhc3QgUkVHX1JYX0RNQV9JRFgvdGFpbCBzbmFwc2hvdCB0YWtlbgomIzQzOwkgKiB3aGVuZXZlciB0aGUgaGVhZC1vZi1saW5lIGRlc2NyaXB0b3IgaXNuJiMzOTt0IERPTkUsIGFuZCBob3cgbWFueQomIzQzOwkgKiBjb25zZWN1dGl2ZSB0aW1lcyBodyBtYWRlIHByb2dyZXNzIChETUFfSURYIG1vdmVkKSB3aGlsZSB0aGUKJiM0MzsJICogY29uc3VtZXIgKHRhaWwpIGRpZG4mIzM5O3QuIFNlZSBhaXJvaGFfcWRtYV9yeF9jaGVja19zdGFsbCgpLgomIzQzOwkgKi8KJiM0MzsJdTMyIHN0YWxsX2RtYV9pZHg7CiYjNDM7CXUxNiBzdGFsbF90YWlsOwomIzQzOwl1OCBzdGFsbF9jb3VudDsKJiM0MzsKIAlzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTsKIAlzdHJ1Y3QgcGFnZV9wb29sICpwYWdlX3Bvb2w7CiAJc3RydWN0IHNrX2J1ZmYgKnNrYjsKQEAgLTU2Nyw2ICYjNDM7NTc3LDE4IEBAIHN0cnVjdCBhaXJvaGFfcWRtYSB7CiAJc3RydWN0IGFpcm9oYV9xdWV1ZSBxX3R4W0FJUk9IQV9OVU1fVFhfUklOR107CiAJc3RydWN0IGFpcm9oYV9xdWV1ZSBxX3J4W0FJUk9IQV9OVU1fUlhfUklOR107CiAKJiM0MzsJLyogcmVjb3ZlcnkgZm9yIFJYIHJpbmdzIHdob3NlIGh3IGNvbXBsZXRpb24gcG9pbnRlciAoUlhfRE1BX0lEWCkKJiM0MzsJICoga2VlcHMgbW92aW5nIHdoaWxlIHRoZSBzdyBjb25zdW1lciBpcyBzdHVjazsgc2VlCiYjNDM7CSAqIGFpcm9oYV9xZG1hX3J4X2NoZWNrX3N0YWxsKCkgYW5kIGFpcm9oYV9xZG1hX3J4X3JlY292ZXJfd29yaygpLgomIzQzOwkgKi8KJiM0MzsJc3RydWN0IHdvcmtfc3RydWN0IHJ4X3JlY292ZXJfd29yazsKJiM0MzsJREVDTEFSRV9CSVRNQVAocnhfcmVjb3Zlcl9tYXNrLCBBSVJPSEFfTlVNX1JYX1JJTkcpOwomIzQzOwkvKiBjb3VudCBvZiBjb21wbGV0ZWQgaHctc3RhbGwgcmVjb3ZlcmllcywgZXhwb3NlZCB2aWEgZXRodG9vbCAtUwomIzQzOwkgKiBzbyBhIHJlY292ZXJ5IGV2ZW50IChhbmQgdGhlIHBhY2tldHMgaXQgZHJvcHMpIGlzIG9ic2VydmFibGUKJiM0MzsJICogd2l0aG91dCBncmVwcGluZyBkbWVzZyBmb3IgdGhlIGRldl93YXJuX3JhdGVsaW1pdGVkKCkgYWJvdmUKJiM0MzsJICovCiYjNDM7CXUzMiByeF9yZWNvdmVyX2NvdW50OwomIzQzOwogCURFQ0xBUkVfQklUTUFQKHFvc19jaGFubmVsX21hcCwgQUlST0hBX05VTV9RT1NfQ0hBTk5FTFMpOwogfTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAwODoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTYzCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoaXMgUGF0Y2ggZm9yIHRoZSBBaXJvaGEgRXRoZXJuZXQgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gVGhlIGZpcnN0IHRoaW5nIEkgc2VlIGlzIHRoYXQgdGhpcyBwYXRjaCB0b3VjaGVzIGBhaXJvaGFfZXRoLmNgIGFuZCBgYWlyb2hhX2V0aC5oYCwgYm90aCB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYCBkaXJlY3RvcnkuIFRoYXQmIzM5O3MgYSBzdHJvbmcgaW5kaWNhdGlvbiB0aGlzIGlzIHJlbGF0ZWQgdG8gdGhlIEFpcm9oYSBFdGhlcm5ldCBkcml2ZXIsIGJ1dCBsZXQmIzM5O3MganVzdCBjb25maXJtIHRoYXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgd2UgYXJlIGRlYWxpbmcgd2l0aCBoZXJlLCBzbyBsZXQgbWUgcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhpcyB3aXRoIHRoZSByZWxldmFudCBgS2NvbmZpZ2AgZmlsZSBpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9gIGRpcmVjdG9yeS4gSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgdGhlIG92ZXJhbGwgYnVpbGQgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBkcml2ZXIuIEkmIzM5O2xsIG5lZWQgdGhhdCBjb250ZXh0IHRvIHByb3Blcmx5IGFzc2VzcyB0aGUgY2hhbmdlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAwODozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORVRfQUlST0hBfGFpcm9oYSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMzc4MyBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWc9OD1pZiBORVRfVkVORE9SX0FJUk9IQVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWctOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnOjEwOmNvbmZpZyBORVRfQUlST0hBX05QVVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWctMTEtXHR0cmlzdGF0ZSBcJiMzNDtBaXJvaGEgTlBVIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZy0xNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnOjE4OmNvbmZpZyBORVRfQUlST0hBXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZy0xOS1cdHRyaXN0YXRlIFwmIzM0O0Fpcm9oYSBTb0MgR2lnYWJpdCBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZy0yMC1cdGRlcGVuZHMgb24gTkVUX0RTQSB8fCAhTkVUX0RTQVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWc6MjE6XHRzZWxlY3QgTkVUX0FJUk9IQV9OUFVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnLTIyLVx0c2VsZWN0IFBBR0VfUE9PTFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnLTI2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWc6Mjc6Y29uZmlnIE5FVF9BSVJPSEFfRkxPV19TVEFUU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWctMjgtXHRkZWZhdWx0IHlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnLTI5LVx0Ym9vbCBcJiMzNDtBaXJvaGEgZmxvdyBzdGF0c1wmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWc6MzA6XHRkZXBlbmRzIG9uIE5FVF9BSVJPSEEgXHUwMDI2XHUwMDI2IE5FVF9BSVJPSEFfTlBVXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZy0zMS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGUtNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19ORVRfQUlST0hBKSAmIzQzOz0gYWlyb2hhLWV0aC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGU6NzphaXJvaGEtZXRoLXkgOj0gYWlyb2hhX2V0aC5vIGFpcm9oYV9wcGUub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL01ha2VmaWxlOjg6YWlyb2hhLWV0aC0kKENPTkZJR19ERUJVR19GUykgJiM0Mzs9IGFpcm9oYV9wcGVfZGVidWdmcy5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfTkVUX0FJUk9IQV9OUFUpICYjNDM7PSBhaXJvaGFfbnB1Lm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxOTojaW5jbHVkZSBcJiMzNDthaXJvaGFfcmVncy5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIwOiNpbmNsdWRlIFwmIzM0O2Fpcm9oYV9ldGguaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjI6dTMyIGFpcm9oYV9ycih2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBvZmZzZXQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNzp2b2lkIGFpcm9oYV93cih2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBvZmZzZXQsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMjp1MzIgYWlyb2hhX3Jtdyh2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBvZmZzZXQsIHUzMiBtYXNrLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMy17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM0Olx0dmFsIHw9IChhaXJvaGFfcnIoYmFzZSwgb2Zmc2V0KSBcdTAwMjYgfm1hc2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNTpcdGFpcm9oYV93cihiYXNlLCBvZmZzZXQsIHZhbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQwOnN0YXRpYyB2b2lkIGFpcm9oYV9xZG1hX3NldF9pcnFtYXNrKHN0cnVjdCBhaXJvaGFfaXJxX2JhbmsgKmlycV9iYW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MS1cdFx0XHRcdCAgICBpbnQgaW5kZXgsIHUzMiBjbGVhciwgdTMyIHNldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MzpcdHN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYSA9IGlycV9iYW5rLVx1MDAzZXFkbWE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ0LVx0aW50IGJhbmsgPSBpcnFfYmFuayAtIFx1MDAyNnFkbWEtXHUwMDNlaXJxX2JhbmtzWzBdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTMtXHRpcnFfYmFuay1cdTAwM2VpcnFtYXNrW2luZGV4XSB8PSBzZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU0Olx0YWlyb2hhX3FkbWFfd3IocWRtYSwgUkVHX0lOVF9FTkFCTEUoYmFuaywgaW5kZXgpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NS1cdFx0ICAgICAgIGlycV9iYW5rLVx1MDAzZWlycW1hc2tbaW5kZXhdKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU4LVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU5Olx0YWlyb2hhX3FkbWFfcnIocWRtYSwgUkVHX0lOVF9FTkFCTEUoYmFuaywgaW5kZXgpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjQ6c3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfaXJxX2VuYWJsZShzdHJ1Y3QgYWlyb2hhX2lycV9iYW5rICppcnFfYmFuayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjUtXHRcdFx0XHQgICBpbnQgaW5kZXgsIHUzMiBtYXNrKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02Ni17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY3Olx0YWlyb2hhX3FkbWFfc2V0X2lycW1hc2soaXJxX2JhbmssIGluZGV4LCAwLCBtYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjgtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NzA6c3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfaXJxX2Rpc2FibGUoc3RydWN0IGFpcm9oYV9pcnFfYmFuayAqaXJxX2JhbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTcxLVx0XHRcdFx0ICAgIGludCBpbmRleCwgdTMyIG1hc2spXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTcyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NzM6XHRhaXJvaGFfcWRtYV9zZXRfaXJxbWFzayhpcnFfYmFuaywgaW5kZXgsIG1hc2ssIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03NC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo3NjpzdGF0aWMgaW50IGFpcm9oYV9zZXRfbWFjYWRkcihzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKmRldiwgY29uc3QgdTggKmFkZHIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTc3LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNzgtXHR1OCByZWZfYWRkcltFVEhfQUxFTl0gX19hbGlnbmVkKDIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo3OTpcdHN0cnVjdCBhaXJvaGFfZXRoICpldGggPSBkZXYtXHUwMDNlZXRoO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy04MC1cdHUzMiByZWcsIHZhbCwgbG1pbiwgbG1heDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTg3LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShldGgtXHUwMDNlcG9ydHMpOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo4ODpcdFx0c3RydWN0IGFpcm9oYV9nZG1fcG9ydCAqcG9ydCA9IGV0aC1cdTAwM2Vwb3J0c1tpXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtODktXHRcdGludCBqO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtOTQtXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIEFSUkFZX1NJWkUocG9ydC1cdTAwM2VkZXZzKTsgaiYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6OTU6XHRcdFx0c3RydWN0IGFpcm9oYV9nZG1fZGV2ICppdGVyX2RldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtOTYtXHRcdFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTEwMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTAyOlx0XHRcdGlmIChhaXJvaGFfaXNfbGFuX2dkbV9kZXYoaXRlcl9kZXYpICE9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjEwMzpcdFx0XHQgICAgYWlyb2hhX2lzX2xhbl9nZG1fZGV2KGRldikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTEwNC1cdFx0XHRcdGNvbnRpbnVlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTM1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxMzY6XHRyZWcgPSBhaXJvaGFfaXNfbGFuX2dkbV9kZXYoZGV2KSA/IFJFR19GRV9MQU5fTUFDX0ggOiBSRUdfRkVfV0FOX01BQ19IO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xMzctXHR2YWwgPSAoYWRkclswXSBcdTAwM2NcdTAwM2MgMTYpIHwgKGFkZHJbMV0gXHUwMDNjXHUwMDNjIDgpIHwgYWRkclsyXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTM4Olx0YWlyb2hhX2ZlX3dyKGV0aCwgcmVnLCB2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xMzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE0MDpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9NQUNfTE1JTihyZWcpLCBsbWluKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTQxOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX01BQ19MTUFYKHJlZyksIGxtYXgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE0MzpcdGFpcm9oYV9wcGVfaW5pdF91cGRfbWVtKGRldiwgYWRkcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE0NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTQ4OnN0YXRpYyB2b2lkIGFpcm9oYV9zZXRfZ2RtX3BvcnRfZndkX2NmZyhzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoLCB1MzIgYWRkcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTQ5LVx0XHRcdFx0XHR1MzIgdmFsKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNTE6XHRhaXJvaGFfZmVfcm13KGV0aCwgYWRkciwgR0RNX09DRlFfTUFTSyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTUyLVx0XHQgICAgICBGSUVMRF9QUkVQKEdETV9PQ0ZRX01BU0ssIHZhbCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNTM6XHRhaXJvaGFfZmVfcm13KGV0aCwgYWRkciwgR0RNX01DRlFfTUFTSyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTU0LVx0XHQgICAgICBGSUVMRF9QUkVQKEdETV9NQ0ZRX01BU0ssIHZhbCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNTU6XHRhaXJvaGFfZmVfcm13KGV0aCwgYWRkciwgR0RNX0JDRlFfTUFTSyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTU2LVx0XHQgICAgICBGSUVMRF9QUkVQKEdETV9CQ0ZRX01BU0ssIHZhbCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNTc6XHRhaXJvaGFfZmVfcm13KGV0aCwgYWRkciwgR0RNX1VDRlFfTUFTSyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTU4LVx0XHQgICAgICBGSUVMRF9QUkVQKEdETV9VQ0ZRX01BU0ssIHZhbCkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTYwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNjE6c3RhdGljIGludCBhaXJvaGFfc2V0X3ZpcF9mb3JfZ2RtX3BvcnQoc3RydWN0IGFpcm9oYV9nZG1fZGV2ICpkZXYsIGJvb2wgZW5hYmxlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNjIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNjM6XHRzdHJ1Y3QgYWlyb2hhX2dkbV9wb3J0ICpwb3J0ID0gZGV2LVx1MDAzZXBvcnQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE2NDpcdHN0cnVjdCBhaXJvaGFfZXRoICpldGggPSBkZXYtXHUwMDNlZXRoO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNjUtXHR1MzIgdmlwX3BvcnQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNjgtXHRpZiAoZW5hYmxlKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE2OTpcdFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9WSVBfUE9SVF9FTiwgdmlwX3BvcnQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNzA6XHRcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfRkVfSUZDX1BPUlRfRU4sIHZpcF9wb3J0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTcxLVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTcyOlx0XHRhaXJvaGFfZmVfY2xlYXIoZXRoLCBSRUdfRkVfVklQX1BPUlRfRU4sIHZpcF9wb3J0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTczOlx0XHRhaXJvaGFfZmVfY2xlYXIoZXRoLCBSRUdfRkVfSUZDX1BPUlRfRU4sIHZpcF9wb3J0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTc0LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNzk6c3RhdGljIHZvaWQgYWlyb2hhX2ZlX21hY2NyX2luaXQoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTgwLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE4My1cdGZvciAocCA9IDE7IHAgXHUwMDNjPSBBUlJBWV9TSVpFKGV0aC1cdTAwM2Vwb3J0cyk7IHAmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE4NDpcdFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19HRE1fRldEX0NGRyhwKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTg1LVx0XHRcdCAgICAgIEdETV9UQ1BfQ0tTVU1fTUFTSyB8IEdETV9VRFBfQ0tTVU1fTUFTSyB8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE4Ni1cdFx0XHQgICAgICBHRE1fSVA0X0NLU1VNX01BU0sgfCBHRE1fRFJPUF9DUkNfRVJSX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxODc6XHRcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfR0RNX0xFTl9DRkcocCksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE4OC1cdFx0XHQgICAgICBHRE1fU0hPUlRfTEVOX01BU0sgfCBHRE1fTE9OR19MRU5fTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTkzOlx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fVkxBTl9DVFJMKDEpLCBDRE1fVkxBTl9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xOTQtXHRcdCAgICAgIEZJRUxEX1BSRVAoQ0RNX1ZMQU5fTUFTSywgMHg4MTAwKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE5NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTk2Olx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9DUE9SVF9DRkcsIEZFX0NQT1JUX1BBRCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE5Ny19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE5OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTk5OnN0YXRpYyB2b2lkIGFpcm9oYV9mZV92aXBfc2V0dXAoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjAwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjAxOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDMpLCBFVEhfUF9QUFBfRElTQyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIwMjpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMyksIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9FTl9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjAzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMDQ6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oNCksIFBQUF9MQ1ApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMDU6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDQpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMDYtXHRcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBGSUVMRF9QUkVQKFBBVE5fVFlQRV9NQVNLLCAxKSB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIwOTpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTig2KSwgUFBQX0lQQ1ApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMTA6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDYpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMTEtXHRcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBGSUVMRF9QUkVQKFBBVE5fVFlQRV9NQVNLLCAxKSB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIxNDpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTig3KSwgUFBQX0NIQVApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMTU6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDcpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMTYtXHRcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBGSUVMRF9QUkVQKFBBVE5fVFlQRV9NQVNLLCAxKSB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMTktXHQvKiBCT09UUCAoMHg0MykgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjIwOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDgpLCAweDQzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjIxOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTig4KSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjIyLVx0XHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9TUF9FTl9NQVNLIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIyNS1cdC8qIEJPT1RQICgweDQ0KSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMjY6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oOSksIDB4NDQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMjc6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDkpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMjgtXHRcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX1NQX0VOX01BU0sgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjMxLVx0LyogSVNBS01QICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIzMjpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigxMCksIDB4MWY0MDFmNCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIzMzpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMTApLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMzQtXHRcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX0RQX0VOX01BU0sgfCBQQVROX1NQX0VOX01BU0sgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjM2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMzc6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oMTEpLCBQUFBfSVBWNkNQKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjM4Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTigxMSksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIzOS1cdFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IEZJRUxEX1BSRVAoUEFUTl9UWVBFX01BU0ssIDEpIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI0Mi1cdC8qIERIQ1B2NiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNDM6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oMTIpLCAweDIyMjAyMjMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNDQ6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDEyKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjQ1LVx0XHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9EUF9FTl9NQVNLIHwgUEFUTl9TUF9FTl9NQVNLIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjQ4Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDE5KSwgUFBQX1BBUCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI0OTpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMTkpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNTAtXHRcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBGSUVMRF9QUkVQKFBBVE5fVFlQRV9NQVNLLCAxKSB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNTMtXHQvKiBFVEgtXHUwMDNlRVRIX1BfMTkwNSAoMHg4OTNhKSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNTQ6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oMjApLCAweDg5M2EpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNTU6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDIwKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjU2LVx0XHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9FTl9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNTg6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oMjEpLCBFVEhfUF9MTERQKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjU5Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTigyMSksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2MC1cdFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IFBBVE5fRU5fTUFTSyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI2MzpzdGF0aWMgdTMyIGFpcm9oYV9mZV9nZXRfcHNlX3F1ZXVlX3Jzdl9wYWdlcyhzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNjQtXHRcdFx0XHRcdCAgICAgdTMyIHBvcnQsIHUzMiBxdWV1ZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjY1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjY2Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9QU0VfUVVFVUVfQ0ZHX1dSLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNjctXHRcdCAgICAgIFBTRV9DRkdfUE9SVF9JRF9NQVNLIHwgUFNFX0NGR19RVUVVRV9JRF9NQVNLLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjcwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNzE6XHRyZXR1cm4gYWlyb2hhX2ZlX2dldChldGgsIFJFR19GRV9QU0VfUVVFVUVfQ0ZHX1ZBTCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjcyLVx0XHRcdCAgICAgUFNFX0NGR19PUV9SU1ZfTUFTSyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI3NTpzdGF0aWMgdm9pZCBhaXJvaGFfZmVfc2V0X3BzZV9xdWV1ZV9yc3ZfcGFnZXMoc3RydWN0IGFpcm9oYV9ldGggKmV0aCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjc2LVx0XHRcdFx0XHQgICAgICB1MzIgcG9ydCwgdTMyIHF1ZXVlLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNzcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNzg6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX1BTRV9RVUVVRV9DRkdfVkFMLCBQU0VfQ0ZHX09RX1JTVl9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNzktXHRcdCAgICAgIEZJRUxEX1BSRVAoUFNFX0NGR19PUV9SU1ZfTUFTSywgdmFsKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI4MDpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfRkVfUFNFX1FVRVVFX0NGR19XUixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjgxLVx0XHQgICAgICBQU0VfQ0ZHX1BPUlRfSURfTUFTSyB8IFBTRV9DRkdfUVVFVUVfSURfTUFTSyB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI4ODpzdGF0aWMgdTMyIGFpcm9oYV9mZV9nZXRfcHNlX2FsbF9yc3Yoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjg5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjkwOlx0cmV0dXJuIGFpcm9oYV9mZV9nZXQoZXRoLCBSRUdfRkVfUFNFX0JVRl9TRVQsIFBTRV9BTExSU1ZfTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5MS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjkzOnN0YXRpYyBpbnQgYWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KHN0cnVjdCBhaXJvaGFfZXRoICpldGgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5NC1cdFx0XHRcdCAgICB1MzIgcG9ydCwgdTMyIHF1ZXVlLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yOTUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyOTY6XHR1MzIgb3JpZ192YWwgPSBhaXJvaGFfZmVfZ2V0X3BzZV9xdWV1ZV9yc3ZfcGFnZXMoZXRoLCBwb3J0LCBxdWV1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5Ny1cdHUzMiB0bXAsIGFsbF9yc3YsIGZxX2xpbWl0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yOTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI5OTpcdGFpcm9oYV9mZV9zZXRfcHNlX3F1ZXVlX3Jzdl9wYWdlcyhldGgsIHBvcnQsIHF1ZXVlLCB2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMwMS1cdC8qIG1vZGlmeSBhbGwgcnN2ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMwMjpcdGFsbF9yc3YgPSBhaXJvaGFfZmVfZ2V0X3BzZV9hbGxfcnN2KGV0aCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMwMy1cdGFsbF9yc3YgJiM0Mzs9ICh2YWwgLSBvcmlnX3ZhbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMwNDpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfRkVfUFNFX0JVRl9TRVQsIFBTRV9BTExSU1ZfTUFTSyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzA1LVx0XHQgICAgICBGSUVMRF9QUkVQKFBTRV9BTExSU1ZfTUFTSywgYWxsX3JzdikpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzA3LVx0LyogbW9kaWZ5IGh0aGQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzA4Olx0ZnFfbGltaXQgPSBhaXJvaGFfZmVfZ2V0KGV0aCwgUFNFX0ZRX0NGRywgUFNFX0ZRX0xJTUlUX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMDktXHR0bXAgPSBmcV9saW1pdCAtIGFsbF9yc3YgLSAweDIwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMTA6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX1BTRV9TSEFSRV9VU0VEX1RIRCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzExLVx0XHQgICAgICBQU0VfU0hBUkVfVVNFRF9IVEhEX01BU0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMTQtXHR0bXAgPSBmcV9saW1pdCAtIGFsbF9yc3YgLSAweDEwMDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzE1Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19QU0VfU0hBUkVfVVNFRF9USEQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxNi1cdFx0ICAgICAgUFNFX1NIQVJFX1VTRURfTVRIRF9NQVNLLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzE4LVx0dG1wID0gKDMgKiB0bXApIFx1MDAzZVx1MDAzZSAyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMTk6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX1BTRV9CVUZfU0VULFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMjAtXHRcdCAgICAgIFBTRV9TSEFSRV9VU0VEX0xUSERfTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMyNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzI2OnN0YXRpYyB2b2lkIGFpcm9oYV9mZV9wc2VfcG9ydHNfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMjcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNDM6XHRpZiAoYWlyb2hhX3BwZV9pc19lbmFibGVkKGV0aCwgMSkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQ0LVx0XHR1MzIgYWxsX3Jzdjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0Ni1cdFx0LyogaHcgbWlzc2VzIFBQRTIgb3EgcnN2ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM0NzpcdFx0YWxsX3JzdiA9IGFpcm9oYV9mZV9nZXRfcHNlX2FsbF9yc3YoZXRoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQ4LVx0XHRhbGxfcnN2ICYjNDM7PSBQU0VfUlNWX1BBR0VTICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQ5LVx0XHRcdCAgIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfUFBFMl07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM1MDpcdFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9QU0VfQlVGX1NFVCwgUFNFX0FMTFJTVl9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNTEtXHRcdFx0ICAgICAgRklFTERfUFJFUChQU0VfQUxMUlNWX01BU0ssIGFsbF9yc3YpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM1NS1cdGZvciAocSA9IDA7IHEgXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfQ0RNMV07IHEmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNTY6XHRcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0NETTEsIHEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM1Ny1cdFx0XHRcdFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzU5LVx0Zm9yIChxID0gMDsgcSBcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9HRE0xXTsgcSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM2MDpcdFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfR0RNMSwgcSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzYxLVx0XHRcdFx0XHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNjMtXHRmb3IgKHEgPSA2OyBxIFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0dETTJdOyBxJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzY0Olx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9HRE0yLCBxLCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzY1LVx0LyogR0RNMyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNjYtXHRmb3IgKHEgPSAwOyBxIFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0dETTNdOyBxJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzY3Olx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9HRE0zLCBxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNjgtXHRcdFx0XHRcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3MS1cdFx0aWYgKHEgXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfUFBFMV0gLyAyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNzI6XHRcdFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfUFBFMSwgcSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzczLVx0XHRcdFx0XHRcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzc0LVx0XHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM3NTpcdFx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9QUEUxLCBxLCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzc2LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzc4LVx0Zm9yIChxID0gMDsgcSBcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9DRE0yXTsgcSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM3OTpcdFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfQ0RNMiwgcSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzgwLVx0XHRcdFx0XHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zODItXHRmb3IgKHEgPSAwOyBxIFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0NETTNdIC0gMTsgcSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM4MzpcdFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfQ0RNMywgcSwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM4NC1cdC8qIENETTQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzg1LVx0Zm9yIChxID0gNDsgcSBcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9DRE00XTsgcSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM4NjpcdFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfQ0RNNCwgcSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzg3LVx0XHRcdFx0XHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM4ODpcdGlmIChhaXJvaGFfcHBlX2lzX2VuYWJsZWQoZXRoLCAxKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zODktXHRcdC8qIFBQRTIgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM5MS1cdFx0XHRpZiAocSBcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9QUEUyXSAvIDIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM5MjpcdFx0XHRcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX1BQRTIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM5My1cdFx0XHRcdFx0XHRcdCBxLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzk1LVx0XHRcdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mzk2Olx0XHRcdFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfUFBFMixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzk3LVx0XHRcdFx0XHRcdFx0IHEsIDApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDAxLVx0Zm9yIChxID0gMDsgcSBcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9HRE00XTsgcSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQwMjpcdFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfR0RNNCwgcSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDAzLVx0XHRcdFx0XHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MDUtXHRmb3IgKHEgPSAwOyBxIFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0NETTVdOyBxJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDA2Olx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9DRE01LCBxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MDctXHRcdFx0XHRcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQwOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDEwOnN0YXRpYyBpbnQgYWlyb2hhX2ZlX21jX3ZsYW5fY2xlYXIoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDExLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQxNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDE4Olx0XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfTUNfVkxBTl9EQVRBLCAweDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MjEtXHRcdCAgICAgIE1DX1ZMQU5fQ0ZHX1RBQkxFX1NFTF9NQVNLIHwgTUNfVkxBTl9DRkdfUldfTUFTSztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDIyOlx0XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfTUNfVkxBTl9DRkcsIHZhbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQyMzpcdFx0ZXJyID0gcmVhZF9wb2xsX3RpbWVvdXQoYWlyb2hhX2ZlX3JyLCB2YWwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQyNC1cdFx0XHRcdFx0dmFsIFx1MDAyNiBNQ19WTEFOX0NGR19DTURfRE9ORV9NQVNLLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDMwLVx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBBSVJPSEFfRkVfTUNfTUFYX1ZMQU5fUE9SVDsgaiYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDMxOlx0XHRcdGFpcm9oYV9mZV93cihldGgsIFJFR19NQ19WTEFOX0RBVEEsIDB4MCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQzMi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQzNS1cdFx0XHQgICAgICBNQ19WTEFOX0NGR19SV19NQVNLO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MzY6XHRcdFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX01DX1ZMQU5fQ0ZHLCB2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0Mzc6XHRcdFx0ZXJyID0gcmVhZF9wb2xsX3RpbWVvdXQoYWlyb2hhX2ZlX3JyLCB2YWwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQzOC1cdFx0XHRcdFx0XHR2YWwgXHUwMDI2IE1DX1ZMQU5fQ0ZHX0NNRF9ET05FX01BU0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ1MDpzdGF0aWMgdm9pZCBhaXJvaGFfZmVfY3Jzbl9xc2VsX2luaXQoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDUxLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDUyLVx0LyogQ0RNMV9DUlNOX1FTRUwgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDUzOlx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDEsIENSU05fMjIgXHUwMDNlXHUwMDNlIDIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NTQtXHRcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yMiksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NTYtXHRcdFx0XHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0NTc6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMSwgQ1JTTl8wOCBcdTAwM2VcdTAwM2UgMiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ1OC1cdFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzA4KSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ2MC1cdFx0XHRcdCBDRE1fQ1JTTl9RU0VMX1ExKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ2MTpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgxLCBDUlNOXzIxIFx1MDAzZVx1MDAzZSAyKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDYyLVx0XHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMjEpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDY0LVx0XHRcdFx0IENETV9DUlNOX1FTRUxfUTEpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDY1Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDEsIENSU05fMjQgXHUwMDNlXHUwMDNlIDIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NjYtXHRcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yNCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NjgtXHRcdFx0XHQgQ0RNX0NSU05fUVNFTF9RNikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0Njk6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMSwgQ1JTTl8yNSBcdTAwM2VcdTAwM2UgMiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ3MC1cdFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzI1KSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ3My1cdC8qIENETTJfQ1JTTl9RU0VMICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ3NDpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgyLCBDUlNOXzA4IFx1MDAzZVx1MDAzZSAyKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDc1LVx0XHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMDgpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDc3LVx0XHRcdFx0IENETV9DUlNOX1FTRUxfUTEpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDc4Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDIsIENSU05fMjEgXHUwMDNlXHUwMDNlIDIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NzktXHRcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yMSksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00ODEtXHRcdFx0XHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0ODI6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMiwgQ1JTTl8yMiBcdTAwM2VcdTAwM2UgMiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ4My1cdFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzIyKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ4NS1cdFx0XHRcdCBDRE1fQ1JTTl9RU0VMX1ExKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ4NjpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgyLCBDUlNOXzI0IFx1MDAzZVx1MDAzZSAyKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDg3LVx0XHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMjQpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDg5LVx0XHRcdFx0IENETV9DUlNOX1FTRUxfUTYpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDkwOlx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDIsIENSU05fMjUgXHUwMDNlXHUwMDNlIDIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00OTEtXHRcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yNSksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00OTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ5NjpzdGF0aWMgaW50IGFpcm9oYV9mZV9pbml0KHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ5Ny17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ5ODpcdGFpcm9oYV9mZV9tYWNjcl9pbml0KGV0aCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ5OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTAwLVx0LyogUFNFIElRIHJlc2VydmUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTAxOlx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19QU0VfSVFfUkVWMSwgUFNFX0lRX1JFUzFfUDJfTUFTSyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTAyLVx0XHQgICAgICBGSUVMRF9QUkVQKFBTRV9JUV9SRVMxX1AyX01BU0ssIDB4MTApKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTAzOlx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19QU0VfSVFfUkVWMixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTA0LVx0XHQgICAgICBQU0VfSVFfUkVTMl9QNV9NQVNLIHwgUFNFX0lRX1JFUzJfUDRfTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUwOC1cdC8qIGVuYWJsZSBGRSBjb3B5IGVuZ2luZSBmb3IgS0EvRFBJICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUwOTpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9QQ0VfQ0ZHLCBQQ0VfRFBJX0VOX01BU0sgfCBQQ0VfS0FfRU5fTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUxMC1cdC8qIHNldCB2aXAgcXVldWUgc2VsZWN0aW9uIHRvIHJpbmcgMSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MTE6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9GV0RfQ0ZHKDEpLCBDRE1fVklQX1FTRUxfTUFTSyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTEyLVx0XHQgICAgICBGSUVMRF9QUkVQKENETV9WSVBfUVNFTF9NQVNLLCAweDQpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTEzOlx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fRldEX0NGRygyKSwgQ0RNX1ZJUF9RU0VMX01BU0ssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUxNC1cdFx0ICAgICAgRklFTERfUFJFUChDRE1fVklQX1FTRUxfTUFTSywgMHg0KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUxNS1cdC8qIHNldCBHRE00IHNvdXJjZSBpbnRlcmZhY2Ugb2Zmc2V0IHRvIDggKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTE2Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19HRE1fU1JDX1BPUlRfU0VUKDQpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MTctXHRcdCAgICAgIEdETV9TUE9SVF9PRkYyX01BU0sgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTI0LVx0Lyogc2V0IFBTRSBQYWdlIGFzIDEyOEIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTI1Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9ETUFfR0xPX0NGRyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTI2LVx0XHQgICAgICBGRV9ETUFfR0xPX0wyX1NQQUNFX01BU0sgfCBGRV9ETUFfR0xPX1BHX1NaX01BU0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MjgtXHRcdCAgICAgIEZFX0RNQV9HTE9fUEdfU1pfTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUyOTpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9SU1RfR0xPX0NGRyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTMwLVx0XHQgICAgIEZFX1JTVF9DT1JFX01BU0sgfCBGRV9SU1RfR0RNM19NQklfQVJCX01BU0sgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTM2LVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUzNzpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9DRE0xX09RX01BUDAsIEJJVCg0KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUzODpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9DRE0xX09RX01BUDEsIEJJVCgyOCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1Mzk6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfQ0RNMV9PUV9NQVAyLCBCSVQoNCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NDA6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfQ0RNMV9PUV9NQVAzLCBCSVQoMjgpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTQxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NDI6XHRhaXJvaGFfZmVfdmlwX3NldHVwKGV0aCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU0MzpcdGFpcm9oYV9mZV9wc2VfcG9ydHNfaW5pdChldGgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU0NTpcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfR0RNX01JU0NfQ0ZHLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NDYtXHRcdCAgICAgIEdETTJfUkRNX0FDS19XQUlUX1BSRUZfTUFTSyB8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU0Ny1cdFx0ICAgICAgR0RNMl9DSE5fVkxEX01PREVfTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU0ODpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0ZXRF9DRkcoMiksIENETV9PQU1fUVNFTF9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NDktXHRcdCAgICAgIEZJRUxEX1BSRVAoQ0RNX09BTV9RU0VMX01BU0ssIDE1KSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NTItXHQvKiBOUFUgQ29yZS0zLCBOUFUgQnJpZGdlIENoYW5uZWwtMyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NTM6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0lQX0ZSQUdfRlAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU1NC1cdFx0ICAgICAgSVBfRlJBR01FTlRfUE9SVF9NQVNLIHwgSVBfRlJBR01FTlRfTkJRX01BU0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NTctXHQvKiBRRE1BIExBTiwgUlggUmluZy0yMiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NTg6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0lQX0ZSQUdfRlAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU1OS1cdFx0ICAgICAgSVBfQVNTRU1CTEVfUE9SVF9NQVNLIHwgSVBfQVNTRU1CTEVfTkJRX01BU0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU2MzpcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfR0RNX0ZXRF9DRkcoQUlST0hBX0dETTNfSURYKSwgR0RNX1BBRF9FTl9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTY0Olx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19HRE1fRldEX0NGRyhBSVJPSEFfR0RNNF9JRFgpLCBHRE1fUEFEX0VOX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2Ni1cdC8qIEVuYWJsZSBzcGxpdCBmb3IgTUlCIGNvdW50ZXJzIGZvciBHRE0zIGFuZCBHRE00ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU2NzpcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfRkVfR0RNX01JQl9DRkcoQUlST0hBX0dETTNfSURYKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTY4LVx0XHQgICAgICBGRV9HRE1fVFhfTUlCX1NQTElUX0VOX01BU0sgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NjktXHRcdCAgICAgIEZFX0dETV9SWF9NSUJfU1BMSVRfRU5fTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU3MDpcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfRkVfR0RNX01JQl9DRkcoQUlST0hBX0dETTRfSURYKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTcxLVx0XHQgICAgICBGRV9HRE1fVFhfTUlCX1NQTElUX0VOX01BU0sgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTczLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NzQ6XHRhaXJvaGFfZmVfY3Jzbl9xc2VsX2luaXQoZXRoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NzY6XHRhaXJvaGFfZmVfY2xlYXIoZXRoLCBSRUdfRkVfQ1BPUlRfQ0ZHLCBGRV9DUE9SVF9RVUVVRV9YRkNfTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU3NzpcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfRkVfQ1BPUlRfQ0ZHLCBGRV9DUE9SVF9QT1JUX1hGQ19NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NzktXHQvKiBkZWZhdWx0IGFnaW5nIG1vZGUgZm9yIG1iaSB1bmxvY2sgaXNzdWUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTgwOlx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19HRE1fQ0hOX1JMUygyKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTgxLVx0XHQgICAgICBNQklfUlhfQUdFX1NFTF9NQVNLIHwgTUJJX1RYX0FHRV9TRUxfTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU4NS1cdC8qIGRpc2FibGUgSUZDIGJ5IGRlZmF1bHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTg2Olx0YWlyb2hhX2ZlX2NsZWFyKGV0aCwgUkVHX0ZFX0NTUl9JRkNfQ0ZHLCBGRV9JRkNfRU5fTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU4Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTg4LVx0LyogZW5hYmxlIDE6TiB2bGFuIGFjdGlvbiwgaW5pdCB2bGFuIHRhYmxlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU4OTpcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfTUNfVkxBTl9FTiwgTUNfVkxBTl9FTl9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTkwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1OTE6XHRyZXR1cm4gYWlyb2hhX2ZlX21jX3ZsYW5fY2xlYXIoZXRoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTkyLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTkzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1OTQ6c3RhdGljIGludCBhaXJvaGFfcWRtYV9maWxsX3J4X3F1ZXVlKHN0cnVjdCBhaXJvaGFfcXVldWUgKnEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU5NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU5NjpcdHN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYSA9IHEtXHUwMDNlcWRtYTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTk3LVx0aW50IHFpZCA9IHEgLSBcdTAwMjZxZG1hLVx1MDAzZXFfcnhbMF07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02MDAtXHR3aGlsZSAocS1cdTAwM2VxdWV1ZWQgXHUwMDNjIHEtXHUwMDNlbmRlc2MgLSAxKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjYwMTpcdFx0c3RydWN0IGFpcm9oYV9xdWV1ZV9lbnRyeSAqZSA9IFx1MDAyNnEtXHUwMDNlZW50cnlbcS1cdTAwM2VoZWFkXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjAyOlx0XHRzdHJ1Y3QgYWlyb2hhX3FkbWFfZGVzYyAqZGVzYyA9IFx1MDAyNnEtXHUwMDNlZGVzY1txLVx1MDAzZWhlYWRdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02MDMtXHRcdHN0cnVjdCBwYWdlICpwYWdlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjMyLVx0aWYgKG5mcmFtZXMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjYzMzpcdFx0YWlyb2hhX3FkbWFfcm13KHFkbWEsIFJFR19SWF9DUFVfSURYKHFpZCksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTYzNC1cdFx0XHRcdFJYX1JJTkdfQ1BVX0lEWF9NQVNLLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjM5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2NDA6c3RhdGljIHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY0MTphaXJvaGFfcWRtYV9nZXRfZ2RtX2RldihzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoLCBzdHJ1Y3QgYWlyb2hhX3FkbWFfZGVzYyAqZGVzYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjQyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjQzOlx0c3RydWN0IGFpcm9oYV9nZG1fcG9ydCAqcG9ydDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjQ0LVx0dTE2IHAsIGQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NzEtICogd2FpdGluZyBvbiwgd2FzIG5ldmVyIG1hcmtlZCBET05FLiBUaGlzIGhhcHBlbnMgd2hlbiBodyB3cml0ZXMgYVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2NzI6ICogY29tcGxldGVkIGRlc2NyaXB0b3IgcGFzdCBxLVx1MDAzZWhlYWQgYmVmb3JlIGFpcm9oYV9xZG1hX2ZpbGxfcnhfcXVldWUoKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NzMtICogaGFzIHBvc3RlZCBhIGZyZXNoIGJ1ZmZlciB0aGVyZSwgZGVjb3VwbGVkIGZyb20gc3cmIzM5O3Mgb3duIHBvc3Rpbmdcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY4My0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Njg0OnN0YXRpYyB2b2lkIGFpcm9oYV9xZG1hX3J4X2NoZWNrX3N0YWxsKHN0cnVjdCBhaXJvaGFfcXVldWUgKnEpXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAwODozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzU0NQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O2QgYXBwcm9hY2ggdGhpcyB0YXNrLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIEFpcm9oYSBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpSaWdodCwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhpcyBBaXJvaGEgRXRoZXJuZXQgZHJpdmVyLiBNeSBmaXJzdCBwb3J0IG9mIGNhbGwgd2lsbCBiZSB0aGUgYEtjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSB0aGUgb25lIGxvY2F0ZWQgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIGdvb2Qgc3R1ZmYgaXMgZGVmaW5lZCDigJMgZGVwZW5kZW5jaWVzLCBhbnkgYXJjaGl0ZWN0dXJhbCBjb25zdHJhaW50cywgYW5kIGFueSBwbGF0Zm9ybS1zcGVjaWZpYyByZXF1aXJlbWVudHMuIEJ5IGV4YW1pbmluZyB0aGlzIGZpbGUsIEkgY2FuIHF1aWNrbHkgZ3Jhc3Agd2hhdCBuZWVkcyB0byBiZSBlbmFibGVkLCB3aGF0IG90aGVyIGNvbXBvbmVudHMgaXQgcmVsaWVzIG9uLCBhbmQgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBoYXJkd2FyZSBjb25kaXRpb25zIGl0IGV4cGVjdHMgdG8gZmluZC4gVW5kZXJzdGFuZGluZyB0aGVzZSBkZXBlbmRlbmNpZXMgYW5kIGNvbnN0cmFpbnRzIGlzIGNydWNpYWwgYmVmb3JlIEkgY2FuIGV2ZW4gc3RhcnQgdGhpbmtpbmcgYWJvdXQgaW50ZWdyYXRpb24gb3IgbW9kaWZpY2F0aW9uLiBFc3NlbnRpYWxseSwgdGhpcyBpcyB0aGUga2V5IHRvIHVubG9ja2luZyBob3cgdGhpcyBkcml2ZXIgKmZpdHMqIGludG8gdGhlIGJpZ2dlciBwaWN0dXJlIG9mIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbS4gSSBuZWVkIHRvIHNlZSB3aGF0JiMzOTtzIHdoYXQgYmVmb3JlIG1vdmluZyBmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDA4OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgTkVUX1ZFTkRPUl9BSVJPSEFcbiAgIDM6XHRcdGJvb2wgXCYjMzQ7QWlyb2hhIGRldmljZXNcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gQVJDSF9BSVJPSEEgfHwgQ09NUElMRV9URVNUXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIElmIHlvdSBoYXZlIGEgQWlyb2hhIFNvQyB3aXRoIGV0aGVybmV0LCBzYXkgWS5cbiAgIDc6XHRcbiAgIDg6XHRpZiBORVRfVkVORE9SX0FJUk9IQVxuICAgOTpcdFxuICAxMDpcdGNvbmZpZyBORVRfQUlST0hBX05QVVxuICAxMTpcdFx0dHJpc3RhdGUgXCYjMzQ7QWlyb2hhIE5QVSBzdXBwb3J0XCYjMzQ7XG4gIDEyOlx0XHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcbiAgMTM6XHRcdHNlbGVjdCBSRUdNQVBfTU1JT1xuICAxNDpcdFx0aGVscFxuICAxNTpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBBaXJvaGEgTmV0d29yayBQcm9jZXNzb3IgKE5QVSkgYXZhaWxhYmxlXG4gIDE2Olx0XHQgIG9uIHRoZSBBaXJvaGEgU29jIGZhbWlseS5cbiAgMTc6XHRcbiAgMTg6XHRjb25maWcgTkVUX0FJUk9IQVxuICAxOTpcdFx0dHJpc3RhdGUgXCYjMzQ7QWlyb2hhIFNvQyBHaWdhYml0IEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbiAgMjA6XHRcdGRlcGVuZHMgb24gTkVUX0RTQSB8fCAhTkVUX0RTQVxuICAyMTpcdFx0c2VsZWN0IE5FVF9BSVJPSEFfTlBVXG4gIDIyOlx0XHRzZWxlY3QgUEFHRV9QT09MXG4gIDIzOlx0XHRoZWxwXG4gIDI0Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBnaWdhYml0IGV0aGVybmV0IE1BQ3MgaW4gdGhlXG4gIDI1Olx0XHQgIEFpcm9oYSBTb0MgZmFtaWx5LlxuICAyNjpcdFxuICAyNzpcdGNvbmZpZyBORVRfQUlST0hBX0ZMT1dfU1RBVFNcbiAgMjg6XHRcdGRlZmF1bHQgeVxuICAyOTpcdFx0Ym9vbCBcJiMzNDtBaXJvaGEgZmxvdyBzdGF0c1wmIzM0O1xuICAzMDpcdFx0ZGVwZW5kcyBvbiBORVRfQUlST0hBIFx1MDAyNlx1MDAyNiBORVRfQUlST0hBX05QVVxuICAzMTpcdFx0aGVscFxuICAzMjpcdFx0ICBFbmFibGUgQWlyb2hhIGZsb3d0YWJsZSBzdGF0aXN0aWMgY291bnRlcnMuXG4gIDMzOlx0XG4gIDM0Olx0ZW5kaWYgI05FVF9WRU5ET1JfQUlST0hBXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMDg6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjRtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQyNjkKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiA2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5FVF9BSVJPSEEgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgTkVUX0FJUk9IQWAgZHJpdmVyLiBJdCYjMzk7cyBhbiBFdGhlcm5ldCBTb0MgZHJpdmVyIHNwZWNpZmljYWxseSBmb3IgQWlyb2hhIFNvQ3MsIHdoaWNoIG1ha2VzIGltbWVkaWF0ZSBzZW5zZSBnaXZlbiB0aGUgbmFtZS4gVGhlIGBkZXBlbmRzIG9uIEFSQ0hfQUlST0hBIHx8IENPTVBJTEVfVEVTVGAgY29uZGl0aW9uIGlzIGZhaXJseSBzdHJhaWdodGZvcndhcmQsIGxpa2VseSBpbmRpY2F0aW5nIGl0IGVpdGhlciB0YXJnZXRzIHRoZSBBaXJvaGEgYXJjaGl0ZWN0dXJlIG9yIGlzIGVuYWJsZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMgZHVyaW5nIHRoZSBidWlsZC4KCk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IEhvdyBpcyB0aGlzIGRyaXZlciBpbnRlZ3JhdGVkPyBJcyBpdCBhIHBsYXRmb3JtIGRldmljZSBkcml2ZXIgcnVubmluZyBvbiB0aGUgU29DIGl0c2VsZj8gVG8gdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IsIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGUgYGFpcm9oYV9ldGguY2Agc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSB0aGUgcHJvYmUgZnVuY3Rpb24gYW5kIHRoZSBkZXZpY2UgbWF0Y2hpbmcgbG9naWMuIFRob3NlIGFyZSB0aGUgdGVsbC10YWxlIHNpZ25zIG9mIGhvdyB0aGUga2VybmVsIGlkZW50aWZpZXMgYW5kIGluaXRpYWxpemVzIHRoZSBoYXJkd2FyZSBpdCBjb250cm9scy4gSSYjMzk7bGwgbmVlZCB0byBzZWUgaG93IHRoZSBkcml2ZXIgaXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBwbGF0Zm9ybSB0byBkZXRlcm1pbmUgaWYgdGhlIGRldmljZSBpcyBmb3VuZCBhbmQsIGFzIHN1Y2gsIGlmIG15IHBsYXRmb3JtIGlzIGNvcnJlY3RseSBzdXBwb3J0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMDg6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWlyb2hhX3Byb2JlfGFpcm9oYV9kcml2ZXJ8bW9kdWxlX3BsYXRmb3JtX2RyaXZlcnxwbGF0Zm9ybV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYz0zNzU1PXN0YXRpYyBpbnQgYWlyb2hhX3JlZ2lzdGVyX2dkbV9kZXZpY2VzKHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNzgzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNzg0OnN0YXRpYyBpbnQgYWlyb2hhX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3ODUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM9NDE0Nz1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBvZl9haXJvaGFfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MTQ4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MTQ5OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGFpcm9oYV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQxNTA6XHQucHJvYmUgPSBhaXJvaGFfcHJvYmUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQxNTEtXHQucmVtb3ZlID0gYWlyb2hhX3JlbW92ZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQxNTYtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDE1Nzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGFpcm9oYV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MTU4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM9ODA2PXN0YXRpYyB2b2lkIGFpcm9oYV9ucHVfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy04MTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjgxNTpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBhaXJvaGFfbnB1X2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtODE2LVx0LnByb2JlID0gYWlyb2hhX25wdV9wcm9iZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTgyMi19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo4MjM6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihhaXJvaGFfbnB1X2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTgyNC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAwODozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTIwNQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyB0aGUgYWlyb2hhX3Byb2JlKioKCk9rYXksIHNvIEkgbmVlZCB0byBkaWcgaW50byB0aGUgYGFpcm9oYV9wcm9iZWAgZnVuY3Rpb24uIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGhvdyBkb2VzIHRoaXMgdGhpbmcgb3BlcmF0ZT8gV2hhdCBzcGVjaWZpYyBoYXJkd2FyZSByZXNvdXJjZXMgYW5kIERldmljZSBUcmVlIG5vZGVzIGRvZXMgaXQgbmVlZCB0byBzdWNjZXNzZnVsbHkgZnVuY3Rpb24/IFVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcyBpcyBjcml0aWNhbCBmb3IgdHJvdWJsZXNob290aW5nLCBkZWJ1Z2dpbmcsIG9yIGV2ZW4ganVzdCBtb2RpZnlpbmcgaXRzIGJlaGF2aW9yLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc2NvcGUgYW5kIHRoZSBrZXkgaW50ZXJmYWNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMDg6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzc4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszNzgwOlx0XG4zNzgxOlx0XHRyZXR1cm4gMDtcbjM3ODI6XHR9XG4zNzgzOlx0XG4zNzg0Olx0c3RhdGljIGludCBhaXJvaGFfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbjM3ODU6XHR7XG4zNzg2Olx0XHRzdHJ1Y3QgcmVzZXRfY29udHJvbF9idWxrX2RhdGEgKnhzaV9yc3RzO1xuMzc4NzpcdFx0c3RydWN0IGRldmljZV9ub2RlICpucDtcbjM3ODg6XHRcdHN0cnVjdCBhaXJvaGFfZXRoICpldGg7XG4zNzg5Olx0XHRpbnQgaSwgZXJyO1xuMzc5MDpcdFxuMzc5MTpcdFx0ZXRoID0gZGV2bV9remFsbG9jKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBzaXplb2YoKmV0aCksIEdGUF9LRVJORUwpO1xuMzc5MjpcdFx0aWYgKCFldGgpXG4zNzkzOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuMzc5NDpcdFxuMzc5NTpcdFx0ZXRoLVx1MDAzZXNvYyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG4zNzk2Olx0XHRpZiAoIWV0aC1cdTAwM2Vzb2MpXG4zNzk3Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuMzc5ODpcdFxuMzc5OTpcdFx0ZXRoLVx1MDAzZWRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuMzgwMDpcdFxuMzgwMTpcdFx0ZXJyID0gZG1hX3NldF9tYXNrX2FuZF9jb2hlcmVudChldGgtXHUwMDNlZGV2LCBETUFfQklUX01BU0soMzIpKTtcbjM4MDI6XHRcdGlmIChlcnIpIHtcbjM4MDM6XHRcdFx0ZGV2X2VycihldGgtXHUwMDNlZGV2LCBcJiMzNDtmYWlsZWQgY29uZmlndXJpbmcgRE1BIG1hc2tcXG5cJiMzNDspO1xuMzgwNDpcdFx0XHRyZXR1cm4gZXJyO1xuMzgwNTpcdFx0fVxuMzgwNjpcdFxuMzgwNzpcdFx0ZXRoLVx1MDAzZWZlX3JlZ3MgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2VfYnluYW1lKHBkZXYsIFwmIzM0O2ZlXCYjMzQ7KTtcbjM4MDg6XHRcdGlmIChJU19FUlIoZXRoLVx1MDAzZWZlX3JlZ3MpKVxuMzgwOTpcdFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShldGgtXHUwMDNlZGV2LCBQVFJfRVJSKGV0aC1cdTAwM2VmZV9yZWdzKSxcbjM4MTA6XHRcdFx0XHRcdCAgICAgXCYjMzQ7ZmFpbGVkIHRvIGlvbWFwIGZlIHJlZ3NcXG5cJiMzNDspO1xuMzgxMTpcdFxuMzgxMjpcdFx0ZXRoLVx1MDAzZXJzdHNbMF0uaWQgPSBcJiMzNDtmZVwmIzM0OztcbjM4MTM6XHRcdGV0aC1cdTAwM2Vyc3RzWzFdLmlkID0gXCYjMzQ7cGRtYVwmIzM0OztcbjM4MTQ6XHRcdGV0aC1cdTAwM2Vyc3RzWzJdLmlkID0gXCYjMzQ7cWRtYVwmIzM0OztcbjM4MTU6XHRcdGVyciA9IGRldm1fcmVzZXRfY29udHJvbF9idWxrX2dldF9leGNsdXNpdmUoZXRoLVx1MDAzZWRldixcbjM4MTY6XHRcdFx0XHRcdFx0XHQgICAgQVJSQVlfU0laRShldGgtXHUwMDNlcnN0cyksXG4zODE3Olx0XHRcdFx0XHRcdFx0ICAgIGV0aC1cdTAwM2Vyc3RzKTtcbjM4MTg6XHRcdGlmIChlcnIpIHtcbjM4MTk6XHRcdFx0ZGV2X2VycihldGgtXHUwMDNlZGV2LCBcJiMzNDtmYWlsZWQgdG8gZ2V0IGJ1bGsgcmVzZXQgbGluZXNcXG5cJiMzNDspO1xuMzgyMDpcdFx0XHRyZXR1cm4gZXJyO1xuMzgyMTpcdFx0fVxuMzgyMjpcdFxuMzgyMzpcdFx0eHNpX3JzdHMgPSBkZXZtX2tjYWxsb2MoZXRoLVx1MDAzZWRldixcbjM4MjQ6XHRcdFx0XHRcdGV0aC1cdTAwM2Vzb2MtXHUwMDNlbnVtX3hzaV9yc3RzLCBzaXplb2YoKnhzaV9yc3RzKSxcbjM4MjU6XHRcdFx0XHRcdEdGUF9LRVJORUwpO1xuMzgyNjpcdFx0aWYgKCF4c2lfcnN0cylcbjM4Mjc6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4zODI4Olx0XG4zODI5Olx0XHRldGgtXHUwMDNleHNpX3JzdHMgPSB4c2lfcnN0cztcbjM4MzA6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGV0aC1cdTAwM2Vzb2MtXHUwMDNlbnVtX3hzaV9yc3RzOyBpJiM0MzsmIzQzOylcbjM4MzE6XHRcdFx0ZXRoLVx1MDAzZXhzaV9yc3RzW2ldLmlkID0gZXRoLVx1MDAzZXNvYy1cdTAwM2V4c2lfcnN0c19uYW1lc1tpXTtcbjM4MzI6XHRcbjM4MzM6XHRcdGVyciA9IGRldm1fcmVzZXRfY29udHJvbF9idWxrX2dldF9leGNsdXNpdmUoZXRoLVx1MDAzZWRldixcbjM4MzQ6XHRcdFx0XHRcdFx0XHQgICAgZXRoLVx1MDAzZXNvYy1cdTAwM2VudW1feHNpX3JzdHMsXG4zODM1Olx0XHRcdFx0XHRcdFx0ICAgIGV0aC1cdTAwM2V4c2lfcnN0cyk7XG4zODM2Olx0XHRpZiAoZXJyKSB7XG4zODM3Olx0XHRcdGRldl9lcnIoZXRoLVx1MDAzZWRldiwgXCYjMzQ7ZmFpbGVkIHRvIGdldCBidWxrIHhzaSByZXNldCBsaW5lc1xcblwmIzM0Oyk7XG4zODM4Olx0XHRcdHJldHVybiBlcnI7XG4zODM5Olx0XHR9XG4zODQwOlx0XG4zODQxOlx0XHRldGgtXHUwMDNlbmFwaV9kZXYgPSBhbGxvY19uZXRkZXZfZHVtbXkoMCk7XG4zODQyOlx0XHRpZiAoIWV0aC1cdTAwM2VuYXBpX2RldilcbjM4NDM6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4zODQ0Olx0XG4zODQ1Olx0XHQvKiBFbmFibGUgdGhyZWFkZWQgTkFQSSBieSBkZWZhdWx0ICovXG4zODQ2Olx0XHRldGgtXHUwMDNlbmFwaV9kZXYtXHUwMDNldGhyZWFkZWQgPSB0cnVlO1xuMzg0NzpcdFx0c3Ryc2NweShldGgtXHUwMDNlbmFwaV9kZXYtXHUwMDNlbmFtZSwgXCYjMzQ7cWRtYV9ldGhcJiMzNDssIHNpemVvZihldGgtXHUwMDNlbmFwaV9kZXYtXHUwMDNlbmFtZSkpO1xuMzg0ODpcdFx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgZXRoKTtcbjM4NDk6XHRcbjM4NTA6XHRcdGVyciA9IGFpcm9oYV9od19pbml0KHBkZXYsIGV0aCk7XG4zODUxOlx0XHRpZiAoZXJyKVxuMzg1MjpcdFx0XHRnb3RvIGVycm9yX25ldGRldl9mcmVlO1xuMzg1MzpcdFxuMzg1NDpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShldGgtXHUwMDNlcWRtYSk7IGkmIzQzOyYjNDM7KSB7XG4zODU1Olx0XHRcdGFpcm9oYV9xZG1hX3N0YXJ0X25hcGkoXHUwMDI2ZXRoLVx1MDAzZXFkbWFbaV0pO1xuMzg1NjpcdFx0XHRhaXJvaGFfcWRtYV9zZXQoXHUwMDI2ZXRoLVx1MDAzZXFkbWFbaV0sIFJFR19RRE1BX0dMT0JBTF9DRkcsXG4zODU3Olx0XHRcdFx0XHRHTE9CQUxfQ0ZHX1RYX0RNQV9FTl9NQVNLIHxcbjM4NTg6XHRcdFx0XHRcdEdMT0JBTF9DRkdfUlhfRE1BX0VOX01BU0spO1xuMzg1OTpcdFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAwODozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjY3MwoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyB0aGUgYGFpcm9oYV9wcm9iZWAgRnVuY3Rpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBhaXJvaGFfcHJvYmVgLiBUaGUgbmFtZSBpdHNlbGYgc3VnZ2VzdHMgaXQmIzM5O3MgYSBwcm9iZSBmdW5jdGlvbiwgbGlrZWx5IGFzc29jaWF0ZWQgd2l0aCBhbiBTb0MgcGxhdGZvcm0gZHJpdmVyLCBhbmQganVkZ2luZyBieSB0aGUgYGFpcm9oYWAgcHJlZml4LCBpdCYjMzk7cyBzcGVjaWZpYyB0byB0aGF0IHZlbmRvciYjMzk7cyBoYXJkd2FyZS4gVGhlIGNsdWUgdGhhdCBjZW1lbnRzIHRoaXMgaXMgdGhlIE9GIGRldmljZSB0cmVlIG1hdGNoLCBgb2ZfYWlyb2hhX21hdGNoYC4gVGhhdCB0ZWxscyBtZSBpdCYjMzk7cyB1c2luZyB0aGUgT3BlbiBGaXJtd2FyZSBkZXZpY2UgdHJlZSB0byBpZGVudGlmeSBhbmQgY29uZmlndXJlIHNwZWNpZmljIEFpcm9oYSBoYXJkd2FyZSB3aXRoaW4gYSBsYXJnZXIgc3lzdGVtLiBJIG5lZWQgdG8gZm9jdXMgb24gd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMuIEkmIzM5O2xsIGp1bXAgZGlyZWN0bHkgdG8gbGluZXMgNDE0MC00MTUwIHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiBUaGF0JiMzOTtzIHVzdWFsbHkgd2hlcmUgdGhlIG1lYXQgb2YgdGhlIGRyaXZlciBpbnRlcmFjdGlvbiB3aXRoIHRoZSBoYXJkd2FyZSBiZWdpbnMuIEnigJltIGV4cGVjdGluZyB0byBzZWUgdGhpbmdzIGxpa2UgcmVzb3VyY2UgcmVxdWVzdHMgKG1lbW9yeSByZWdpb25zLCBJUlFzKSwgaW5pdGlhbGl6YXRpb25zLCBhbmQgcG90ZW50aWFsbHkgc29tZSBkZXZpY2Utc3BlY2lmaWMgc2V0dXAgb3IgY29uZmlndXJhdGlvbiBiYXNlZCBvbiB0aGUgZGV2aWNlIHRyZWUgZGF0YS4gSSYjMzk7bSBrZWVuIHRvIHNlZSB0aGUgYXBwcm9hY2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDA4OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQxMzUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NDEzNTpcdFx0Lm9wcyA9IHtcbjQxMzY6XHRcdFx0LmdldF9zcG9ydCA9IGFpcm9oYV9hbjc1ODNfZ2V0X3Nwb3J0LFxuNDEzNzpcdFx0XHQuZ2V0X3ZpcF9wb3J0ID0gYWlyb2hhX2FuNzU4M19nZXRfdmlwX3BvcnQsXG40MTM4Olx0XHRcdC5nZXRfZGV2X2Zyb21fc3BvcnQgPSBhaXJvaGFfYW43NTgzX2dldF9kZXZfZnJvbV9zcG9ydCxcbjQxMzk6XHRcdH0sXG40MTQwOlx0fTtcbjQxNDE6XHRcbjQxNDI6XHRzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9haXJvaGFfbWF0Y2hbXSA9IHtcbjQxNDM6XHRcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDthaXJvaGEsZW43NTgxLWV0aFwmIzM0OywgLmRhdGEgPSBcdTAwMjZlbjc1ODFfc29jX2RhdGEgfSxcbjQxNDQ6XHRcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDthaXJvaGEsYW43NTgzLWV0aFwmIzM0OywgLmRhdGEgPSBcdTAwMjZhbjc1ODNfc29jX2RhdGEgfSxcbjQxNDU6XHRcdHsgLyogc2VudGluZWwgKi8gfVxuNDE0NjpcdH07XG40MTQ3Olx0TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgb2ZfYWlyb2hhX21hdGNoKTtcbjQxNDg6XHRcbjQxNDk6XHRzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBhaXJvaGFfZHJpdmVyID0ge1xuNDE1MDpcdFx0LnByb2JlID0gYWlyb2hhX3Byb2JlLFxuNDE1MTpcdFx0LnJlbW92ZSA9IGFpcm9oYV9yZW1vdmUsXG40MTUyOlx0XHQuZHJpdmVyID0ge1xuNDE1MzpcdFx0XHQubmFtZSA9IEtCVUlMRF9NT0ROQU1FLFxuNDE1NDpcdFx0XHQub2ZfbWF0Y2hfdGFibGUgPSBvZl9haXJvaGFfbWF0Y2gsXG40MTU1Olx0XHR9LFxuNDE1NjpcdH07XG40MTU3Olx0bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihhaXJvaGFfZHJpdmVyKTtcbjQxNTg6XHRcbjQxNTk6XHRNT0RVTEVfTElDRU5TRShcJiMzNDtHUEwgdjJcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAwODozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzQyMQoJCQkJCQkJb3V0cHV0OiAxMjQKCQkJCQkJCXRob3VnaHRzOiA4MTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQSBEZWVwIERpdmUgaW50byBWaXJ0dWFsaXplZCBSZWFjaGFiaWxpdHkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBkcml2ZXIsIGBhaXJvaGFfZXRoYCwgaXMgYSBuby1nbyBmb3IgZnV6emluZyBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZSBjb3JlIG9mIG15IGFuYWx5c2lzIHJldm9sdmVzIGFyb3VuZCBpdHMgZnVuZGFtZW50YWwgZGVwZW5kZW5jeSBvbiB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSDigJMgc3BlY2lmaWNhbGx5LCB0aGUgQWlyb2hhIEVONzU4MS9BTjc1ODMgU29DIGV0aGVybmV0IGNvbnRyb2xsZXIuIFRoaXMgaXNuJiMzOTt0IGp1c3QgYSBnZW5lcmljIG5ldHdvcmsgZGV2aWNlOyBpdCYjMzk7cyBpbnRyaWNhdGVseSB0aWVkIHRvIGEgc3BlY2lmaWMgU3lzdGVtIG9uIGEgQ2hpcCwgYW5kIHRoYXTigJlzIHRoZSBmaXJzdCByZWQgZmxhZy4KClRoZSBjb2RlIGl0c2VsZiwgYXMgSSB1bmRlcnN0YW5kIGl0LCByZWxpZXMgaGVhdmlseSBvbiBEZXZpY2UgVHJlZSAoRFQpIG5vZGVzIChgYWlyb2hhLGVuNzU4MS1ldGhgLCBldGMuKSBhbmQgdGhlIGFzc29jaWF0ZWQgTU1JTyByZWdpc3RlcnMgKCYjMzQ7ZmUmIzM0OywgJiMzNDtxZG1hJiMzNDssIGV0Yy4pLiBTdGFuZGFyZCBRRU1VLCB0aGUgdXN1YWwgd29ya2hvcnNlIGZvciBmdXp6aW5nLCBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoaXMgQWlyb2hhIGhhcmR3YXJlLCBhbmQgbmVpdGhlciBkb2VzIEdDRS4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYSBwbGF0Zm9ybSBkcml2ZXIgaGVyZSwgaW5zdGFudGlhdGVkIG9ubHkgdmlhIHRoZSBEZXZpY2UgVHJlZSBvbiB0aGVzZSBBaXJvaGEgU29Dcy4gSXQgbmVlZHMgdmVyeSBzcGVjaWZpYyBoYXJkd2FyZSBjb250ZXh0IHRvIGV2ZW4gKnByb2JlKi4gTm8gZW11bGF0aW9uLCBubyBkZXZpY2UgdHJlZSwgbm8gYWNjZXNzLgoKTGV0JiMzOTtzIGNhcmVmdWxseSBleGFtaW5lIHRoZSBpbnN0cnVjdGlvbnMgYWdhaW4uIEFoLCB5ZXMsIHRoZXJlJiMzOTtzIHRoZSByZWxldmFudCBjbGF1c2UgYWJvdXQgY29kZSBwYXRocyB0aGF0IGFyZSBpbmhlcmVudGx5IHVucmVhY2hhYmxlIGluIFFFTVUvR0NFLCBldmVuIHdpdGggc29mdHdhcmUgZW11bGF0aW9uLiBWZW5kb3Itc3BlY2lmaWMgZHJpdmVycywgUENJZSwgU21hcnROSUNzLCBHUFVz4oCUYWxsIHJlcXVpcmUgdGhhdCBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IHdlIGxhY2suICpUaGlzKiBkZWZpbml0ZWx5IGZhbGxzIGludG8gdGhhdCBjYXRlZ29yeS4gVGhlIGBhaXJvaGFfZXRoYCBkcml2ZXIgaXMgYSAqcGxhdGZvcm0qIGRyaXZlciB0aGF0IGlzIGVudGlyZWx5IGRlcGVuZGVudCBvbiB0aGlzIEFpcm9oYSBTb0MuCgpOb3csIGNvdWxkIHNvbWVvbmUgdHJ5IHRvIGZvcmNlLWZlZWQgaXQgYSBkdW1teSBwbGF0Zm9ybSBkZXZpY2U/IE1heWJlLCBidXQgZXZlbiBpZiB0aGV5IGRpZCwgdGhlIGRyaXZlciYjMzk7cyByZWxpYW5jZSBvbiBzcGVjaWZpYyBEVCBub2RlcyBhbmQgYGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZV9ieW5hbWVgIHRvIGFjY2VzcyB0aG9zZSBoYXJkd2FyZSByZWdpc3RlcnMgd2lsbCB0cmlwIHRoZW0gdXAuIFRoZSBwcm9iZSB3aWxsIGZhaWwgaW1tZWRpYXRlbHkuIFVzZXJzcGFjZSBjYW4mIzM5O3QganVzdCBjcmVhdGUgYXJiaXRyYXJ5IERldmljZSBUcmVlIGVudHJpZXMsIHNvIHRoYXQmIzM5O3MgYSBub24tc3RhcnRlci4KClNvLCBsZXQmIzM5O3MgYmUgbWV0aG9kaWNhbDoKCjEuICBGaWxlIG1vZGlmaWNhdGlvbiBpcyBjbGVhcjogYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmNgIGFuZCBgLmhgLgoyLiAgSGFyZHdhcmUgZGVwZW5kZW5jZSBpcyBhYnNvbHV0ZTogQWlyb2hhIFNvQyBHaWdhYml0IEV0aGVybmV0IGNvbnRyb2xsZXIsIHBsYXRmb3JtIGRldmljZSAoYGFpcm9oYSxlbjc1ODEtZXRoYCwgYGFpcm9oYSxhbjc1ODMtZXRoYCkuCjMuICBSZWFjaGFiaWxpdHkgaW4gUUVNVS9HQ0UgaXMgaW1wb3NzaWJsZS4gVGhpcyBoYXJkd2FyZSBzaW1wbHkgaXNuJiMzOTt0IHRoZXJlLCBhbmQgd2l0aG91dCBpdCwgdGhlIGRyaXZlciB3b24mIzM5O3QgZXZlbiBsb2FkLgoKVGhlIGNvbmNsdXNpb24gaXMgY2xlYXI6IGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBgZmFsc2VgLiBUaGlzIGlzbiYjMzk7dCBhIGZ1enphYmxlIHRhcmdldCBpbiBvdXIgY3VycmVudCBzZXR1cC4KCk15IHJlY29tbWVuZGF0aW9uPyBMZXQmIzM5O3MgdmVyaWZ5IHRoZXNlIGRldGFpbHMgd2l0aCB0aGUgZm9sbG93aW5nOgoqICAgV29ydGhGdXp6aW5nOiBmYWxzZQoqICAgRm9jdXNTeW1ib2xzOiBcWyBdCiogICBFbmFibGVDb25maWdzOiBcWyBdCgpBbmQgdGhlIHJlYXNvbmluZz8gV2VsbCwgaXQgc2hvdWxkIGJlIGNvbmNpc2UgYW5kIGl0IGlzOiB0aGlzIHBhdGNoIG1vZGlmaWVzIHRoZSBBaXJvaGEgU29DIEV0aGVybmV0IGRyaXZlciAoYGFpcm9oYV9ldGhgKSwgd2hpY2ggaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIEFpcm9oYSBTb0NzIChzdWNoIGFzIEVONzU4MS9BTjc1ODMpLiBJdCByZXF1aXJlcyBzcGVjaWZpYyBTb0MgaGFyZHdhcmUvRFQgcmVzb3VyY2VzIGFuZCBjYW5ub3QgYmUgcHJvYmVkIG9yIGV4ZWN1dGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLgoKT2theSwgbGV0JiMzOTtzIGluZm9ybSBgc2V0LXJlc3VsdHNgIHRvb2wgd2l0aCB0aGVzZSBhcmd1bWVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDA4OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFpcm9oYSBTb0MgR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMpLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgQWlyb2hhIFNvQ3MgKGUuZy4sIEVONzU4MS9BTjc1ODMpLiBJdCByZXF1aXJlcyBwaHlzaWNhbCBTb0MgaGFyZHdhcmUgYW5kIGRldmljZSB0cmVlIHJlc291cmNlcyBub3QgYXZhaWxhYmxlIG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFpcm9oYSBTb0MgR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMpLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgQWlyb2hhIFNvQ3MgKGUuZy4sIEVONzU4MS9BTjc1ODMpLiBJdCByZXF1aXJlcyBwaHlzaWNhbCBTb0MgaGFyZHdhcmUgYW5kIGRldmljZSB0cmVlIHJlc291cmNlcyBub3QgYXZhaWxhYmxlIG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMDg6NDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDA4OjI4OjI5LjAzMTc0MTE3M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg3NjU5MTM1ODMyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBaXJvaGEgU29DIEdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jKSwgd2hpY2ggaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIHNwZWNpZmljIEFpcm9oYSBTb0NzIChlLmcuLCBFTjc1ODEvQU43NTgzKS4gSXQgcmVxdWlyZXMgcGh5c2ljYWwgU29DIGhhcmR3YXJlIGFuZCBkZXZpY2UgdHJlZSByZXNvdXJjZXMgbm90IGF2YWlsYWJsZSBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlc2UgY29kZSBwYXRocyB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDA4OjI4OjI5LjAzMTc0NTkyM1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIwNTQ5MTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZTk2YmY5YmRlM2MzMWQxZDM0ZjE1ZGM4ZWIyOGQ0OGNhZDU2N2U4MlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyAzMCAwODoyODoyOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguY1xcbmluZGV4IDY0NjE5ZTlhNzA0ZGQuLmVmYjFkZDY5Y2MxNjUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmNcXG5AQCAtMywxMiArMywxNCBAQFxcbiAgKiBDb3B5cmlnaHQgKGMpIDIwMjQgQUlST0hBIEluY1xcbiAgKiBBdXRob3I6IExvcmVuem8gQmlhbmNvbmkgXFx1MDAzY2xvcmVuem9Aa2VybmVsLm9yZ1xcdTAwM2VcXG4gICovXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9rdGltZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvb2YuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mX25ldC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvb2ZfcmVzZXJ2ZWRfbWVtLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3RjcC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvdTY0X3N0YXRzX3N5bmMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3dvcmtxdWV1ZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L2RzdF9tZXRhZGF0YS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvcGt0X2Nscy5oXFx1MDAzZVxcbkBAIC02NTcsNiArNjU5LDQ3IEBAIGFpcm9oYV9xZG1hX2dldF9nZG1fZGV2KHN0cnVjdCBhaXJvaGFfZXRoICpldGgsIHN0cnVjdCBhaXJvaGFfcWRtYV9kZXNjICpkZXNjKVxcbiBcXHRyZXR1cm4gcG9ydC1cXHUwMDNlZGV2c1tkXSA/IHBvcnQtXFx1MDAzZWRldnNbZF0gOiBFUlJfUFRSKC1FTk9ERVYpO1xcbiB9XFxuIFxcbisvKiBudW1iZXIgb2YgY29uc2VjdXRpdmUgcG9sbHMgd2hlcmUgaHcgY29tcGxldGlvbiAoUlhfRE1BX0lEWCkgYWR2YW5jZXNcXG4rICogd2hpbGUgdGhlIHN3IGNvbnN1bWVyICh0YWlsKSBkb2Vzbid0LCBiZWZvcmUgZGVjbGFyaW5nIHRoZSByaW5nIHN0dWNrXFxuKyAqL1xcbisjZGVmaW5lIEFJUk9IQV9SWF9TVEFMTF9USFJFU0hPTERcXHQzXFxuK1xcbisvKiBEZXRlY3QgYW4gUlggcmluZyB3aGVyZSBodydzIG93biBjb21wbGV0aW9uIHBvaW50ZXIgKFJYX0RNQV9JRFgpIGtlZXBzXFxuKyAqIG1vdmluZyB3aGlsZSB0aGUgc3cgY29uc3VtZXIgKHEtXFx1MDAzZXRhaWwpIGRvZXNuJ3QgLSBpLmUuIGh3IGhhcyB3cml0dGVuXFxuKyAqIGZ1cnRoZXIgZGVzY3JpcHRvcnMgc29tZXdoZXJlIGluIHRoZSByaW5nLCBidXQgdGhlIHN0cmljdGx5IHNlcXVlbnRpYWxcXG4rICogY29uc3VtZXIgY2FuIG5ldmVyIHJlYWNoIHRoZW0gYmVjYXVzZSB0aGUgb25lIGF0IHEtXFx1MDAzZWhlYWQsIHdoaWNoIGl0IGlzXFxuKyAqIHdhaXRpbmcgb24sIHdhcyBuZXZlciBtYXJrZWQgRE9ORS4gVGhpcyBoYXBwZW5zIHdoZW4gaHcgd3JpdGVzIGFcXG4rICogY29tcGxldGVkIGRlc2NyaXB0b3IgcGFzdCBxLVxcdTAwM2VoZWFkIGJlZm9yZSBhaXJvaGFfcWRtYV9maWxsX3J4X3F1ZXVlKClcXG4rICogaGFzIHBvc3RlZCBhIGZyZXNoIGJ1ZmZlciB0aGVyZSwgZGVjb3VwbGVkIGZyb20gc3cncyBvd24gcG9zdGluZ1xcbisgKiBib29ra2VlcGluZy5cXG4rICpcXG4rICogRGVsaWJlcmF0ZWx5IGRvZXMgbm90IGluc3BlY3QgcmluZy9kZXNjcmlwdG9yIG1lbW9yeSBjb250ZW50IHRvIGRldGVjdFxcbisgKiB0aGlzOiBhbiBlYXJsaWVyIHZlcnNpb24gc2Nhbm5lZCBhaGVhZCBmb3IgYSBET05FIGRlc2NyaXB0b3IgYW5kIHRydXN0ZWRcXG4rICogaXRzIGNvbnRlbnQsIHdoaWNoIGNhdXNlZCBhIHJlYWwgT09NIHBhbmljIGFmdGVyIGl0IHdhbmRlcmVkIGludG9cXG4rICogZ2VudWluZWx5IHVuaW5pdGlhbGl6ZWQgRE1BIG1lbW9yeSB0aGF0IGNvaW5jaWRlbnRhbGx5IGhhZCB0aGUgRE9ORSBiaXRcXG4rICogc2V0LiBSWF9ETUFfSURYIGlzIGEgaHcgcmVnaXN0ZXIgd2l0aCBhIHdlbGwtZGVmaW5lZCB2YWx1ZSByZWdhcmRsZXNzIG9mXFxuKyAqIHJpbmcgY29udGVudCwgc28gdGhpcyBjYW4ndCBtaXNmaXJlIG9uIGdhcmJhZ2UgbWVtb3J5LCBhbmQgaWRsZSByaW5nc1xcbisgKiAobm8gaHcgcHJvZ3Jlc3MgZWl0aGVyKSBhcmUgbmF0dXJhbGx5IGxlZnQgYWxvbmUuXFxuKyAqL1xcbitzdGF0aWMgdm9pZCBhaXJvaGFfcWRtYV9yeF9jaGVja19zdGFsbChzdHJ1Y3QgYWlyb2hhX3F1ZXVlICpxKVxcbit7XFxuK1xcdHN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYSA9IHEtXFx1MDAzZXFkbWE7XFxuK1xcdGludCBxaWQgPSBxIC0gXFx1MDAyNnFkbWEtXFx1MDAzZXFfcnhbMF07XFxuK1xcdHUzMiBkbWFfaWR4ID0gYWlyb2hhX3FkbWFfZ2V0KHFkbWEsIFJFR19SWF9ETUFfSURYKHFpZCksXFxuK1xcdFxcdFxcdFxcdCAgICAgIFJYX1JJTkdfRE1BX0lEWF9NQVNLKTtcXG4rXFxuK1xcdGlmIChxLVxcdTAwM2VzdGFsbF90YWlsID09IHEtXFx1MDAzZXRhaWwgXFx1MDAyNlxcdTAwMjYgZG1hX2lkeCAhPSBxLVxcdTAwM2VzdGFsbF9kbWFfaWR4KSB7XFxuK1xcdFxcdGlmICgrK3EtXFx1MDAzZXN0YWxsX2NvdW50IFxcdTAwM2U9IEFJUk9IQV9SWF9TVEFMTF9USFJFU0hPTEQgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgICF0ZXN0X2FuZF9zZXRfYml0KHFpZCwgcWRtYS1cXHUwMDNlcnhfcmVjb3Zlcl9tYXNrKSlcXG4rXFx0XFx0XFx0c2NoZWR1bGVfd29yayhcXHUwMDI2cWRtYS1cXHUwMDNlcnhfcmVjb3Zlcl93b3JrKTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0cS1cXHUwMDNlc3RhbGxfY291bnQgPSAwO1xcbitcXHR9XFxuK1xcbitcXHRxLVxcdTAwM2VzdGFsbF90YWlsID0gcS1cXHUwMDNldGFpbDtcXG4rXFx0cS1cXHUwMDNlc3RhbGxfZG1hX2lkeCA9IGRtYV9pZHg7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgYWlyb2hhX3FkbWFfcnhfcHJvY2VzcyhzdHJ1Y3QgYWlyb2hhX3F1ZXVlICpxLCBpbnQgYnVkZ2V0KVxcbiB7XFxuIFxcdGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpciA9IHBhZ2VfcG9vbF9nZXRfZG1hX2RpcihxLVxcdTAwM2VwYWdlX3Bvb2wpO1xcbkBAIC02NzUsOCArNzE4LDEwIEBAIHN0YXRpYyBpbnQgYWlyb2hhX3FkbWFfcnhfcHJvY2VzcyhzdHJ1Y3QgYWlyb2hhX3F1ZXVlICpxLCBpbnQgYnVkZ2V0KVxcbiBcXHRcXHRzdHJ1Y3QgcGFnZSAqcGFnZTtcXG4gXFxuIFxcdFxcdGRlc2NfY3RybCA9IGxlMzJfdG9fY3B1KFJFQURfT05DRShkZXNjLVxcdTAwM2VjdHJsKSk7XFxuLVxcdFxcdGlmICghKGRlc2NfY3RybCBcXHUwMDI2IFFETUFfREVTQ19ET05FX01BU0spKVxcbitcXHRcXHRpZiAoIShkZXNjX2N0cmwgXFx1MDAyNiBRRE1BX0RFU0NfRE9ORV9NQVNLKSkge1xcbitcXHRcXHRcXHRhaXJvaGFfcWRtYV9yeF9jaGVja19zdGFsbChxKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdH1cXG4gXFxuIFxcdFxcdGRtYV9ybWIoKTtcXG4gXFxuQEAgLTc4NCwxMyArODI5LDE1IEBAIHN0YXRpYyBpbnQgYWlyb2hhX3FkbWFfcnhfbmFwaV9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldClcXG4gXFx0XFx0aW50IGksIHFpZCA9IHEgLSBcXHUwMDI2cWRtYS1cXHUwMDNlcV9yeFswXTtcXG4gXFx0XFx0aW50IGludHJfcmVnID0gcWlkIFxcdTAwM2MgUlhfRE9ORV9ISUdIX09GRlNFVCA/IFFETUFfSU5UX1JFR19JRFgxXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdCA6IFFETUFfSU5UX1JFR19JRFgyO1xcbitcXHRcXHR1MzIgYml0ID0gcWlkICUgUlhfRE9ORV9ISUdIX09GRlNFVDtcXG4gXFxuIFxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKHFkbWEtXFx1MDAzZWlycV9iYW5rcyk7IGkrKykge1xcbiBcXHRcXHRcXHRpZiAoIShCSVQocWlkKSBcXHUwMDI2IFJYX0lSUV9CQU5LX1BJTl9NQVNLKGkpKSlcXG4gXFx0XFx0XFx0XFx0Y29udGludWU7XFxuIFxcbiBcXHRcXHRcXHRhaXJvaGFfcWRtYV9pcnFfZW5hYmxlKFxcdTAwMjZxZG1hLVxcdTAwM2VpcnFfYmFua3NbaV0sIGludHJfcmVnLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgICAgQklUKHFpZCAlIFJYX0RPTkVfSElHSF9PRkZTRVQpKTtcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgIEJJVChiaXQpIHxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgIEJJVChiaXQgKyBSWF9OT19DUFVfRFNDUF9MT1dfT0ZGU0VUKSk7XFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXG5AQCAtODkyLDYgKzkzOSw3NiBAQCBzdGF0aWMgdm9pZCBhaXJvaGFfcWRtYV9jbGVhbnVwX3J4X3F1ZXVlKHN0cnVjdCBhaXJvaGFfcXVldWUgKnEpXFxuIFxcdFxcdFxcdEZJRUxEX1BSRVAoUlhfUklOR19ETUFfSURYX01BU0ssIHEtXFx1MDAzZXRhaWwpKTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfcnhfcmVjb3Zlcl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4re1xcbitcXHRzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWEgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGFpcm9oYV9xZG1hLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgcnhfcmVjb3Zlcl93b3JrKTtcXG4rXFx0aW50IHFpZDtcXG4rXFxuK1xcdGZvcl9lYWNoX3NldF9iaXQocWlkLCBxZG1hLVxcdTAwM2VyeF9yZWNvdmVyX21hc2ssIEFJUk9IQV9OVU1fUlhfUklORykge1xcbitcXHRcXHRzdHJ1Y3QgYWlyb2hhX3F1ZXVlICpxID0gXFx1MDAyNnFkbWEtXFx1MDAzZXFfcnhbcWlkXTtcXG4rXFx0XFx0a3RpbWVfdCByeF9kbWFfb2ZmX3RzO1xcbitcXHRcXHRzNjQgcnhfZG1hX29mZl91cztcXG4rXFx0XFx0dTMyIHN0YXR1cztcXG4rXFxuK1xcdFxcdGlmICghcS1cXHUwMDNlbmRlc2MpXFxuK1xcdFxcdFxcdGdvdG8gbmV4dDtcXG4rXFxuK1xcdFxcdG5hcGlfZGlzYWJsZShcXHUwMDI2cS1cXHUwMDNlbmFwaSk7XFxuK1xcbitcXHRcXHQvKiBHTE9CQUxfQ0ZHX1JYX0RNQV9FTl9NQVNLIGlzIHBlci1RRE1BLCBub3QgcGVyLXJpbmcsIHNvXFxuK1xcdFxcdCAqIHRoaXMgcGF1c2VzIGV2ZXJ5IFJYIHJpbmcgb24gdGhpcyBRRE1BIGluc3RhbmNlLCBub3QganVzdFxcbitcXHRcXHQgKiB0aGUgc3RhbGxlZCBvbmUgLSB0cmFjayBob3cgbG9uZyBmb3IsIHNpbmNlIHRoYXQncyB0aGVcXG4rXFx0XFx0ICogcmVhbC13b3JsZCBjb3N0IG9mIHJlY292ZXJ5IG9uIHVucmVsYXRlZCByaW5ncy5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdHJ4X2RtYV9vZmZfdHMgPSBrdGltZV9nZXQoKTtcXG4rXFxuK1xcdFxcdGFpcm9oYV9xZG1hX2NsZWFyKHFkbWEsIFJFR19RRE1BX0dMT0JBTF9DRkcsXFxuK1xcdFxcdFxcdFxcdCAgR0xPQkFMX0NGR19SWF9ETUFfRU5fTUFTSyk7XFxuK1xcdFxcdGlmIChyZWFkX3BvbGxfdGltZW91dChhaXJvaGFfcWRtYV9yciwgc3RhdHVzLFxcbitcXHRcXHRcXHRcXHQgICAgICAhKHN0YXR1cyBcXHUwMDI2IEdMT0JBTF9DRkdfUlhfRE1BX0JVU1lfTUFTSyksXFxuK1xcdFxcdFxcdFxcdCAgICAgIFVTRUNfUEVSX01TRUMsIDUwICogVVNFQ19QRVJfTVNFQywgdHJ1ZSxcXG4rXFx0XFx0XFx0XFx0ICAgICAgcWRtYSwgUkVHX1FETUFfR0xPQkFMX0NGRykpXFxuK1xcdFxcdFxcdGRldl93YXJuKHFkbWEtXFx1MDAzZWV0aC1cXHUwMDNlZGV2LFxcbitcXHRcXHRcXHRcXHQgXFxcInFpZD0lZCBSWCBETUEgYnVzeSB0aW1lb3V0IGR1cmluZyByZWNvdmVyeVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0IHFpZCk7XFxuK1xcbitcXHRcXHQvKiBEcm9wIHdoYXRldmVyIGlzIGN1cnJlbnRseSBpbiBmbGlnaHQgb24gdGhpcyByaW5nIGFuZFxcbitcXHRcXHQgKiByZS1hcm0gaXQgZnJvbSBhIGtub3duLWNsZWFuIHN0YXRlLiBjbGVhbnVwX3J4X3F1ZXVlKClcXG4rXFx0XFx0ICogb25seSBldmVyIHRvdWNoZXMgdGhlIHN3LW93bmVkIFt0YWlsLCBoZWFkKSB3aW5kb3cgYW5kXFxuK1xcdFxcdCAqIHJlc3luY3MgYm90aCBSWF9DUFVfSURYIGFuZCBSWF9ETUFfSURYIHRvIGl0LCB3aGljaCBpc1xcbitcXHRcXHQgKiB3aGF0IHVuLXdlZGdlcyBhIHJpbmcgd2hlcmUgaHcgd3JvdGUgcGFzdCB0aGUgc3cgaGVhZFxcbitcXHRcXHQgKiB3aXRob3V0IHRoZSBjb25zdW1lciBldmVyIGFkdmFuY2luZyAtIG5vIG5lZWQgdG8gZmlndXJlXFxuK1xcdFxcdCAqIG91dCB3aGljaCBkZXNjcmlwdG9yIGh3IGFjdHVhbGx5IHVzZWQuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRhaXJvaGFfcWRtYV9jbGVhbnVwX3J4X3F1ZXVlKHEpO1xcbitcXHRcXHRpZiAocS1cXHUwMDNlc2tiKSB7XFxuK1xcdFxcdFxcdC8qIGRpc2NhcmQgd2hhdGV2ZXIgc2NhdHRlci1nYXRoZXIgZnJhbWUgd2FzXFxuK1xcdFxcdFxcdCAqIG1pZC1hc3NlbWJseSB3aGVuIHRoZSBzdGFsbCB3YXMgaGl0LCBjbGVhbnVwX3J4X3F1ZXVlKClcXG4rXFx0XFx0XFx0ICogYWJvdmUgb25seSByZXN5bmNzIHRoZSByaW5nLCBub3QgdGhpc1xcbitcXHRcXHRcXHQgKi9cXG4rXFx0XFx0XFx0ZGV2X2tmcmVlX3NrYihxLVxcdTAwM2Vza2IpO1xcbitcXHRcXHRcXHRxLVxcdTAwM2Vza2IgPSBOVUxMO1xcbitcXHRcXHR9XFxuK1xcdFxcdGFpcm9oYV9xZG1hX2ZpbGxfcnhfcXVldWUocSk7XFxuK1xcbitcXHRcXHRhaXJvaGFfcWRtYV9zZXQocWRtYSwgUkVHX1FETUFfR0xPQkFMX0NGRyxcXG4rXFx0XFx0XFx0XFx0R0xPQkFMX0NGR19SWF9ETUFfRU5fTUFTSyk7XFxuK1xcdFxcdHJ4X2RtYV9vZmZfdXMgPSBrdGltZV91c19kZWx0YShrdGltZV9nZXQoKSwgcnhfZG1hX29mZl90cyk7XFxuK1xcbitcXHRcXHRxLVxcdTAwM2VzdGFsbF9jb3VudCA9IDA7XFxuK1xcdFxcdG5hcGlfZW5hYmxlKFxcdTAwMjZxLVxcdTAwM2VuYXBpKTtcXG4rXFx0XFx0bmFwaV9zY2hlZHVsZShcXHUwMDI2cS1cXHUwMDNlbmFwaSk7XFxuK1xcbitcXHRcXHRxZG1hLVxcdTAwM2VyeF9yZWNvdmVyX2NvdW50Kys7XFxuK1xcdFxcdGRldl93YXJuX3JhdGVsaW1pdGVkKHFkbWEtXFx1MDAzZWV0aC1cXHUwMDNlZGV2LFxcbitcXHRcXHRcXHRcXHQgICAgIFxcXCJxaWQ9JWQgUlggcmluZyByZWNvdmVyZWQgYWZ0ZXIgaHcgc3RhbGwgKFJYIERNQSBwYXVzZWQgZm9yICVsbGQgdXMgb24gdGhpcyBRRE1BIGluc3RhbmNlKVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0ICAgICBxaWQsIHJ4X2RtYV9vZmZfdXMpO1xcbituZXh0OlxcbitcXHRcXHRjbGVhcl9iaXQocWlkLCBxZG1hLVxcdTAwM2VyeF9yZWNvdmVyX21hc2spO1xcbitcXHR9XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgYWlyb2hhX3FkbWFfaW5pdF9yeChzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWEpXFxuIHtcXG4gXFx0aW50IGk7XFxuQEAgLTE0NjgsMTYgKzE1ODUsMzIgQEAgc3RhdGljIGlycXJldHVybl90IGFpcm9oYV9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkZXZfaW5zdGFuY2UpXFxuIFxcdGlmICghdGVzdF9iaXQoREVWX1NUQVRFX0lOSVRJQUxJWkVELCBcXHUwMDI2cWRtYS1cXHUwMDNlZXRoLVxcdTAwM2VzdGF0ZSkpXFxuIFxcdFxcdHJldHVybiBJUlFfTk9ORTtcXG4gXFxuLVxcdHJ4X2ludHIxID0gaW50clsxXSBcXHUwMDI2IFJYX0RPTkVfTE9XX0lOVF9NQVNLO1xcbitcXHQvKiBBIHJpbmcgY2FuIGFsc28gcmFpc2UgTk9fQ1BVX0RTQ1Agd2hlbiBpdCBydW5zIG91dCBvZiBmcmVlIFJYXFxuK1xcdCAqIGRlc2NyaXB0b3JzIChlLmcuIGEgYnVyc3Qgb2YgVklQLWNsYXNzaWZpZWQgY29udHJvbCB0cmFmZmljXFxuK1xcdCAqIGZvcmNlZCBvbnRvIGEgc21hbGwgcmluZykuIE9uY2UgYSByaW5nIGlzIGZ1bGx5IGRyYWluZWQgbm8gbW9yZVxcbitcXHQgKiBSWF9ET05FIGludGVycnVwdHMgY2FuIGZpcmUgZm9yIGl0LCBzaW5jZSB0aGVyZSBhcmUgbm8gZnJlZVxcbitcXHQgKiBkZXNjcmlwdG9ycyBsZWZ0IGZvciBoYXJkd2FyZSB0byByZWNlaXZlIGludG8sIHNvIHdpdGhvdXQgdGhpc1xcbitcXHQgKiBOQVBJIGlzIG5ldmVyIHJlc2NoZWR1bGVkIGFuZCB0aGUgcmluZyBuZXZlciBnZXRzIHJlZmlsbGVkIGFnYWluLlxcbitcXHQgKiBUcmVhdCBOT19DUFVfRFNDUCB0aGUgc2FtZSBhcyBSWF9ET05FIGZvciBzY2hlZHVsaW5nIE5BUEk6XFxuK1xcdCAqIGFpcm9oYV9xZG1hX3J4X3Byb2Nlc3MoKSB1bmNvbmRpdGlvbmFsbHkgY2FsbHNcXG4rXFx0ICogYWlyb2hhX3FkbWFfZmlsbF9yeF9xdWV1ZSgpIGF0IHRoZSBlbmQgb2YgZXZlcnkgcG9sbCwgZXZlbiB3aGVuXFxuK1xcdCAqIHplcm8gZGVzY3JpcHRvcnMgd2VyZSByZWFwZWQsIHNvIHRoaXMgYWxvbmUgaXMgZW5vdWdoIHRvIHJlY292ZXJcXG4rXFx0ICogdGhlIHJpbmcuXFxuK1xcdCAqL1xcbitcXHRyeF9pbnRyMSA9IGludHJbMV0gXFx1MDAyNiAoUlhfRE9ORV9MT1dfSU5UX01BU0sgfCBSWF9OT19DUFVfRFNDUF9MT1dfSU5UX01BU0spO1xcbiBcXHRpZiAocnhfaW50cjEpIHtcXG4gXFx0XFx0YWlyb2hhX3FkbWFfaXJxX2Rpc2FibGUoaXJxX2JhbmssIFFETUFfSU5UX1JFR19JRFgxLCByeF9pbnRyMSk7XFxuLVxcdFxcdHJ4X2ludHJfbWFzayB8PSByeF9pbnRyMTtcXG4rXFx0XFx0cnhfaW50cl9tYXNrIHw9IChyeF9pbnRyMSBcXHUwMDI2IFJYX0RPTkVfTE9XX0lOVF9NQVNLKSB8XFxuK1xcdFxcdFxcdFxcdCgocnhfaW50cjEgXFx1MDAyNiBSWF9OT19DUFVfRFNDUF9MT1dfSU5UX01BU0spIFxcdTAwM2VcXHUwMDNlXFxuK1xcdFxcdFxcdFxcdCBSWF9OT19DUFVfRFNDUF9MT1dfT0ZGU0VUKTtcXG4gXFx0fVxcbiBcXG4tXFx0cnhfaW50cjIgPSBpbnRyWzJdIFxcdTAwMjYgUlhfRE9ORV9ISUdIX0lOVF9NQVNLO1xcbitcXHRyeF9pbnRyMiA9IGludHJbMl0gXFx1MDAyNiAoUlhfRE9ORV9ISUdIX0lOVF9NQVNLIHwgUlhfTk9fQ1BVX0RTQ1BfSElHSF9JTlRfTUFTSyk7XFxuIFxcdGlmIChyeF9pbnRyMikge1xcbiBcXHRcXHRhaXJvaGFfcWRtYV9pcnFfZGlzYWJsZShpcnFfYmFuaywgUURNQV9JTlRfUkVHX0lEWDIsIHJ4X2ludHIyKTtcXG4tXFx0XFx0cnhfaW50cl9tYXNrIHw9IChyeF9pbnRyMiBcXHUwMDNjXFx1MDAzYyAxNik7XFxuK1xcdFxcdHJ4X2ludHJfbWFzayB8PSAoKHJ4X2ludHIyIFxcdTAwMjYgUlhfRE9ORV9ISUdIX0lOVF9NQVNLKSB8XFxuK1xcdFxcdFxcdFxcdCAoKHJ4X2ludHIyIFxcdTAwMjYgUlhfTk9fQ1BVX0RTQ1BfSElHSF9JTlRfTUFTSykgXFx1MDAzZVxcdTAwM2VcXG4rXFx0XFx0XFx0XFx0ICBSWF9OT19DUFVfRFNDUF9MT1dfT0ZGU0VUKSkgXFx1MDAzY1xcdTAwM2MgMTY7XFxuIFxcdH1cXG4gXFxuIFxcdGZvciAoaSA9IDA7IHJ4X2ludHJfbWFzayBcXHUwMDI2XFx1MDAyNiBpIFxcdTAwM2MgQVJSQVlfU0laRShxZG1hLVxcdTAwM2VxX3J4KTsgaSsrKSB7XFxuQEAgLTE1NzYsNiArMTcwOSw4IEBAIHN0YXRpYyB2b2lkIGFpcm9oYV9xZG1hX2NsZWFudXAoc3RydWN0IGFpcm9oYV9ldGggKmV0aCxcXG4ge1xcbiBcXHRpbnQgaTtcXG4gXFxuK1xcdGNhbmNlbF93b3JrX3N5bmMoXFx1MDAyNnFkbWEtXFx1MDAzZXJ4X3JlY292ZXJfd29yayk7XFxuK1xcbiBcXHRpZiAodGVzdF9iaXQoREVWX1NUQVRFX0lOSVRJQUxJWkVELCBcXHUwMDI2ZXRoLVxcdTAwM2VzdGF0ZSkpIHtcXG4gXFx0XFx0dTMyIHN0YXR1cztcXG4gXFxuQEAgLTE2MzMsNiArMTc2OCwxNSBAQCBzdGF0aWMgaW50IGFpcm9oYV9od19pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdHJldHVybiBlcnI7XFxuIFxcbitcXHQvKiBJTklUX1dPUksoKSBldmVyeSBpbnN0YW5jZSB1cCBmcm9udCwgYmVmb3JlIGFueSBvZiB0aGVtIGNhbiBmYWlsXFxuK1xcdCAqIGluaXQgYW5kIGp1bXAgdG8gdGhlIGVycm9yIHBhdGggYmVsb3csIHNpbmNlIHRoYXQgcGF0aCB0ZWFycyBkb3duXFxuK1xcdCAqIGV2ZXJ5IGV0aC1cXHUwMDNlcWRtYVtdIHNsb3QgdW5jb25kaXRpb25hbGx5LCBpbmNsdWRpbmcgb25lcyB0aGlzIGxvb3BcXG4rXFx0ICogbmV2ZXIgcmVhY2hlZC5cXG4rXFx0ICovXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGV0aC1cXHUwMDNlcWRtYSk7IGkrKylcXG4rXFx0XFx0SU5JVF9XT1JLKFxcdTAwMjZldGgtXFx1MDAzZXFkbWFbaV0ucnhfcmVjb3Zlcl93b3JrLFxcbitcXHRcXHRcXHQgIGFpcm9oYV9xZG1hX3J4X3JlY292ZXJfd29yayk7XFxuK1xcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShldGgtXFx1MDAzZXFkbWEpOyBpKyspIHtcXG4gXFx0XFx0ZXJyID0gYWlyb2hhX3FkbWFfaW5pdChwZGV2LCBldGgsIFxcdTAwMjZldGgtXFx1MDAzZXFkbWFbaV0pO1xcbiBcXHRcXHRpZiAoZXJyKVxcbkBAIC0xNjgxLDYgKzE4MjUsMTQgQEAgc3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfc3RvcF9uYXBpKHN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYSlcXG4ge1xcbiBcXHRpbnQgaTtcXG4gXFxuK1xcdC8qIE1ha2Ugc3VyZSByeF9yZWNvdmVyX3dvcmsgaXMgbmVpdGhlciBydW5uaW5nIG5vciBhYmxlIHRvIHJlLWFybVxcbitcXHQgKiBiZWZvcmUgYW55IG5hcGlfZGlzYWJsZSgpIGJlbG93OiBpdCBhbHNvIGNhbGxzIG5hcGlfZGlzYWJsZSgpL1xcbitcXHQgKiBuYXBpX2VuYWJsZSgpIG9uIHFfcnhbXS5uYXBpLCBhbmQgbmFwaV9kaXNhYmxlKCkgb24gYW5cXG4rXFx0ICogYWxyZWFkeS1kaXNhYmxlZCBOQVBJIHNwaW5zIGluIG5hcGlfZGlzYWJsZV9sb2NrZWQoKSBmb3JldmVyLFxcbitcXHQgKiBzaW5jZSBvbmx5IG5hcGlfZW5hYmxlKCkgY2xlYXJzIHRoZSBzdGF0ZSBpdCB3YWl0cyBvbi5cXG4rXFx0ICovXFxuK1xcdGRpc2FibGVfd29ya19zeW5jKFxcdTAwMjZxZG1hLVxcdTAwM2VyeF9yZWNvdmVyX3dvcmspO1xcbitcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUocWRtYS1cXHUwMDNlcV90eF9pcnEpOyBpKyspXFxuIFxcdFxcdG5hcGlfZGlzYWJsZShcXHUwMDI2cWRtYS1cXHUwMDNlcV90eF9pcnFbaV0ubmFwaSk7XFxuIFxcbkBAIC0yNDQ5LDYgKzI2MDEsNDYgQEAgc3RhdGljIHZvaWQgYWlyb2hhX2V0aHRvb2xfZ2V0X2RydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4gXFx0c3Ryc2NweShpbmZvLVxcdTAwM2VidXNfaW5mbywgZGV2X25hbWUoZXRoLVxcdTAwM2VkZXYpLCBzaXplb2YoaW5mby1cXHUwMDNlYnVzX2luZm8pKTtcXG4gfVxcbiBcXG4rc3RhdGljIGNvbnN0IGNoYXIgYWlyb2hhX2V0aHRvb2xfc3RhdHNfc3RyW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcXG4rXFx0XFxcInJ4X3N0YWxsX3JlY292ZXJcXFwiLFxcbit9O1xcbitcXG4rc3RhdGljIHZvaWQgYWlyb2hhX2V0aHRvb2xfZ2V0X3N0cmluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdTMyIHNzZXQsXFxuK1xcdFxcdFxcdFxcdCAgICAgICB1OCAqZGF0YSlcXG4re1xcbitcXHRpbnQgaTtcXG4rXFxuK1xcdGlmIChzc2V0ICE9IEVUSF9TU19TVEFUUylcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoYWlyb2hhX2V0aHRvb2xfc3RhdHNfc3RyKTsgaSsrKVxcbitcXHRcXHRldGh0b29sX3B1dHMoXFx1MDAyNmRhdGEsIGFpcm9oYV9ldGh0b29sX3N0YXRzX3N0cltpXSk7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgYWlyb2hhX2V0aHRvb2xfZ2V0X3NzZXRfY291bnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHNzZXQpXFxuK3tcXG4rXFx0cmV0dXJuIHNzZXQgPT0gRVRIX1NTX1NUQVRTID9cXG4rXFx0ICAgICAgIEFSUkFZX1NJWkUoYWlyb2hhX2V0aHRvb2xfc3RhdHNfc3RyKSA6IC1FT1BOT1RTVVBQO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBhaXJvaGFfZXRodG9vbF9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbitcXHRcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBldGh0b29sX3N0YXRzICpzdGF0cyxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICB1NjQgKmRhdGEpXFxuK3tcXG4rXFx0c3RydWN0IGFpcm9oYV9nZG1fZGV2ICpkZXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbitcXHRzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWE7XFxuK1xcbitcXHRyY3VfcmVhZF9sb2NrKCk7XFxuK1xcdHFkbWEgPSByY3VfZGVyZWZlcmVuY2UoZGV2LVxcdTAwM2VxZG1hKTtcXG4rXFx0LyogYWdncmVnYXRlIHJlY292ZXJ5IGNvdW50IGZvciB0aGUgd2hvbGUgcWRtYSBpbnN0YW5jZTogdGhlXFxuK1xcdCAqIHN0YWxsZWQgcmluZyBjYW4gY2FycnkgdHJhZmZpYyBmb3IgbW9yZSB0aGFuIG9uZSBuZXRkZXYgKFZJUFxcbitcXHQgKiBjbGFzc2lmaWNhdGlvbiBzaGFyZXMgcmluZyA0IGFjcm9zcyBzZXZlcmFsIHByb3RvY29scy9wb3J0cyksXFxuK1xcdCAqIHNvIHRoZXJlJ3Mgbm8gc2luZ2xlIG5ldGRldiB0byBhdHRyaWJ1dGUgYW4gaW5kaXZpZHVhbCBldmVudCB0b1xcbitcXHQgKi9cXG4rXFx0ZGF0YVswXSA9IHFkbWEgPyBxZG1hLVxcdTAwM2VyeF9yZWNvdmVyX2NvdW50IDogMDtcXG4rXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIGFpcm9oYV9ldGh0b29sX2dldF9tYWNfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4gXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBldGh0b29sX2V0aF9tYWNfc3RhdHMgKnN0YXRzKVxcbiB7XFxuQEAgLTMzNTEsNiArMzU0Myw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgYWlyb2hhX25ldGRldl9vcHMgPSB7XFxuIFxcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGFpcm9oYV9ldGh0b29sX29wcyA9IHtcXG4gXFx0LmdldF9kcnZpbmZvXFx0XFx0PSBhaXJvaGFfZXRodG9vbF9nZXRfZHJ2aW5mbyxcXG4rXFx0LmdldF9zdHJpbmdzXFx0XFx0PSBhaXJvaGFfZXRodG9vbF9nZXRfc3RyaW5ncyxcXG4rXFx0LmdldF9zc2V0X2NvdW50XFx0XFx0PSBhaXJvaGFfZXRodG9vbF9nZXRfc3NldF9jb3VudCxcXG4rXFx0LmdldF9ldGh0b29sX3N0YXRzXFx0PSBhaXJvaGFfZXRodG9vbF9nZXRfZXRodG9vbF9zdGF0cyxcXG4gXFx0LmdldF9ldGhfbWFjX3N0YXRzICAgICAgPSBhaXJvaGFfZXRodG9vbF9nZXRfbWFjX3N0YXRzLFxcbiBcXHQuZ2V0X3Jtb25fc3RhdHNcXHRcXHQ9IGFpcm9oYV9ldGh0b29sX2dldF9ybW9uX3N0YXRzLFxcbiBcXHQuZ2V0X2xpbmtfa3NldHRpbmdzXFx0PSBwaHlfZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3MsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oXFxuaW5kZXggZmE5YThlZGNlMjJmZi4uY2Q3NWMxNmQ4ZDBjNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaFxcbkBAIC00MSw2ICs0MSw3IEBAXFxuICNkZWZpbmUgVFhfRFNDUF9OVU1cXHRcXHRcXHQxMDI0XFxuICNkZWZpbmUgUlhfRFNDUF9OVU0oX24pXFx0XFx0XFx0XFxcXFxcbiBcXHQoKF9uKSA9PSAgMiA/IDEyOCA6XFx0XFx0XFxcXFxcbitcXHQgKF9uKSA9PSAgNCA/IDEyOCA6XFx0XFx0XFxcXFxcbiBcXHQgKF9uKSA9PSAxMSA/IDEyOCA6XFx0XFx0XFxcXFxcbiBcXHQgKF9uKSA9PSAxNSA/IDEyOCA6XFx0XFx0XFxcXFxcbiBcXHQgKF9uKSA9PSAgMCA/IDEwMjQgOiAxNilcXG5AQCAtMjA3LDYgKzIwOCwxNSBAQCBzdHJ1Y3QgYWlyb2hhX3F1ZXVlIHtcXG4gXFx0Ym9vbCB0eHFfc3RvcHBlZDtcXG4gXFx0Ym9vbCBmbHVzaGluZztcXG4gXFxuK1xcdC8qIFJYIGh3IHN0YWxsIGRldGVjdGlvbjogbGFzdCBSRUdfUlhfRE1BX0lEWC90YWlsIHNuYXBzaG90IHRha2VuXFxuK1xcdCAqIHdoZW5ldmVyIHRoZSBoZWFkLW9mLWxpbmUgZGVzY3JpcHRvciBpc24ndCBET05FLCBhbmQgaG93IG1hbnlcXG4rXFx0ICogY29uc2VjdXRpdmUgdGltZXMgaHcgbWFkZSBwcm9ncmVzcyAoRE1BX0lEWCBtb3ZlZCkgd2hpbGUgdGhlXFxuK1xcdCAqIGNvbnN1bWVyICh0YWlsKSBkaWRuJ3QuIFNlZSBhaXJvaGFfcWRtYV9yeF9jaGVja19zdGFsbCgpLlxcbitcXHQgKi9cXG4rXFx0dTMyIHN0YWxsX2RtYV9pZHg7XFxuK1xcdHUxNiBzdGFsbF90YWlsO1xcbitcXHR1OCBzdGFsbF9jb3VudDtcXG4rXFxuIFxcdHN0cnVjdCBuYXBpX3N0cnVjdCBuYXBpO1xcbiBcXHRzdHJ1Y3QgcGFnZV9wb29sICpwYWdlX3Bvb2w7XFxuIFxcdHN0cnVjdCBza19idWZmICpza2I7XFxuQEAgLTU2Nyw2ICs1NzcsMTggQEAgc3RydWN0IGFpcm9oYV9xZG1hIHtcXG4gXFx0c3RydWN0IGFpcm9oYV9xdWV1ZSBxX3R4W0FJUk9IQV9OVU1fVFhfUklOR107XFxuIFxcdHN0cnVjdCBhaXJvaGFfcXVldWUgcV9yeFtBSVJPSEFfTlVNX1JYX1JJTkddO1xcbiBcXG4rXFx0LyogcmVjb3ZlcnkgZm9yIFJYIHJpbmdzIHdob3NlIGh3IGNvbXBsZXRpb24gcG9pbnRlciAoUlhfRE1BX0lEWClcXG4rXFx0ICoga2VlcHMgbW92aW5nIHdoaWxlIHRoZSBzdyBjb25zdW1lciBpcyBzdHVjazsgc2VlXFxuK1xcdCAqIGFpcm9oYV9xZG1hX3J4X2NoZWNrX3N0YWxsKCkgYW5kIGFpcm9oYV9xZG1hX3J4X3JlY292ZXJfd29yaygpLlxcbitcXHQgKi9cXG4rXFx0c3RydWN0IHdvcmtfc3RydWN0IHJ4X3JlY292ZXJfd29yaztcXG4rXFx0REVDTEFSRV9CSVRNQVAocnhfcmVjb3Zlcl9tYXNrLCBBSVJPSEFfTlVNX1JYX1JJTkcpO1xcbitcXHQvKiBjb3VudCBvZiBjb21wbGV0ZWQgaHctc3RhbGwgcmVjb3ZlcmllcywgZXhwb3NlZCB2aWEgZXRodG9vbCAtU1xcbitcXHQgKiBzbyBhIHJlY292ZXJ5IGV2ZW50IChhbmQgdGhlIHBhY2tldHMgaXQgZHJvcHMpIGlzIG9ic2VydmFibGVcXG4rXFx0ICogd2l0aG91dCBncmVwcGluZyBkbWVzZyBmb3IgdGhlIGRldl93YXJuX3JhdGVsaW1pdGVkKCkgYWJvdmVcXG4rXFx0ICovXFxuK1xcdHUzMiByeF9yZWNvdmVyX2NvdW50O1xcbitcXG4gXFx0REVDTEFSRV9CSVRNQVAocW9zX2NoYW5uZWxfbWFwLCBBSVJPSEFfTlVNX1FPU19DSEFOTkVMUyk7XFxuIH07XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQwODoyODoyOS40NTI4OTk2NTJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjg3NjE3MDE4NjI3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFpcm9oYSBTb0MgR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMpLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgQWlyb2hhIFNvQ3MgKGUuZy4sIEVONzU4MS9BTjc1ODMpLiBJdCByZXF1aXJlcyBwaHlzaWNhbCBTb0MgaGFyZHdhcmUgYW5kIGRldmljZSB0cmVlIHJlc291cmNlcyBub3QgYXZhaWxhYmxlIG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZTk2YmY5YmRlM2MzMWQxZDM0ZjE1ZGM4ZWIyOGQ0OGNhZDU2N2U4MlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDMwIDA4OjI4OjI4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmNcbmluZGV4IDY0NjE5ZTlhNzA0ZGQuLmVmYjFkZDY5Y2MxNjUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jXG5AQCAtMywxMiArMywxNCBAQFxuICAqIENvcHlyaWdodCAoYykgMjAyNCBBSVJPSEEgSW5jXG4gICogQXV0aG9yOiBMb3JlbnpvIEJpYW5jb25pIFx1MDAzY2xvcmVuem9Aa2VybmVsLm9yZ1x1MDAzZVxuICAqL1xuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2t0aW1lLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2ZfbmV0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9yZXNlcnZlZF9tZW0uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdGNwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC91NjRfc3RhdHNfc3luYy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvd29ya3F1ZXVlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvZHN0X21ldGFkYXRhLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvcGFnZV9wb29sL2hlbHBlcnMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9wa3RfY2xzLmhcdTAwM2VcbkBAIC02NTcsNiArNjU5LDQ3IEBAIGFpcm9oYV9xZG1hX2dldF9nZG1fZGV2KHN0cnVjdCBhaXJvaGFfZXRoICpldGgsIHN0cnVjdCBhaXJvaGFfcWRtYV9kZXNjICpkZXNjKVxuIFx0cmV0dXJuIHBvcnQtXHUwMDNlZGV2c1tkXSA/IHBvcnQtXHUwMDNlZGV2c1tkXSA6IEVSUl9QVFIoLUVOT0RFVik7XG4gfVxuIFxuKy8qIG51bWJlciBvZiBjb25zZWN1dGl2ZSBwb2xscyB3aGVyZSBodyBjb21wbGV0aW9uIChSWF9ETUFfSURYKSBhZHZhbmNlc1xuKyAqIHdoaWxlIHRoZSBzdyBjb25zdW1lciAodGFpbCkgZG9lc24ndCwgYmVmb3JlIGRlY2xhcmluZyB0aGUgcmluZyBzdHVja1xuKyAqL1xuKyNkZWZpbmUgQUlST0hBX1JYX1NUQUxMX1RIUkVTSE9MRFx0M1xuK1xuKy8qIERldGVjdCBhbiBSWCByaW5nIHdoZXJlIGh3J3Mgb3duIGNvbXBsZXRpb24gcG9pbnRlciAoUlhfRE1BX0lEWCkga2VlcHNcbisgKiBtb3Zpbmcgd2hpbGUgdGhlIHN3IGNvbnN1bWVyIChxLVx1MDAzZXRhaWwpIGRvZXNuJ3QgLSBpLmUuIGh3IGhhcyB3cml0dGVuXG4rICogZnVydGhlciBkZXNjcmlwdG9ycyBzb21ld2hlcmUgaW4gdGhlIHJpbmcsIGJ1dCB0aGUgc3RyaWN0bHkgc2VxdWVudGlhbFxuKyAqIGNvbnN1bWVyIGNhbiBuZXZlciByZWFjaCB0aGVtIGJlY2F1c2UgdGhlIG9uZSBhdCBxLVx1MDAzZWhlYWQsIHdoaWNoIGl0IGlzXG4rICogd2FpdGluZyBvbiwgd2FzIG5ldmVyIG1hcmtlZCBET05FLiBUaGlzIGhhcHBlbnMgd2hlbiBodyB3cml0ZXMgYVxuKyAqIGNvbXBsZXRlZCBkZXNjcmlwdG9yIHBhc3QgcS1cdTAwM2VoZWFkIGJlZm9yZSBhaXJvaGFfcWRtYV9maWxsX3J4X3F1ZXVlKClcbisgKiBoYXMgcG9zdGVkIGEgZnJlc2ggYnVmZmVyIHRoZXJlLCBkZWNvdXBsZWQgZnJvbSBzdydzIG93biBwb3N0aW5nXG4rICogYm9va2tlZXBpbmcuXG4rICpcbisgKiBEZWxpYmVyYXRlbHkgZG9lcyBub3QgaW5zcGVjdCByaW5nL2Rlc2NyaXB0b3IgbWVtb3J5IGNvbnRlbnQgdG8gZGV0ZWN0XG4rICogdGhpczogYW4gZWFybGllciB2ZXJzaW9uIHNjYW5uZWQgYWhlYWQgZm9yIGEgRE9ORSBkZXNjcmlwdG9yIGFuZCB0cnVzdGVkXG4rICogaXRzIGNvbnRlbnQsIHdoaWNoIGNhdXNlZCBhIHJlYWwgT09NIHBhbmljIGFmdGVyIGl0IHdhbmRlcmVkIGludG9cbisgKiBnZW51aW5lbHkgdW5pbml0aWFsaXplZCBETUEgbWVtb3J5IHRoYXQgY29pbmNpZGVudGFsbHkgaGFkIHRoZSBET05FIGJpdFxuKyAqIHNldC4gUlhfRE1BX0lEWCBpcyBhIGh3IHJlZ2lzdGVyIHdpdGggYSB3ZWxsLWRlZmluZWQgdmFsdWUgcmVnYXJkbGVzcyBvZlxuKyAqIHJpbmcgY29udGVudCwgc28gdGhpcyBjYW4ndCBtaXNmaXJlIG9uIGdhcmJhZ2UgbWVtb3J5LCBhbmQgaWRsZSByaW5nc1xuKyAqIChubyBodyBwcm9ncmVzcyBlaXRoZXIpIGFyZSBuYXR1cmFsbHkgbGVmdCBhbG9uZS5cbisgKi9cbitzdGF0aWMgdm9pZCBhaXJvaGFfcWRtYV9yeF9jaGVja19zdGFsbChzdHJ1Y3QgYWlyb2hhX3F1ZXVlICpxKVxuK3tcbitcdHN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYSA9IHEtXHUwMDNlcWRtYTtcbitcdGludCBxaWQgPSBxIC0gXHUwMDI2cWRtYS1cdTAwM2VxX3J4WzBdO1xuK1x0dTMyIGRtYV9pZHggPSBhaXJvaGFfcWRtYV9nZXQocWRtYSwgUkVHX1JYX0RNQV9JRFgocWlkKSxcbitcdFx0XHRcdCAgICAgIFJYX1JJTkdfRE1BX0lEWF9NQVNLKTtcbitcbitcdGlmIChxLVx1MDAzZXN0YWxsX3RhaWwgPT0gcS1cdTAwM2V0YWlsIFx1MDAyNlx1MDAyNiBkbWFfaWR4ICE9IHEtXHUwMDNlc3RhbGxfZG1hX2lkeCkge1xuK1x0XHRpZiAoKytxLVx1MDAzZXN0YWxsX2NvdW50IFx1MDAzZT0gQUlST0hBX1JYX1NUQUxMX1RIUkVTSE9MRCBcdTAwMjZcdTAwMjZcbitcdFx0ICAgICF0ZXN0X2FuZF9zZXRfYml0KHFpZCwgcWRtYS1cdTAwM2VyeF9yZWNvdmVyX21hc2spKVxuK1x0XHRcdHNjaGVkdWxlX3dvcmsoXHUwMDI2cWRtYS1cdTAwM2VyeF9yZWNvdmVyX3dvcmspO1xuK1x0fSBlbHNlIHtcbitcdFx0cS1cdTAwM2VzdGFsbF9jb3VudCA9IDA7XG4rXHR9XG4rXG4rXHRxLVx1MDAzZXN0YWxsX3RhaWwgPSBxLVx1MDAzZXRhaWw7XG4rXHRxLVx1MDAzZXN0YWxsX2RtYV9pZHggPSBkbWFfaWR4O1xuK31cbitcbiBzdGF0aWMgaW50IGFpcm9oYV9xZG1hX3J4X3Byb2Nlc3Moc3RydWN0IGFpcm9oYV9xdWV1ZSAqcSwgaW50IGJ1ZGdldClcbiB7XG4gXHRlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIgPSBwYWdlX3Bvb2xfZ2V0X2RtYV9kaXIocS1cdTAwM2VwYWdlX3Bvb2wpO1xuQEAgLTY3NSw4ICs3MTgsMTAgQEAgc3RhdGljIGludCBhaXJvaGFfcWRtYV9yeF9wcm9jZXNzKHN0cnVjdCBhaXJvaGFfcXVldWUgKnEsIGludCBidWRnZXQpXG4gXHRcdHN0cnVjdCBwYWdlICpwYWdlO1xuIFxuIFx0XHRkZXNjX2N0cmwgPSBsZTMyX3RvX2NwdShSRUFEX09OQ0UoZGVzYy1cdTAwM2VjdHJsKSk7XG4tXHRcdGlmICghKGRlc2NfY3RybCBcdTAwMjYgUURNQV9ERVNDX0RPTkVfTUFTSykpXG4rXHRcdGlmICghKGRlc2NfY3RybCBcdTAwMjYgUURNQV9ERVNDX0RPTkVfTUFTSykpIHtcbitcdFx0XHRhaXJvaGFfcWRtYV9yeF9jaGVja19zdGFsbChxKTtcbiBcdFx0XHRicmVhaztcbitcdFx0fVxuIFxuIFx0XHRkbWFfcm1iKCk7XG4gXG5AQCAtNzg0LDEzICs4MjksMTUgQEAgc3RhdGljIGludCBhaXJvaGFfcWRtYV9yeF9uYXBpX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuIFx0XHRpbnQgaSwgcWlkID0gcSAtIFx1MDAyNnFkbWEtXHUwMDNlcV9yeFswXTtcbiBcdFx0aW50IGludHJfcmVnID0gcWlkIFx1MDAzYyBSWF9ET05FX0hJR0hfT0ZGU0VUID8gUURNQV9JTlRfUkVHX0lEWDFcbiBcdFx0XHRcdFx0XHRcdCA6IFFETUFfSU5UX1JFR19JRFgyO1xuK1x0XHR1MzIgYml0ID0gcWlkICUgUlhfRE9ORV9ISUdIX09GRlNFVDtcbiBcbiBcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShxZG1hLVx1MDAzZWlycV9iYW5rcyk7IGkrKykge1xuIFx0XHRcdGlmICghKEJJVChxaWQpIFx1MDAyNiBSWF9JUlFfQkFOS19QSU5fTUFTSyhpKSkpXG4gXHRcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0XHRhaXJvaGFfcWRtYV9pcnFfZW5hYmxlKFx1MDAyNnFkbWEtXHUwMDNlaXJxX2JhbmtzW2ldLCBpbnRyX3JlZyxcbi1cdFx0XHRcdFx0ICAgICAgIEJJVChxaWQgJSBSWF9ET05FX0hJR0hfT0ZGU0VUKSk7XG4rXHRcdFx0XHRcdCAgICAgICBCSVQoYml0KSB8XG4rXHRcdFx0XHRcdCAgICAgICBCSVQoYml0ICsgUlhfTk9fQ1BVX0RTQ1BfTE9XX09GRlNFVCkpO1xuIFx0XHR9XG4gXHR9XG4gXG5AQCAtODkyLDYgKzkzOSw3NiBAQCBzdGF0aWMgdm9pZCBhaXJvaGFfcWRtYV9jbGVhbnVwX3J4X3F1ZXVlKHN0cnVjdCBhaXJvaGFfcXVldWUgKnEpXG4gXHRcdFx0RklFTERfUFJFUChSWF9SSU5HX0RNQV9JRFhfTUFTSywgcS1cdTAwM2V0YWlsKSk7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIGFpcm9oYV9xZG1hX3J4X3JlY292ZXJfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4re1xuK1x0c3RydWN0IGFpcm9oYV9xZG1hICpxZG1hID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBhaXJvaGFfcWRtYSxcbitcdFx0XHRcdFx0XHQgcnhfcmVjb3Zlcl93b3JrKTtcbitcdGludCBxaWQ7XG4rXG4rXHRmb3JfZWFjaF9zZXRfYml0KHFpZCwgcWRtYS1cdTAwM2VyeF9yZWNvdmVyX21hc2ssIEFJUk9IQV9OVU1fUlhfUklORykge1xuK1x0XHRzdHJ1Y3QgYWlyb2hhX3F1ZXVlICpxID0gXHUwMDI2cWRtYS1cdTAwM2VxX3J4W3FpZF07XG4rXHRcdGt0aW1lX3QgcnhfZG1hX29mZl90cztcbitcdFx0czY0IHJ4X2RtYV9vZmZfdXM7XG4rXHRcdHUzMiBzdGF0dXM7XG4rXG4rXHRcdGlmICghcS1cdTAwM2VuZGVzYylcbitcdFx0XHRnb3RvIG5leHQ7XG4rXG4rXHRcdG5hcGlfZGlzYWJsZShcdTAwMjZxLVx1MDAzZW5hcGkpO1xuK1xuK1x0XHQvKiBHTE9CQUxfQ0ZHX1JYX0RNQV9FTl9NQVNLIGlzIHBlci1RRE1BLCBub3QgcGVyLXJpbmcsIHNvXG4rXHRcdCAqIHRoaXMgcGF1c2VzIGV2ZXJ5IFJYIHJpbmcgb24gdGhpcyBRRE1BIGluc3RhbmNlLCBub3QganVzdFxuK1x0XHQgKiB0aGUgc3RhbGxlZCBvbmUgLSB0cmFjayBob3cgbG9uZyBmb3IsIHNpbmNlIHRoYXQncyB0aGVcbitcdFx0ICogcmVhbC13b3JsZCBjb3N0IG9mIHJlY292ZXJ5IG9uIHVucmVsYXRlZCByaW5ncy5cbitcdFx0ICovXG4rXHRcdHJ4X2RtYV9vZmZfdHMgPSBrdGltZV9nZXQoKTtcbitcbitcdFx0YWlyb2hhX3FkbWFfY2xlYXIocWRtYSwgUkVHX1FETUFfR0xPQkFMX0NGRyxcbitcdFx0XHRcdCAgR0xPQkFMX0NGR19SWF9ETUFfRU5fTUFTSyk7XG4rXHRcdGlmIChyZWFkX3BvbGxfdGltZW91dChhaXJvaGFfcWRtYV9yciwgc3RhdHVzLFxuK1x0XHRcdFx0ICAgICAgIShzdGF0dXMgXHUwMDI2IEdMT0JBTF9DRkdfUlhfRE1BX0JVU1lfTUFTSyksXG4rXHRcdFx0XHQgICAgICBVU0VDX1BFUl9NU0VDLCA1MCAqIFVTRUNfUEVSX01TRUMsIHRydWUsXG4rXHRcdFx0XHQgICAgICBxZG1hLCBSRUdfUURNQV9HTE9CQUxfQ0ZHKSlcbitcdFx0XHRkZXZfd2FybihxZG1hLVx1MDAzZWV0aC1cdTAwM2VkZXYsXG4rXHRcdFx0XHQgXCJxaWQ9JWQgUlggRE1BIGJ1c3kgdGltZW91dCBkdXJpbmcgcmVjb3ZlcnlcXG5cIixcbitcdFx0XHRcdCBxaWQpO1xuK1xuK1x0XHQvKiBEcm9wIHdoYXRldmVyIGlzIGN1cnJlbnRseSBpbiBmbGlnaHQgb24gdGhpcyByaW5nIGFuZFxuK1x0XHQgKiByZS1hcm0gaXQgZnJvbSBhIGtub3duLWNsZWFuIHN0YXRlLiBjbGVhbnVwX3J4X3F1ZXVlKClcbitcdFx0ICogb25seSBldmVyIHRvdWNoZXMgdGhlIHN3LW93bmVkIFt0YWlsLCBoZWFkKSB3aW5kb3cgYW5kXG4rXHRcdCAqIHJlc3luY3MgYm90aCBSWF9DUFVfSURYIGFuZCBSWF9ETUFfSURYIHRvIGl0LCB3aGljaCBpc1xuK1x0XHQgKiB3aGF0IHVuLXdlZGdlcyBhIHJpbmcgd2hlcmUgaHcgd3JvdGUgcGFzdCB0aGUgc3cgaGVhZFxuK1x0XHQgKiB3aXRob3V0IHRoZSBjb25zdW1lciBldmVyIGFkdmFuY2luZyAtIG5vIG5lZWQgdG8gZmlndXJlXG4rXHRcdCAqIG91dCB3aGljaCBkZXNjcmlwdG9yIGh3IGFjdHVhbGx5IHVzZWQuXG4rXHRcdCAqL1xuK1x0XHRhaXJvaGFfcWRtYV9jbGVhbnVwX3J4X3F1ZXVlKHEpO1xuK1x0XHRpZiAocS1cdTAwM2Vza2IpIHtcbitcdFx0XHQvKiBkaXNjYXJkIHdoYXRldmVyIHNjYXR0ZXItZ2F0aGVyIGZyYW1lIHdhc1xuK1x0XHRcdCAqIG1pZC1hc3NlbWJseSB3aGVuIHRoZSBzdGFsbCB3YXMgaGl0LCBjbGVhbnVwX3J4X3F1ZXVlKClcbitcdFx0XHQgKiBhYm92ZSBvbmx5IHJlc3luY3MgdGhlIHJpbmcsIG5vdCB0aGlzXG4rXHRcdFx0ICovXG4rXHRcdFx0ZGV2X2tmcmVlX3NrYihxLVx1MDAzZXNrYik7XG4rXHRcdFx0cS1cdTAwM2Vza2IgPSBOVUxMO1xuK1x0XHR9XG4rXHRcdGFpcm9oYV9xZG1hX2ZpbGxfcnhfcXVldWUocSk7XG4rXG4rXHRcdGFpcm9oYV9xZG1hX3NldChxZG1hLCBSRUdfUURNQV9HTE9CQUxfQ0ZHLFxuK1x0XHRcdFx0R0xPQkFMX0NGR19SWF9ETUFfRU5fTUFTSyk7XG4rXHRcdHJ4X2RtYV9vZmZfdXMgPSBrdGltZV91c19kZWx0YShrdGltZV9nZXQoKSwgcnhfZG1hX29mZl90cyk7XG4rXG4rXHRcdHEtXHUwMDNlc3RhbGxfY291bnQgPSAwO1xuK1x0XHRuYXBpX2VuYWJsZShcdTAwMjZxLVx1MDAzZW5hcGkpO1xuK1x0XHRuYXBpX3NjaGVkdWxlKFx1MDAyNnEtXHUwMDNlbmFwaSk7XG4rXG4rXHRcdHFkbWEtXHUwMDNlcnhfcmVjb3Zlcl9jb3VudCsrO1xuK1x0XHRkZXZfd2Fybl9yYXRlbGltaXRlZChxZG1hLVx1MDAzZWV0aC1cdTAwM2VkZXYsXG4rXHRcdFx0XHQgICAgIFwicWlkPSVkIFJYIHJpbmcgcmVjb3ZlcmVkIGFmdGVyIGh3IHN0YWxsIChSWCBETUEgcGF1c2VkIGZvciAlbGxkIHVzIG9uIHRoaXMgUURNQSBpbnN0YW5jZSlcXG5cIixcbitcdFx0XHRcdCAgICAgcWlkLCByeF9kbWFfb2ZmX3VzKTtcbituZXh0OlxuK1x0XHRjbGVhcl9iaXQocWlkLCBxZG1hLVx1MDAzZXJ4X3JlY292ZXJfbWFzayk7XG4rXHR9XG4rfVxuK1xuIHN0YXRpYyBpbnQgYWlyb2hhX3FkbWFfaW5pdF9yeChzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWEpXG4ge1xuIFx0aW50IGk7XG5AQCAtMTQ2OCwxNiArMTU4NSwzMiBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgYWlyb2hhX2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSlcbiBcdGlmICghdGVzdF9iaXQoREVWX1NUQVRFX0lOSVRJQUxJWkVELCBcdTAwMjZxZG1hLVx1MDAzZWV0aC1cdTAwM2VzdGF0ZSkpXG4gXHRcdHJldHVybiBJUlFfTk9ORTtcbiBcbi1cdHJ4X2ludHIxID0gaW50clsxXSBcdTAwMjYgUlhfRE9ORV9MT1dfSU5UX01BU0s7XG4rXHQvKiBBIHJpbmcgY2FuIGFsc28gcmFpc2UgTk9fQ1BVX0RTQ1Agd2hlbiBpdCBydW5zIG91dCBvZiBmcmVlIFJYXG4rXHQgKiBkZXNjcmlwdG9ycyAoZS5nLiBhIGJ1cnN0IG9mIFZJUC1jbGFzc2lmaWVkIGNvbnRyb2wgdHJhZmZpY1xuK1x0ICogZm9yY2VkIG9udG8gYSBzbWFsbCByaW5nKS4gT25jZSBhIHJpbmcgaXMgZnVsbHkgZHJhaW5lZCBubyBtb3JlXG4rXHQgKiBSWF9ET05FIGludGVycnVwdHMgY2FuIGZpcmUgZm9yIGl0LCBzaW5jZSB0aGVyZSBhcmUgbm8gZnJlZVxuK1x0ICogZGVzY3JpcHRvcnMgbGVmdCBmb3IgaGFyZHdhcmUgdG8gcmVjZWl2ZSBpbnRvLCBzbyB3aXRob3V0IHRoaXNcbitcdCAqIE5BUEkgaXMgbmV2ZXIgcmVzY2hlZHVsZWQgYW5kIHRoZSByaW5nIG5ldmVyIGdldHMgcmVmaWxsZWQgYWdhaW4uXG4rXHQgKiBUcmVhdCBOT19DUFVfRFNDUCB0aGUgc2FtZSBhcyBSWF9ET05FIGZvciBzY2hlZHVsaW5nIE5BUEk6XG4rXHQgKiBhaXJvaGFfcWRtYV9yeF9wcm9jZXNzKCkgdW5jb25kaXRpb25hbGx5IGNhbGxzXG4rXHQgKiBhaXJvaGFfcWRtYV9maWxsX3J4X3F1ZXVlKCkgYXQgdGhlIGVuZCBvZiBldmVyeSBwb2xsLCBldmVuIHdoZW5cbitcdCAqIHplcm8gZGVzY3JpcHRvcnMgd2VyZSByZWFwZWQsIHNvIHRoaXMgYWxvbmUgaXMgZW5vdWdoIHRvIHJlY292ZXJcbitcdCAqIHRoZSByaW5nLlxuK1x0ICovXG4rXHRyeF9pbnRyMSA9IGludHJbMV0gXHUwMDI2IChSWF9ET05FX0xPV19JTlRfTUFTSyB8IFJYX05PX0NQVV9EU0NQX0xPV19JTlRfTUFTSyk7XG4gXHRpZiAocnhfaW50cjEpIHtcbiBcdFx0YWlyb2hhX3FkbWFfaXJxX2Rpc2FibGUoaXJxX2JhbmssIFFETUFfSU5UX1JFR19JRFgxLCByeF9pbnRyMSk7XG4tXHRcdHJ4X2ludHJfbWFzayB8PSByeF9pbnRyMTtcbitcdFx0cnhfaW50cl9tYXNrIHw9IChyeF9pbnRyMSBcdTAwMjYgUlhfRE9ORV9MT1dfSU5UX01BU0spIHxcbitcdFx0XHRcdCgocnhfaW50cjEgXHUwMDI2IFJYX05PX0NQVV9EU0NQX0xPV19JTlRfTUFTSykgXHUwMDNlXHUwMDNlXG4rXHRcdFx0XHQgUlhfTk9fQ1BVX0RTQ1BfTE9XX09GRlNFVCk7XG4gXHR9XG4gXG4tXHRyeF9pbnRyMiA9IGludHJbMl0gXHUwMDI2IFJYX0RPTkVfSElHSF9JTlRfTUFTSztcbitcdHJ4X2ludHIyID0gaW50clsyXSBcdTAwMjYgKFJYX0RPTkVfSElHSF9JTlRfTUFTSyB8IFJYX05PX0NQVV9EU0NQX0hJR0hfSU5UX01BU0spO1xuIFx0aWYgKHJ4X2ludHIyKSB7XG4gXHRcdGFpcm9oYV9xZG1hX2lycV9kaXNhYmxlKGlycV9iYW5rLCBRRE1BX0lOVF9SRUdfSURYMiwgcnhfaW50cjIpO1xuLVx0XHRyeF9pbnRyX21hc2sgfD0gKHJ4X2ludHIyIFx1MDAzY1x1MDAzYyAxNik7XG4rXHRcdHJ4X2ludHJfbWFzayB8PSAoKHJ4X2ludHIyIFx1MDAyNiBSWF9ET05FX0hJR0hfSU5UX01BU0spIHxcbitcdFx0XHRcdCAoKHJ4X2ludHIyIFx1MDAyNiBSWF9OT19DUFVfRFNDUF9ISUdIX0lOVF9NQVNLKSBcdTAwM2VcdTAwM2VcbitcdFx0XHRcdCAgUlhfTk9fQ1BVX0RTQ1BfTE9XX09GRlNFVCkpIFx1MDAzY1x1MDAzYyAxNjtcbiBcdH1cbiBcbiBcdGZvciAoaSA9IDA7IHJ4X2ludHJfbWFzayBcdTAwMjZcdTAwMjYgaSBcdTAwM2MgQVJSQVlfU0laRShxZG1hLVx1MDAzZXFfcngpOyBpKyspIHtcbkBAIC0xNTc2LDYgKzE3MDksOCBAQCBzdGF0aWMgdm9pZCBhaXJvaGFfcWRtYV9jbGVhbnVwKHN0cnVjdCBhaXJvaGFfZXRoICpldGgsXG4ge1xuIFx0aW50IGk7XG4gXG4rXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNnFkbWEtXHUwMDNlcnhfcmVjb3Zlcl93b3JrKTtcbitcbiBcdGlmICh0ZXN0X2JpdChERVZfU1RBVEVfSU5JVElBTElaRUQsIFx1MDAyNmV0aC1cdTAwM2VzdGF0ZSkpIHtcbiBcdFx0dTMyIHN0YXR1cztcbiBcbkBAIC0xNjMzLDYgKzE3NjgsMTUgQEAgc3RhdGljIGludCBhaXJvaGFfaHdfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuIFx0aWYgKGVycilcbiBcdFx0cmV0dXJuIGVycjtcbiBcbitcdC8qIElOSVRfV09SSygpIGV2ZXJ5IGluc3RhbmNlIHVwIGZyb250LCBiZWZvcmUgYW55IG9mIHRoZW0gY2FuIGZhaWxcbitcdCAqIGluaXQgYW5kIGp1bXAgdG8gdGhlIGVycm9yIHBhdGggYmVsb3csIHNpbmNlIHRoYXQgcGF0aCB0ZWFycyBkb3duXG4rXHQgKiBldmVyeSBldGgtXHUwMDNlcWRtYVtdIHNsb3QgdW5jb25kaXRpb25hbGx5LCBpbmNsdWRpbmcgb25lcyB0aGlzIGxvb3BcbitcdCAqIG5ldmVyIHJlYWNoZWQuXG4rXHQgKi9cbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoZXRoLVx1MDAzZXFkbWEpOyBpKyspXG4rXHRcdElOSVRfV09SSyhcdTAwMjZldGgtXHUwMDNlcWRtYVtpXS5yeF9yZWNvdmVyX3dvcmssXG4rXHRcdFx0ICBhaXJvaGFfcWRtYV9yeF9yZWNvdmVyX3dvcmspO1xuK1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShldGgtXHUwMDNlcWRtYSk7IGkrKykge1xuIFx0XHRlcnIgPSBhaXJvaGFfcWRtYV9pbml0KHBkZXYsIGV0aCwgXHUwMDI2ZXRoLVx1MDAzZXFkbWFbaV0pO1xuIFx0XHRpZiAoZXJyKVxuQEAgLTE2ODEsNiArMTgyNSwxNCBAQCBzdGF0aWMgdm9pZCBhaXJvaGFfcWRtYV9zdG9wX25hcGkoc3RydWN0IGFpcm9oYV9xZG1hICpxZG1hKVxuIHtcbiBcdGludCBpO1xuIFxuK1x0LyogTWFrZSBzdXJlIHJ4X3JlY292ZXJfd29yayBpcyBuZWl0aGVyIHJ1bm5pbmcgbm9yIGFibGUgdG8gcmUtYXJtXG4rXHQgKiBiZWZvcmUgYW55IG5hcGlfZGlzYWJsZSgpIGJlbG93OiBpdCBhbHNvIGNhbGxzIG5hcGlfZGlzYWJsZSgpL1xuK1x0ICogbmFwaV9lbmFibGUoKSBvbiBxX3J4W10ubmFwaSwgYW5kIG5hcGlfZGlzYWJsZSgpIG9uIGFuXG4rXHQgKiBhbHJlYWR5LWRpc2FibGVkIE5BUEkgc3BpbnMgaW4gbmFwaV9kaXNhYmxlX2xvY2tlZCgpIGZvcmV2ZXIsXG4rXHQgKiBzaW5jZSBvbmx5IG5hcGlfZW5hYmxlKCkgY2xlYXJzIHRoZSBzdGF0ZSBpdCB3YWl0cyBvbi5cbitcdCAqL1xuK1x0ZGlzYWJsZV93b3JrX3N5bmMoXHUwMDI2cWRtYS1cdTAwM2VyeF9yZWNvdmVyX3dvcmspO1xuK1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShxZG1hLVx1MDAzZXFfdHhfaXJxKTsgaSsrKVxuIFx0XHRuYXBpX2Rpc2FibGUoXHUwMDI2cWRtYS1cdTAwM2VxX3R4X2lycVtpXS5uYXBpKTtcbiBcbkBAIC0yNDQ5LDYgKzI2MDEsNDYgQEAgc3RhdGljIHZvaWQgYWlyb2hhX2V0aHRvb2xfZ2V0X2RydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbiBcdHN0cnNjcHkoaW5mby1cdTAwM2VidXNfaW5mbywgZGV2X25hbWUoZXRoLVx1MDAzZWRldiksIHNpemVvZihpbmZvLVx1MDAzZWJ1c19pbmZvKSk7XG4gfVxuIFxuK3N0YXRpYyBjb25zdCBjaGFyIGFpcm9oYV9ldGh0b29sX3N0YXRzX3N0cltdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XG4rXHRcInJ4X3N0YWxsX3JlY292ZXJcIixcbit9O1xuK1xuK3N0YXRpYyB2b2lkIGFpcm9oYV9ldGh0b29sX2dldF9zdHJpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHUzMiBzc2V0LFxuK1x0XHRcdFx0ICAgICAgIHU4ICpkYXRhKVxuK3tcbitcdGludCBpO1xuK1xuK1x0aWYgKHNzZXQgIT0gRVRIX1NTX1NUQVRTKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGFpcm9oYV9ldGh0b29sX3N0YXRzX3N0cik7IGkrKylcbitcdFx0ZXRodG9vbF9wdXRzKFx1MDAyNmRhdGEsIGFpcm9oYV9ldGh0b29sX3N0YXRzX3N0cltpXSk7XG4rfVxuK1xuK3N0YXRpYyBpbnQgYWlyb2hhX2V0aHRvb2xfZ2V0X3NzZXRfY291bnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHNzZXQpXG4re1xuK1x0cmV0dXJuIHNzZXQgPT0gRVRIX1NTX1NUQVRTID9cbitcdCAgICAgICBBUlJBWV9TSVpFKGFpcm9oYV9ldGh0b29sX3N0YXRzX3N0cikgOiAtRU9QTk9UU1VQUDtcbit9XG4rXG4rc3RhdGljIHZvaWQgYWlyb2hhX2V0aHRvb2xfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbitcdFx0XHRcdFx0ICAgICBzdHJ1Y3QgZXRodG9vbF9zdGF0cyAqc3RhdHMsXG4rXHRcdFx0XHRcdCAgICAgdTY0ICpkYXRhKVxuK3tcbitcdHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbitcdHN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYTtcbitcbitcdHJjdV9yZWFkX2xvY2soKTtcbitcdHFkbWEgPSByY3VfZGVyZWZlcmVuY2UoZGV2LVx1MDAzZXFkbWEpO1xuK1x0LyogYWdncmVnYXRlIHJlY292ZXJ5IGNvdW50IGZvciB0aGUgd2hvbGUgcWRtYSBpbnN0YW5jZTogdGhlXG4rXHQgKiBzdGFsbGVkIHJpbmcgY2FuIGNhcnJ5IHRyYWZmaWMgZm9yIG1vcmUgdGhhbiBvbmUgbmV0ZGV2IChWSVBcbitcdCAqIGNsYXNzaWZpY2F0aW9uIHNoYXJlcyByaW5nIDQgYWNyb3NzIHNldmVyYWwgcHJvdG9jb2xzL3BvcnRzKSxcbitcdCAqIHNvIHRoZXJlJ3Mgbm8gc2luZ2xlIG5ldGRldiB0byBhdHRyaWJ1dGUgYW4gaW5kaXZpZHVhbCBldmVudCB0b1xuK1x0ICovXG4rXHRkYXRhWzBdID0gcWRtYSA/IHFkbWEtXHUwMDNlcnhfcmVjb3Zlcl9jb3VudCA6IDA7XG4rXHRyY3VfcmVhZF91bmxvY2soKTtcbit9XG4rXG4gc3RhdGljIHZvaWQgYWlyb2hhX2V0aHRvb2xfZ2V0X21hY19zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuIFx0XHRcdFx0XHQgc3RydWN0IGV0aHRvb2xfZXRoX21hY19zdGF0cyAqc3RhdHMpXG4ge1xuQEAgLTMzNTEsNiArMzU0Myw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgYWlyb2hhX25ldGRldl9vcHMgPSB7XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBhaXJvaGFfZXRodG9vbF9vcHMgPSB7XG4gXHQuZ2V0X2RydmluZm9cdFx0PSBhaXJvaGFfZXRodG9vbF9nZXRfZHJ2aW5mbyxcbitcdC5nZXRfc3RyaW5nc1x0XHQ9IGFpcm9oYV9ldGh0b29sX2dldF9zdHJpbmdzLFxuK1x0LmdldF9zc2V0X2NvdW50XHRcdD0gYWlyb2hhX2V0aHRvb2xfZ2V0X3NzZXRfY291bnQsXG4rXHQuZ2V0X2V0aHRvb2xfc3RhdHNcdD0gYWlyb2hhX2V0aHRvb2xfZ2V0X2V0aHRvb2xfc3RhdHMsXG4gXHQuZ2V0X2V0aF9tYWNfc3RhdHMgICAgICA9IGFpcm9oYV9ldGh0b29sX2dldF9tYWNfc3RhdHMsXG4gXHQuZ2V0X3Jtb25fc3RhdHNcdFx0PSBhaXJvaGFfZXRodG9vbF9nZXRfcm1vbl9zdGF0cyxcbiBcdC5nZXRfbGlua19rc2V0dGluZ3NcdD0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oXG5pbmRleCBmYTlhOGVkY2UyMmZmLi5jZDc1YzE2ZDhkMGM3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaFxuQEAgLTQxLDYgKzQxLDcgQEBcbiAjZGVmaW5lIFRYX0RTQ1BfTlVNXHRcdFx0MTAyNFxuICNkZWZpbmUgUlhfRFNDUF9OVU0oX24pXHRcdFx0XFxcbiBcdCgoX24pID09ICAyID8gMTI4IDpcdFx0XFxcbitcdCAoX24pID09ICA0ID8gMTI4IDpcdFx0XFxcbiBcdCAoX24pID09IDExID8gMTI4IDpcdFx0XFxcbiBcdCAoX24pID09IDE1ID8gMTI4IDpcdFx0XFxcbiBcdCAoX24pID09ICAwID8gMTAyNCA6IDE2KVxuQEAgLTIwNyw2ICsyMDgsMTUgQEAgc3RydWN0IGFpcm9oYV9xdWV1ZSB7XG4gXHRib29sIHR4cV9zdG9wcGVkO1xuIFx0Ym9vbCBmbHVzaGluZztcbiBcbitcdC8qIFJYIGh3IHN0YWxsIGRldGVjdGlvbjogbGFzdCBSRUdfUlhfRE1BX0lEWC90YWlsIHNuYXBzaG90IHRha2VuXG4rXHQgKiB3aGVuZXZlciB0aGUgaGVhZC1vZi1saW5lIGRlc2NyaXB0b3IgaXNuJ3QgRE9ORSwgYW5kIGhvdyBtYW55XG4rXHQgKiBjb25zZWN1dGl2ZSB0aW1lcyBodyBtYWRlIHByb2dyZXNzIChETUFfSURYIG1vdmVkKSB3aGlsZSB0aGVcbitcdCAqIGNvbnN1bWVyICh0YWlsKSBkaWRuJ3QuIFNlZSBhaXJvaGFfcWRtYV9yeF9jaGVja19zdGFsbCgpLlxuK1x0ICovXG4rXHR1MzIgc3RhbGxfZG1hX2lkeDtcbitcdHUxNiBzdGFsbF90YWlsO1xuK1x0dTggc3RhbGxfY291bnQ7XG4rXG4gXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTtcbiBcdHN0cnVjdCBwYWdlX3Bvb2wgKnBhZ2VfcG9vbDtcbiBcdHN0cnVjdCBza19idWZmICpza2I7XG5AQCAtNTY3LDYgKzU3NywxOCBAQCBzdHJ1Y3QgYWlyb2hhX3FkbWEge1xuIFx0c3RydWN0IGFpcm9oYV9xdWV1ZSBxX3R4W0FJUk9IQV9OVU1fVFhfUklOR107XG4gXHRzdHJ1Y3QgYWlyb2hhX3F1ZXVlIHFfcnhbQUlST0hBX05VTV9SWF9SSU5HXTtcbiBcbitcdC8qIHJlY292ZXJ5IGZvciBSWCByaW5ncyB3aG9zZSBodyBjb21wbGV0aW9uIHBvaW50ZXIgKFJYX0RNQV9JRFgpXG4rXHQgKiBrZWVwcyBtb3Zpbmcgd2hpbGUgdGhlIHN3IGNvbnN1bWVyIGlzIHN0dWNrOyBzZWVcbitcdCAqIGFpcm9oYV9xZG1hX3J4X2NoZWNrX3N0YWxsKCkgYW5kIGFpcm9oYV9xZG1hX3J4X3JlY292ZXJfd29yaygpLlxuK1x0ICovXG4rXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgcnhfcmVjb3Zlcl93b3JrO1xuK1x0REVDTEFSRV9CSVRNQVAocnhfcmVjb3Zlcl9tYXNrLCBBSVJPSEFfTlVNX1JYX1JJTkcpO1xuK1x0LyogY291bnQgb2YgY29tcGxldGVkIGh3LXN0YWxsIHJlY292ZXJpZXMsIGV4cG9zZWQgdmlhIGV0aHRvb2wgLVNcbitcdCAqIHNvIGEgcmVjb3ZlcnkgZXZlbnQgKGFuZCB0aGUgcGFja2V0cyBpdCBkcm9wcykgaXMgb2JzZXJ2YWJsZVxuK1x0ICogd2l0aG91dCBncmVwcGluZyBkbWVzZyBmb3IgdGhlIGRldl93YXJuX3JhdGVsaW1pdGVkKCkgYWJvdmVcbitcdCAqL1xuK1x0dTMyIHJ4X3JlY292ZXJfY291bnQ7XG4rXG4gXHRERUNMQVJFX0JJVE1BUChxb3NfY2hhbm5lbF9tYXAsIEFJUk9IQV9OVU1fUU9TX0NIQU5ORUxTKTtcbiB9O1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMDg6Mjg6MjkuNDUyOTAxMTAyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE0MjkzOTU5NjA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGlzIFBhdGNoIGZvciB0aGUgQWlyb2hhIEV0aGVybmV0IERyaXZlcioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBUaGUgZmlyc3QgdGhpbmcgSSBzZWUgaXMgdGhhdCB0aGlzIHBhdGNoIHRvdWNoZXMgYGFpcm9oYV9ldGguY2AgYW5kIGBhaXJvaGFfZXRoLmhgLCBib3RoIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9gIGRpcmVjdG9yeS4gVGhhdCdzIGEgc3Ryb25nIGluZGljYXRpb24gdGhpcyBpcyByZWxhdGVkIHRvIHRoZSBBaXJvaGEgRXRoZXJuZXQgZHJpdmVyLCBidXQgbGV0J3MganVzdCBjb25maXJtIHRoYXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgd2UgYXJlIGRlYWxpbmcgd2l0aCBoZXJlLCBzbyBsZXQgbWUgcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhpcyB3aXRoIHRoZSByZWxldmFudCBgS2NvbmZpZ2AgZmlsZSBpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9gIGRpcmVjdG9yeS4gSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgdGhlIG92ZXJhbGwgYnVpbGQgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBkcml2ZXIuIEknbGwgbmVlZCB0aGF0IGNvbnRleHQgdG8gcHJvcGVybHkgYXNzZXNzIHRoZSBjaGFuZ2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTYzLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQwODozMjowMy43NDY4NjQxNDdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODA3MTAxMDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkVUX0FJUk9IQXxhaXJvaGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMzc4MyBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWc9OD1pZiBORVRfVkVORE9SX0FJUk9IQVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnLTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWc6MTA6Y29uZmlnIE5FVF9BSVJPSEFfTlBVXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWctMTEtXFx0dHJpc3RhdGUgXFxcIkFpcm9oYSBOUFUgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnLTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnOjE4OmNvbmZpZyBORVRfQUlST0hBXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWctMTktXFx0dHJpc3RhdGUgXFxcIkFpcm9oYSBTb0MgR2lnYWJpdCBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnLTIwLVxcdGRlcGVuZHMgb24gTkVUX0RTQSB8fCAhTkVUX0RTQVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnOjIxOlxcdHNlbGVjdCBORVRfQUlST0hBX05QVVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnLTIyLVxcdHNlbGVjdCBQQUdFX1BPT0xcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnLTI2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnOjI3OmNvbmZpZyBORVRfQUlST0hBX0ZMT1dfU1RBVFNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZy0yOC1cXHRkZWZhdWx0IHlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZy0yOS1cXHRib29sIFxcXCJBaXJvaGEgZmxvdyBzdGF0c1xcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZzozMDpcXHRkZXBlbmRzIG9uIE5FVF9BSVJPSEEgXFx1MDAyNlxcdTAwMjYgTkVUX0FJUk9IQV9OUFVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZy0zMS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGUtNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfTkVUX0FJUk9IQSkgKz0gYWlyb2hhLWV0aC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL01ha2VmaWxlOjc6YWlyb2hhLWV0aC15IDo9IGFpcm9oYV9ldGgubyBhaXJvaGFfcHBlLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGU6ODphaXJvaGEtZXRoLSQoQ09ORklHX0RFQlVHX0ZTKSArPSBhaXJvaGFfcHBlX2RlYnVnZnMub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19ORVRfQUlST0hBX05QVSkgKz0gYWlyb2hhX25wdS5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTk6I2luY2x1ZGUgXFxcImFpcm9oYV9yZWdzLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMDojaW5jbHVkZSBcXFwiYWlyb2hhX2V0aC5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMjp1MzIgYWlyb2hhX3JyKHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIG9mZnNldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNzp2b2lkIGFpcm9oYV93cih2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBvZmZzZXQsIHUzMiB2YWwpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yOC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzI6dTMyIGFpcm9oYV9ybXcodm9pZCBfX2lvbWVtICpiYXNlLCB1MzIgb2Zmc2V0LCB1MzIgbWFzaywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM0OlxcdHZhbCB8PSAoYWlyb2hhX3JyKGJhc2UsIG9mZnNldCkgXFx1MDAyNiB+bWFzayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNTpcXHRhaXJvaGFfd3IoYmFzZSwgb2Zmc2V0LCB2YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDA6c3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfc2V0X2lycW1hc2soc3RydWN0IGFpcm9oYV9pcnFfYmFuayAqaXJxX2JhbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MS1cXHRcXHRcXHRcXHQgICAgaW50IGluZGV4LCB1MzIgY2xlYXIsIHUzMiBzZXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00Mi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MzpcXHRzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWEgPSBpcnFfYmFuay1cXHUwMDNlcWRtYTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ0LVxcdGludCBiYW5rID0gaXJxX2JhbmsgLSBcXHUwMDI2cWRtYS1cXHUwMDNlaXJxX2JhbmtzWzBdO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01My1cXHRpcnFfYmFuay1cXHUwMDNlaXJxbWFza1tpbmRleF0gfD0gc2V0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTQ6XFx0YWlyb2hhX3FkbWFfd3IocWRtYSwgUkVHX0lOVF9FTkFCTEUoYmFuaywgaW5kZXgpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTUtXFx0XFx0ICAgICAgIGlycV9iYW5rLVxcdTAwM2VpcnFtYXNrW2luZGV4XSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU4LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTk6XFx0YWlyb2hhX3FkbWFfcnIocWRtYSwgUkVHX0lOVF9FTkFCTEUoYmFuaywgaW5kZXgpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTYwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY0OnN0YXRpYyB2b2lkIGFpcm9oYV9xZG1hX2lycV9lbmFibGUoc3RydWN0IGFpcm9oYV9pcnFfYmFuayAqaXJxX2JhbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NS1cXHRcXHRcXHRcXHQgICBpbnQgaW5kZXgsIHUzMiBtYXNrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Njc6XFx0YWlyb2hhX3FkbWFfc2V0X2lycW1hc2soaXJxX2JhbmssIGluZGV4LCAwLCBtYXNrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY4LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NzA6c3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfaXJxX2Rpc2FibGUoc3RydWN0IGFpcm9oYV9pcnFfYmFuayAqaXJxX2JhbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03MS1cXHRcXHRcXHRcXHQgICAgaW50IGluZGV4LCB1MzIgbWFzaylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTcyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjczOlxcdGFpcm9oYV9xZG1hX3NldF9pcnFtYXNrKGlycV9iYW5rLCBpbmRleCwgbWFzaywgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03NC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjc2OnN0YXRpYyBpbnQgYWlyb2hhX3NldF9tYWNhZGRyKHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2LCBjb25zdCB1OCAqYWRkcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTc3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTc4LVxcdHU4IHJlZl9hZGRyW0VUSF9BTEVOXSBfX2FsaWduZWQoMik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo3OTpcXHRzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoID0gZGV2LVxcdTAwM2VldGg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy04MC1cXHR1MzIgcmVnLCB2YWwsIGxtaW4sIGxtYXg7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTg3LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGV0aC1cXHUwMDNlcG9ydHMpOyBpKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjg4OlxcdFxcdHN0cnVjdCBhaXJvaGFfZ2RtX3BvcnQgKnBvcnQgPSBldGgtXFx1MDAzZXBvcnRzW2ldO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtODktXFx0XFx0aW50IGo7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTk0LVxcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBBUlJBWV9TSVpFKHBvcnQtXFx1MDAzZWRldnMpOyBqKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjk1OlxcdFxcdFxcdHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqaXRlcl9kZXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy05Ni1cXHRcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xMDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxMDI6XFx0XFx0XFx0aWYgKGFpcm9oYV9pc19sYW5fZ2RtX2RldihpdGVyX2RldikgIT1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjEwMzpcXHRcXHRcXHQgICAgYWlyb2hhX2lzX2xhbl9nZG1fZGV2KGRldikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xMDQtXFx0XFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTEzNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjEzNjpcXHRyZWcgPSBhaXJvaGFfaXNfbGFuX2dkbV9kZXYoZGV2KSA/IFJFR19GRV9MQU5fTUFDX0ggOiBSRUdfRkVfV0FOX01BQ19IO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTM3LVxcdHZhbCA9IChhZGRyWzBdIFxcdTAwM2NcXHUwMDNjIDE2KSB8IChhZGRyWzFdIFxcdTAwM2NcXHUwMDNjIDgpIHwgYWRkclsyXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjEzODpcXHRhaXJvaGFfZmVfd3IoZXRoLCByZWcsIHZhbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xMzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNDA6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX01BQ19MTUlOKHJlZyksIGxtaW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTQxOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9NQUNfTE1BWChyZWcpLCBsbWF4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE0MzpcXHRhaXJvaGFfcHBlX2luaXRfdXBkX21lbShkZXYsIGFkZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTQ0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNDg6c3RhdGljIHZvaWQgYWlyb2hhX3NldF9nZG1fcG9ydF9md2RfY2ZnKHN0cnVjdCBhaXJvaGFfZXRoICpldGgsIHUzMiBhZGRyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTQ5LVxcdFxcdFxcdFxcdFxcdHUzMiB2YWwpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTUxOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBhZGRyLCBHRE1fT0NGUV9NQVNLLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTUyLVxcdFxcdCAgICAgIEZJRUxEX1BSRVAoR0RNX09DRlFfTUFTSywgdmFsKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNTM6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIGFkZHIsIEdETV9NQ0ZRX01BU0ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTQtXFx0XFx0ICAgICAgRklFTERfUFJFUChHRE1fTUNGUV9NQVNLLCB2YWwpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE1NTpcXHRhaXJvaGFfZmVfcm13KGV0aCwgYWRkciwgR0RNX0JDRlFfTUFTSyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE1Ni1cXHRcXHQgICAgICBGSUVMRF9QUkVQKEdETV9CQ0ZRX01BU0ssIHZhbCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTU3OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBhZGRyLCBHRE1fVUNGUV9NQVNLLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTU4LVxcdFxcdCAgICAgIEZJRUxEX1BSRVAoR0RNX1VDRlFfTUFTSywgdmFsKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE2MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE2MTpzdGF0aWMgaW50IGFpcm9oYV9zZXRfdmlwX2Zvcl9nZG1fcG9ydChzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKmRldiwgYm9vbCBlbmFibGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNjIte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTYzOlxcdHN0cnVjdCBhaXJvaGFfZ2RtX3BvcnQgKnBvcnQgPSBkZXYtXFx1MDAzZXBvcnQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNjQ6XFx0c3RydWN0IGFpcm9oYV9ldGggKmV0aCA9IGRldi1cXHUwMDNlZXRoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTY1LVxcdHUzMiB2aXBfcG9ydDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTY4LVxcdGlmIChlbmFibGUpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE2OTpcXHRcXHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0ZFX1ZJUF9QT1JUX0VOLCB2aXBfcG9ydCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNzA6XFx0XFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9JRkNfUE9SVF9FTiwgdmlwX3BvcnQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTcxLVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNzI6XFx0XFx0YWlyb2hhX2ZlX2NsZWFyKGV0aCwgUkVHX0ZFX1ZJUF9QT1JUX0VOLCB2aXBfcG9ydCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNzM6XFx0XFx0YWlyb2hhX2ZlX2NsZWFyKGV0aCwgUkVHX0ZFX0lGQ19QT1JUX0VOLCB2aXBfcG9ydCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNzQtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNzk6c3RhdGljIHZvaWQgYWlyb2hhX2ZlX21hY2NyX2luaXQoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE4MC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE4My1cXHRmb3IgKHAgPSAxOyBwIFxcdTAwM2M9IEFSUkFZX1NJWkUoZXRoLVxcdTAwM2Vwb3J0cyk7IHArKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTg0OlxcdFxcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfR0RNX0ZXRF9DRkcocCksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xODUtXFx0XFx0XFx0ICAgICAgR0RNX1RDUF9DS1NVTV9NQVNLIHwgR0RNX1VEUF9DS1NVTV9NQVNLIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE4Ni1cXHRcXHRcXHQgICAgICBHRE1fSVA0X0NLU1VNX01BU0sgfCBHRE1fRFJPUF9DUkNfRVJSX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTg3OlxcdFxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfR0RNX0xFTl9DRkcocCksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xODgtXFx0XFx0XFx0ICAgICAgR0RNX1NIT1JUX0xFTl9NQVNLIHwgR0RNX0xPTkdfTEVOX01BU0ssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE5Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE5MzpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9WTEFOX0NUUkwoMSksIENETV9WTEFOX01BU0ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xOTQtXFx0XFx0ICAgICAgRklFTERfUFJFUChDRE1fVkxBTl9NQVNLLCAweDgxMDApKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE5NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE5NjpcXHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0ZFX0NQT1JUX0NGRywgRkVfQ1BPUlRfUEFEKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE5Ny19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xOTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxOTk6c3RhdGljIHZvaWQgYWlyb2hhX2ZlX3ZpcF9zZXR1cChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjAwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIwMTpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oMyksIEVUSF9QX1BQUF9ESVNDKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIwMjpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDMpLCBQQVROX0ZDUFVfRU5fTUFTSyB8IFBBVE5fRU5fTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMDQ6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDQpLCBQUFBfTENQKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIwNTpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDQpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjA2LVxcdFxcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBGSUVMRF9QUkVQKFBBVE5fVFlQRV9NQVNLLCAxKSB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIwOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIwOTpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oNiksIFBQUF9JUENQKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIxMDpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDYpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjExLVxcdFxcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBGSUVMRF9QUkVQKFBBVE5fVFlQRV9NQVNLLCAxKSB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIxMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIxNDpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oNyksIFBQUF9DSEFQKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIxNTpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDcpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjE2LVxcdFxcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBGSUVMRF9QUkVQKFBBVE5fVFlQRV9NQVNLLCAxKSB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIxOS1cXHQvKiBCT09UUCAoMHg0MykgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIyMDpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oOCksIDB4NDMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjIxOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oOCksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMjItXFx0XFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IFBBVE5fU1BfRU5fTUFTSyB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIyNS1cXHQvKiBCT09UUCAoMHg0NCkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIyNjpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oOSksIDB4NDQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjI3OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oOSksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMjgtXFx0XFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IFBBVE5fU1BfRU5fTUFTSyB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIzMS1cXHQvKiBJU0FLTVAgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIzMjpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oMTApLCAweDFmNDAxZjQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjMzOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMTApLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjM0LVxcdFxcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX0RQX0VOX01BU0sgfCBQQVROX1NQX0VOX01BU0sgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMzc6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDExKSwgUFBQX0lQVjZDUCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMzg6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTigxMSksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMzktXFx0XFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IEZJRUxEX1BSRVAoUEFUTl9UWVBFX01BU0ssIDEpIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjQyLVxcdC8qIERIQ1B2NiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjQzOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigxMiksIDB4MjIyMDIyMyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNDQ6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTigxMiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNDUtXFx0XFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IFBBVE5fRFBfRU5fTUFTSyB8IFBBVE5fU1BfRU5fTUFTSyB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI0Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI0ODpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oMTkpLCBQUFBfUEFQKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI0OTpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDE5KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI1MC1cXHRcXHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgRklFTERfUFJFUChQQVROX1RZUEVfTUFTSywgMSkgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNTMtXFx0LyogRVRILVxcdTAwM2VFVEhfUF8xOTA1ICgweDg5M2EpICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNTQ6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDIwKSwgMHg4OTNhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI1NTpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDIwKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI1Ni1cXHRcXHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9FTl9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI1ODpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oMjEpLCBFVEhfUF9MTERQKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI1OTpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDIxKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2MC1cXHRcXHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9FTl9NQVNLKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjYyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjYzOnN0YXRpYyB1MzIgYWlyb2hhX2ZlX2dldF9wc2VfcXVldWVfcnN2X3BhZ2VzKHN0cnVjdCBhaXJvaGFfZXRoICpldGgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNjQtXFx0XFx0XFx0XFx0XFx0ICAgICB1MzIgcG9ydCwgdTMyIHF1ZXVlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjY1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI2NjpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX1BTRV9RVUVVRV9DRkdfV1IsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNjctXFx0XFx0ICAgICAgUFNFX0NGR19QT1JUX0lEX01BU0sgfCBQU0VfQ0ZHX1FVRVVFX0lEX01BU0ssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI3MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI3MTpcXHRyZXR1cm4gYWlyb2hhX2ZlX2dldChldGgsIFJFR19GRV9QU0VfUVVFVUVfQ0ZHX1ZBTCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI3Mi1cXHRcXHRcXHQgICAgIFBTRV9DRkdfT1FfUlNWX01BU0spO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNzU6c3RhdGljIHZvaWQgYWlyb2hhX2ZlX3NldF9wc2VfcXVldWVfcnN2X3BhZ2VzKHN0cnVjdCBhaXJvaGFfZXRoICpldGgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNzYtXFx0XFx0XFx0XFx0XFx0ICAgICAgdTMyIHBvcnQsIHUzMiBxdWV1ZSwgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI3Ny17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNzg6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9QU0VfUVVFVUVfQ0ZHX1ZBTCwgUFNFX0NGR19PUV9SU1ZfTUFTSyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI3OS1cXHRcXHQgICAgICBGSUVMRF9QUkVQKFBTRV9DRkdfT1FfUlNWX01BU0ssIHZhbCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjgwOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfRkVfUFNFX1FVRVVFX0NGR19XUixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI4MS1cXHRcXHQgICAgICBQU0VfQ0ZHX1BPUlRfSURfTUFTSyB8IFBTRV9DRkdfUVVFVUVfSURfTUFTSyB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI4Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI4ODpzdGF0aWMgdTMyIGFpcm9oYV9mZV9nZXRfcHNlX2FsbF9yc3Yoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI4OS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyOTA6XFx0cmV0dXJuIGFpcm9oYV9mZV9nZXQoZXRoLCBSRUdfRkVfUFNFX0JVRl9TRVQsIFBTRV9BTExSU1ZfTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yOTEtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjkzOnN0YXRpYyBpbnQgYWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KHN0cnVjdCBhaXJvaGFfZXRoICpldGgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yOTQtXFx0XFx0XFx0XFx0ICAgIHUzMiBwb3J0LCB1MzIgcXVldWUsIHUzMiB2YWwpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yOTUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjk2OlxcdHUzMiBvcmlnX3ZhbCA9IGFpcm9oYV9mZV9nZXRfcHNlX3F1ZXVlX3Jzdl9wYWdlcyhldGgsIHBvcnQsIHF1ZXVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5Ny1cXHR1MzIgdG1wLCBhbGxfcnN2LCBmcV9saW1pdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI5OTpcXHRhaXJvaGFfZmVfc2V0X3BzZV9xdWV1ZV9yc3ZfcGFnZXMoZXRoLCBwb3J0LCBxdWV1ZSwgdmFsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMwMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMwMS1cXHQvKiBtb2RpZnkgYWxsIHJzdiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzAyOlxcdGFsbF9yc3YgPSBhaXJvaGFfZmVfZ2V0X3BzZV9hbGxfcnN2KGV0aCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMDMtXFx0YWxsX3JzdiArPSAodmFsIC0gb3JpZ192YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzA0OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfRkVfUFNFX0JVRl9TRVQsIFBTRV9BTExSU1ZfTUFTSyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMwNS1cXHRcXHQgICAgICBGSUVMRF9QUkVQKFBTRV9BTExSU1ZfTUFTSywgYWxsX3JzdikpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMDctXFx0LyogbW9kaWZ5IGh0aGQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMwODpcXHRmcV9saW1pdCA9IGFpcm9oYV9mZV9nZXQoZXRoLCBQU0VfRlFfQ0ZHLCBQU0VfRlFfTElNSVRfTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMDktXFx0dG1wID0gZnFfbGltaXQgLSBhbGxfcnN2IC0gMHgyMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMxMDpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX1BTRV9TSEFSRV9VU0VEX1RIRCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxMS1cXHRcXHQgICAgICBQU0VfU0hBUkVfVVNFRF9IVEhEX01BU0ssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxNC1cXHR0bXAgPSBmcV9saW1pdCAtIGFsbF9yc3YgLSAweDEwMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMxNTpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX1BTRV9TSEFSRV9VU0VEX1RIRCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxNi1cXHRcXHQgICAgICBQU0VfU0hBUkVfVVNFRF9NVEhEX01BU0ssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxOC1cXHR0bXAgPSAoMyAqIHRtcCkgXFx1MDAzZVxcdTAwM2UgMjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMxOTpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX1BTRV9CVUZfU0VULFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzIwLVxcdFxcdCAgICAgIFBTRV9TSEFSRV9VU0VEX0xUSERfTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzI2OnN0YXRpYyB2b2lkIGFpcm9oYV9mZV9wc2VfcG9ydHNfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzI3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzQzOlxcdGlmIChhaXJvaGFfcHBlX2lzX2VuYWJsZWQoZXRoLCAxKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQ0LVxcdFxcdHUzMiBhbGxfcnN2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDYtXFx0XFx0LyogaHcgbWlzc2VzIFBQRTIgb3EgcnN2ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNDc6XFx0XFx0YWxsX3JzdiA9IGFpcm9oYV9mZV9nZXRfcHNlX2FsbF9yc3YoZXRoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0OC1cXHRcXHRhbGxfcnN2ICs9IFBTRV9SU1ZfUEFHRVMgKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQ5LVxcdFxcdFxcdCAgIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfUFBFMl07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNTA6XFx0XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9QU0VfQlVGX1NFVCwgUFNFX0FMTFJTVl9NQVNLLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzUxLVxcdFxcdFxcdCAgICAgIEZJRUxEX1BSRVAoUFNFX0FMTFJTVl9NQVNLLCBhbGxfcnN2KSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM1NS1cXHRmb3IgKHEgPSAwOyBxIFxcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9DRE0xXTsgcSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzU2OlxcdFxcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0NETTEsIHEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNTctXFx0XFx0XFx0XFx0XFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNTktXFx0Zm9yIChxID0gMDsgcSBcXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfR0RNMV07IHErKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM2MDpcXHRcXHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9HRE0xLCBxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzYxLVxcdFxcdFxcdFxcdFxcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzYzLVxcdGZvciAocSA9IDY7IHEgXFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0dETTJdOyBxKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNjQ6XFx0XFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfR0RNMiwgcSwgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNjUtXFx0LyogR0RNMyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzY2LVxcdGZvciAocSA9IDA7IHEgXFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0dETTNdOyBxKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNjc6XFx0XFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfR0RNMywgcSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM2OC1cXHRcXHRcXHRcXHRcXHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3MS1cXHRcXHRpZiAocSBcXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfUFBFMV0gLyAyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzcyOlxcdFxcdFxcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX1BQRTEsIHEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNzMtXFx0XFx0XFx0XFx0XFx0XFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzc0LVxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM3NTpcXHRcXHRcXHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9QUEUxLCBxLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3Ni1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3OC1cXHRmb3IgKHEgPSAwOyBxIFxcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9DRE0yXTsgcSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mzc5OlxcdFxcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0NETTIsIHEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zODAtXFx0XFx0XFx0XFx0XFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zODItXFx0Zm9yIChxID0gMDsgcSBcXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfQ0RNM10gLSAxOyBxKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozODM6XFx0XFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfQ0RNMywgcSwgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zODQtXFx0LyogQ0RNNCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzg1LVxcdGZvciAocSA9IDQ7IHEgXFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0NETTRdOyBxKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozODY6XFx0XFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfQ0RNNCwgcSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM4Ny1cXHRcXHRcXHRcXHRcXHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozODg6XFx0aWYgKGFpcm9oYV9wcGVfaXNfZW5hYmxlZChldGgsIDEpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zODktXFx0XFx0LyogUFBFMiAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOTEtXFx0XFx0XFx0aWYgKHEgXFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX1BQRTJdIC8gMilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM5MjpcXHRcXHRcXHRcXHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9QUEUyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzkzLVxcdFxcdFxcdFxcdFxcdFxcdFxcdCBxLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOTUtXFx0XFx0XFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mzk2OlxcdFxcdFxcdFxcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX1BQRTIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOTctXFx0XFx0XFx0XFx0XFx0XFx0XFx0IHEsIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MDEtXFx0Zm9yIChxID0gMDsgcSBcXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfR0RNNF07IHErKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQwMjpcXHRcXHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9HRE00LCBxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDAzLVxcdFxcdFxcdFxcdFxcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDA1LVxcdGZvciAocSA9IDA7IHEgXFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0NETTVdOyBxKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MDY6XFx0XFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfQ0RNNSwgcSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQwNy1cXHRcXHRcXHRcXHRcXHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQwOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQxMDpzdGF0aWMgaW50IGFpcm9oYV9mZV9tY192bGFuX2NsZWFyKHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MTEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MTg6XFx0XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX01DX1ZMQU5fREFUQSwgMHgwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQxOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDIxLVxcdFxcdCAgICAgIE1DX1ZMQU5fQ0ZHX1RBQkxFX1NFTF9NQVNLIHwgTUNfVkxBTl9DRkdfUldfTUFTSztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQyMjpcXHRcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfTUNfVkxBTl9DRkcsIHZhbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MjM6XFx0XFx0ZXJyID0gcmVhZF9wb2xsX3RpbWVvdXQoYWlyb2hhX2ZlX3JyLCB2YWwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MjQtXFx0XFx0XFx0XFx0XFx0dmFsIFxcdTAwMjYgTUNfVkxBTl9DRkdfQ01EX0RPTkVfTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDMwLVxcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBBSVJPSEFfRkVfTUNfTUFYX1ZMQU5fUE9SVDsgaisrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MzE6XFx0XFx0XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX01DX1ZMQU5fREFUQSwgMHgwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQzMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDM1LVxcdFxcdFxcdCAgICAgIE1DX1ZMQU5fQ0ZHX1JXX01BU0s7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MzY6XFx0XFx0XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX01DX1ZMQU5fQ0ZHLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDM3OlxcdFxcdFxcdGVyciA9IHJlYWRfcG9sbF90aW1lb3V0KGFpcm9oYV9mZV9yciwgdmFsLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDM4LVxcdFxcdFxcdFxcdFxcdFxcdHZhbCBcXHUwMDI2IE1DX1ZMQU5fQ0ZHX0NNRF9ET05FX01BU0ssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ1MDpzdGF0aWMgdm9pZCBhaXJvaGFfZmVfY3Jzbl9xc2VsX2luaXQoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ1MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NTItXFx0LyogQ0RNMV9DUlNOX1FTRUwgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ1MzpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMSwgQ1JTTl8yMiBcXHUwMDNlXFx1MDAzZSAyKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ1NC1cXHRcXHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMjIpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NTYtXFx0XFx0XFx0XFx0IENETV9DUlNOX1FTRUxfUTEpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ1NzpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMSwgQ1JTTl8wOCBcXHUwMDNlXFx1MDAzZSAyKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ1OC1cXHRcXHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMDgpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NjAtXFx0XFx0XFx0XFx0IENETV9DUlNOX1FTRUxfUTEpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ2MTpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMSwgQ1JTTl8yMSBcXHUwMDNlXFx1MDAzZSAyKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ2Mi1cXHRcXHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMjEpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NjQtXFx0XFx0XFx0XFx0IENETV9DUlNOX1FTRUxfUTEpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ2NTpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMSwgQ1JTTl8yNCBcXHUwMDNlXFx1MDAzZSAyKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ2Ni1cXHRcXHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMjQpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NjgtXFx0XFx0XFx0XFx0IENETV9DUlNOX1FTRUxfUTYpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ2OTpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMSwgQ1JTTl8yNSBcXHUwMDNlXFx1MDAzZSAyKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ3MC1cXHRcXHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMjUpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NzMtXFx0LyogQ0RNMl9DUlNOX1FTRUwgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ3NDpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMiwgQ1JTTl8wOCBcXHUwMDNlXFx1MDAzZSAyKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ3NS1cXHRcXHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMDgpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NzctXFx0XFx0XFx0XFx0IENETV9DUlNOX1FTRUxfUTEpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ3ODpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMiwgQ1JTTl8yMSBcXHUwMDNlXFx1MDAzZSAyKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ3OS1cXHRcXHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMjEpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00ODEtXFx0XFx0XFx0XFx0IENETV9DUlNOX1FTRUxfUTEpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ4MjpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMiwgQ1JTTl8yMiBcXHUwMDNlXFx1MDAzZSAyKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ4My1cXHRcXHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMjIpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00ODUtXFx0XFx0XFx0XFx0IENETV9DUlNOX1FTRUxfUTEpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ4NjpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMiwgQ1JTTl8yNCBcXHUwMDNlXFx1MDAzZSAyKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ4Ny1cXHRcXHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMjQpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00ODktXFx0XFx0XFx0XFx0IENETV9DUlNOX1FTRUxfUTYpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ5MDpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMiwgQ1JTTl8yNSBcXHUwMDNlXFx1MDAzZSAyKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ5MS1cXHRcXHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMjUpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00OTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0OTY6c3RhdGljIGludCBhaXJvaGFfZmVfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDk3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ5ODpcXHRhaXJvaGFfZmVfbWFjY3JfaW5pdChldGgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDk5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTAwLVxcdC8qIFBTRSBJUSByZXNlcnZlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MDE6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19QU0VfSVFfUkVWMSwgUFNFX0lRX1JFUzFfUDJfTUFTSyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUwMi1cXHRcXHQgICAgICBGSUVMRF9QUkVQKFBTRV9JUV9SRVMxX1AyX01BU0ssIDB4MTApKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUwMzpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX1BTRV9JUV9SRVYyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTA0LVxcdFxcdCAgICAgIFBTRV9JUV9SRVMyX1A1X01BU0sgfCBQU0VfSVFfUkVTMl9QNF9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MDgtXFx0LyogZW5hYmxlIEZFIGNvcHkgZW5naW5lIGZvciBLQS9EUEkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUwOTpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfUENFX0NGRywgUENFX0RQSV9FTl9NQVNLIHwgUENFX0tBX0VOX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTEwLVxcdC8qIHNldCB2aXAgcXVldWUgc2VsZWN0aW9uIHRvIHJpbmcgMSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTExOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0ZXRF9DRkcoMSksIENETV9WSVBfUVNFTF9NQVNLLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTEyLVxcdFxcdCAgICAgIEZJRUxEX1BSRVAoQ0RNX1ZJUF9RU0VMX01BU0ssIDB4NCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTEzOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0ZXRF9DRkcoMiksIENETV9WSVBfUVNFTF9NQVNLLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTE0LVxcdFxcdCAgICAgIEZJRUxEX1BSRVAoQ0RNX1ZJUF9RU0VMX01BU0ssIDB4NCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTE1LVxcdC8qIHNldCBHRE00IHNvdXJjZSBpbnRlcmZhY2Ugb2Zmc2V0IHRvIDggKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUxNjpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0dETV9TUkNfUE9SVF9TRVQoNCksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MTctXFx0XFx0ICAgICAgR0RNX1NQT1JUX09GRjJfTUFTSyB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUyNC1cXHQvKiBzZXQgUFNFIFBhZ2UgYXMgMTI4QiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTI1OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfRkVfRE1BX0dMT19DRkcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MjYtXFx0XFx0ICAgICAgRkVfRE1BX0dMT19MMl9TUEFDRV9NQVNLIHwgRkVfRE1BX0dMT19QR19TWl9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MjgtXFx0XFx0ICAgICAgRkVfRE1BX0dMT19QR19TWl9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUyOTpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfUlNUX0dMT19DRkcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MzAtXFx0XFx0ICAgICBGRV9SU1RfQ09SRV9NQVNLIHwgRkVfUlNUX0dETTNfTUJJX0FSQl9NQVNLIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTM2LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTM3OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9DRE0xX09RX01BUDAsIEJJVCg0KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1Mzg6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX0NETTFfT1FfTUFQMSwgQklUKDI4KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1Mzk6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX0NETTFfT1FfTUFQMiwgQklUKDQpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU0MDpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfQ0RNMV9PUV9NQVAzLCBCSVQoMjgpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU0MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU0MjpcXHRhaXJvaGFfZmVfdmlwX3NldHVwKGV0aCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NDM6XFx0YWlyb2hhX2ZlX3BzZV9wb3J0c19pbml0KGV0aCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NDU6XFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19HRE1fTUlTQ19DRkcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NDYtXFx0XFx0ICAgICAgR0RNMl9SRE1fQUNLX1dBSVRfUFJFRl9NQVNLIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU0Ny1cXHRcXHQgICAgICBHRE0yX0NITl9WTERfTU9ERV9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU0ODpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9GV0RfQ0ZHKDIpLCBDRE1fT0FNX1FTRUxfTUFTSyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU0OS1cXHRcXHQgICAgICBGSUVMRF9QUkVQKENETV9PQU1fUVNFTF9NQVNLLCAxNSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NTItXFx0LyogTlBVIENvcmUtMywgTlBVIEJyaWRnZSBDaGFubmVsLTMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU1MzpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0lQX0ZSQUdfRlAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NTQtXFx0XFx0ICAgICAgSVBfRlJBR01FTlRfUE9SVF9NQVNLIHwgSVBfRlJBR01FTlRfTkJRX01BU0ssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU1Ny1cXHQvKiBRRE1BIExBTiwgUlggUmluZy0yMiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTU4OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfSVBfRlJBR19GUCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU1OS1cXHRcXHQgICAgICBJUF9BU1NFTUJMRV9QT1JUX01BU0sgfCBJUF9BU1NFTUJMRV9OQlFfTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTYyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTYzOlxcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfR0RNX0ZXRF9DRkcoQUlST0hBX0dETTNfSURYKSwgR0RNX1BBRF9FTl9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU2NDpcXHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0dETV9GV0RfQ0ZHKEFJUk9IQV9HRE00X0lEWCksIEdETV9QQURfRU5fTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NjYtXFx0LyogRW5hYmxlIHNwbGl0IGZvciBNSUIgY291bnRlcnMgZm9yIEdETTMgYW5kIEdETTQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU2NzpcXHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0ZFX0dETV9NSUJfQ0ZHKEFJUk9IQV9HRE0zX0lEWCksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NjgtXFx0XFx0ICAgICAgRkVfR0RNX1RYX01JQl9TUExJVF9FTl9NQVNLIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2OS1cXHRcXHQgICAgICBGRV9HRE1fUlhfTUlCX1NQTElUX0VOX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTcwOlxcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfRkVfR0RNX01JQl9DRkcoQUlST0hBX0dETTRfSURYKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU3MS1cXHRcXHQgICAgICBGRV9HRE1fVFhfTUlCX1NQTElUX0VOX01BU0sgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NzQ6XFx0YWlyb2hhX2ZlX2Nyc25fcXNlbF9pbml0KGV0aCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NzY6XFx0YWlyb2hhX2ZlX2NsZWFyKGV0aCwgUkVHX0ZFX0NQT1JUX0NGRywgRkVfQ1BPUlRfUVVFVUVfWEZDX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTc3OlxcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfRkVfQ1BPUlRfQ0ZHLCBGRV9DUE9SVF9QT1JUX1hGQ19NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU3OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU3OS1cXHQvKiBkZWZhdWx0IGFnaW5nIG1vZGUgZm9yIG1iaSB1bmxvY2sgaXNzdWUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU4MDpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0dETV9DSE5fUkxTKDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTgxLVxcdFxcdCAgICAgIE1CSV9SWF9BR0VfU0VMX01BU0sgfCBNQklfVFhfQUdFX1NFTF9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01ODUtXFx0LyogZGlzYWJsZSBJRkMgYnkgZGVmYXVsdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTg2OlxcdGFpcm9oYV9mZV9jbGVhcihldGgsIFJFR19GRV9DU1JfSUZDX0NGRywgRkVfSUZDX0VOX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTg3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTg4LVxcdC8qIGVuYWJsZSAxOk4gdmxhbiBhY3Rpb24sIGluaXQgdmxhbiB0YWJsZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTg5OlxcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfTUNfVkxBTl9FTiwgTUNfVkxBTl9FTl9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU5MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU5MTpcXHRyZXR1cm4gYWlyb2hhX2ZlX21jX3ZsYW5fY2xlYXIoZXRoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU5Mi19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01OTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1OTQ6c3RhdGljIGludCBhaXJvaGFfcWRtYV9maWxsX3J4X3F1ZXVlKHN0cnVjdCBhaXJvaGFfcXVldWUgKnEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01OTUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTk2OlxcdHN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYSA9IHEtXFx1MDAzZXFkbWE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01OTctXFx0aW50IHFpZCA9IHEgLSBcXHUwMDI2cWRtYS1cXHUwMDNlcV9yeFswXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjAwLVxcdHdoaWxlIChxLVxcdTAwM2VxdWV1ZWQgXFx1MDAzYyBxLVxcdTAwM2VuZGVzYyAtIDEpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjYwMTpcXHRcXHRzdHJ1Y3QgYWlyb2hhX3F1ZXVlX2VudHJ5ICplID0gXFx1MDAyNnEtXFx1MDAzZWVudHJ5W3EtXFx1MDAzZWhlYWRdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjAyOlxcdFxcdHN0cnVjdCBhaXJvaGFfcWRtYV9kZXNjICpkZXNjID0gXFx1MDAyNnEtXFx1MDAzZWRlc2NbcS1cXHUwMDNlaGVhZF07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02MDMtXFx0XFx0c3RydWN0IHBhZ2UgKnBhZ2U7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTYzMi1cXHRpZiAobmZyYW1lcylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjYzMzpcXHRcXHRhaXJvaGFfcWRtYV9ybXcocWRtYSwgUkVHX1JYX0NQVV9JRFgocWlkKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTYzNC1cXHRcXHRcXHRcXHRSWF9SSU5HX0NQVV9JRFhfTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjM5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjQwOnN0YXRpYyBzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjQxOmFpcm9oYV9xZG1hX2dldF9nZG1fZGV2KHN0cnVjdCBhaXJvaGFfZXRoICpldGgsIHN0cnVjdCBhaXJvaGFfcWRtYV9kZXNjICpkZXNjKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjQyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY0MzpcXHRzdHJ1Y3QgYWlyb2hhX2dkbV9wb3J0ICpwb3J0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjQ0LVxcdHUxNiBwLCBkO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NzEtICogd2FpdGluZyBvbiwgd2FzIG5ldmVyIG1hcmtlZCBET05FLiBUaGlzIGhhcHBlbnMgd2hlbiBodyB3cml0ZXMgYVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjcyOiAqIGNvbXBsZXRlZCBkZXNjcmlwdG9yIHBhc3QgcS1cXHUwMDNlaGVhZCBiZWZvcmUgYWlyb2hhX3FkbWFfZmlsbF9yeF9xdWV1ZSgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NzMtICogaGFzIHBvc3RlZCBhIGZyZXNoIGJ1ZmZlciB0aGVyZSwgZGVjb3VwbGVkIGZyb20gc3cncyBvd24gcG9zdGluZ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02ODMtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2ODQ6c3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfcnhfY2hlY2tfc3RhbGwoc3RydWN0IGFpcm9oYV9xdWV1ZSAqcSlcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMDg6MzI6MDMuODI3NTc5MTUxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjM3OTc1NTg4NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgaG93IEknZCBhcHByb2FjaCB0aGlzIHRhc2ssIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBBaXJvaGEgRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhpcyBBaXJvaGEgRXRoZXJuZXQgZHJpdmVyLiBNeSBmaXJzdCBwb3J0IG9mIGNhbGwgd2lsbCBiZSB0aGUgYEtjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSB0aGUgb25lIGxvY2F0ZWQgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnYC4gVGhhdCdzIHdoZXJlIGFsbCB0aGUgZ29vZCBzdHVmZiBpcyBkZWZpbmVkIOKAkyBkZXBlbmRlbmNpZXMsIGFueSBhcmNoaXRlY3R1cmFsIGNvbnN0cmFpbnRzLCBhbmQgYW55IHBsYXRmb3JtLXNwZWNpZmljIHJlcXVpcmVtZW50cy4gQnkgZXhhbWluaW5nIHRoaXMgZmlsZSwgSSBjYW4gcXVpY2tseSBncmFzcCB3aGF0IG5lZWRzIHRvIGJlIGVuYWJsZWQsIHdoYXQgb3RoZXIgY29tcG9uZW50cyBpdCByZWxpZXMgb24sIGFuZCBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGhhcmR3YXJlIGNvbmRpdGlvbnMgaXQgZXhwZWN0cyB0byBmaW5kLiBVbmRlcnN0YW5kaW5nIHRoZXNlIGRlcGVuZGVuY2llcyBhbmQgY29uc3RyYWludHMgaXMgY3J1Y2lhbCBiZWZvcmUgSSBjYW4gZXZlbiBzdGFydCB0aGlua2luZyBhYm91dCBpbnRlZ3JhdGlvbiBvciBtb2RpZmljYXRpb24uIEVzc2VudGlhbGx5LCB0aGlzIGlzIHRoZSBrZXkgdG8gdW5sb2NraW5nIGhvdyB0aGlzIGRyaXZlciAqZml0cyogaW50byB0aGUgYmlnZ2VyIHBpY3R1cmUgb2YgdGhlIG5ldHdvcmtpbmcgc3Vic3lzdGVtLiBJIG5lZWQgdG8gc2VlIHdoYXQncyB3aGF0IGJlZm9yZSBtb3ZpbmcgZm9yd2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM1NDUsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQwODozMzowNy42MjUxNDEzMjFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDU3MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBORVRfVkVORE9SX0FJUk9IQVxcbiAgIDM6XFx0XFx0Ym9vbCBcXFwiQWlyb2hhIGRldmljZXNcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIEFSQ0hfQUlST0hBIHx8IENPTVBJTEVfVEVTVFxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIEFpcm9oYSBTb0Mgd2l0aCBldGhlcm5ldCwgc2F5IFkuXFxuICAgNzpcXHRcXG4gICA4OlxcdGlmIE5FVF9WRU5ET1JfQUlST0hBXFxuICAgOTpcXHRcXG4gIDEwOlxcdGNvbmZpZyBORVRfQUlST0hBX05QVVxcbiAgMTE6XFx0XFx0dHJpc3RhdGUgXFxcIkFpcm9oYSBOUFUgc3VwcG9ydFxcXCJcXG4gIDEyOlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgMTM6XFx0XFx0c2VsZWN0IFJFR01BUF9NTUlPXFxuICAxNDpcXHRcXHRoZWxwXFxuICAxNTpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIEFpcm9oYSBOZXR3b3JrIFByb2Nlc3NvciAoTlBVKSBhdmFpbGFibGVcXG4gIDE2OlxcdFxcdCAgb24gdGhlIEFpcm9oYSBTb2MgZmFtaWx5LlxcbiAgMTc6XFx0XFxuICAxODpcXHRjb25maWcgTkVUX0FJUk9IQVxcbiAgMTk6XFx0XFx0dHJpc3RhdGUgXFxcIkFpcm9oYSBTb0MgR2lnYWJpdCBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcbiAgMjA6XFx0XFx0ZGVwZW5kcyBvbiBORVRfRFNBIHx8ICFORVRfRFNBXFxuICAyMTpcXHRcXHRzZWxlY3QgTkVUX0FJUk9IQV9OUFVcXG4gIDIyOlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gIDIzOlxcdFxcdGhlbHBcXG4gIDI0OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIGdpZ2FiaXQgZXRoZXJuZXQgTUFDcyBpbiB0aGVcXG4gIDI1OlxcdFxcdCAgQWlyb2hhIFNvQyBmYW1pbHkuXFxuICAyNjpcXHRcXG4gIDI3OlxcdGNvbmZpZyBORVRfQUlST0hBX0ZMT1dfU1RBVFNcXG4gIDI4OlxcdFxcdGRlZmF1bHQgeVxcbiAgMjk6XFx0XFx0Ym9vbCBcXFwiQWlyb2hhIGZsb3cgc3RhdHNcXFwiXFxuICAzMDpcXHRcXHRkZXBlbmRzIG9uIE5FVF9BSVJPSEEgXFx1MDAyNlxcdTAwMjYgTkVUX0FJUk9IQV9OUFVcXG4gIDMxOlxcdFxcdGhlbHBcXG4gIDMyOlxcdFxcdCAgRW5hYmxlIEFpcm9oYSBmbG93dGFibGUgc3RhdGlzdGljIGNvdW50ZXJzLlxcbiAgMzM6XFx0XFxuICAzNDpcXHRlbmRpZiAjTkVUX1ZFTkRPUl9BSVJPSEFcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMDg6MzM6MDcuNjI1MjQ5ODAxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjU1MjE3NzEwMDI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTkVUX0FJUk9IQSBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBgTkVUX0FJUk9IQWAgZHJpdmVyLiBJdCdzIGFuIEV0aGVybmV0IFNvQyBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciBBaXJvaGEgU29Dcywgd2hpY2ggbWFrZXMgaW1tZWRpYXRlIHNlbnNlIGdpdmVuIHRoZSBuYW1lLiBUaGUgYGRlcGVuZHMgb24gQVJDSF9BSVJPSEEgfHwgQ09NUElMRV9URVNUYCBjb25kaXRpb24gaXMgZmFpcmx5IHN0cmFpZ2h0Zm9yd2FyZCwgbGlrZWx5IGluZGljYXRpbmcgaXQgZWl0aGVyIHRhcmdldHMgdGhlIEFpcm9oYSBhcmNoaXRlY3R1cmUgb3IgaXMgZW5hYmxlZCBmb3IgdGVzdGluZyBwdXJwb3NlcyBkdXJpbmcgdGhlIGJ1aWxkLlxuXG5Ob3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBIb3cgaXMgdGhpcyBkcml2ZXIgaW50ZWdyYXRlZD8gSXMgaXQgYSBwbGF0Zm9ybSBkZXZpY2UgZHJpdmVyIHJ1bm5pbmcgb24gdGhlIFNvQyBpdHNlbGY/IFRvIHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yLCBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgdGhlIGBhaXJvaGFfZXRoLmNgIHNvdXJjZSBjb2RlLCBzcGVjaWZpY2FsbHkgdGhlIHByb2JlIGZ1bmN0aW9uIGFuZCB0aGUgZGV2aWNlIG1hdGNoaW5nIGxvZ2ljLiBUaG9zZSBhcmUgdGhlIHRlbGwtdGFsZSBzaWducyBvZiBob3cgdGhlIGtlcm5lbCBpZGVudGlmaWVzIGFuZCBpbml0aWFsaXplcyB0aGUgaGFyZHdhcmUgaXQgY29udHJvbHMuIEknbGwgbmVlZCB0byBzZWUgaG93IHRoZSBkcml2ZXIgaXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBwbGF0Zm9ybSB0byBkZXRlcm1pbmUgaWYgdGhlIGRldmljZSBpcyBmb3VuZCBhbmQsIGFzIHN1Y2gsIGlmIG15IHBsYXRmb3JtIGlzIGNvcnJlY3RseSBzdXBwb3J0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MjY5LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQwODozNzoyMi44NDI5NjM1MjlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc0ODAyOTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFpcm9oYV9wcm9iZXxhaXJvaGFfZHJpdmVyfG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXJ8cGxhdGZvcm1fZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jPTM3NTU9c3RhdGljIGludCBhaXJvaGFfcmVnaXN0ZXJfZ2RtX2RldmljZXMoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzc4My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM3ODQ6c3RhdGljIGludCBhaXJvaGFfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3ODUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYz00MTQ3PU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG9mX2Fpcm9oYV9tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MTQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDE0OTpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBhaXJvaGFfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDE1MDpcXHQucHJvYmUgPSBhaXJvaGFfcHJvYmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MTUxLVxcdC5yZW1vdmUgPSBhaXJvaGFfcmVtb3ZlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MTU2LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MTU3Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoYWlyb2hhX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MTU4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYz04MDY9c3RhdGljIHZvaWQgYWlyb2hhX25wdV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtODE0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6ODE1OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGFpcm9oYV9ucHVfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtODE2LVxcdC5wcm9iZSA9IGFpcm9oYV9ucHVfcHJvYmUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTgyMi19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6ODIzOm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoYWlyb2hhX25wdV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtODI0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQwODozNzoyMy4zMTc3NzEzNjRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MzM1MTA1NTQ3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBhaXJvaGFfcHJvYmUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGBhaXJvaGFfcHJvYmVgIGZ1bmN0aW9uLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBob3cgZG9lcyB0aGlzIHRoaW5nIG9wZXJhdGU/IFdoYXQgc3BlY2lmaWMgaGFyZHdhcmUgcmVzb3VyY2VzIGFuZCBEZXZpY2UgVHJlZSBub2RlcyBkb2VzIGl0IG5lZWQgdG8gc3VjY2Vzc2Z1bGx5IGZ1bmN0aW9uPyBVbmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmNpZXMgaXMgY3JpdGljYWwgZm9yIHRyb3VibGVzaG9vdGluZywgZGVidWdnaW5nLCBvciBldmVuIGp1c3QgbW9kaWZ5aW5nIGl0cyBiZWhhdmlvci4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHNjb3BlIGFuZCB0aGUga2V5IGludGVyZmFjZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MjA1LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMDg6Mzg6MDYuNjY4ODI4NDc3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NTE5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM3ODAsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjM3ODA6XFx0XFxuMzc4MTpcXHRcXHRyZXR1cm4gMDtcXG4zNzgyOlxcdH1cXG4zNzgzOlxcdFxcbjM3ODQ6XFx0c3RhdGljIGludCBhaXJvaGFfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4zNzg1OlxcdHtcXG4zNzg2OlxcdFxcdHN0cnVjdCByZXNldF9jb250cm9sX2J1bGtfZGF0YSAqeHNpX3JzdHM7XFxuMzc4NzpcXHRcXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wO1xcbjM3ODg6XFx0XFx0c3RydWN0IGFpcm9oYV9ldGggKmV0aDtcXG4zNzg5OlxcdFxcdGludCBpLCBlcnI7XFxuMzc5MDpcXHRcXG4zNzkxOlxcdFxcdGV0aCA9IGRldm1fa3phbGxvYyhcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBzaXplb2YoKmV0aCksIEdGUF9LRVJORUwpO1xcbjM3OTI6XFx0XFx0aWYgKCFldGgpXFxuMzc5MzpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4zNzk0OlxcdFxcbjM3OTU6XFx0XFx0ZXRoLVxcdTAwM2Vzb2MgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuMzc5NjpcXHRcXHRpZiAoIWV0aC1cXHUwMDNlc29jKVxcbjM3OTc6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuMzc5ODpcXHRcXG4zNzk5OlxcdFxcdGV0aC1cXHUwMDNlZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG4zODAwOlxcdFxcbjM4MDE6XFx0XFx0ZXJyID0gZG1hX3NldF9tYXNrX2FuZF9jb2hlcmVudChldGgtXFx1MDAzZWRldiwgRE1BX0JJVF9NQVNLKDMyKSk7XFxuMzgwMjpcXHRcXHRpZiAoZXJyKSB7XFxuMzgwMzpcXHRcXHRcXHRkZXZfZXJyKGV0aC1cXHUwMDNlZGV2LCBcXFwiZmFpbGVkIGNvbmZpZ3VyaW5nIERNQSBtYXNrXFxcXG5cXFwiKTtcXG4zODA0OlxcdFxcdFxcdHJldHVybiBlcnI7XFxuMzgwNTpcXHRcXHR9XFxuMzgwNjpcXHRcXG4zODA3OlxcdFxcdGV0aC1cXHUwMDNlZmVfcmVncyA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZV9ieW5hbWUocGRldiwgXFxcImZlXFxcIik7XFxuMzgwODpcXHRcXHRpZiAoSVNfRVJSKGV0aC1cXHUwMDNlZmVfcmVncykpXFxuMzgwOTpcXHRcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShldGgtXFx1MDAzZWRldiwgUFRSX0VSUihldGgtXFx1MDAzZWZlX3JlZ3MpLFxcbjM4MTA6XFx0XFx0XFx0XFx0XFx0ICAgICBcXFwiZmFpbGVkIHRvIGlvbWFwIGZlIHJlZ3NcXFxcblxcXCIpO1xcbjM4MTE6XFx0XFxuMzgxMjpcXHRcXHRldGgtXFx1MDAzZXJzdHNbMF0uaWQgPSBcXFwiZmVcXFwiO1xcbjM4MTM6XFx0XFx0ZXRoLVxcdTAwM2Vyc3RzWzFdLmlkID0gXFxcInBkbWFcXFwiO1xcbjM4MTQ6XFx0XFx0ZXRoLVxcdTAwM2Vyc3RzWzJdLmlkID0gXFxcInFkbWFcXFwiO1xcbjM4MTU6XFx0XFx0ZXJyID0gZGV2bV9yZXNldF9jb250cm9sX2J1bGtfZ2V0X2V4Y2x1c2l2ZShldGgtXFx1MDAzZWRldixcXG4zODE2OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBBUlJBWV9TSVpFKGV0aC1cXHUwMDNlcnN0cyksXFxuMzgxNzpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgZXRoLVxcdTAwM2Vyc3RzKTtcXG4zODE4OlxcdFxcdGlmIChlcnIpIHtcXG4zODE5OlxcdFxcdFxcdGRldl9lcnIoZXRoLVxcdTAwM2VkZXYsIFxcXCJmYWlsZWQgdG8gZ2V0IGJ1bGsgcmVzZXQgbGluZXNcXFxcblxcXCIpO1xcbjM4MjA6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4zODIxOlxcdFxcdH1cXG4zODIyOlxcdFxcbjM4MjM6XFx0XFx0eHNpX3JzdHMgPSBkZXZtX2tjYWxsb2MoZXRoLVxcdTAwM2VkZXYsXFxuMzgyNDpcXHRcXHRcXHRcXHRcXHRldGgtXFx1MDAzZXNvYy1cXHUwMDNlbnVtX3hzaV9yc3RzLCBzaXplb2YoKnhzaV9yc3RzKSxcXG4zODI1OlxcdFxcdFxcdFxcdFxcdEdGUF9LRVJORUwpO1xcbjM4MjY6XFx0XFx0aWYgKCF4c2lfcnN0cylcXG4zODI3OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjM4Mjg6XFx0XFxuMzgyOTpcXHRcXHRldGgtXFx1MDAzZXhzaV9yc3RzID0geHNpX3JzdHM7XFxuMzgzMDpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZXRoLVxcdTAwM2Vzb2MtXFx1MDAzZW51bV94c2lfcnN0czsgaSsrKVxcbjM4MzE6XFx0XFx0XFx0ZXRoLVxcdTAwM2V4c2lfcnN0c1tpXS5pZCA9IGV0aC1cXHUwMDNlc29jLVxcdTAwM2V4c2lfcnN0c19uYW1lc1tpXTtcXG4zODMyOlxcdFxcbjM4MzM6XFx0XFx0ZXJyID0gZGV2bV9yZXNldF9jb250cm9sX2J1bGtfZ2V0X2V4Y2x1c2l2ZShldGgtXFx1MDAzZWRldixcXG4zODM0OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBldGgtXFx1MDAzZXNvYy1cXHUwMDNlbnVtX3hzaV9yc3RzLFxcbjM4MzU6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIGV0aC1cXHUwMDNleHNpX3JzdHMpO1xcbjM4MzY6XFx0XFx0aWYgKGVycikge1xcbjM4Mzc6XFx0XFx0XFx0ZGV2X2VycihldGgtXFx1MDAzZWRldiwgXFxcImZhaWxlZCB0byBnZXQgYnVsayB4c2kgcmVzZXQgbGluZXNcXFxcblxcXCIpO1xcbjM4Mzg6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4zODM5OlxcdFxcdH1cXG4zODQwOlxcdFxcbjM4NDE6XFx0XFx0ZXRoLVxcdTAwM2VuYXBpX2RldiA9IGFsbG9jX25ldGRldl9kdW1teSgwKTtcXG4zODQyOlxcdFxcdGlmICghZXRoLVxcdTAwM2VuYXBpX2RldilcXG4zODQzOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjM4NDQ6XFx0XFxuMzg0NTpcXHRcXHQvKiBFbmFibGUgdGhyZWFkZWQgTkFQSSBieSBkZWZhdWx0ICovXFxuMzg0NjpcXHRcXHRldGgtXFx1MDAzZW5hcGlfZGV2LVxcdTAwM2V0aHJlYWRlZCA9IHRydWU7XFxuMzg0NzpcXHRcXHRzdHJzY3B5KGV0aC1cXHUwMDNlbmFwaV9kZXYtXFx1MDAzZW5hbWUsIFxcXCJxZG1hX2V0aFxcXCIsIHNpemVvZihldGgtXFx1MDAzZW5hcGlfZGV2LVxcdTAwM2VuYW1lKSk7XFxuMzg0ODpcXHRcXHRwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBldGgpO1xcbjM4NDk6XFx0XFxuMzg1MDpcXHRcXHRlcnIgPSBhaXJvaGFfaHdfaW5pdChwZGV2LCBldGgpO1xcbjM4NTE6XFx0XFx0aWYgKGVycilcXG4zODUyOlxcdFxcdFxcdGdvdG8gZXJyb3JfbmV0ZGV2X2ZyZWU7XFxuMzg1MzpcXHRcXG4zODU0OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGV0aC1cXHUwMDNlcWRtYSk7IGkrKykge1xcbjM4NTU6XFx0XFx0XFx0YWlyb2hhX3FkbWFfc3RhcnRfbmFwaShcXHUwMDI2ZXRoLVxcdTAwM2VxZG1hW2ldKTtcXG4zODU2OlxcdFxcdFxcdGFpcm9oYV9xZG1hX3NldChcXHUwMDI2ZXRoLVxcdTAwM2VxZG1hW2ldLCBSRUdfUURNQV9HTE9CQUxfQ0ZHLFxcbjM4NTc6XFx0XFx0XFx0XFx0XFx0R0xPQkFMX0NGR19UWF9ETUFfRU5fTUFTSyB8XFxuMzg1ODpcXHRcXHRcXHRcXHRcXHRHTE9CQUxfQ0ZHX1JYX0RNQV9FTl9NQVNLKTtcXG4zODU5OlxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMDg6Mzg6MDYuNjY5MDc1ODY2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjg4MDk2NjY2NzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIGBhaXJvaGFfcHJvYmVgIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGFpcm9oYV9wcm9iZWAuIFRoZSBuYW1lIGl0c2VsZiBzdWdnZXN0cyBpdCdzIGEgcHJvYmUgZnVuY3Rpb24sIGxpa2VseSBhc3NvY2lhdGVkIHdpdGggYW4gU29DIHBsYXRmb3JtIGRyaXZlciwgYW5kIGp1ZGdpbmcgYnkgdGhlIGBhaXJvaGFgIHByZWZpeCwgaXQncyBzcGVjaWZpYyB0byB0aGF0IHZlbmRvcidzIGhhcmR3YXJlLiBUaGUgY2x1ZSB0aGF0IGNlbWVudHMgdGhpcyBpcyB0aGUgT0YgZGV2aWNlIHRyZWUgbWF0Y2gsIGBvZl9haXJvaGFfbWF0Y2hgLiBUaGF0IHRlbGxzIG1lIGl0J3MgdXNpbmcgdGhlIE9wZW4gRmlybXdhcmUgZGV2aWNlIHRyZWUgdG8gaWRlbnRpZnkgYW5kIGNvbmZpZ3VyZSBzcGVjaWZpYyBBaXJvaGEgaGFyZHdhcmUgd2l0aGluIGEgbGFyZ2VyIHN5c3RlbS4gSSBuZWVkIHRvIGZvY3VzIG9uIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLiBJJ2xsIGp1bXAgZGlyZWN0bHkgdG8gbGluZXMgNDE0MC00MTUwIHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiBUaGF0J3MgdXN1YWxseSB3aGVyZSB0aGUgbWVhdCBvZiB0aGUgZHJpdmVyIGludGVyYWN0aW9uIHdpdGggdGhlIGhhcmR3YXJlIGJlZ2lucy4gSeKAmW0gZXhwZWN0aW5nIHRvIHNlZSB0aGluZ3MgbGlrZSByZXNvdXJjZSByZXF1ZXN0cyAobWVtb3J5IHJlZ2lvbnMsIElSUXMpLCBpbml0aWFsaXphdGlvbnMsIGFuZCBwb3RlbnRpYWxseSBzb21lIGRldmljZS1zcGVjaWZpYyBzZXR1cCBvciBjb25maWd1cmF0aW9uIGJhc2VkIG9uIHRoZSBkZXZpY2UgdHJlZSBkYXRhLiBJJ20ga2VlbiB0byBzZWUgdGhlIGFwcHJvYWNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjY3MywiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMDg6Mzk6MzQuNzY1NzQ1MDExWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MDM1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQxMzUsXG4gIFwiTGluZUNvdW50XCI6IDI1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjQxMzU6XFx0XFx0Lm9wcyA9IHtcXG40MTM2OlxcdFxcdFxcdC5nZXRfc3BvcnQgPSBhaXJvaGFfYW43NTgzX2dldF9zcG9ydCxcXG40MTM3OlxcdFxcdFxcdC5nZXRfdmlwX3BvcnQgPSBhaXJvaGFfYW43NTgzX2dldF92aXBfcG9ydCxcXG40MTM4OlxcdFxcdFxcdC5nZXRfZGV2X2Zyb21fc3BvcnQgPSBhaXJvaGFfYW43NTgzX2dldF9kZXZfZnJvbV9zcG9ydCxcXG40MTM5OlxcdFxcdH0sXFxuNDE0MDpcXHR9O1xcbjQxNDE6XFx0XFxuNDE0MjpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9haXJvaGFfbWF0Y2hbXSA9IHtcXG40MTQzOlxcdFxcdHsgLmNvbXBhdGlibGUgPSBcXFwiYWlyb2hhLGVuNzU4MS1ldGhcXFwiLCAuZGF0YSA9IFxcdTAwMjZlbjc1ODFfc29jX2RhdGEgfSxcXG40MTQ0OlxcdFxcdHsgLmNvbXBhdGlibGUgPSBcXFwiYWlyb2hhLGFuNzU4My1ldGhcXFwiLCAuZGF0YSA9IFxcdTAwMjZhbjc1ODNfc29jX2RhdGEgfSxcXG40MTQ1OlxcdFxcdHsgLyogc2VudGluZWwgKi8gfVxcbjQxNDY6XFx0fTtcXG40MTQ3OlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG9mX2Fpcm9oYV9tYXRjaCk7XFxuNDE0ODpcXHRcXG40MTQ5OlxcdHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGFpcm9oYV9kcml2ZXIgPSB7XFxuNDE1MDpcXHRcXHQucHJvYmUgPSBhaXJvaGFfcHJvYmUsXFxuNDE1MTpcXHRcXHQucmVtb3ZlID0gYWlyb2hhX3JlbW92ZSxcXG40MTUyOlxcdFxcdC5kcml2ZXIgPSB7XFxuNDE1MzpcXHRcXHRcXHQubmFtZSA9IEtCVUlMRF9NT0ROQU1FLFxcbjQxNTQ6XFx0XFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gb2ZfYWlyb2hhX21hdGNoLFxcbjQxNTU6XFx0XFx0fSxcXG40MTU2OlxcdH07XFxuNDE1NzpcXHRtb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGFpcm9oYV9kcml2ZXIpO1xcbjQxNTg6XFx0XFxuNDE1OTpcXHRNT0RVTEVfTElDRU5TRShcXFwiR1BMIHYyXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDA4OjM5OjM0Ljc2NTkwNzQ1MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTA4NTcxNTMyMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQSBEZWVwIERpdmUgaW50byBWaXJ0dWFsaXplZCBSZWFjaGFiaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgZHJpdmVyLCBgYWlyb2hhX2V0aGAsIGlzIGEgbm8tZ28gZm9yIGZ1enppbmcgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgY29yZSBvZiBteSBhbmFseXNpcyByZXZvbHZlcyBhcm91bmQgaXRzIGZ1bmRhbWVudGFsIGRlcGVuZGVuY3kgb24gdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUg4oCTIHNwZWNpZmljYWxseSwgdGhlIEFpcm9oYSBFTjc1ODEvQU43NTgzIFNvQyBldGhlcm5ldCBjb250cm9sbGVyLiBUaGlzIGlzbid0IGp1c3QgYSBnZW5lcmljIG5ldHdvcmsgZGV2aWNlOyBpdCdzIGludHJpY2F0ZWx5IHRpZWQgdG8gYSBzcGVjaWZpYyBTeXN0ZW0gb24gYSBDaGlwLCBhbmQgdGhhdOKAmXMgdGhlIGZpcnN0IHJlZCBmbGFnLlxuXG5UaGUgY29kZSBpdHNlbGYsIGFzIEkgdW5kZXJzdGFuZCBpdCwgcmVsaWVzIGhlYXZpbHkgb24gRGV2aWNlIFRyZWUgKERUKSBub2RlcyAoYGFpcm9oYSxlbjc1ODEtZXRoYCwgZXRjLikgYW5kIHRoZSBhc3NvY2lhdGVkIE1NSU8gcmVnaXN0ZXJzIChcImZlXCIsIFwicWRtYVwiLCBldGMuKS4gU3RhbmRhcmQgUUVNVSwgdGhlIHVzdWFsIHdvcmtob3JzZSBmb3IgZnV6emluZywgZG9lc24ndCBlbXVsYXRlIHRoaXMgQWlyb2hhIGhhcmR3YXJlLCBhbmQgbmVpdGhlciBkb2VzIEdDRS4gV2UncmUgdGFsa2luZyBhYm91dCBhIHBsYXRmb3JtIGRyaXZlciBoZXJlLCBpbnN0YW50aWF0ZWQgb25seSB2aWEgdGhlIERldmljZSBUcmVlIG9uIHRoZXNlIEFpcm9oYSBTb0NzLiBJdCBuZWVkcyB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIGNvbnRleHQgdG8gZXZlbiAqcHJvYmUqLiBObyBlbXVsYXRpb24sIG5vIGRldmljZSB0cmVlLCBubyBhY2Nlc3MuXG5cbkxldCdzIGNhcmVmdWxseSBleGFtaW5lIHRoZSBpbnN0cnVjdGlvbnMgYWdhaW4uIEFoLCB5ZXMsIHRoZXJlJ3MgdGhlIHJlbGV2YW50IGNsYXVzZSBhYm91dCBjb2RlIHBhdGhzIHRoYXQgYXJlIGluaGVyZW50bHkgdW5yZWFjaGFibGUgaW4gUUVNVS9HQ0UsIGV2ZW4gd2l0aCBzb2Z0d2FyZSBlbXVsYXRpb24uIFZlbmRvci1zcGVjaWZpYyBkcml2ZXJzLCBQQ0llLCBTbWFydE5JQ3MsIEdQVXPigJRhbGwgcmVxdWlyZSB0aGF0IHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgd2UgbGFjay4gKlRoaXMqIGRlZmluaXRlbHkgZmFsbHMgaW50byB0aGF0IGNhdGVnb3J5LiBUaGUgYGFpcm9oYV9ldGhgIGRyaXZlciBpcyBhICpwbGF0Zm9ybSogZHJpdmVyIHRoYXQgaXMgZW50aXJlbHkgZGVwZW5kZW50IG9uIHRoaXMgQWlyb2hhIFNvQy5cblxuTm93LCBjb3VsZCBzb21lb25lIHRyeSB0byBmb3JjZS1mZWVkIGl0IGEgZHVtbXkgcGxhdGZvcm0gZGV2aWNlPyBNYXliZSwgYnV0IGV2ZW4gaWYgdGhleSBkaWQsIHRoZSBkcml2ZXIncyByZWxpYW5jZSBvbiBzcGVjaWZpYyBEVCBub2RlcyBhbmQgYGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZV9ieW5hbWVgIHRvIGFjY2VzcyB0aG9zZSBoYXJkd2FyZSByZWdpc3RlcnMgd2lsbCB0cmlwIHRoZW0gdXAuIFRoZSBwcm9iZSB3aWxsIGZhaWwgaW1tZWRpYXRlbHkuIFVzZXJzcGFjZSBjYW4ndCBqdXN0IGNyZWF0ZSBhcmJpdHJhcnkgRGV2aWNlIFRyZWUgZW50cmllcywgc28gdGhhdCdzIGEgbm9uLXN0YXJ0ZXIuXG5cblNvLCBsZXQncyBiZSBtZXRob2RpY2FsOlxuXG4xLiAgRmlsZSBtb2RpZmljYXRpb24gaXMgY2xlYXI6IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jYCBhbmQgYC5oYC5cbjIuICBIYXJkd2FyZSBkZXBlbmRlbmNlIGlzIGFic29sdXRlOiBBaXJvaGEgU29DIEdpZ2FiaXQgRXRoZXJuZXQgY29udHJvbGxlciwgcGxhdGZvcm0gZGV2aWNlIChgYWlyb2hhLGVuNzU4MS1ldGhgLCBgYWlyb2hhLGFuNzU4My1ldGhgKS5cbjMuICBSZWFjaGFiaWxpdHkgaW4gUUVNVS9HQ0UgaXMgaW1wb3NzaWJsZS4gVGhpcyBoYXJkd2FyZSBzaW1wbHkgaXNuJ3QgdGhlcmUsIGFuZCB3aXRob3V0IGl0LCB0aGUgZHJpdmVyIHdvbid0IGV2ZW4gbG9hZC5cblxuVGhlIGNvbmNsdXNpb24gaXMgY2xlYXI6IGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBgZmFsc2VgLiBUaGlzIGlzbid0IGEgZnV6emFibGUgdGFyZ2V0IGluIG91ciBjdXJyZW50IHNldHVwLlxuXG5NeSByZWNvbW1lbmRhdGlvbj8gTGV0J3MgdmVyaWZ5IHRoZXNlIGRldGFpbHMgd2l0aCB0aGUgZm9sbG93aW5nOlxuKiAgIFdvcnRoRnV6emluZzogZmFsc2VcbiogICBGb2N1c1N5bWJvbHM6IFxcWyBdXG4qICAgRW5hYmxlQ29uZmlnczogXFxbIF1cblxuQW5kIHRoZSByZWFzb25pbmc/IFdlbGwsIGl0IHNob3VsZCBiZSBjb25jaXNlIGFuZCBpdCBpczogdGhpcyBwYXRjaCBtb2RpZmllcyB0aGUgQWlyb2hhIFNvQyBFdGhlcm5ldCBkcml2ZXIgKGBhaXJvaGFfZXRoYCksIHdoaWNoIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBBaXJvaGEgU29DcyAoc3VjaCBhcyBFTjc1ODEvQU43NTgzKS4gSXQgcmVxdWlyZXMgc3BlY2lmaWMgU29DIGhhcmR3YXJlL0RUIHJlc291cmNlcyBhbmQgY2Fubm90IGJlIHByb2JlZCBvciBleGVjdXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS5cblxuT2theSwgbGV0J3MgaW5mb3JtIGBzZXQtcmVzdWx0c2AgdG9vbCB3aXRoIHRoZXNlIGFyZ3VtZW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc0MjEsIk91dHB1dFRva2VucyI6MTI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODE4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMDg6NDM6MDUuNjIzMDYyOTYxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE4MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFpcm9oYSBTb0MgR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMpLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgQWlyb2hhIFNvQ3MgKGUuZy4sIEVONzU4MS9BTjc1ODMpLiBJdCByZXF1aXJlcyBwaHlzaWNhbCBTb0MgaGFyZHdhcmUgYW5kIGRldmljZSB0cmVlIHJlc291cmNlcyBub3QgYXZhaWxhYmxlIG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFpcm9oYSBTb0MgR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMpLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgQWlyb2hhIFNvQ3MgKGUuZy4sIEVONzU4MS9BTjc1ODMpLiBJdCByZXF1aXJlcyBwaHlzaWNhbCBTb0MgaGFyZHdhcmUgYW5kIGRldmljZSB0cmVlIHJlc291cmNlcyBub3QgYXZhaWxhYmxlIG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMDg6NDM6MDUuNjIzMDg3NzkxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowjwbdh[1] Phase: Running StartedAt: 2026-08-30 08:43:49 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjwbdh[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-30 08:43:49 +0000 UTC FinishedAt: 2026-08-30 08:43:53 +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,}