Name: series-workflowjt686 Phase: Failed StartedAt: 2026-07-16 18:14:11 +0000 UTC FinishedAt: 2026-07-16 18:23:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjt686[0] Phase: Succeeded StartedAt: 2026-07-16 18:14:11 +0000 UTC FinishedAt: 2026-07-16 18:22:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjt686[0].run-triage Phase: Succeeded StartedAt: 2026-07-16 18:14:11 +0000 UTC FinishedAt: 2026-07-16 18:22:59 +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+CgkJCTx0ZD4yMDI2LzA3LzE2IDE4OjIyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgcmVwbGFjZXMgc3RhbmRhcmQgbWVtb3J5IGFsbG9jYXRpb24gZnVuY3Rpb25zIChremFsbG9jLCBrdm1hbGxvY19hcnJheSkgd2l0aCB0aGVpciBtYWNybyBlcXVpdmFsZW50cyAoa3phbGxvY19vYmosIGt2bWFsbG9jX29ianMpLiBUaGlzIGlzIGEgcHVyZWx5IHN5bnRhY3RpYyByZWZhY3RvcmluZyB0aGF0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgbG9naWMgb2YgdGhlIGtlcm5lbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTg6MjI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkNTc1YWY5YjNmM2IxNDU4NmMwMGNkMzRjNGQ0MmEzNmFlZmZlNmJiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMTYgMTg6MjI6MTMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcbmluZGV4IDM1Y2JlODIxYzI1OTY3Li43NDA0N2JmMWUzMmRlMSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcbkBAIC0xNzYsNyAmIzQzOzE3Niw3IEBAIHZvaWQgaXBfdnNfcmh0X3JjdV9mcmVlKHN0cnVjdCByY3VfaGVhZCAqaGVhZClcbiBcbiBzdHJ1Y3QgaXBfdnNfcmh0ICppcF92c19yaHRfYWxsb2MoaW50IGJ1Y2tldHMsIGludCBzY291bnRzLCBpbnQgbG9ja3MpXG4ge1xuLVx0c3RydWN0IGlwX3ZzX3JodCAqdCA9IGt6YWxsb2Moc2l6ZW9mKCp0KSwgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0c3RydWN0IGlwX3ZzX3JodCAqdCA9IGt6YWxsb2Nfb2JqKCp0KTtcbiBcdGludCBpO1xuIFxuIFx0aWYgKCF0KVxuQEAgLTE4Niw3ICYjNDM7MTg2LDcgQEAgc3RydWN0IGlwX3ZzX3JodCAqaXBfdnNfcmh0X2FsbG9jKGludCBidWNrZXRzLCBpbnQgc2NvdW50cywgaW50IGxvY2tzKVxuIFxuIFx0XHRzY291bnRzID0gbWluKHNjb3VudHMsIGJ1Y2tldHMpO1xuIFx0XHRzY291bnRzID0gbWluKHNjb3VudHMsIG1sKTtcbi1cdFx0dC1cdTAwM2VzZXFjID0ga3ZtYWxsb2NfYXJyYXkoc2NvdW50cywgc2l6ZW9mKCp0LVx1MDAzZXNlcWMpLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRcdHQtXHUwMDNlc2VxYyA9IGt2bWFsbG9jX29ianMoKnQtXHUwMDNlc2VxYywgc2NvdW50cyk7XG4gXHRcdGlmICghdC1cdTAwM2VzZXFjKVxuIFx0XHRcdGdvdG8gZXJyO1xuIFx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBzY291bnRzOyBpJiM0MzsmIzQzOylcbkBAIC0xOTQsOCAmIzQzOzE5NCw3IEBAIHN0cnVjdCBpcF92c19yaHQgKmlwX3ZzX3JodF9hbGxvYyhpbnQgYnVja2V0cywgaW50IHNjb3VudHMsIGludCBsb2NrcylcbiBcbiBcdFx0aWYgKGxvY2tzKSB7XG4gXHRcdFx0bG9ja3MgPSBtaW4obG9ja3MsIHNjb3VudHMpO1xuLVx0XHRcdHQtXHUwMDNlbG9jayA9IGt2bWFsbG9jX2FycmF5KGxvY2tzLCBzaXplb2YoKnQtXHUwMDNlbG9jayksXG4tXHRcdFx0XHRcdFx0IEdGUF9LRVJORUwpO1xuJiM0MztcdFx0XHR0LVx1MDAzZWxvY2sgPSBrdm1hbGxvY19vYmpzKCp0LVx1MDAzZWxvY2ssIGxvY2tzKTtcbiBcdFx0XHRpZiAoIXQtXHUwMDNlbG9jaylcbiBcdFx0XHRcdGdvdG8gZXJyO1xuIFx0XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGxvY2tzOyBpJiM0MzsmIzQzOylcbkBAIC0yMDMsNyAmIzQzOzIwMiw3IEBAIHN0cnVjdCBpcF92c19yaHQgKmlwX3ZzX3JodF9hbGxvYyhpbnQgYnVja2V0cywgaW50IHNjb3VudHMsIGludCBsb2NrcylcbiBcdFx0fVxuIFx0fVxuIFxuLVx0dC1cdTAwM2VidWNrZXRzID0ga3ZtYWxsb2NfYXJyYXkoYnVja2V0cywgc2l6ZW9mKCp0LVx1MDAzZWJ1Y2tldHMpLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHR0LVx1MDAzZWJ1Y2tldHMgPSBrdm1hbGxvY19vYmpzKCp0LVx1MDAzZWJ1Y2tldHMsIGJ1Y2tldHMpO1xuIFx0aWYgKCF0LVx1MDAzZWJ1Y2tldHMpXG4gXHRcdGdvdG8gZXJyO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYnVja2V0czsgaSYjNDM7JiM0MzspXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTg6MjI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSByZXBsYWNlcyBzdGFuZGFyZCBtZW1vcnkgYWxsb2NhdGlvbiBmdW5jdGlvbnMgKGt6YWxsb2MsIGt2bWFsbG9jX2FycmF5KSB3aXRoIHRoZWlyIG1hY3JvIGVxdWl2YWxlbnRzIChremFsbG9jX29iaiwga3ZtYWxsb2Nfb2JqcykuIFRoaXMgaXMgYSBwdXJlbHkgc3ludGFjdGljIHJlZmFjdG9yaW5nIHRoYXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBsb2dpYyBvZiB0aGUga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZDU3NWFmOWIzZjNiMTQ1ODZjMDBjZDM0YzRkNDJhMzZhZWZmZTZiYgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDE2IDE4OjIyOjEzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMKaW5kZXggMzVjYmU4MjFjMjU5NjcuLjc0MDQ3YmYxZTMyZGUxIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMKQEAgLTE3Niw3ICYjNDM7MTc2LDcgQEAgdm9pZCBpcF92c19yaHRfcmN1X2ZyZWUoc3RydWN0IHJjdV9oZWFkICpoZWFkKQogCiBzdHJ1Y3QgaXBfdnNfcmh0ICppcF92c19yaHRfYWxsb2MoaW50IGJ1Y2tldHMsIGludCBzY291bnRzLCBpbnQgbG9ja3MpCiB7Ci0Jc3RydWN0IGlwX3ZzX3JodCAqdCA9IGt6YWxsb2Moc2l6ZW9mKCp0KSwgR0ZQX0tFUk5FTCk7CiYjNDM7CXN0cnVjdCBpcF92c19yaHQgKnQgPSBremFsbG9jX29iaigqdCk7CiAJaW50IGk7CiAKIAlpZiAoIXQpCkBAIC0xODYsNyAmIzQzOzE4Niw3IEBAIHN0cnVjdCBpcF92c19yaHQgKmlwX3ZzX3JodF9hbGxvYyhpbnQgYnVja2V0cywgaW50IHNjb3VudHMsIGludCBsb2NrcykKIAogCQlzY291bnRzID0gbWluKHNjb3VudHMsIGJ1Y2tldHMpOwogCQlzY291bnRzID0gbWluKHNjb3VudHMsIG1sKTsKLQkJdC0mZ3Q7c2VxYyA9IGt2bWFsbG9jX2FycmF5KHNjb3VudHMsIHNpemVvZigqdC0mZ3Q7c2VxYyksIEdGUF9LRVJORUwpOwomIzQzOwkJdC0mZ3Q7c2VxYyA9IGt2bWFsbG9jX29ianMoKnQtJmd0O3NlcWMsIHNjb3VudHMpOwogCQlpZiAoIXQtJmd0O3NlcWMpCiAJCQlnb3RvIGVycjsKIAkJZm9yIChpID0gMDsgaSAmbHQ7IHNjb3VudHM7IGkmIzQzOyYjNDM7KQpAQCAtMTk0LDggJiM0MzsxOTQsNyBAQCBzdHJ1Y3QgaXBfdnNfcmh0ICppcF92c19yaHRfYWxsb2MoaW50IGJ1Y2tldHMsIGludCBzY291bnRzLCBpbnQgbG9ja3MpCiAKIAkJaWYgKGxvY2tzKSB7CiAJCQlsb2NrcyA9IG1pbihsb2Nrcywgc2NvdW50cyk7Ci0JCQl0LSZndDtsb2NrID0ga3ZtYWxsb2NfYXJyYXkobG9ja3MsIHNpemVvZigqdC0mZ3Q7bG9jayksCi0JCQkJCQkgR0ZQX0tFUk5FTCk7CiYjNDM7CQkJdC0mZ3Q7bG9jayA9IGt2bWFsbG9jX29ianMoKnQtJmd0O2xvY2ssIGxvY2tzKTsKIAkJCWlmICghdC0mZ3Q7bG9jaykKIAkJCQlnb3RvIGVycjsKIAkJCWZvciAoaSA9IDA7IGkgJmx0OyBsb2NrczsgaSYjNDM7JiM0MzspCkBAIC0yMDMsNyAmIzQzOzIwMiw3IEBAIHN0cnVjdCBpcF92c19yaHQgKmlwX3ZzX3JodF9hbGxvYyhpbnQgYnVja2V0cywgaW50IHNjb3VudHMsIGludCBsb2NrcykKIAkJfQogCX0KIAotCXQtJmd0O2J1Y2tldHMgPSBrdm1hbGxvY19hcnJheShidWNrZXRzLCBzaXplb2YoKnQtJmd0O2J1Y2tldHMpLCBHRlBfS0VSTkVMKTsKJiM0MzsJdC0mZ3Q7YnVja2V0cyA9IGt2bWFsbG9jX29ianMoKnQtJmd0O2J1Y2tldHMsIGJ1Y2tldHMpOwogCWlmICghdC0mZ3Q7YnVja2V0cykKIAkJZ290byBlcnI7CiAJZm9yIChpID0gMDsgaSAmbHQ7IGJ1Y2tldHM7IGkmIzQzOyYjNDM7KQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxODoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjg5CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMTg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldGZpbHRlciBJUFZTIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY2AuIFRoZSBjb3JlIGNoYW5nZSBpcyBhIHJlcGxhY2VtZW50IG9mIG1lbW9yeSBhbGxvY2F0aW9uIGZ1bmN0aW9ucy4gU3BlY2lmaWNhbGx5LCBpdCBzd2FwcyBvdXQgYGt6YWxsb2NgIHdpdGggYGt6YWxsb2Nfb2JqYCBhbmQgYGt2bWFsbG9jX2FycmF5YCB3aXRoIGBrdm1hbGxvY19vYmpzYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCByZWZhY3RvcmluZywgcHJvYmFibHkgbGV2ZXJhZ2luZyBzb21lIG5ldyBhbGxvY2F0aW9uIG1hY3JvcyB0aGF0IGNhbWUgaW4gd2l0aCBhIHByZXZpb3VzIGNvbW1pdCBvciBhcyBwYXJ0IG9mIGEgbGFyZ2VyIHNlcmllcy4gSSBtZWFuLCBpdCAqbG9va3MqIGxpa2UgYSBzaW1wbGUgc3Vic3RpdHV0aW9uLgoKQnV0IGhhbmcgb27igKYgYXJlIHRoZXNlIGV2ZW4gKnJlYWwqIG1hY3Jvcz8gYGt6YWxsb2Nfb2JqYCBhbmQgYGt2bWFsbG9jX29ianNgIGFyZW4mIzM5O3QgaW1tZWRpYXRlbHkgcmluZ2luZyBhbnkgYmVsbHMuIFRoZXkgYXJlbiYjMzk7dCBzdGFuZGFyZCBrZXJuZWwgaWRpb21zLCBzbyBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMganVzdCBhIG1hY3JvIHJlcGxhY2VtZW50IGFuZCB0aGF0IGl0JiMzOTtzIG5vdCBhY3R1YWxseSBpbnRyb2R1Y2luZyBhbnl0aGluZyBuZXcuIEFscmlnaHQsIGFmdGVyIGEgY2xvc2VyIGxvb2ssIGl0ICppcyoganVzdCBhIG1hY3JvIHJlcGxhY2VtZW50LiBUaGUgY29yZSBsb2dpYyBkb2VzbiYjMzk7dCBhcHBlYXIgdG8gYmUgYWx0ZXJlZCBpbiBhbnkgbWVhbmluZ2Z1bCB3YXkuIEl0IGxvb2tzIGxpa2UgaXQganVzdCB1c2VzIHRoZSBleGlzdGluZyBhbGxvY2F0aW9uIGZ1bmN0aW9ucyBhcyBhIGJhc2UuCgpOb3csIEkgc3RpbGwgbmVlZCB0byBjaGVjayBleGFjdGx5IHdoYXQgdGhlIG1hY3JvcyBhcmUgZG9pbmcuIEkgd2FudCB0byBzZWUgaWYgYGt6YWxsb2Nfb2JqYCBpcyBkZWZpbmVkIHNvbWV3aGVyZSwganVzdCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDE4OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t6YWxsb2Nfb2JqJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA3OTA0NiBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9saXN0LnJzdD0xMDM9bGlzdDpcbi0tXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2xpc3QucnN0LTExNC1cbkRvY3VtZW50YXRpb24vY29yZS1hcGkvbGlzdC5yc3Q6MTE1OiAgICAgICAgICBncm9jayA9IGt6YWxsb2Nfb2JqKCpncm9jayk7XG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2xpc3QucnN0LTExNi0gICAgICAgICAgaWYgKCFncm9jaylcbi0tXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2xpc3QucnN0LTEyNS1cbkRvY3VtZW50YXRpb24vY29yZS1hcGkvbGlzdC5yc3Q6MTI2OiAgICAgICAgICBkaW1pdHJpID0ga3phbGxvY19vYmooKmRpbWl0cmkpO1xuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9saXN0LnJzdC0xMjctICAgICAgICAgIGlmICghZGltaXRyaSlcbi0tXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbWFpbGJveC5yc3Q9NDU9YSBtZXNzYWdlIGFuZCBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHRoZSBBUEkgYW5kIHJldHVybiBpbW1lZGlhdGVseSkuXG4tLVxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21haWxib3gucnN0LTg5LVxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21haWxib3gucnN0OjkwOlx0XHRkY19zeW5jID0ga3phbGxvY19vYmooKmRjX3N5bmMpO1xuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21haWxib3gucnN0OjkxOlx0XHRkY19hc3luYyA9IGt6YWxsb2Nfb2JqKCpkY19hc3luYyk7XG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbWFpbGJveC5yc3QtOTItXG4tLVxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21lZGlhL3Y0bDItZmgucnN0PTI2PUV4YW1wbGU6XG4tLVxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21lZGlhL3Y0bDItZmgucnN0LTQ0LVxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21lZGlhL3Y0bDItZmgucnN0OjQ1Olx0XHRteV9maCA9IGt6YWxsb2Nfb2JqKCpteV9maCk7XG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbWVkaWEvdjRsMi1maC5yc3QtNDYtXG4tLVxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2NvZGluZy1zdHlsZS5yc3Q9OTM4PVRoZSBrZXJuZWwgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBnZW5lcmFsIHB1cnBvc2UgbWVtb3J5IGFsbG9jYXRvcnM6XG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY29kaW5nLXN0eWxlLnJzdDo5Mzk6a21hbGxvYygpLCBremFsbG9jKCksIGttYWxsb2Nfb2JqcygpLCBremFsbG9jX29ianMoKSwgdm1hbGxvYygpLCBhbmRcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0LTk0MC12emFsbG9jKCkuICBQbGVhc2UgcmVmZXIgdG8gdGhlIEFQSSBkb2N1bWVudGF0aW9uIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uXG4tLVxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2NvZGluZy1zdHlsZS5yc3Q9OTY0PVRoZSBwcmVmZXJyZWQgZm9ybSBmb3IgYWxsb2NhdGluZyBhIHplcm9lZCBhcnJheSBpcyB0aGUgZm9sbG93aW5nOlxuLS1cbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0LTk2Ny1cbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0Ojk2ODpcdHAgPSBremFsbG9jX29ianMoKnAsIG4sIC4uLik7XG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY29kaW5nLXN0eWxlLnJzdC05NjktXG4tLVxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0PTM5OD1iZWNvbWUsIHJlc3BlY3RpdmVseTo6XG4tLVxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0LTQwMC1cdHB0ciA9IGttYWxsb2Nfb2JqKCpwdHIgWywgZ2ZwXSApO1xuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0OjQwMTpcdHB0ciA9IGt6YWxsb2Nfb2JqKCpwdHIgWywgZ2ZwXSApO1xuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0LTQwMi1cdHB0ciA9IGttYWxsb2Nfb2JqcygqcHRyLCBjb3VudCBbLCBnZnBdICk7XG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3Q6NDAzOlx0cHRyID0ga3phbGxvY19vYmpzKCpwdHIsIGNvdW50IFssIGdmcF0gKTtcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZXByZWNhdGVkLnJzdC00MDQtXHRwdHIgPSBrbWFsbG9jX2ZsZXgoKnB0ciwgZmxleF9tZW1iZXIsIGNvdW50IFssIGdmcF0gKTtcbi0tXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3Q9MjA4PXRvIGRldGFpbHMgZXhwbGFpbmVkIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbi5cbi0tXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtMjY4LSAgICAgICAgICAgICAgLyogYWxsb2NhdGUgYSBjaGlwLXNwZWNpZmljIGRhdGEgd2l0aCB6ZXJvIGZpbGxlZCAqL1xuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0OjI2OTogICAgICAgICAgICAgIGNoaXAgPSBremFsbG9jX29iaigqY2hpcCk7XG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtMjcwLSAgICAgICAgICAgICAgaWYgKGNoaXAgPT0gTlVMTClcbi0tXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3Q9NjIzPUFmdGVyIGFsbG9jYXRpbmcgYSBjYXJkIGluc3RhbmNlIHZpYSA6YzpmdW5jOmBzbmRfY2FyZF9uZXcoKWBcbi0tXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtNjMwLSAgLi4uLi5cbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdDo2MzE6ICBjaGlwID0ga3phbGxvY19vYmooKmNoaXApO1xuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0LTYzMi1cbi0tXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3Q9Njk4PWRlc3RydWN0b3IgYW5kIFBDSSBlbnRyaWVzLiBFeGFtcGxlIGNvZGUgaXMgc2hvd24gZmlyc3QsIGJlbG93Ojpcbi0tXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtNzQ5LVxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0Ojc1MDogICAgICAgICAgICAgIGNoaXAgPSBremFsbG9jX29iaigqY2hpcCk7XG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtNzUxLSAgICAgICAgICAgICAgaWYgKGNoaXAgPT0gTlVMTCkge1xuLS1cbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdD0zODIzPWNoaXAgZGF0YSBpbmRpdmlkdWFsbHk6OlxuLS1cbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdC0zODM1LSAgICAgICAgICAuLi4uXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3Q6MzgzNjogICAgICAgICAgY2hpcCA9IGt6YWxsb2Nfb2JqKCpjaGlwKTtcbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdC0zODM3LSAgICAgICAgICAuLi4uXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vdmlkZW80bGludXgvdjRsMi1mcmFtZXdvcmsudHh0PTc5ND1pbnQgbXlfb3BlbihzdHJ1Y3QgZmlsZSAqZmlsZSlcbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi92aWRlbzRsaW51eC92NGwyLWZyYW1ld29yay50eHQtODAxLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vdmlkZW80bGludXgvdjRsMi1mcmFtZXdvcmsudHh0OjgwMjpcdG15X2ZoID0ga3phbGxvY19vYmooKm15X2ZoKTtcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL3ZpZGVvNGxpbnV4L3Y0bDItZnJhbWV3b3JrLnR4dC04MDMtXG4tLVxuYXJjaC9hbHBoYS9rZXJuZWwvbW9kdWxlLmM9NjQ9bW9kdWxlX2Zyb2JfYXJjaF9zZWN0aW9ucyhFbGY2NF9FaGRyICpoZHIsIEVsZjY0X1NoZHIgKnNlY2hkcnMsXG4tLVxuYXJjaC9hbHBoYS9rZXJuZWwvbW9kdWxlLmMtOTUtXHRuc3ltcyA9IHN5bXRhYi1cdTAwM2VzaF9zaXplIC8gc2l6ZW9mKEVsZjY0X1N5bSk7XG5hcmNoL2FscGhhL2tlcm5lbC9tb2R1bGUuYzo5NjpcdGNoYWlucyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgZ290X2VudHJ5LCBuc3ltcyk7XG5hcmNoL2FscGhhL2tlcm5lbC9tb2R1bGUuYy05Ny1cdGlmICghY2hhaW5zKSB7XG4tLVxuYXJjaC9hbHBoYS9rZXJuZWwvc2V0dXAuYz0zOTA9cmVnaXN0ZXJfY3B1cyh2b2lkKVxuLS1cbmFyY2gvYWxwaGEva2VybmVsL3NldHVwLmMtMzk0LVx0Zm9yX2VhY2hfcG9zc2libGVfY3B1KGkpIHtcbmFyY2gvYWxwaGEva2VybmVsL3NldHVwLmM6Mzk1Olx0XHRzdHJ1Y3QgY3B1ICpwID0ga3phbGxvY19vYmooKnApO1xuYXJjaC9hbHBoYS9rZXJuZWwvc2V0dXAuYy0zOTYtXHRcdGlmICghcClcbi0tXG5hcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmM9MTEyMD1zdGF0aWMgaW50IGppdF9wcmVwYXJlX2ZpbmFsX21lbV9hbGxvYyhzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbi0tXG5hcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmMtMTEzMS1cdGlmIChjdHgtXHUwMDNlbmVlZF9leHRyYV9wYXNzKSB7XG5hcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmM6MTEzMjpcdFx0Y3R4LVx1MDAzZWppdF9kYXRhID0ga3phbGxvY19vYmooKmN0eC1cdTAwM2VqaXRfZGF0YSk7XG5hcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmMtMTEzMy1cdFx0aWYgKCFjdHgtXHUwMDNlaml0X2RhdGEpXG4tLVxuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jPTIyMD1sb2NvbW9faW5pdF9vbmVfY2hpbGQoc3RydWN0IGxvY29tbyAqbGNoaXAsIHN0cnVjdCBsb2NvbW9fZGV2X2luZm8gKmluZm8pXG4tLVxuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jLTIyNC1cbmFyY2gvYXJtL2NvbW1vbi9sb2NvbW8uYzoyMjU6XHRkZXYgPSBremFsbG9jX29iaihzdHJ1Y3QgbG9jb21vX2Rldik7XG5hcmNoL2FybS9jb21tb24vbG9jb21vLmMtMjI2LVx0aWYgKCFkZXYpIHtcbi0tXG5hcmNoL2FybS9jb21tb24vbG9jb21vLmM9MzU2PV9fbG9jb21vX3Byb2JlKHN0cnVjdCBkZXZpY2UgKm1lLCBzdHJ1Y3QgcmVzb3VyY2UgKm1lbSwgaW50IGlycSlcbi0tXG5hcmNoL2FybS9jb21tb24vbG9jb21vLmMtMzYyLVxuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jOjM2MzpcdGxjaGlwID0ga3phbGxvY19vYmooc3RydWN0IGxvY29tbyk7XG5hcmNoL2FybS9jb21tb24vbG9jb21vLmMtMzY0LVx0aWYgKCFsY2hpcClcbi0tXG5hcmNoL2FybS9jb21tb24vc2ExMTExLmM9NzMzPXNhMTExMV9pbml0X29uZV9jaGlsZChzdHJ1Y3Qgc2ExMTExICpzYWNoaXAsIHN0cnVjdCByZXNvdXJjZSAqcGFyZW50LFxuLS1cbmFyY2gvYXJtL2NvbW1vbi9zYTExMTEuYy03MzktXG5hcmNoL2FybS9jb21tb24vc2ExMTExLmM6NzQwOlx0ZGV2ID0ga3phbGxvY19vYmooc3RydWN0IHNhMTExMV9kZXYpO1xuYXJjaC9hcm0vY29tbW9uL3NhMTExMS5jLTc0MS1cdGlmICghZGV2KSB7XG4tLVxuYXJjaC9hcm0vY29tbW9uL3Njb29wLmM9MTc4PXN0YXRpYyBpbnQgc2Nvb3BfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5hcmNoL2FybS9jb21tb24vc2Nvb3AuYy0xODctXG5hcmNoL2FybS9jb21tb24vc2Nvb3AuYzoxODg6XHRkZXZwdHIgPSBremFsbG9jX29iaihzdHJ1Y3Qgc2Nvb3BfZGV2KTtcbmFyY2gvYXJtL2NvbW1vbi9zY29vcC5jLTE4OS1cdGlmICghZGV2cHRyKVxuLS1cbmFyY2gvYXJtL2tlcm5lbC9zbXAuYz0xMDg9c3RhdGljIGludCBzZWNvbmRhcnlfYmlnbGl0dGxlX3ByZXBhcmUodW5zaWduZWQgaW50IGNwdSlcbi0tXG5hcmNoL2FybS9rZXJuZWwvc21wLmMtMTEwLVx0aWYgKCFjcHVfdnRhYmxlW2NwdV0pXG5hcmNoL2FybS9rZXJuZWwvc21wLmM6MTExOlx0XHRjcHVfdnRhYmxlW2NwdV0gPSBremFsbG9jX29iaigqY3B1X3Z0YWJsZVtjcHVdKTtcbmFyY2gvYXJtL2tlcm5lbC9zbXAuYy0xMTItXG4tLVxuYXJjaC9hcm0va2VybmVsL3Zkc28uYz0xNjk9c3RhdGljIGludCBfX2luaXQgdmRzb19pbml0KHZvaWQpXG4tLVxuYXJjaC9hcm0va2VybmVsL3Zkc28uYy0xODEtXHQvKiBBbGxvY2F0ZSB0aGUgVkRTTyB0ZXh0IHBhZ2VsaXN0ICovXG5hcmNoL2FybS9rZXJuZWwvdmRzby5jOjE4MjpcdHZkc29fdGV4dF9wYWdlbGlzdCA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgcGFnZSAqLCB0ZXh0X3BhZ2VzKTtcbmFyY2gvYXJtL2tlcm5lbC92ZHNvLmMtMTgzLVx0aWYgKHZkc29fdGV4dF9wYWdlbGlzdCA9PSBOVUxMKVxuLS1cbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9kYzIxMjg1LmM9MjYxPWludCBfX2luaXQgZGMyMTI4NV9zZXR1cChpbnQgbnIsIHN0cnVjdCBwY2lfc3lzX2RhdGEgKnN5cylcbi0tXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZGMyMTI4NS5jLTI2NC1cbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9kYzIxMjg1LmM6MjY1Olx0cmVzID0ga3phbGxvY19vYmpzKHN0cnVjdCByZXNvdXJjZSwgMik7XG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZGMyMTI4NS5jLTI2Ni1cdGlmICghcmVzKSB7XG4tLVxuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL2Vic2EyODUuYz02OT1zdGF0aWMgaW50IF9faW5pdCBlYnNhMjg1X2xlZHNfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9lYnNhMjg1LmMtODYtXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZWJzYTI4NS5jOjg3Olx0XHRsZWQgPSBremFsbG9jX29iaigqbGVkKTtcbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9lYnNhMjg1LmMtODgtXHRcdGlmICghbGVkKVxuLS1cbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9uZXR3aW5kZXItaHcuYz03MjA9c3RhdGljIGludCBfX2luaXQgbmV0d2luZGVyX2xlZHNfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9uZXR3aW5kZXItaHcuYy03MjktXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvbmV0d2luZGVyLWh3LmM6NzMwOlx0XHRsZWQgPSBremFsbG9jX29iaigqbGVkKTtcbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9uZXR3aW5kZXItaHcuYy03MzEtXHRcdGlmICghbGVkKVxuLS1cbmFyY2gvYXJtL21hY2gtaW14L21tZGMuYz00NzM9c3RhdGljIGludCBpbXhfbW1kY19wZXJmX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgdm9pZCBfX2lvbWVtICptbWRjX2Jhc2UsXG4tLVxuYXJjaC9hcm0vbWFjaC1pbXgvbW1kYy5jLTQ3OS1cbmFyY2gvYXJtL21hY2gtaW14L21tZGMuYzo0ODA6XHRwbXVfbW1kYyA9IGt6YWxsb2Nfb2JqKCpwbXVfbW1kYyk7XG5hcmNoL2FybS9tYWNoLWlteC9tbWRjLmMtNDgxLVx0aWYgKCFwbXVfbW1kYykge1xuLS1cbmFyY2gvYXJtL21hY2gtbXZlYnUvYm9hcmQtdjcuYz0xMTQ9c3RhdGljIHZvaWQgX19pbml0IGkyY19xdWlyayh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtbXZlYnUvYm9hcmQtdjcuYy0xMjktXG5hcmNoL2FybS9tYWNoLW12ZWJ1L2JvYXJkLXY3LmM6MTMwOlx0XHRuZXdfY29tcGF0ID0ga3phbGxvY19vYmooKm5ld19jb21wYXQpO1xuYXJjaC9hcm0vbWFjaC1tdmVidS9ib2FyZC12Ny5jLTEzMS1cbi0tXG5hcmNoL2FybS9tYWNoLW12ZWJ1L2NvaGVyZW5jeS5jPTE2Mz1zdGF0aWMgdm9pZCBfX2luaXQgYXJtYWRhXzM3NV8zODBfY29oZXJlbmN5X2luaXQoc3RydWN0IGRldmljZV9ub2RlICpucClcbi0tXG5hcmNoL2FybS9tYWNoLW12ZWJ1L2NvaGVyZW5jeS5jLTE4Ny1cbmFyY2gvYXJtL21hY2gtbXZlYnUvY29oZXJlbmN5LmM6MTg4Olx0XHRwID0ga3phbGxvY19vYmooKnApO1xuYXJjaC9hcm0vbWFjaC1tdmVidS9jb2hlcmVuY3kuYy0xODktXHRcdHAtXHUwMDNlbmFtZSA9IGtzdHJkdXAoXCYjMzQ7YXJtLGlvLWNvaGVyZW50XCYjMzQ7LCBHRlBfS0VSTkVMKTtcbi0tXG5hcmNoL2FybS9tYWNoLW12ZWJ1L212ZWJ1LXNvYy1pZC5jPTE0OD1zdGF0aWMgaW50IF9faW5pdCBtdmVidV9zb2NfZGV2aWNlKHZvaWQpXG4tLVxuYXJjaC9hcm0vbWFjaC1tdmVidS9tdmVidS1zb2MtaWQuYy0xNTYtXG5hcmNoL2FybS9tYWNoLW12ZWJ1L212ZWJ1LXNvYy1pZC5jOjE1NzpcdHNvY19kZXZfYXR0ciA9IGt6YWxsb2Nfb2JqKCpzb2NfZGV2X2F0dHIpO1xuYXJjaC9hcm0vbWFjaC1tdmVidS9tdmVidS1zb2MtaWQuYy0xNTgtXHRpZiAoIXNvY19kZXZfYXR0cilcbi0tXG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jPTM4MD1zdGF0aWMgdm9pZCBfX2luaXQgbXhzX21hY2hpbmVfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtMzg5LVxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYzozOTA6XHRzb2NfZGV2X2F0dHIgPSBremFsbG9jX29iaigqc29jX2Rldl9hdHRyKTtcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtMzkxLVx0aWYgKCFzb2NfZGV2X2F0dHIpXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMS9kbWEuYz0yOTQ9c3RhdGljIGludCBfX2luaXQgb21hcDFfc3lzdGVtX2RtYV9pbml0KHZvaWQpXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMS9kbWEuYy0zMjEtXG5hcmNoL2FybS9tYWNoLW9tYXAxL2RtYS5jOjMyMjpcdGQgPSBremFsbG9jX29iaigqZCk7XG5hcmNoL2FybS9tYWNoLW9tYXAxL2RtYS5jLTMyMy1cdGlmICghZCkge1xuLS1cbmFyY2gvYXJtL21hY2gtb21hcDEvbWNic3AuYz0yOTI9c3RhdGljIHZvaWQgb21hcF9tY2JzcF9yZWdpc3Rlcl9ib2FyZF9jZmcoc3RydWN0IHJlc291cmNlICpyZXMsIGludCByZXNfY291bnQsXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMS9tY2JzcC5jLTI5Ni1cbmFyY2gvYXJtL21hY2gtb21hcDEvbWNic3AuYzoyOTc6XHRvbWFwX21jYnNwX2RldmljZXMgPSBremFsbG9jX29ianMoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqLCBzaXplKTtcbmFyY2gvYXJtL21hY2gtb21hcDEvbWNic3AuYy0yOTgtXHRpZiAoIW9tYXBfbWNic3BfZGV2aWNlcykge1xuLS1cbmFyY2gvYXJtL21hY2gtb21hcDEvdGltZXIuYz01MT1zdGF0aWMgaW50IF9faW5pdCBvbWFwMV9kbV90aW1lcl9pbml0KHZvaWQpXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMS90aW1lci5jLTEyNy1cbmFyY2gvYXJtL21hY2gtb21hcDEvdGltZXIuYzoxMjg6XHRcdHBkYXRhID0ga3phbGxvY19vYmooKnBkYXRhKTtcbmFyY2gvYXJtL21hY2gtb21hcDEvdGltZXIuYy0xMjktXHRcdGlmICghcGRhdGEpIHtcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL2Nsa3QyeHh4X3ZpcnRfcHJjbV9zZXQuYz0yMzA9dm9pZCBvbWFwMnh4eF9jbGt0X3Zwc19pbml0KHZvaWQpXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jbGt0Mnh4eF92aXJ0X3ByY21fc2V0LmMtMjM5LVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jbGt0Mnh4eF92aXJ0X3ByY21fc2V0LmM6MjQwOlx0aHcgPSBremFsbG9jX29iaigqaHcpO1xuYXJjaC9hcm0vbWFjaC1vbWFwMi9jbGt0Mnh4eF92aXJ0X3ByY21fc2V0LmMtMjQxLVx0aWYgKCFodylcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL2lkLmM9Nzg2PXZvaWQgX19pbml0IG9tYXBfc29jX2RldmljZV9pbml0KHZvaWQpXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9pZC5jLTc5MC1cbmFyY2gvYXJtL21hY2gtb21hcDIvaWQuYzo3OTE6XHRzb2NfZGV2X2F0dHIgPSBremFsbG9jX29iaigqc29jX2Rldl9hdHRyKTtcbmFyY2gvYXJtL21hY2gtb21hcDIvaWQuYy03OTItXHRpZiAoIXNvY19kZXZfYXR0cilcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfZGV2aWNlLmM9MTMxPXN0YXRpYyBpbnQgb21hcF9kZXZpY2VfYnVpbGRfZnJvbV9kdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9kZXZpY2UuYy0xNTgtXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfZGV2aWNlLmM6MTU5Olx0aHdtb2RzID0ga3phbGxvY19vYmpzKHN0cnVjdCBvbWFwX2h3bW9kICosIG9oX2NudCk7XG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfZGV2aWNlLmMtMTYwLVx0aWYgKCFod21vZHMpIHtcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYz0zMzgxPXN0YXRpYyBpbnQgb21hcF9od21vZF9hbGxvY2F0ZV9tb2R1bGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgb21hcF9od21vZCAqb2gsXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzM5NC1cbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jOjMzOTU6XHRzeXNjID0ga3phbGxvY19vYmooKnN5c2MpO1xuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzM5Ni1cdGlmICghc3lzYylcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYy0zNDI0LVx0aWYgKGxpc3RfZW1wdHkoXHUwMDI2b2gtXHUwMDNlc2xhdmVfcG9ydHMpKSB7XG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYzozNDI1Olx0XHRvaSA9IGt6YWxsb2Nfb2JqKCpvaSk7XG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYy0zNDI2LVx0XHRpZiAoIW9pKVxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jPTM1MTM9aW50IG9tYXBfaHdtb2RfaW5pdF9tb2R1bGUoc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jLTM1MjctXHRpZiAoIW9oKSB7XG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYzozNTI4Olx0XHRvaCA9IGt6YWxsb2Nfb2JqKCpvaCk7XG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYy0zNTI5LVx0XHRpZiAoIW9oKVxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jLTM1MzgtXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYzozNTM5Olx0XHRvaC1cdTAwM2VjbGFzcyA9IGt6YWxsb2Nfb2JqKCpvaC1cdTAwM2VjbGFzcyk7XG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYy0zNTQwLVx0XHRpZiAoIW9oLVx1MDAzZWNsYXNzKSB7XG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9wbTMzeHgtY29yZS5jPTM3OT1zdGF0aWMgaW50IF9faW5pdCBhbXgzX2lkbGVfaW5pdChzdHJ1Y3QgZGV2aWNlX25vZGUgKmNwdV9ub2RlLCBpbnQgY3B1KVxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDIvcG0zM3h4LWNvcmUuYy00MTItXG5hcmNoL2FybS9tYWNoLW9tYXAyL3BtMzN4eC1jb3JlLmM6NDEzOlx0aWRsZV9zdGF0ZXMgPSBremFsbG9jX29ianMoKmlkbGVfc3RhdGVzLCBzdGF0ZV9jb3VudCk7XG5hcmNoL2FybS9tYWNoLW9tYXAyL3BtMzN4eC1jb3JlLmMtNDE0LVx0aWYgKCFpZGxlX3N0YXRlcylcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL3NyX2RldmljZS5jPTMwPXN0YXRpYyB2b2lkIF9faW5pdCBzcl9zZXRfbnZhbHVlcyhzdHJ1Y3Qgb21hcF92b2x0X2RhdGEgKnZvbHRfZGF0YSxcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL3NyX2RldmljZS5jLTQxLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9zcl9kZXZpY2UuYzo0MjpcdG52YWx1ZV90YWJsZSA9IGt6YWxsb2Nfb2JqcygqbnZhbHVlX3RhYmxlLCBjb3VudCk7XG5hcmNoL2FybS9tYWNoLW9tYXAyL3NyX2RldmljZS5jLTQzLVx0aWYgKCFudmFsdWVfdGFibGUpXG4tLVxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jPTEzOT1zdGF0aWMgaW50IF9faW5pdCBwY2llX3NldHVwKHN0cnVjdCBwY2lfc3lzX2RhdGEgKnN5cylcbi0tXG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmMtMTcxLVx0ICovXG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmM6MTcyOlx0cmVzID0ga3phbGxvY19vYmooc3RydWN0IHJlc291cmNlKTtcbmFyY2gvYXJtL21hY2gtb3Jpb241eC9wY2kuYy0xNzMtXHRpZiAoIXJlcylcbi0tXG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmM9NDY2PXN0YXRpYyBpbnQgX19pbml0IHBjaV9zZXR1cChzdHJ1Y3QgcGNpX3N5c19kYXRhICpzeXMpXG4tLVxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jLTQ5Mi1cdCAqL1xuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jOjQ5MzpcdHJlcyA9IGt6YWxsb2Nfb2JqKHN0cnVjdCByZXNvdXJjZSk7XG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmMtNDk0LVx0aWYgKCFyZXMpXG4tLVxuYXJjaC9hcm0vbWFjaC1ycGMvZWNhcmQuYz02ODk9c3RhdGljIHN0cnVjdCBleHBhbnNpb25fY2FyZCAqX19pbml0IGVjYXJkX2FsbG9jX2NhcmQoaW50IHR5cGUsIGludCBzbG90KVxuLS1cbmFyY2gvYXJtL21hY2gtcnBjL2VjYXJkLmMtNjk0LVxuYXJjaC9hcm0vbWFjaC1ycGMvZWNhcmQuYzo2OTU6XHRlYyA9IGt6YWxsb2Nfb2JqKGVjYXJkX3QpO1xuYXJjaC9hcm0vbWFjaC1ycGMvZWNhcmQuYy02OTYtXHRpZiAoIWVjKSB7XG4tLVxuYXJjaC9hcm0vbWFjaC1zYTExMDAvY2xvY2suYz05Mz1pbnQgX19pbml0IHNhMTF4eF9jbGtfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtc2ExMTAwL2Nsb2NrLmMtMTA5LVxuYXJjaC9hcm0vbWFjaC1zYTExMDAvY2xvY2suYzoxMTA6XHRodyA9IGt6YWxsb2Nfb2JqKCpodyk7XG5hcmNoL2FybS9tYWNoLXNhMTEwMC9jbG9jay5jLTExMS1cdGlmICghaHcpXG4tLVxuYXJjaC9hcm0vbWFjaC1zYTExMDAvY2xvY2suYy0xMzEtXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9jbG9jay5jOjEzMjpcdGh3ID0ga3phbGxvY19vYmooKmh3KTtcbmFyY2gvYXJtL21hY2gtc2ExMTAwL2Nsb2NrLmMtMTMzLVx0aWYgKCFodylcbi0tXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9nZW5lcmljLmM9MzE3PWludCBfX2luaXQgc2ExMXgwX3JlZ2lzdGVyX2ZpeGVkX3JlZ3VsYXRvcihpbnQgbixcbi0tXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9nZW5lcmljLmMtMzIzLVxuYXJjaC9hcm0vbWFjaC1zYTExMDAvZ2VuZXJpYy5jOjMyNDpcdGNmZy1cdTAwM2Vpbml0X2RhdGEgPSBpZCA9IGt6YWxsb2Nfb2JqKCpjZmctXHUwMDNlaW5pdF9kYXRhKTtcbmFyY2gvYXJtL21hY2gtc2ExMTAwL2dlbmVyaWMuYy0zMjUtXHRpZiAoIWNmZy1cdTAwM2Vpbml0X2RhdGEpXG4tLVxuYXJjaC9hcm0vbWFjaC1zYTExMDAvbmVwb25zZXQuYz0yMjU9c3RhdGljIGludCBuZXBvbnNldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXYpXG4tLVxuYXJjaC9hcm0vbWFjaC1zYTExMDAvbmVwb25zZXQuYy0yNzgtXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9uZXBvbnNldC5jOjI3OTpcdGQgPSBremFsbG9jX29iaigqZCk7XG5hcmNoL2FybS9tYWNoLXNhMTEwMC9uZXBvbnNldC5jLTI4MC1cdGlmICghZCkge1xuLS1cbmFyY2gvYXJtL21hY2gtc2htb2JpbGUvcmVndWxhdG9yLXF1aXJrLXJjYXItZ2VuMi5jPTE0MT1zdGF0aWMgaW50IF9faW5pdCByY2FyX2dlbjJfcmVndWxhdG9yX3F1aXJrKHZvaWQpXG4tLVxuYXJjaC9hcm0vbWFjaC1zaG1vYmlsZS9yZWd1bGF0b3ItcXVpcmstcmNhci1nZW4yLmMtMTY2LVxuYXJjaC9hcm0vbWFjaC1zaG1vYmlsZS9yZWd1bGF0b3ItcXVpcmstcmNhci1nZW4yLmM6MTY3Olx0XHRxdWlyayA9IGt6YWxsb2Nfb2JqKCpxdWlyayk7XG5hcmNoL2FybS9tYWNoLXNobW9iaWxlL3JlZ3VsYXRvci1xdWlyay1yY2FyLWdlbjIuYy0xNjgtXHRcdGlmICghcXVpcmspIHtcbi0tXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYz0zOTM9c3RhdGljIGludCB2ZV9zcGNfcG9wdWxhdGVfb3Bwcyh1aW50MzJfdCBjbHVzdGVyKVxuLS1cbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTM5Ny1cbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jOjM5ODpcdG9wcHMgPSBremFsbG9jX29ianMoKm9wcHMsIE1BWF9PUFBTKTtcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTM5OS1cdGlmICghb3Bwcylcbi0tXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYz00NDI9aW50IF9faW5pdCB2ZV9zcGNfaW5pdCh2b2lkIF9faW9tZW0gKmJhc2VhZGRyLCB1MzIgYTE1X2NsdXNpZCwgaW50IGlycSlcbi0tXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYy00NDQtXHRpbnQgcmV0O1xuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvc3BjLmM6NDQ1Olx0aW5mbyA9IGt6YWxsb2Nfb2JqKCppbmZvKTtcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTQ0Ni1cdGlmICghaW5mbylcbi0tXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYz01MjM9c3RhdGljIHN0cnVjdCBjbGsgKnZlX3NwY19jbGtfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqY3B1X2Rldilcbi0tXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYy01MjctXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYzo1Mjg6XHRzcGMgPSBremFsbG9jX29iaigqc3BjKTtcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTUyOS1cdGlmICghc3BjKVxuLS1cbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3ZlcnNhdGlsZS5jPTEyMz1zdGF0aWMgdm9pZCBfX2luaXQgdmVyc2F0aWxlX2R0X3BjaV9pbml0KHZvaWQpXG4tLVxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvdmVyc2F0aWxlLmMtMTQ0LVxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvdmVyc2F0aWxlLmM6MTQ1Olx0bmV3cHJvcCA9IGt6YWxsb2Nfb2JqKCpuZXdwcm9wKTtcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3ZlcnNhdGlsZS5jLTE0Ni1cdGlmICghbmV3cHJvcClcbi0tXG5hcmNoL2FybS9tYWNoLXp5bnEvY29tbW9uLmM9MTA1PXN0YXRpYyB2b2lkIF9faW5pdCB6eW5xX2luaXRfbWFjaGluZSh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtenlucS9jb21tb24uYy0xMTAtXG5hcmNoL2FybS9tYWNoLXp5bnEvY29tbW9uLmM6MTExOlx0c29jX2Rldl9hdHRyID0ga3phbGxvY19vYmooKnNvY19kZXZfYXR0cik7XG5hcmNoL2FybS9tYWNoLXp5bnEvY29tbW9uLmMtMTEyLVx0aWYgKCFzb2NfZGV2X2F0dHIpXG4tLVxuYXJjaC9hcm0vbW0vY2FjaGUtbDJ4MC1wbXUuYz01MDM9c3RhdGljIF9faW5pdCBpbnQgbDJ4MF9wbXVfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21tL2NhY2hlLWwyeDAtcG11LmMtNTA5LVxuYXJjaC9hcm0vbW0vY2FjaGUtbDJ4MC1wbXUuYzo1MTA6XHRsMngwX3BtdSA9IGt6YWxsb2Nfb2JqKCpsMngwX3BtdSk7XG5hcmNoL2FybS9tbS9jYWNoZS1sMngwLXBtdS5jLTUxMS1cdGlmICghbDJ4MF9wbXUpIHtcbi0tXG5hcmNoL2FybS9tbS9jYWNoZS11bmlwaGllci5jPTMxNT1zdGF0aWMgaW50IF9faW5pdCBfX3VuaXBoaWVyX2NhY2hlX2luaXQoc3RydWN0IGRldmljZV9ub2RlICpucCxcbi0tXG5hcmNoL2FybS9tbS9jYWNoZS11bmlwaGllci5jLTM0NC1cbmFyY2gvYXJtL21tL2NhY2hlLXVuaXBoaWVyLmM6MzQ1Olx0ZGF0YSA9IGt6YWxsb2Nfb2JqKCpkYXRhKTtcbmFyY2gvYXJtL21tL2NhY2hlLXVuaXBoaWVyLmMtMzQ2LVx0aWYgKCFkYXRhKVxuLS1cbmFyY2gvYXJtL21tL2RtYS1tYXBwaW5nLmM9NTMzPXN0YXRpYyB2b2lkICpfX2RtYV9hbGxvYyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHNpemVfdCBzaXplLCBkbWFfYWRkcl90ICpoYW5kbGUsXG4tLVxuYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYy01NjAtXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jOjU2MTpcdGJ1ZiA9IGt6YWxsb2Nfb2JqKCpidWYsXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jLTU2Mi1cdFx0XHQgIGdmcCBcdTAwMjYgfihfX0dGUF9ETUEgfCBfX0dGUF9ETUEzMiB8IF9fR0ZQX0hJR0hNRU0pKTtcbi0tXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jPTE0ODc9YXJtX2lvbW11X2NyZWF0ZV9tYXBwaW5nKHN0cnVjdCBkZXZpY2UgKmRldiwgZG1hX2FkZHJfdCBiYXNlLCB1NjQgc2l6ZSlcbi0tXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jLTE1MDYtXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jOjE1MDc6XHRtYXBwaW5nID0ga3phbGxvY19vYmooc3RydWN0IGRtYV9pb21tdV9tYXBwaW5nKTtcbmFyY2gvYXJtL21tL2RtYS1tYXBwaW5nLmMtMTUwOC1cdGlmICghbWFwcGluZylcbi0tXG5hcmNoL2FybS94ZW4vZW5saWdodGVuLmM9MzE2PWludCBfX2luaXQgYXJjaF94ZW5fdW5wb3B1bGF0ZWRfaW5pdChzdHJ1Y3QgcmVzb3VyY2UgKipyZXMpXG4tLVxuYXJjaC9hcm0veGVuL2VubGlnaHRlbi5jLTM0My1cbmFyY2gvYXJtL3hlbi9lbmxpZ2h0ZW4uYzozNDQ6XHRyZWdzID0ga3phbGxvY19vYmpzKCpyZWdzLCBucl9yZWcpO1xuYXJjaC9hcm0veGVuL2VubGlnaHRlbi5jLTM0NS1cdGlmICghcmVncykge1xuLS1cbmFyY2gvYXJtL3hlbi9lbmxpZ2h0ZW4uYy0zODctXG5hcmNoL2FybS94ZW4vZW5saWdodGVuLmM6Mzg4Olx0XHR0bXBfcmVzID0ga3phbGxvY19vYmooKnRtcF9yZXMpO1xuYXJjaC9hcm0veGVuL2VubGlnaHRlbi5jLTM4OS1cdFx0aWYgKCF0bXBfcmVzKSB7XG4tLVxuYXJjaC9hcm0veGVuL3AybS5jPTE1MD1ib29sIF9fc2V0X3BoeXNfdG9fbWFjaGluZV9tdWx0aSh1bnNpZ25lZCBsb25nIHBmbixcbi0tXG5hcmNoL2FybS94ZW4vcDJtLmMtMTc4LVxuYXJjaC9hcm0veGVuL3AybS5jOjE3OTpcdHAybV9lbnRyeSA9IGt6YWxsb2Nfb2JqKCpwMm1fZW50cnksIEdGUF9OT1dBSVQpO1xuYXJjaC9hcm0veGVuL3AybS5jLTE4MC1cdGlmICghcDJtX2VudHJ5KVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL3Zkc28uYz02OD1zdGF0aWMgaW50IF9faW5pdCBfX3Zkc29faW5pdChlbnVtIHZkc29fYWJpIGFiaSlcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC92ZHNvLmMtODMtXG5hcmNoL2FybTY0L2tlcm5lbC92ZHNvLmM6ODQ6XHR2ZHNvX3BhZ2VsaXN0ID0ga3phbGxvY19vYmpzKHN0cnVjdCBwYWdlICosIHZkc29faW5mb1thYmldLnZkc29fcGFnZXMpO1xuYXJjaC9hcm02NC9rZXJuZWwvdmRzby5jLTg1LVx0aWYgKHZkc29fcGFnZWxpc3QgPT0gTlVMTClcbi0tXG5hcmNoL2FybTY0L2t2bS9tbXUuYz00ODA9c3RhdGljIGludCBzaGFyZV9wZm5faHlwKHU2NCBwZm4pXG4tLVxuYXJjaC9hcm02NC9rdm0vbW11LmMtNDkyLVxuYXJjaC9hcm02NC9rdm0vbW11LmM6NDkzOlx0dGhpcyA9IGt6YWxsb2Nfb2JqKCp0aGlzKTtcbmFyY2gvYXJtNjQva3ZtL21tdS5jLTQ5NC1cdGlmICghdGhpcykge1xuLS1cbmFyY2gvYXJtNjQva3ZtL21tdS5jPTk4MT1pbnQga3ZtX2luaXRfc3RhZ2UyX21tdShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fczJfbW11ICptbXUsIHVuc2lnbmVkIGxvbmcgdHlwZSlcbi0tXG5hcmNoL2FybTY0L2t2bS9tbXUuYy0xMDA3LVxuYXJjaC9hcm02NC9rdm0vbW11LmM6MTAwODpcdHBndCA9IGt6YWxsb2Nfb2JqKCpwZ3QsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG5hcmNoL2FybTY0L2t2bS9tbXUuYy0xMDA5LVx0aWYgKCFwZ3QpXG4tLVxuYXJjaC9hcm02NC9rdm0vbW11LmM9MTE4MD1pbnQgdG9wdXBfaHlwX21lbWNhY2hlKHN0cnVjdCBrdm1faHlwX21lbWNhY2hlICptYywgdW5zaWduZWQgbG9uZyBtaW5fcGFnZXMpXG4tLVxuYXJjaC9hcm02NC9rdm0vbW11LmMtMTE4NS1cdGlmICghbWMtXHUwMDNlbWFwcGluZykge1xuYXJjaC9hcm02NC9rdm0vbW11LmM6MTE4NjpcdFx0bWMtXHUwMDNlbWFwcGluZyA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBwa3ZtX21hcHBpbmcsXG5hcmNoL2FybTY0L2t2bS9tbXUuYy0xMTg3LVx0XHRcdFx0XHQgIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4tLVxuYXJjaC9hcm02NC9rdm0vbW11LmM9MjUxMD1pbnQgX19pbml0IGt2bV9tbXVfaW5pdCh1MzIgaHlwX3ZhX2JpdHMpXG4tLVxuYXJjaC9hcm02NC9rdm0vbW11LmMtMjU0My1cbmFyY2gvYXJtNjQva3ZtL21tdS5jOjI1NDQ6XHRoeXBfcGd0YWJsZSA9IGt6YWxsb2Nfb2JqKCpoeXBfcGd0YWJsZSk7XG5hcmNoL2FybTY0L2t2bS9tbXUuYy0yNTQ1LVx0aWYgKCFoeXBfcGd0YWJsZSkge1xuLS1cbmFyY2gvYXJtNjQva3ZtL25lc3RlZC5jPTEzMjc9aW50IGt2bV92Y3B1X2FsbG9jYXRlX3ZuY3JfdGxiKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYy0xMzMyLVx0aWYgKCF2Y3B1LVx1MDAzZWFyY2gudm5jcl90bGIpIHtcbmFyY2gvYXJtNjQva3ZtL25lc3RlZC5jOjEzMzM6XHRcdHN0cnVjdCB2bmNyX3RsYiAqdnQgPSBremFsbG9jX29iaigqdmNwdS1cdTAwM2VhcmNoLnZuY3JfdGxiLFxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmMtMTMzNC1cdFx0XHRcdFx0XHQgIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4tLVxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmM9MTc5MT1pbnQga3ZtX2luaXRfbnZfc3lzcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmMtMTgwMC1cbmFyY2gvYXJtNjQva3ZtL25lc3RlZC5jOjE4MDE6XHRrdm0tXHUwMDNlYXJjaC5zeXNyZWdfbWFza3MgPSBremFsbG9jX29iaigqKGt2bS1cdTAwM2VhcmNoLnN5c3JlZ19tYXNrcyksXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYy0xODAyLVx0XHRcdFx0XHQgICAgIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4tLVxuYXJjaC9hcm02NC9rdm0vcHRkdW1wLmM9MTE2PXN0YXRpYyBzdHJ1Y3Qga3ZtX3B0ZHVtcF9ndWVzdF9zdGF0ZSAqa3ZtX3B0ZHVtcF9wYXJzZXJfY3JlYXRlKHN0cnVjdCBrdm1fczJfbW11ICptbXUpXG4tLVxuYXJjaC9hcm02NC9rdm0vcHRkdW1wLmMtMTIxLVxuYXJjaC9hcm02NC9rdm0vcHRkdW1wLmM6MTIyOlx0c3QgPSBremFsbG9jX29iaihzdHJ1Y3Qga3ZtX3B0ZHVtcF9ndWVzdF9zdGF0ZSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbmFyY2gvYXJtNjQva3ZtL3B0ZHVtcC5jLTEyMy1cdGlmICghc3QpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYz0yMDc9c3RhdGljIGludCBrdm1fdmdpY19kaXN0X2luaXQoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgbnJfc3Bpcylcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jLTIxMy1cdGRpc3QtXHUwMDNlYWN0aXZlX3NwaXMgPSAoYXRvbWljX3QpQVRPTUlDX0lOSVQoMCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jOjIxNDpcdGRpc3QtXHUwMDNlc3BpcyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgdmdpY19pcnEsIG5yX3NwaXMsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jLTIxNS1cdGlmICghZGlzdC1cdTAwM2VzcGlzKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmM9MzE2PXN0YXRpYyBpbnQgdmdpY19hbGxvY2F0ZV9wcml2YXRlX2lycXNfbG9ja2VkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIHR5cGUpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYy0zMzEtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jOjMzMjpcdHZnaWNfY3B1LVx1MDAzZXByaXZhdGVfaXJxcyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgdmdpY19pcnEsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jLTMzMy1cdFx0XHRcdFx0ICAgICAgbnVtX3ByaXZhdGVfaXJxcyxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXJxZmQuYz0xNDI9aW50IGt2bV92Z2ljX3NldHVwX2RlZmF1bHRfaXJxX3JvdXRpbmcoc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pcnFmZC5jLTE0OC1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pcnFmZC5jOjE0OTpcdGVudHJpZXMgPSBremFsbG9jX29ianMoKmVudHJpZXMsIG5yLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWlycWZkLmMtMTUwLVx0aWYgKCFlbnRyaWVzKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz03Nj1zdGF0aWMgc3RydWN0IHZnaWNfaXJxICp2Z2ljX2FkZF9scGkoc3RydWN0IGt2bSAqa3ZtLCB1MzIgaW50aWQsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTg3LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjg4Olx0aXJxID0ga3phbGxvY19vYmooc3RydWN0IHZnaWNfaXJxLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTg5LVx0aWYgKCFpcnEpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTk2MD1zdGF0aWMgaW50IHZnaWNfaXRzX2FsbG9jX2NvbGxlY3Rpb24oc3RydWN0IHZnaWNfaXRzICppdHMsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTk2NS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo5NjY6XHRjb2xsZWN0aW9uID0ga3phbGxvY19vYmooKmNvbGxlY3Rpb24sIEdGUF9LRVJORUxfQUNDT1VOVCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtOTY3LVx0aWYgKCFjb2xsZWN0aW9uKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xMDA0PXN0YXRpYyBzdHJ1Y3QgaXRzX2l0ZSAqdmdpY19pdHNfYWxsb2NfaXRlKHN0cnVjdCBpdHNfZGV2aWNlICpkZXZpY2UsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTEwMDktXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTAxMDpcdGl0ZSA9IGt6YWxsb2Nfb2JqKCppdGUsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTAxMS1cdGlmICghaXRlKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xMTMxPXN0YXRpYyBzdHJ1Y3QgaXRzX2RldmljZSAqdmdpY19pdHNfYWxsb2NfZGV2aWNlKHN0cnVjdCB2Z2ljX2l0cyAqaXRzLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xMTM2LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjExMzc6XHRkZXZpY2UgPSBremFsbG9jX29iaigqZGV2aWNlLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTExMzgtXHRpZiAoIWRldmljZSlcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MTg0ND1zdGF0aWMgaW50IHZnaWNfaXRzX2NyZWF0ZShzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LCB1MzIgdHlwZSlcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTg1MS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoxODUyOlx0aXRzID0ga3phbGxvY19vYmooc3RydWN0IHZnaWNfaXRzLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE4NTMtXHRpZiAoIWl0cylcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jPTg4Nj1zdGF0aWMgaW50IHZnaWNfdjNfYWxsb2NfcmVkaXN0X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sIHVpbnQzMl90IGluZGV4LFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtOTMxLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo5MzI6XHRyZHJlZyA9IGt6YWxsb2Nfb2JqKCpyZHJlZywgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtOTMzLVx0aWYgKCFyZHJlZylcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjQuYz0yNDI9aW50IHZnaWNfdjRfaW5pdChzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXY0LmMtMjU4LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXY0LmM6MjU5Olx0ZGlzdC1cdTAwM2VpdHNfdm0udnBlcyA9IGt6YWxsb2Nfb2JqcygqZGlzdC1cdTAwM2VpdHNfdm0udnBlcywgbnJfdmNwdXMsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjQuYy0yNjAtXHRcdFx0XHRcdCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuLS1cbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jPTIwODA9c3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbi0tXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0yMTAxLVx0aWYgKCFqaXRfZGF0YSkge1xuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM6MjEwMjpcdFx0aml0X2RhdGEgPSBremFsbG9jX29iaigqaml0X2RhdGEpO1xuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMjEwMy1cdFx0aWYgKCFqaXRfZGF0YSlcbi0tXG5hcmNoL2Nza3kva2VybmVsL3Zkc28uYz0xNz1zdGF0aWMgaW50IF9faW5pdCB2ZHNvX2luaXQodm9pZClcbi0tXG5hcmNoL2Nza3kva2VybmVsL3Zkc28uYy0yMi1cdHZkc29fcGFnZWxpc3QgPVxuYXJjaC9jc2t5L2tlcm5lbC92ZHNvLmM6MjM6XHRcdGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgcGFnZSAqLCB2ZHNvX3BhZ2VzKTtcbmFyY2gvY3NreS9rZXJuZWwvdmRzby5jLTI0LVx0aWYgKHVubGlrZWx5KHZkc29fcGFnZWxpc3QgPT0gTlVMTCkpIHtcbi0tXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvc2V0dXAuYz00NjY9c3RhdGljIGludCBfX2luaXQgYWRkX2xlZ2FjeV9pc2FfaW8oc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSxcbi0tXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvc2V0dXAuYy00NzItXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvc2V0dXAuYzo0NzM6XHRyYW5nZSA9IGt6YWxsb2Nfb2JqKCpyYW5nZSwgR0ZQX0FUT01JQyk7XG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvc2V0dXAuYy00NzQtXHRpZiAoIXJhbmdlKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC92ZHNvLmM9NDU9c3RhdGljIGludCBfX2luaXQgaW5pdF92ZHNvKHZvaWQpXG4tLVxuYXJjaC9sb29uZ2FyY2gva2VybmVsL3Zkc28uYy01NS1cdHZkc29faW5mby5jb2RlX21hcHBpbmcucGFnZXMgPVxuYXJjaC9sb29uZ2FyY2gva2VybmVsL3Zkc28uYzo1NjpcdFx0a3phbGxvY19vYmpzKHN0cnVjdCBwYWdlICosIHZkc29faW5mby5zaXplIC8gUEFHRV9TSVpFKTtcbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC92ZHNvLmMtNTctXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jPTYxND1zdGF0aWMgaW50IGt2bV9laW9pbnRjX2NyZWF0ZShzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LCB1MzIgdHlwZSlcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjI0LVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjYyNTpcdHMgPSBremFsbG9jX29iaihzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTYyNi1cdGlmICghcylcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9pcGkuYz0zOTQ9c3RhdGljIGludCBrdm1faXBpX2NyZWF0ZShzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LCB1MzIgdHlwZSlcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9pcGkuYy00MTEtXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9pcGkuYzo0MTI6XHRzID0ga3phbGxvY19vYmooc3RydWN0IGxvb25nYXJjaF9pcGkpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvaXBpLmMtNDEzLVx0aWYgKCFzKVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTg6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM2ODMKCQkJCQkJCW91dHB1dDogODQKCQkJCQkJCXRob3VnaHRzOiA4ODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNYWNybyBSZWZhY3RvcmluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHkgc2VlIHRoZSBjaGFuZ2VzIGFyZSBhbGwgYWJvdXQgcmVwbGFjaW5nIHN0YW5kYXJkIGFsbG9jYXRpb24gZnVuY3Rpb25zIHdpdGggdGhlc2UgYGt6YWxsb2Nfb2JqYCBhbmQgYGt2bWFsbG9jX29ianNgIG1hY3Jvcy4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpcyBwdXJlbHkgc3ludGFjdGljIOKAkyBhIHJlZmFjdG9yaW5nIGZvciBjb2RlIGNsYXJpdHkgb3IgcGVyaGFwcyB0byBsZXZlcmFnZSBzb21lIGludGVybmFsIGtlcm5lbCBhbGxvY2F0aW9uIG9wdGltaXphdGlvbi4gVGhlcmUmIzM5O3Mgbm8gaW1tZWRpYXRlbHkgb2J2aW91cyBjaGFuZ2UgaW4gdGhlICpsb2dpYyogb2YgdGhlIGNvZGUuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHZlcmlmeSB0aGF0IGFzc3VtcHRpb24uIExvb2tpbmcgYXQgdGhlIGRpZmYsIGl0JiMzOTtzIHByZXR0eSBjbGVhcjogYGt6YWxsb2Moc2l6ZW9mKCp0KSwgR0ZQX0tFUk5FTClgIGlzIG5vdyBga3phbGxvY19vYmooKnQpYCwgYW5kIGBrdm1hbGxvY19hcnJheShzY291bnRzLCBzaXplb2YoKnQtJmd0O3NlcWMpLCBHRlBfS0VSTkVMKWAgaXMgbm93IGBrdm1hbGxvY19vYmpzKCp0LSZndDtzZXFjLCBzY291bnRzKWAuIE5vIGZ1bmN0aW9uYWwgY2hhbmdlcyBoZXJlLgoKTm93LCBsZXQmIzM5O3MganVzdCBjb25maXJtIHRoYXQgdGhpcyBtYWNybyBiZWhhdmVzIGFzIGV4cGVjdGVkLiBMZXQgbWUgc2VlLi4uIGBrdm1hbGxvY19hcnJheWAgdGFrZXMgYChzaXplX3Qgbiwgc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzKWAsIHdoaWxlIGBrdm1hbGxvY19vYmpzYCBwcm9iYWJseSBpbmZlcnMgdGhlIGBzaXplb2Yob2JqKWAgd2l0aGluIHRoZSBtYWNybyBhbmQgbGlrZWx5IGRlZmF1bHRzIHRvIGEgYEdGUF9LRVJORUxgIGVxdWl2YWxlbnQuIFNvIHRoZSBuZXcgbWFjcm8gKm1pZ2h0KiBiZWhhdmUgbGlrZSBga3ZtYWxsb2NfYXJyYXkobiwgc2l6ZW9mKG9iaiksIEdGUF9LRVJORUwpYC4KCkNvbnNpZGVyaW5nIGFsbCBvZiB0aGlzLCBiZWNhdXNlIGl0IGlzICpqdXN0KiBhIG1hY3JvIHJlcGxhY2VtZW50LCB0aGlzIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgYmVoYXZpb3IgdG8gdGhlIGtlcm5lbC4gVGhlcmVmb3JlLCBteSBhc3Nlc3NtZW50IGlzIHRoYXQgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGRlZmluaXRlbHkgYmUgYGZhbHNlYCBpbiB0aGlzIGNhc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTg6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IHJlcGxhY2VzIHN0YW5kYXJkIG1lbW9yeSBhbGxvY2F0aW9uIGZ1bmN0aW9ucyAoa3phbGxvYywga3ZtYWxsb2NfYXJyYXkpIHdpdGggdGhlaXIgbWFjcm8gZXF1aXZhbGVudHMgKGt6YWxsb2Nfb2JqLCBrdm1hbGxvY19vYmpzKS4gVGhpcyBpcyBhIHB1cmVseSBzeW50YWN0aWMgcmVmYWN0b3JpbmcgdGhhdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGxvZ2ljIG9mIHRoZSBrZXJuZWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IHJlcGxhY2VzIHN0YW5kYXJkIG1lbW9yeSBhbGxvY2F0aW9uIGZ1bmN0aW9ucyAoa3phbGxvYywga3ZtYWxsb2NfYXJyYXkpIHdpdGggdGhlaXIgbWFjcm8gZXF1aXZhbGVudHMgKGt6YWxsb2Nfb2JqLCBrdm1hbGxvY19vYmpzKS4gVGhpcyBpcyBhIHB1cmVseSBzeW50YWN0aWMgcmVmYWN0b3JpbmcgdGhhdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGxvZ2ljIG9mIHRoZSBrZXJuZWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTZUMTg6MjI6MTQuNjQ1MTUzNjI5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzM2OTE5NDg0MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgcmVwbGFjZXMgc3RhbmRhcmQgbWVtb3J5IGFsbG9jYXRpb24gZnVuY3Rpb25zIChremFsbG9jLCBrdm1hbGxvY19hcnJheSkgd2l0aCB0aGVpciBtYWNybyBlcXVpdmFsZW50cyAoa3phbGxvY19vYmosIGt2bWFsbG9jX29ianMpLiBUaGlzIGlzIGEgcHVyZWx5IHN5bnRhY3RpYyByZWZhY3RvcmluZyB0aGF0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgbG9naWMgb2YgdGhlIGtlcm5lbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDE4OjIyOjE0LjY0NTE1OTY4OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY4NTU5MjkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZDU3NWFmOWIzZjNiMTQ1ODZjMDBjZDM0YzRkNDJhMzZhZWZmZTZiYlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAxNiAxODoyMjoxMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY1xcbmluZGV4IDM1Y2JlODIxYzI1OTY3Li43NDA0N2JmMWUzMmRlMSAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY1xcbkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBpcF92c19yaHRfcmN1X2ZyZWUoc3RydWN0IHJjdV9oZWFkICpoZWFkKVxcbiBcXG4gc3RydWN0IGlwX3ZzX3JodCAqaXBfdnNfcmh0X2FsbG9jKGludCBidWNrZXRzLCBpbnQgc2NvdW50cywgaW50IGxvY2tzKVxcbiB7XFxuLVxcdHN0cnVjdCBpcF92c19yaHQgKnQgPSBremFsbG9jKHNpemVvZigqdCksIEdGUF9LRVJORUwpO1xcbitcXHRzdHJ1Y3QgaXBfdnNfcmh0ICp0ID0ga3phbGxvY19vYmooKnQpO1xcbiBcXHRpbnQgaTtcXG4gXFxuIFxcdGlmICghdClcXG5AQCAtMTg2LDcgKzE4Niw3IEBAIHN0cnVjdCBpcF92c19yaHQgKmlwX3ZzX3JodF9hbGxvYyhpbnQgYnVja2V0cywgaW50IHNjb3VudHMsIGludCBsb2NrcylcXG4gXFxuIFxcdFxcdHNjb3VudHMgPSBtaW4oc2NvdW50cywgYnVja2V0cyk7XFxuIFxcdFxcdHNjb3VudHMgPSBtaW4oc2NvdW50cywgbWwpO1xcbi1cXHRcXHR0LVxcdTAwM2VzZXFjID0ga3ZtYWxsb2NfYXJyYXkoc2NvdW50cywgc2l6ZW9mKCp0LVxcdTAwM2VzZXFjKSwgR0ZQX0tFUk5FTCk7XFxuK1xcdFxcdHQtXFx1MDAzZXNlcWMgPSBrdm1hbGxvY19vYmpzKCp0LVxcdTAwM2VzZXFjLCBzY291bnRzKTtcXG4gXFx0XFx0aWYgKCF0LVxcdTAwM2VzZXFjKVxcbiBcXHRcXHRcXHRnb3RvIGVycjtcXG4gXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHNjb3VudHM7IGkrKylcXG5AQCAtMTk0LDggKzE5NCw3IEBAIHN0cnVjdCBpcF92c19yaHQgKmlwX3ZzX3JodF9hbGxvYyhpbnQgYnVja2V0cywgaW50IHNjb3VudHMsIGludCBsb2NrcylcXG4gXFxuIFxcdFxcdGlmIChsb2Nrcykge1xcbiBcXHRcXHRcXHRsb2NrcyA9IG1pbihsb2Nrcywgc2NvdW50cyk7XFxuLVxcdFxcdFxcdHQtXFx1MDAzZWxvY2sgPSBrdm1hbGxvY19hcnJheShsb2Nrcywgc2l6ZW9mKCp0LVxcdTAwM2Vsb2NrKSxcXG4tXFx0XFx0XFx0XFx0XFx0XFx0IEdGUF9LRVJORUwpO1xcbitcXHRcXHRcXHR0LVxcdTAwM2Vsb2NrID0ga3ZtYWxsb2Nfb2JqcygqdC1cXHUwMDNlbG9jaywgbG9ja3MpO1xcbiBcXHRcXHRcXHRpZiAoIXQtXFx1MDAzZWxvY2spXFxuIFxcdFxcdFxcdFxcdGdvdG8gZXJyO1xcbiBcXHRcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbG9ja3M7IGkrKylcXG5AQCAtMjAzLDcgKzIwMiw3IEBAIHN0cnVjdCBpcF92c19yaHQgKmlwX3ZzX3JodF9hbGxvYyhpbnQgYnVja2V0cywgaW50IHNjb3VudHMsIGludCBsb2NrcylcXG4gXFx0XFx0fVxcbiBcXHR9XFxuIFxcbi1cXHR0LVxcdTAwM2VidWNrZXRzID0ga3ZtYWxsb2NfYXJyYXkoYnVja2V0cywgc2l6ZW9mKCp0LVxcdTAwM2VidWNrZXRzKSwgR0ZQX0tFUk5FTCk7XFxuK1xcdHQtXFx1MDAzZWJ1Y2tldHMgPSBrdm1hbGxvY19vYmpzKCp0LVxcdTAwM2VidWNrZXRzLCBidWNrZXRzKTtcXG4gXFx0aWYgKCF0LVxcdTAwM2VidWNrZXRzKVxcbiBcXHRcXHRnb3RvIGVycjtcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGJ1Y2tldHM7IGkrKylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTg6MjI6MTUuMTE0NjQ3MjcxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzIyMjQ0MDc4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSByZXBsYWNlcyBzdGFuZGFyZCBtZW1vcnkgYWxsb2NhdGlvbiBmdW5jdGlvbnMgKGt6YWxsb2MsIGt2bWFsbG9jX2FycmF5KSB3aXRoIHRoZWlyIG1hY3JvIGVxdWl2YWxlbnRzIChremFsbG9jX29iaiwga3ZtYWxsb2Nfb2JqcykuIFRoaXMgaXMgYSBwdXJlbHkgc3ludGFjdGljIHJlZmFjdG9yaW5nIHRoYXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBsb2dpYyBvZiB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkNTc1YWY5YjNmM2IxNDU4NmMwMGNkMzRjNGQ0MmEzNmFlZmZlNmJiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMTYgMTg6MjI6MTMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY1xuaW5kZXggMzVjYmU4MjFjMjU5NjcuLjc0MDQ3YmYxZTMyZGUxIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY1xuQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIGlwX3ZzX3JodF9yY3VfZnJlZShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXG4gXG4gc3RydWN0IGlwX3ZzX3JodCAqaXBfdnNfcmh0X2FsbG9jKGludCBidWNrZXRzLCBpbnQgc2NvdW50cywgaW50IGxvY2tzKVxuIHtcbi1cdHN0cnVjdCBpcF92c19yaHQgKnQgPSBremFsbG9jKHNpemVvZigqdCksIEdGUF9LRVJORUwpO1xuK1x0c3RydWN0IGlwX3ZzX3JodCAqdCA9IGt6YWxsb2Nfb2JqKCp0KTtcbiBcdGludCBpO1xuIFxuIFx0aWYgKCF0KVxuQEAgLTE4Niw3ICsxODYsNyBAQCBzdHJ1Y3QgaXBfdnNfcmh0ICppcF92c19yaHRfYWxsb2MoaW50IGJ1Y2tldHMsIGludCBzY291bnRzLCBpbnQgbG9ja3MpXG4gXG4gXHRcdHNjb3VudHMgPSBtaW4oc2NvdW50cywgYnVja2V0cyk7XG4gXHRcdHNjb3VudHMgPSBtaW4oc2NvdW50cywgbWwpO1xuLVx0XHR0LVx1MDAzZXNlcWMgPSBrdm1hbGxvY19hcnJheShzY291bnRzLCBzaXplb2YoKnQtXHUwMDNlc2VxYyksIEdGUF9LRVJORUwpO1xuK1x0XHR0LVx1MDAzZXNlcWMgPSBrdm1hbGxvY19vYmpzKCp0LVx1MDAzZXNlcWMsIHNjb3VudHMpO1xuIFx0XHRpZiAoIXQtXHUwMDNlc2VxYylcbiBcdFx0XHRnb3RvIGVycjtcbiBcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgc2NvdW50czsgaSsrKVxuQEAgLTE5NCw4ICsxOTQsNyBAQCBzdHJ1Y3QgaXBfdnNfcmh0ICppcF92c19yaHRfYWxsb2MoaW50IGJ1Y2tldHMsIGludCBzY291bnRzLCBpbnQgbG9ja3MpXG4gXG4gXHRcdGlmIChsb2Nrcykge1xuIFx0XHRcdGxvY2tzID0gbWluKGxvY2tzLCBzY291bnRzKTtcbi1cdFx0XHR0LVx1MDAzZWxvY2sgPSBrdm1hbGxvY19hcnJheShsb2Nrcywgc2l6ZW9mKCp0LVx1MDAzZWxvY2spLFxuLVx0XHRcdFx0XHRcdCBHRlBfS0VSTkVMKTtcbitcdFx0XHR0LVx1MDAzZWxvY2sgPSBrdm1hbGxvY19vYmpzKCp0LVx1MDAzZWxvY2ssIGxvY2tzKTtcbiBcdFx0XHRpZiAoIXQtXHUwMDNlbG9jaylcbiBcdFx0XHRcdGdvdG8gZXJyO1xuIFx0XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGxvY2tzOyBpKyspXG5AQCAtMjAzLDcgKzIwMiw3IEBAIHN0cnVjdCBpcF92c19yaHQgKmlwX3ZzX3JodF9hbGxvYyhpbnQgYnVja2V0cywgaW50IHNjb3VudHMsIGludCBsb2NrcylcbiBcdFx0fVxuIFx0fVxuIFxuLVx0dC1cdTAwM2VidWNrZXRzID0ga3ZtYWxsb2NfYXJyYXkoYnVja2V0cywgc2l6ZW9mKCp0LVx1MDAzZWJ1Y2tldHMpLCBHRlBfS0VSTkVMKTtcbitcdHQtXHUwMDNlYnVja2V0cyA9IGt2bWFsbG9jX29ianMoKnQtXHUwMDNlYnVja2V0cywgYnVja2V0cyk7XG4gXHRpZiAoIXQtXHUwMDNlYnVja2V0cylcbiBcdFx0Z290byBlcnI7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBidWNrZXRzOyBpKyspXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxODoyMjoxNS4xMTQ2NDkzMzFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMTE4MzM4MDUxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXRmaWx0ZXIgSVBWUyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jYC4gVGhlIGNvcmUgY2hhbmdlIGlzIGEgcmVwbGFjZW1lbnQgb2YgbWVtb3J5IGFsbG9jYXRpb24gZnVuY3Rpb25zLiBTcGVjaWZpY2FsbHksIGl0IHN3YXBzIG91dCBga3phbGxvY2Agd2l0aCBga3phbGxvY19vYmpgIGFuZCBga3ZtYWxsb2NfYXJyYXlgIHdpdGggYGt2bWFsbG9jX29ianNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGEgc3RyYWlnaHRmb3J3YXJkIHJlZmFjdG9yaW5nLCBwcm9iYWJseSBsZXZlcmFnaW5nIHNvbWUgbmV3IGFsbG9jYXRpb24gbWFjcm9zIHRoYXQgY2FtZSBpbiB3aXRoIGEgcHJldmlvdXMgY29tbWl0IG9yIGFzIHBhcnQgb2YgYSBsYXJnZXIgc2VyaWVzLiBJIG1lYW4sIGl0ICpsb29rcyogbGlrZSBhIHNpbXBsZSBzdWJzdGl0dXRpb24uXG5cbkJ1dCBoYW5nIG9u4oCmIGFyZSB0aGVzZSBldmVuICpyZWFsKiBtYWNyb3M/IGBremFsbG9jX29iamAgYW5kIGBrdm1hbGxvY19vYmpzYCBhcmVuJ3QgaW1tZWRpYXRlbHkgcmluZ2luZyBhbnkgYmVsbHMuIFRoZXkgYXJlbid0IHN0YW5kYXJkIGtlcm5lbCBpZGlvbXMsIHNvIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpcyBqdXN0IGEgbWFjcm8gcmVwbGFjZW1lbnQgYW5kIHRoYXQgaXQncyBub3QgYWN0dWFsbHkgaW50cm9kdWNpbmcgYW55dGhpbmcgbmV3LiBBbHJpZ2h0LCBhZnRlciBhIGNsb3NlciBsb29rLCBpdCAqaXMqIGp1c3QgYSBtYWNybyByZXBsYWNlbWVudC4gVGhlIGNvcmUgbG9naWMgZG9lc24ndCBhcHBlYXIgdG8gYmUgYWx0ZXJlZCBpbiBhbnkgbWVhbmluZ2Z1bCB3YXkuIEl0IGxvb2tzIGxpa2UgaXQganVzdCB1c2VzIHRoZSBleGlzdGluZyBhbGxvY2F0aW9uIGZ1bmN0aW9ucyBhcyBhIGJhc2UuXG5cbk5vdywgSSBzdGlsbCBuZWVkIHRvIGNoZWNrIGV4YWN0bHkgd2hhdCB0aGUgbWFjcm9zIGFyZSBkb2luZy4gSSB3YW50IHRvIHNlZSBpZiBga3phbGxvY19vYmpgIGlzIGRlZmluZWQgc29tZXdoZXJlLCBqdXN0IHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyODksIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxODoyMjozNi4yOTgwMzE2MjRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA2NzkwMTkxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJremFsbG9jX29ialwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDc5MDQ2IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2xpc3QucnN0PTEwMz1saXN0Olxcbi0tXFxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9saXN0LnJzdC0xMTQtXFxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9saXN0LnJzdDoxMTU6ICAgICAgICAgIGdyb2NrID0ga3phbGxvY19vYmooKmdyb2NrKTtcXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2xpc3QucnN0LTExNi0gICAgICAgICAgaWYgKCFncm9jaylcXG4tLVxcbkRvY3VtZW50YXRpb24vY29yZS1hcGkvbGlzdC5yc3QtMTI1LVxcbkRvY3VtZW50YXRpb24vY29yZS1hcGkvbGlzdC5yc3Q6MTI2OiAgICAgICAgICBkaW1pdHJpID0ga3phbGxvY19vYmooKmRpbWl0cmkpO1xcbkRvY3VtZW50YXRpb24vY29yZS1hcGkvbGlzdC5yc3QtMTI3LSAgICAgICAgICBpZiAoIWRpbWl0cmkpXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbWFpbGJveC5yc3Q9NDU9YSBtZXNzYWdlIGFuZCBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHRoZSBBUEkgYW5kIHJldHVybiBpbW1lZGlhdGVseSkuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbWFpbGJveC5yc3QtODktXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21haWxib3gucnN0OjkwOlxcdFxcdGRjX3N5bmMgPSBremFsbG9jX29iaigqZGNfc3luYyk7XFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21haWxib3gucnN0OjkxOlxcdFxcdGRjX2FzeW5jID0ga3phbGxvY19vYmooKmRjX2FzeW5jKTtcXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbWFpbGJveC5yc3QtOTItXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbWVkaWEvdjRsMi1maC5yc3Q9MjY9RXhhbXBsZTpcXG4tLVxcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tZWRpYS92NGwyLWZoLnJzdC00NC1cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbWVkaWEvdjRsMi1maC5yc3Q6NDU6XFx0XFx0bXlfZmggPSBremFsbG9jX29iaigqbXlfZmgpO1xcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tZWRpYS92NGwyLWZoLnJzdC00Ni1cXG4tLVxcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0PTkzOD1UaGUga2VybmVsIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgZ2VuZXJhbCBwdXJwb3NlIG1lbW9yeSBhbGxvY2F0b3JzOlxcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0OjkzOTprbWFsbG9jKCksIGt6YWxsb2MoKSwga21hbGxvY19vYmpzKCksIGt6YWxsb2Nfb2JqcygpLCB2bWFsbG9jKCksIGFuZFxcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0LTk0MC12emFsbG9jKCkuICBQbGVhc2UgcmVmZXIgdG8gdGhlIEFQSSBkb2N1bWVudGF0aW9uIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY29kaW5nLXN0eWxlLnJzdD05NjQ9VGhlIHByZWZlcnJlZCBmb3JtIGZvciBhbGxvY2F0aW5nIGEgemVyb2VkIGFycmF5IGlzIHRoZSBmb2xsb3dpbmc6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY29kaW5nLXN0eWxlLnJzdC05NjctXFxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2NvZGluZy1zdHlsZS5yc3Q6OTY4OlxcdHAgPSBremFsbG9jX29ianMoKnAsIG4sIC4uLik7XFxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2NvZGluZy1zdHlsZS5yc3QtOTY5LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0PTM5OD1iZWNvbWUsIHJlc3BlY3RpdmVseTo6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3QtNDAwLVxcdHB0ciA9IGttYWxsb2Nfb2JqKCpwdHIgWywgZ2ZwXSApO1xcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZXByZWNhdGVkLnJzdDo0MDE6XFx0cHRyID0ga3phbGxvY19vYmooKnB0ciBbLCBnZnBdICk7XFxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0LTQwMi1cXHRwdHIgPSBrbWFsbG9jX29ianMoKnB0ciwgY291bnQgWywgZ2ZwXSApO1xcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZXByZWNhdGVkLnJzdDo0MDM6XFx0cHRyID0ga3phbGxvY19vYmpzKCpwdHIsIGNvdW50IFssIGdmcF0gKTtcXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3QtNDA0LVxcdHB0ciA9IGttYWxsb2NfZmxleCgqcHRyLCBmbGV4X21lbWJlciwgY291bnQgWywgZ2ZwXSApO1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0PTIwOD10byBkZXRhaWxzIGV4cGxhaW5lZCBpbiB0aGUgZm9sbG93aW5nIHNlY3Rpb24uXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtMjY4LSAgICAgICAgICAgICAgLyogYWxsb2NhdGUgYSBjaGlwLXNwZWNpZmljIGRhdGEgd2l0aCB6ZXJvIGZpbGxlZCAqL1xcbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdDoyNjk6ICAgICAgICAgICAgICBjaGlwID0ga3phbGxvY19vYmooKmNoaXApO1xcbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdC0yNzAtICAgICAgICAgICAgICBpZiAoY2hpcCA9PSBOVUxMKVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0PTYyMz1BZnRlciBhbGxvY2F0aW5nIGEgY2FyZCBpbnN0YW5jZSB2aWEgOmM6ZnVuYzpgc25kX2NhcmRfbmV3KClgXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtNjMwLSAgLi4uLi5cXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3Q6NjMxOiAgY2hpcCA9IGt6YWxsb2Nfb2JqKCpjaGlwKTtcXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtNjMyLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0PTY5OD1kZXN0cnVjdG9yIGFuZCBQQ0kgZW50cmllcy4gRXhhbXBsZSBjb2RlIGlzIHNob3duIGZpcnN0LCBiZWxvdzo6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtNzQ5LVxcbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdDo3NTA6ICAgICAgICAgICAgICBjaGlwID0ga3phbGxvY19vYmooKmNoaXApO1xcbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdC03NTEtICAgICAgICAgICAgICBpZiAoY2hpcCA9PSBOVUxMKSB7XFxuLS1cXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3Q9MzgyMz1jaGlwIGRhdGEgaW5kaXZpZHVhbGx5OjpcXG4tLVxcbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdC0zODM1LSAgICAgICAgICAuLi4uXFxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0OjM4MzY6ICAgICAgICAgIGNoaXAgPSBremFsbG9jX29iaigqY2hpcCk7XFxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0LTM4MzctICAgICAgICAgIC4uLi5cXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL3ZpZGVvNGxpbnV4L3Y0bDItZnJhbWV3b3JrLnR4dD03OTQ9aW50IG15X29wZW4oc3RydWN0IGZpbGUgKmZpbGUpXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi92aWRlbzRsaW51eC92NGwyLWZyYW1ld29yay50eHQtODAxLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL3ZpZGVvNGxpbnV4L3Y0bDItZnJhbWV3b3JrLnR4dDo4MDI6XFx0bXlfZmggPSBremFsbG9jX29iaigqbXlfZmgpO1xcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL3ZpZGVvNGxpbnV4L3Y0bDItZnJhbWV3b3JrLnR4dC04MDMtXFxuLS1cXG5hcmNoL2FscGhhL2tlcm5lbC9tb2R1bGUuYz02ND1tb2R1bGVfZnJvYl9hcmNoX3NlY3Rpb25zKEVsZjY0X0VoZHIgKmhkciwgRWxmNjRfU2hkciAqc2VjaGRycyxcXG4tLVxcbmFyY2gvYWxwaGEva2VybmVsL21vZHVsZS5jLTk1LVxcdG5zeW1zID0gc3ltdGFiLVxcdTAwM2VzaF9zaXplIC8gc2l6ZW9mKEVsZjY0X1N5bSk7XFxuYXJjaC9hbHBoYS9rZXJuZWwvbW9kdWxlLmM6OTY6XFx0Y2hhaW5zID0ga3phbGxvY19vYmpzKHN0cnVjdCBnb3RfZW50cnksIG5zeW1zKTtcXG5hcmNoL2FscGhhL2tlcm5lbC9tb2R1bGUuYy05Ny1cXHRpZiAoIWNoYWlucykge1xcbi0tXFxuYXJjaC9hbHBoYS9rZXJuZWwvc2V0dXAuYz0zOTA9cmVnaXN0ZXJfY3B1cyh2b2lkKVxcbi0tXFxuYXJjaC9hbHBoYS9rZXJuZWwvc2V0dXAuYy0zOTQtXFx0Zm9yX2VhY2hfcG9zc2libGVfY3B1KGkpIHtcXG5hcmNoL2FscGhhL2tlcm5lbC9zZXR1cC5jOjM5NTpcXHRcXHRzdHJ1Y3QgY3B1ICpwID0ga3phbGxvY19vYmooKnApO1xcbmFyY2gvYWxwaGEva2VybmVsL3NldHVwLmMtMzk2LVxcdFxcdGlmICghcClcXG4tLVxcbmFyY2gvYXJjL25ldC9icGZfaml0X2NvcmUuYz0xMTIwPXN0YXRpYyBpbnQgaml0X3ByZXBhcmVfZmluYWxfbWVtX2FsbG9jKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxcbi0tXFxuYXJjaC9hcmMvbmV0L2JwZl9qaXRfY29yZS5jLTExMzEtXFx0aWYgKGN0eC1cXHUwMDNlbmVlZF9leHRyYV9wYXNzKSB7XFxuYXJjaC9hcmMvbmV0L2JwZl9qaXRfY29yZS5jOjExMzI6XFx0XFx0Y3R4LVxcdTAwM2VqaXRfZGF0YSA9IGt6YWxsb2Nfb2JqKCpjdHgtXFx1MDAzZWppdF9kYXRhKTtcXG5hcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmMtMTEzMy1cXHRcXHRpZiAoIWN0eC1cXHUwMDNlaml0X2RhdGEpXFxuLS1cXG5hcmNoL2FybS9jb21tb24vbG9jb21vLmM9MjIwPWxvY29tb19pbml0X29uZV9jaGlsZChzdHJ1Y3QgbG9jb21vICpsY2hpcCwgc3RydWN0IGxvY29tb19kZXZfaW5mbyAqaW5mbylcXG4tLVxcbmFyY2gvYXJtL2NvbW1vbi9sb2NvbW8uYy0yMjQtXFxuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jOjIyNTpcXHRkZXYgPSBremFsbG9jX29iaihzdHJ1Y3QgbG9jb21vX2Rldik7XFxuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jLTIyNi1cXHRpZiAoIWRldikge1xcbi0tXFxuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jPTM1Nj1fX2xvY29tb19wcm9iZShzdHJ1Y3QgZGV2aWNlICptZSwgc3RydWN0IHJlc291cmNlICptZW0sIGludCBpcnEpXFxuLS1cXG5hcmNoL2FybS9jb21tb24vbG9jb21vLmMtMzYyLVxcbmFyY2gvYXJtL2NvbW1vbi9sb2NvbW8uYzozNjM6XFx0bGNoaXAgPSBremFsbG9jX29iaihzdHJ1Y3QgbG9jb21vKTtcXG5hcmNoL2FybS9jb21tb24vbG9jb21vLmMtMzY0LVxcdGlmICghbGNoaXApXFxuLS1cXG5hcmNoL2FybS9jb21tb24vc2ExMTExLmM9NzMzPXNhMTExMV9pbml0X29uZV9jaGlsZChzdHJ1Y3Qgc2ExMTExICpzYWNoaXAsIHN0cnVjdCByZXNvdXJjZSAqcGFyZW50LFxcbi0tXFxuYXJjaC9hcm0vY29tbW9uL3NhMTExMS5jLTczOS1cXG5hcmNoL2FybS9jb21tb24vc2ExMTExLmM6NzQwOlxcdGRldiA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBzYTExMTFfZGV2KTtcXG5hcmNoL2FybS9jb21tb24vc2ExMTExLmMtNzQxLVxcdGlmICghZGV2KSB7XFxuLS1cXG5hcmNoL2FybS9jb21tb24vc2Nvb3AuYz0xNzg9c3RhdGljIGludCBzY29vcF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuYXJjaC9hcm0vY29tbW9uL3Njb29wLmMtMTg3LVxcbmFyY2gvYXJtL2NvbW1vbi9zY29vcC5jOjE4ODpcXHRkZXZwdHIgPSBremFsbG9jX29iaihzdHJ1Y3Qgc2Nvb3BfZGV2KTtcXG5hcmNoL2FybS9jb21tb24vc2Nvb3AuYy0xODktXFx0aWYgKCFkZXZwdHIpXFxuLS1cXG5hcmNoL2FybS9rZXJuZWwvc21wLmM9MTA4PXN0YXRpYyBpbnQgc2Vjb25kYXJ5X2JpZ2xpdHRsZV9wcmVwYXJlKHVuc2lnbmVkIGludCBjcHUpXFxuLS1cXG5hcmNoL2FybS9rZXJuZWwvc21wLmMtMTEwLVxcdGlmICghY3B1X3Z0YWJsZVtjcHVdKVxcbmFyY2gvYXJtL2tlcm5lbC9zbXAuYzoxMTE6XFx0XFx0Y3B1X3Z0YWJsZVtjcHVdID0ga3phbGxvY19vYmooKmNwdV92dGFibGVbY3B1XSk7XFxuYXJjaC9hcm0va2VybmVsL3NtcC5jLTExMi1cXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC92ZHNvLmM9MTY5PXN0YXRpYyBpbnQgX19pbml0IHZkc29faW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm0va2VybmVsL3Zkc28uYy0xODEtXFx0LyogQWxsb2NhdGUgdGhlIFZEU08gdGV4dCBwYWdlbGlzdCAqL1xcbmFyY2gvYXJtL2tlcm5lbC92ZHNvLmM6MTgyOlxcdHZkc29fdGV4dF9wYWdlbGlzdCA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgcGFnZSAqLCB0ZXh0X3BhZ2VzKTtcXG5hcmNoL2FybS9rZXJuZWwvdmRzby5jLTE4My1cXHRpZiAodmRzb190ZXh0X3BhZ2VsaXN0ID09IE5VTEwpXFxuLS1cXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZGMyMTI4NS5jPTI2MT1pbnQgX19pbml0IGRjMjEyODVfc2V0dXAoaW50IG5yLCBzdHJ1Y3QgcGNpX3N5c19kYXRhICpzeXMpXFxuLS1cXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZGMyMTI4NS5jLTI2NC1cXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZGMyMTI4NS5jOjI2NTpcXHRyZXMgPSBremFsbG9jX29ianMoc3RydWN0IHJlc291cmNlLCAyKTtcXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZGMyMTI4NS5jLTI2Ni1cXHRpZiAoIXJlcykge1xcbi0tXFxuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL2Vic2EyODUuYz02OT1zdGF0aWMgaW50IF9faW5pdCBlYnNhMjg1X2xlZHNfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL2Vic2EyODUuYy04Ni1cXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZWJzYTI4NS5jOjg3OlxcdFxcdGxlZCA9IGt6YWxsb2Nfb2JqKCpsZWQpO1xcbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9lYnNhMjg1LmMtODgtXFx0XFx0aWYgKCFsZWQpXFxuLS1cXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvbmV0d2luZGVyLWh3LmM9NzIwPXN0YXRpYyBpbnQgX19pbml0IG5ldHdpbmRlcl9sZWRzX2luaXQodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9uZXR3aW5kZXItaHcuYy03MjktXFxuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL25ldHdpbmRlci1ody5jOjczMDpcXHRcXHRsZWQgPSBremFsbG9jX29iaigqbGVkKTtcXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvbmV0d2luZGVyLWh3LmMtNzMxLVxcdFxcdGlmICghbGVkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1pbXgvbW1kYy5jPTQ3Mz1zdGF0aWMgaW50IGlteF9tbWRjX3BlcmZfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCB2b2lkIF9faW9tZW0gKm1tZGNfYmFzZSxcXG4tLVxcbmFyY2gvYXJtL21hY2gtaW14L21tZGMuYy00NzktXFxuYXJjaC9hcm0vbWFjaC1pbXgvbW1kYy5jOjQ4MDpcXHRwbXVfbW1kYyA9IGt6YWxsb2Nfb2JqKCpwbXVfbW1kYyk7XFxuYXJjaC9hcm0vbWFjaC1pbXgvbW1kYy5jLTQ4MS1cXHRpZiAoIXBtdV9tbWRjKSB7XFxuLS1cXG5hcmNoL2FybS9tYWNoLW12ZWJ1L2JvYXJkLXY3LmM9MTE0PXN0YXRpYyB2b2lkIF9faW5pdCBpMmNfcXVpcmsodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtbXZlYnUvYm9hcmQtdjcuYy0xMjktXFxuYXJjaC9hcm0vbWFjaC1tdmVidS9ib2FyZC12Ny5jOjEzMDpcXHRcXHRuZXdfY29tcGF0ID0ga3phbGxvY19vYmooKm5ld19jb21wYXQpO1xcbmFyY2gvYXJtL21hY2gtbXZlYnUvYm9hcmQtdjcuYy0xMzEtXFxuLS1cXG5hcmNoL2FybS9tYWNoLW12ZWJ1L2NvaGVyZW5jeS5jPTE2Mz1zdGF0aWMgdm9pZCBfX2luaXQgYXJtYWRhXzM3NV8zODBfY29oZXJlbmN5X2luaXQoc3RydWN0IGRldmljZV9ub2RlICpucClcXG4tLVxcbmFyY2gvYXJtL21hY2gtbXZlYnUvY29oZXJlbmN5LmMtMTg3LVxcbmFyY2gvYXJtL21hY2gtbXZlYnUvY29oZXJlbmN5LmM6MTg4OlxcdFxcdHAgPSBremFsbG9jX29iaigqcCk7XFxuYXJjaC9hcm0vbWFjaC1tdmVidS9jb2hlcmVuY3kuYy0xODktXFx0XFx0cC1cXHUwMDNlbmFtZSA9IGtzdHJkdXAoXFxcImFybSxpby1jb2hlcmVudFxcXCIsIEdGUF9LRVJORUwpO1xcbi0tXFxuYXJjaC9hcm0vbWFjaC1tdmVidS9tdmVidS1zb2MtaWQuYz0xNDg9c3RhdGljIGludCBfX2luaXQgbXZlYnVfc29jX2RldmljZSh2b2lkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1tdmVidS9tdmVidS1zb2MtaWQuYy0xNTYtXFxuYXJjaC9hcm0vbWFjaC1tdmVidS9tdmVidS1zb2MtaWQuYzoxNTc6XFx0c29jX2Rldl9hdHRyID0ga3phbGxvY19vYmooKnNvY19kZXZfYXR0cik7XFxuYXJjaC9hcm0vbWFjaC1tdmVidS9tdmVidS1zb2MtaWQuYy0xNTgtXFx0aWYgKCFzb2NfZGV2X2F0dHIpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jPTM4MD1zdGF0aWMgdm9pZCBfX2luaXQgbXhzX21hY2hpbmVfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYy0zODktXFxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYzozOTA6XFx0c29jX2Rldl9hdHRyID0ga3phbGxvY19vYmooKnNvY19kZXZfYXR0cik7XFxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYy0zOTEtXFx0aWYgKCFzb2NfZGV2X2F0dHIpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAxL2RtYS5jPTI5ND1zdGF0aWMgaW50IF9faW5pdCBvbWFwMV9zeXN0ZW1fZG1hX2luaXQodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDEvZG1hLmMtMzIxLVxcbmFyY2gvYXJtL21hY2gtb21hcDEvZG1hLmM6MzIyOlxcdGQgPSBremFsbG9jX29iaigqZCk7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMS9kbWEuYy0zMjMtXFx0aWYgKCFkKSB7XFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAxL21jYnNwLmM9MjkyPXN0YXRpYyB2b2lkIG9tYXBfbWNic3BfcmVnaXN0ZXJfYm9hcmRfY2ZnKHN0cnVjdCByZXNvdXJjZSAqcmVzLCBpbnQgcmVzX2NvdW50LFxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMS9tY2JzcC5jLTI5Ni1cXG5hcmNoL2FybS9tYWNoLW9tYXAxL21jYnNwLmM6Mjk3OlxcdG9tYXBfbWNic3BfZGV2aWNlcyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICosIHNpemUpO1xcbmFyY2gvYXJtL21hY2gtb21hcDEvbWNic3AuYy0yOTgtXFx0aWYgKCFvbWFwX21jYnNwX2RldmljZXMpIHtcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDEvdGltZXIuYz01MT1zdGF0aWMgaW50IF9faW5pdCBvbWFwMV9kbV90aW1lcl9pbml0KHZvaWQpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAxL3RpbWVyLmMtMTI3LVxcbmFyY2gvYXJtL21hY2gtb21hcDEvdGltZXIuYzoxMjg6XFx0XFx0cGRhdGEgPSBremFsbG9jX29iaigqcGRhdGEpO1xcbmFyY2gvYXJtL21hY2gtb21hcDEvdGltZXIuYy0xMjktXFx0XFx0aWYgKCFwZGF0YSkge1xcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jbGt0Mnh4eF92aXJ0X3ByY21fc2V0LmM9MjMwPXZvaWQgb21hcDJ4eHhfY2xrdF92cHNfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jbGt0Mnh4eF92aXJ0X3ByY21fc2V0LmMtMjM5LVxcbmFyY2gvYXJtL21hY2gtb21hcDIvY2xrdDJ4eHhfdmlydF9wcmNtX3NldC5jOjI0MDpcXHRodyA9IGt6YWxsb2Nfb2JqKCpodyk7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jbGt0Mnh4eF92aXJ0X3ByY21fc2V0LmMtMjQxLVxcdGlmICghaHcpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL2lkLmM9Nzg2PXZvaWQgX19pbml0IG9tYXBfc29jX2RldmljZV9pbml0KHZvaWQpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL2lkLmMtNzkwLVxcbmFyY2gvYXJtL21hY2gtb21hcDIvaWQuYzo3OTE6XFx0c29jX2Rldl9hdHRyID0ga3phbGxvY19vYmooKnNvY19kZXZfYXR0cik7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9pZC5jLTc5Mi1cXHRpZiAoIXNvY19kZXZfYXR0cilcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9kZXZpY2UuYz0xMzE9c3RhdGljIGludCBvbWFwX2RldmljZV9idWlsZF9mcm9tX2R0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfZGV2aWNlLmMtMTU4LVxcbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9kZXZpY2UuYzoxNTk6XFx0aHdtb2RzID0ga3phbGxvY19vYmpzKHN0cnVjdCBvbWFwX2h3bW9kICosIG9oX2NudCk7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2RldmljZS5jLTE2MC1cXHRpZiAoIWh3bW9kcykge1xcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmM9MzM4MT1zdGF0aWMgaW50IG9tYXBfaHdtb2RfYWxsb2NhdGVfbW9kdWxlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG9tYXBfaHdtb2QgKm9oLFxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzM5NC1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYzozMzk1OlxcdHN5c2MgPSBremFsbG9jX29iaigqc3lzYyk7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzM5Ni1cXHRpZiAoIXN5c2MpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYy0zNDI0LVxcdGlmIChsaXN0X2VtcHR5KFxcdTAwMjZvaC1cXHUwMDNlc2xhdmVfcG9ydHMpKSB7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmM6MzQyNTpcXHRcXHRvaSA9IGt6YWxsb2Nfb2JqKCpvaSk7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzQyNi1cXHRcXHRpZiAoIW9pKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmM9MzUxMz1pbnQgb21hcF9od21vZF9pbml0X21vZHVsZShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYy0zNTI3LVxcdGlmICghb2gpIHtcXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYzozNTI4OlxcdFxcdG9oID0ga3phbGxvY19vYmooKm9oKTtcXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYy0zNTI5LVxcdFxcdGlmICghb2gpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYy0zNTM4LVxcbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jOjM1Mzk6XFx0XFx0b2gtXFx1MDAzZWNsYXNzID0ga3phbGxvY19vYmooKm9oLVxcdTAwM2VjbGFzcyk7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzU0MC1cXHRcXHRpZiAoIW9oLVxcdTAwM2VjbGFzcykge1xcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9wbTMzeHgtY29yZS5jPTM3OT1zdGF0aWMgaW50IF9faW5pdCBhbXgzX2lkbGVfaW5pdChzdHJ1Y3QgZGV2aWNlX25vZGUgKmNwdV9ub2RlLCBpbnQgY3B1KVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9wbTMzeHgtY29yZS5jLTQxMi1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL3BtMzN4eC1jb3JlLmM6NDEzOlxcdGlkbGVfc3RhdGVzID0ga3phbGxvY19vYmpzKCppZGxlX3N0YXRlcywgc3RhdGVfY291bnQpO1xcbmFyY2gvYXJtL21hY2gtb21hcDIvcG0zM3h4LWNvcmUuYy00MTQtXFx0aWYgKCFpZGxlX3N0YXRlcylcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDIvc3JfZGV2aWNlLmM9MzA9c3RhdGljIHZvaWQgX19pbml0IHNyX3NldF9udmFsdWVzKHN0cnVjdCBvbWFwX3ZvbHRfZGF0YSAqdm9sdF9kYXRhLFxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9zcl9kZXZpY2UuYy00MS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL3NyX2RldmljZS5jOjQyOlxcdG52YWx1ZV90YWJsZSA9IGt6YWxsb2Nfb2JqcygqbnZhbHVlX3RhYmxlLCBjb3VudCk7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9zcl9kZXZpY2UuYy00My1cXHRpZiAoIW52YWx1ZV90YWJsZSlcXG4tLVxcbmFyY2gvYXJtL21hY2gtb3Jpb241eC9wY2kuYz0xMzk9c3RhdGljIGludCBfX2luaXQgcGNpZV9zZXR1cChzdHJ1Y3QgcGNpX3N5c19kYXRhICpzeXMpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmMtMTcxLVxcdCAqL1xcbmFyY2gvYXJtL21hY2gtb3Jpb241eC9wY2kuYzoxNzI6XFx0cmVzID0ga3phbGxvY19vYmooc3RydWN0IHJlc291cmNlKTtcXG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmMtMTczLVxcdGlmICghcmVzKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jPTQ2Nj1zdGF0aWMgaW50IF9faW5pdCBwY2lfc2V0dXAoc3RydWN0IHBjaV9zeXNfZGF0YSAqc3lzKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jLTQ5Mi1cXHQgKi9cXG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmM6NDkzOlxcdHJlcyA9IGt6YWxsb2Nfb2JqKHN0cnVjdCByZXNvdXJjZSk7XFxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jLTQ5NC1cXHRpZiAoIXJlcylcXG4tLVxcbmFyY2gvYXJtL21hY2gtcnBjL2VjYXJkLmM9Njg5PXN0YXRpYyBzdHJ1Y3QgZXhwYW5zaW9uX2NhcmQgKl9faW5pdCBlY2FyZF9hbGxvY19jYXJkKGludCB0eXBlLCBpbnQgc2xvdClcXG4tLVxcbmFyY2gvYXJtL21hY2gtcnBjL2VjYXJkLmMtNjk0LVxcbmFyY2gvYXJtL21hY2gtcnBjL2VjYXJkLmM6Njk1OlxcdGVjID0ga3phbGxvY19vYmooZWNhcmRfdCk7XFxuYXJjaC9hcm0vbWFjaC1ycGMvZWNhcmQuYy02OTYtXFx0aWYgKCFlYykge1xcbi0tXFxuYXJjaC9hcm0vbWFjaC1zYTExMDAvY2xvY2suYz05Mz1pbnQgX19pbml0IHNhMTF4eF9jbGtfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1zYTExMDAvY2xvY2suYy0xMDktXFxuYXJjaC9hcm0vbWFjaC1zYTExMDAvY2xvY2suYzoxMTA6XFx0aHcgPSBremFsbG9jX29iaigqaHcpO1xcbmFyY2gvYXJtL21hY2gtc2ExMTAwL2Nsb2NrLmMtMTExLVxcdGlmICghaHcpXFxuLS1cXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9jbG9jay5jLTEzMS1cXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9jbG9jay5jOjEzMjpcXHRodyA9IGt6YWxsb2Nfb2JqKCpodyk7XFxuYXJjaC9hcm0vbWFjaC1zYTExMDAvY2xvY2suYy0xMzMtXFx0aWYgKCFodylcXG4tLVxcbmFyY2gvYXJtL21hY2gtc2ExMTAwL2dlbmVyaWMuYz0zMTc9aW50IF9faW5pdCBzYTExeDBfcmVnaXN0ZXJfZml4ZWRfcmVndWxhdG9yKGludCBuLFxcbi0tXFxuYXJjaC9hcm0vbWFjaC1zYTExMDAvZ2VuZXJpYy5jLTMyMy1cXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9nZW5lcmljLmM6MzI0OlxcdGNmZy1cXHUwMDNlaW5pdF9kYXRhID0gaWQgPSBremFsbG9jX29iaigqY2ZnLVxcdTAwM2Vpbml0X2RhdGEpO1xcbmFyY2gvYXJtL21hY2gtc2ExMTAwL2dlbmVyaWMuYy0zMjUtXFx0aWYgKCFjZmctXFx1MDAzZWluaXRfZGF0YSlcXG4tLVxcbmFyY2gvYXJtL21hY2gtc2ExMTAwL25lcG9uc2V0LmM9MjI1PXN0YXRpYyBpbnQgbmVwb25zZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2KVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1zYTExMDAvbmVwb25zZXQuYy0yNzgtXFxuYXJjaC9hcm0vbWFjaC1zYTExMDAvbmVwb25zZXQuYzoyNzk6XFx0ZCA9IGt6YWxsb2Nfb2JqKCpkKTtcXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9uZXBvbnNldC5jLTI4MC1cXHRpZiAoIWQpIHtcXG4tLVxcbmFyY2gvYXJtL21hY2gtc2htb2JpbGUvcmVndWxhdG9yLXF1aXJrLXJjYXItZ2VuMi5jPTE0MT1zdGF0aWMgaW50IF9faW5pdCByY2FyX2dlbjJfcmVndWxhdG9yX3F1aXJrKHZvaWQpXFxuLS1cXG5hcmNoL2FybS9tYWNoLXNobW9iaWxlL3JlZ3VsYXRvci1xdWlyay1yY2FyLWdlbjIuYy0xNjYtXFxuYXJjaC9hcm0vbWFjaC1zaG1vYmlsZS9yZWd1bGF0b3ItcXVpcmstcmNhci1nZW4yLmM6MTY3OlxcdFxcdHF1aXJrID0ga3phbGxvY19vYmooKnF1aXJrKTtcXG5hcmNoL2FybS9tYWNoLXNobW9iaWxlL3JlZ3VsYXRvci1xdWlyay1yY2FyLWdlbjIuYy0xNjgtXFx0XFx0aWYgKCFxdWlyaykge1xcbi0tXFxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvc3BjLmM9MzkzPXN0YXRpYyBpbnQgdmVfc3BjX3BvcHVsYXRlX29wcHModWludDMyX3QgY2x1c3RlcilcXG4tLVxcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTM5Ny1cXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYzozOTg6XFx0b3BwcyA9IGt6YWxsb2Nfb2Jqcygqb3BwcywgTUFYX09QUFMpO1xcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTM5OS1cXHRpZiAoIW9wcHMpXFxuLS1cXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYz00NDI9aW50IF9faW5pdCB2ZV9zcGNfaW5pdCh2b2lkIF9faW9tZW0gKmJhc2VhZGRyLCB1MzIgYTE1X2NsdXNpZCwgaW50IGlycSlcXG4tLVxcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTQ0NC1cXHRpbnQgcmV0O1xcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jOjQ0NTpcXHRpbmZvID0ga3phbGxvY19vYmooKmluZm8pO1xcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTQ0Ni1cXHRpZiAoIWluZm8pXFxuLS1cXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYz01MjM9c3RhdGljIHN0cnVjdCBjbGsgKnZlX3NwY19jbGtfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqY3B1X2RldilcXG4tLVxcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTUyNy1cXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYzo1Mjg6XFx0c3BjID0ga3phbGxvY19vYmooKnNwYyk7XFxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvc3BjLmMtNTI5LVxcdGlmICghc3BjKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvdmVyc2F0aWxlLmM9MTIzPXN0YXRpYyB2b2lkIF9faW5pdCB2ZXJzYXRpbGVfZHRfcGNpX2luaXQodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3ZlcnNhdGlsZS5jLTE0NC1cXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS92ZXJzYXRpbGUuYzoxNDU6XFx0bmV3cHJvcCA9IGt6YWxsb2Nfb2JqKCpuZXdwcm9wKTtcXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS92ZXJzYXRpbGUuYy0xNDYtXFx0aWYgKCFuZXdwcm9wKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC16eW5xL2NvbW1vbi5jPTEwNT1zdGF0aWMgdm9pZCBfX2luaXQgenlucV9pbml0X21hY2hpbmUodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtenlucS9jb21tb24uYy0xMTAtXFxuYXJjaC9hcm0vbWFjaC16eW5xL2NvbW1vbi5jOjExMTpcXHRzb2NfZGV2X2F0dHIgPSBremFsbG9jX29iaigqc29jX2Rldl9hdHRyKTtcXG5hcmNoL2FybS9tYWNoLXp5bnEvY29tbW9uLmMtMTEyLVxcdGlmICghc29jX2Rldl9hdHRyKVxcbi0tXFxuYXJjaC9hcm0vbW0vY2FjaGUtbDJ4MC1wbXUuYz01MDM9c3RhdGljIF9faW5pdCBpbnQgbDJ4MF9wbXVfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm0vbW0vY2FjaGUtbDJ4MC1wbXUuYy01MDktXFxuYXJjaC9hcm0vbW0vY2FjaGUtbDJ4MC1wbXUuYzo1MTA6XFx0bDJ4MF9wbXUgPSBremFsbG9jX29iaigqbDJ4MF9wbXUpO1xcbmFyY2gvYXJtL21tL2NhY2hlLWwyeDAtcG11LmMtNTExLVxcdGlmICghbDJ4MF9wbXUpIHtcXG4tLVxcbmFyY2gvYXJtL21tL2NhY2hlLXVuaXBoaWVyLmM9MzE1PXN0YXRpYyBpbnQgX19pbml0IF9fdW5pcGhpZXJfY2FjaGVfaW5pdChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLFxcbi0tXFxuYXJjaC9hcm0vbW0vY2FjaGUtdW5pcGhpZXIuYy0zNDQtXFxuYXJjaC9hcm0vbW0vY2FjaGUtdW5pcGhpZXIuYzozNDU6XFx0ZGF0YSA9IGt6YWxsb2Nfb2JqKCpkYXRhKTtcXG5hcmNoL2FybS9tbS9jYWNoZS11bmlwaGllci5jLTM0Ni1cXHRpZiAoIWRhdGEpXFxuLS1cXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jPTUzMz1zdGF0aWMgdm9pZCAqX19kbWFfYWxsb2Moc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSwgZG1hX2FkZHJfdCAqaGFuZGxlLFxcbi0tXFxuYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYy01NjAtXFxuYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYzo1NjE6XFx0YnVmID0ga3phbGxvY19vYmooKmJ1ZixcXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jLTU2Mi1cXHRcXHRcXHQgIGdmcCBcXHUwMDI2IH4oX19HRlBfRE1BIHwgX19HRlBfRE1BMzIgfCBfX0dGUF9ISUdITUVNKSk7XFxuLS1cXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jPTE0ODc9YXJtX2lvbW11X2NyZWF0ZV9tYXBwaW5nKHN0cnVjdCBkZXZpY2UgKmRldiwgZG1hX2FkZHJfdCBiYXNlLCB1NjQgc2l6ZSlcXG4tLVxcbmFyY2gvYXJtL21tL2RtYS1tYXBwaW5nLmMtMTUwNi1cXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jOjE1MDc6XFx0bWFwcGluZyA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBkbWFfaW9tbXVfbWFwcGluZyk7XFxuYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYy0xNTA4LVxcdGlmICghbWFwcGluZylcXG4tLVxcbmFyY2gvYXJtL3hlbi9lbmxpZ2h0ZW4uYz0zMTY9aW50IF9faW5pdCBhcmNoX3hlbl91bnBvcHVsYXRlZF9pbml0KHN0cnVjdCByZXNvdXJjZSAqKnJlcylcXG4tLVxcbmFyY2gvYXJtL3hlbi9lbmxpZ2h0ZW4uYy0zNDMtXFxuYXJjaC9hcm0veGVuL2VubGlnaHRlbi5jOjM0NDpcXHRyZWdzID0ga3phbGxvY19vYmpzKCpyZWdzLCBucl9yZWcpO1xcbmFyY2gvYXJtL3hlbi9lbmxpZ2h0ZW4uYy0zNDUtXFx0aWYgKCFyZWdzKSB7XFxuLS1cXG5hcmNoL2FybS94ZW4vZW5saWdodGVuLmMtMzg3LVxcbmFyY2gvYXJtL3hlbi9lbmxpZ2h0ZW4uYzozODg6XFx0XFx0dG1wX3JlcyA9IGt6YWxsb2Nfb2JqKCp0bXBfcmVzKTtcXG5hcmNoL2FybS94ZW4vZW5saWdodGVuLmMtMzg5LVxcdFxcdGlmICghdG1wX3Jlcykge1xcbi0tXFxuYXJjaC9hcm0veGVuL3AybS5jPTE1MD1ib29sIF9fc2V0X3BoeXNfdG9fbWFjaGluZV9tdWx0aSh1bnNpZ25lZCBsb25nIHBmbixcXG4tLVxcbmFyY2gvYXJtL3hlbi9wMm0uYy0xNzgtXFxuYXJjaC9hcm0veGVuL3AybS5jOjE3OTpcXHRwMm1fZW50cnkgPSBremFsbG9jX29iaigqcDJtX2VudHJ5LCBHRlBfTk9XQUlUKTtcXG5hcmNoL2FybS94ZW4vcDJtLmMtMTgwLVxcdGlmICghcDJtX2VudHJ5KVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvdmRzby5jPTY4PXN0YXRpYyBpbnQgX19pbml0IF9fdmRzb19pbml0KGVudW0gdmRzb19hYmkgYWJpKVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvdmRzby5jLTgzLVxcbmFyY2gvYXJtNjQva2VybmVsL3Zkc28uYzo4NDpcXHR2ZHNvX3BhZ2VsaXN0ID0ga3phbGxvY19vYmpzKHN0cnVjdCBwYWdlICosIHZkc29faW5mb1thYmldLnZkc29fcGFnZXMpO1xcbmFyY2gvYXJtNjQva2VybmVsL3Zkc28uYy04NS1cXHRpZiAodmRzb19wYWdlbGlzdCA9PSBOVUxMKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vbW11LmM9NDgwPXN0YXRpYyBpbnQgc2hhcmVfcGZuX2h5cCh1NjQgcGZuKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vbW11LmMtNDkyLVxcbmFyY2gvYXJtNjQva3ZtL21tdS5jOjQ5MzpcXHR0aGlzID0ga3phbGxvY19vYmooKnRoaXMpO1xcbmFyY2gvYXJtNjQva3ZtL21tdS5jLTQ5NC1cXHRpZiAoIXRoaXMpIHtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL21tdS5jPTk4MT1pbnQga3ZtX2luaXRfc3RhZ2UyX21tdShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fczJfbW11ICptbXUsIHVuc2lnbmVkIGxvbmcgdHlwZSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL21tdS5jLTEwMDctXFxuYXJjaC9hcm02NC9rdm0vbW11LmM6MTAwODpcXHRwZ3QgPSBremFsbG9jX29iaigqcGd0LCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbmFyY2gvYXJtNjQva3ZtL21tdS5jLTEwMDktXFx0aWYgKCFwZ3QpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9tbXUuYz0xMTgwPWludCB0b3B1cF9oeXBfbWVtY2FjaGUoc3RydWN0IGt2bV9oeXBfbWVtY2FjaGUgKm1jLCB1bnNpZ25lZCBsb25nIG1pbl9wYWdlcylcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL21tdS5jLTExODUtXFx0aWYgKCFtYy1cXHUwMDNlbWFwcGluZykge1xcbmFyY2gvYXJtNjQva3ZtL21tdS5jOjExODY6XFx0XFx0bWMtXFx1MDAzZW1hcHBpbmcgPSBremFsbG9jX29iaihzdHJ1Y3QgcGt2bV9tYXBwaW5nLFxcbmFyY2gvYXJtNjQva3ZtL21tdS5jLTExODctXFx0XFx0XFx0XFx0XFx0ICBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vbW11LmM9MjUxMD1pbnQgX19pbml0IGt2bV9tbXVfaW5pdCh1MzIgaHlwX3ZhX2JpdHMpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9tbXUuYy0yNTQzLVxcbmFyY2gvYXJtNjQva3ZtL21tdS5jOjI1NDQ6XFx0aHlwX3BndGFibGUgPSBremFsbG9jX29iaigqaHlwX3BndGFibGUpO1xcbmFyY2gvYXJtNjQva3ZtL21tdS5jLTI1NDUtXFx0aWYgKCFoeXBfcGd0YWJsZSkge1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmM9MTMyNz1pbnQga3ZtX3ZjcHVfYWxsb2NhdGVfdm5jcl90bGIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmMtMTMzMi1cXHRpZiAoIXZjcHUtXFx1MDAzZWFyY2gudm5jcl90bGIpIHtcXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYzoxMzMzOlxcdFxcdHN0cnVjdCB2bmNyX3RsYiAqdnQgPSBremFsbG9jX29iaigqdmNwdS1cXHUwMDNlYXJjaC52bmNyX3RsYixcXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYy0xMzM0LVxcdFxcdFxcdFxcdFxcdFxcdCAgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL25lc3RlZC5jPTE3OTE9aW50IGt2bV9pbml0X252X3N5c3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmMtMTgwMC1cXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYzoxODAxOlxcdGt2bS1cXHUwMDNlYXJjaC5zeXNyZWdfbWFza3MgPSBremFsbG9jX29iaigqKGt2bS1cXHUwMDNlYXJjaC5zeXNyZWdfbWFza3MpLFxcbmFyY2gvYXJtNjQva3ZtL25lc3RlZC5jLTE4MDItXFx0XFx0XFx0XFx0XFx0ICAgICBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vcHRkdW1wLmM9MTE2PXN0YXRpYyBzdHJ1Y3Qga3ZtX3B0ZHVtcF9ndWVzdF9zdGF0ZSAqa3ZtX3B0ZHVtcF9wYXJzZXJfY3JlYXRlKHN0cnVjdCBrdm1fczJfbW11ICptbXUpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9wdGR1bXAuYy0xMjEtXFxuYXJjaC9hcm02NC9rdm0vcHRkdW1wLmM6MTIyOlxcdHN0ID0ga3phbGxvY19vYmooc3RydWN0IGt2bV9wdGR1bXBfZ3Vlc3Rfc3RhdGUsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuYXJjaC9hcm02NC9rdm0vcHRkdW1wLmMtMTIzLVxcdGlmICghc3QpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jPTIwNz1zdGF0aWMgaW50IGt2bV92Z2ljX2Rpc3RfaW5pdChzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGludCBucl9zcGlzKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYy0yMTMtXFx0ZGlzdC1cXHUwMDNlYWN0aXZlX3NwaXMgPSAoYXRvbWljX3QpQVRPTUlDX0lOSVQoMCk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYzoyMTQ6XFx0ZGlzdC1cXHUwMDNlc3BpcyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgdmdpY19pcnEsIG5yX3NwaXMsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYy0yMTUtXFx0aWYgKCFkaXN0LVxcdTAwM2VzcGlzKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYz0zMTY9c3RhdGljIGludCB2Z2ljX2FsbG9jYXRlX3ByaXZhdGVfaXJxc19sb2NrZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgdHlwZSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmMtMzMxLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmM6MzMyOlxcdHZnaWNfY3B1LVxcdTAwM2Vwcml2YXRlX2lycXMgPSBremFsbG9jX29ianMoc3RydWN0IHZnaWNfaXJxLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmMtMzMzLVxcdFxcdFxcdFxcdFxcdCAgICAgIG51bV9wcml2YXRlX2lycXMsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXJxZmQuYz0xNDI9aW50IGt2bV92Z2ljX3NldHVwX2RlZmF1bHRfaXJxX3JvdXRpbmcoc3RydWN0IGt2bSAqa3ZtKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWlycWZkLmMtMTQ4LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pcnFmZC5jOjE0OTpcXHRlbnRyaWVzID0ga3phbGxvY19vYmpzKCplbnRyaWVzLCBuciwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXJxZmQuYy0xNTAtXFx0aWYgKCFlbnRyaWVzKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTc2PXN0YXRpYyBzdHJ1Y3QgdmdpY19pcnEgKnZnaWNfYWRkX2xwaShzdHJ1Y3Qga3ZtICprdm0sIHUzMiBpbnRpZCxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy04Ny1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6ODg6XFx0aXJxID0ga3phbGxvY19vYmooc3RydWN0IHZnaWNfaXJxLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy04OS1cXHRpZiAoIWlycSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz05NjA9c3RhdGljIGludCB2Z2ljX2l0c19hbGxvY19jb2xsZWN0aW9uKHN0cnVjdCB2Z2ljX2l0cyAqaXRzLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTk2NS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6OTY2OlxcdGNvbGxlY3Rpb24gPSBremFsbG9jX29iaigqY29sbGVjdGlvbiwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtOTY3LVxcdGlmICghY29sbGVjdGlvbilcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xMDA0PXN0YXRpYyBzdHJ1Y3QgaXRzX2l0ZSAqdmdpY19pdHNfYWxsb2NfaXRlKHN0cnVjdCBpdHNfZGV2aWNlICpkZXZpY2UsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTAwOS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTAxMDpcXHRpdGUgPSBremFsbG9jX29iaigqaXRlLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xMDExLVxcdGlmICghaXRlKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTExMzE9c3RhdGljIHN0cnVjdCBpdHNfZGV2aWNlICp2Z2ljX2l0c19hbGxvY19kZXZpY2Uoc3RydWN0IHZnaWNfaXRzICppdHMsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTEzNi1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTEzNzpcXHRkZXZpY2UgPSBremFsbG9jX29iaigqZGV2aWNlLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xMTM4LVxcdGlmICghZGV2aWNlKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTE4NDQ9c3RhdGljIGludCB2Z2ljX2l0c19jcmVhdGUoc3RydWN0IGt2bV9kZXZpY2UgKmRldiwgdTMyIHR5cGUpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTg1MS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTg1MjpcXHRpdHMgPSBremFsbG9jX29iaihzdHJ1Y3QgdmdpY19pdHMsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE4NTMtXFx0aWYgKCFpdHMpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jPTg4Nj1zdGF0aWMgaW50IHZnaWNfdjNfYWxsb2NfcmVkaXN0X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sIHVpbnQzMl90IGluZGV4LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy05MzEtXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo5MzI6XFx0cmRyZWcgPSBremFsbG9jX29iaigqcmRyZWcsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy05MzMtXFx0aWYgKCFyZHJlZylcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy12NC5jPTI0Mj1pbnQgdmdpY192NF9pbml0KHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy12NC5jLTI1OC1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjQuYzoyNTk6XFx0ZGlzdC1cXHUwMDNlaXRzX3ZtLnZwZXMgPSBremFsbG9jX29ianMoKmRpc3QtXFx1MDAzZWl0c192bS52cGVzLCBucl92Y3B1cyxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjQuYy0yNjAtXFx0XFx0XFx0XFx0XFx0IEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuLS1cXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYz0yMDgwPXN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuLS1cXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0yMTAxLVxcdGlmICghaml0X2RhdGEpIHtcXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYzoyMTAyOlxcdFxcdGppdF9kYXRhID0ga3phbGxvY19vYmooKmppdF9kYXRhKTtcXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0yMTAzLVxcdFxcdGlmICghaml0X2RhdGEpXFxuLS1cXG5hcmNoL2Nza3kva2VybmVsL3Zkc28uYz0xNz1zdGF0aWMgaW50IF9faW5pdCB2ZHNvX2luaXQodm9pZClcXG4tLVxcbmFyY2gvY3NreS9rZXJuZWwvdmRzby5jLTIyLVxcdHZkc29fcGFnZWxpc3QgPVxcbmFyY2gvY3NreS9rZXJuZWwvdmRzby5jOjIzOlxcdFxcdGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgcGFnZSAqLCB2ZHNvX3BhZ2VzKTtcXG5hcmNoL2Nza3kva2VybmVsL3Zkc28uYy0yNC1cXHRpZiAodW5saWtlbHkodmRzb19wYWdlbGlzdCA9PSBOVUxMKSkge1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva2VybmVsL3NldHVwLmM9NDY2PXN0YXRpYyBpbnQgX19pbml0IGFkZF9sZWdhY3lfaXNhX2lvKHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvc2V0dXAuYy00NzItXFxuYXJjaC9sb29uZ2FyY2gva2VybmVsL3NldHVwLmM6NDczOlxcdHJhbmdlID0ga3phbGxvY19vYmooKnJhbmdlLCBHRlBfQVRPTUlDKTtcXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvc2V0dXAuYy00NzQtXFx0aWYgKCFyYW5nZSlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC92ZHNvLmM9NDU9c3RhdGljIGludCBfX2luaXQgaW5pdF92ZHNvKHZvaWQpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvdmRzby5jLTU1LVxcdHZkc29faW5mby5jb2RlX21hcHBpbmcucGFnZXMgPVxcbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC92ZHNvLmM6NTY6XFx0XFx0a3phbGxvY19vYmpzKHN0cnVjdCBwYWdlICosIHZkc29faW5mby5zaXplIC8gUEFHRV9TSVpFKTtcXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvdmRzby5jLTU3LVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jPTYxND1zdGF0aWMgaW50IGt2bV9laW9pbnRjX2NyZWF0ZShzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LCB1MzIgdHlwZSlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02MjQtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjYyNTpcXHRzID0ga3phbGxvY19vYmooc3RydWN0IGxvb25nYXJjaF9laW9pbnRjKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjI2LVxcdGlmICghcylcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2lwaS5jPTM5ND1zdGF0aWMgaW50IGt2bV9pcGlfY3JlYXRlKHN0cnVjdCBrdm1fZGV2aWNlICpkZXYsIHUzMiB0eXBlKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvaXBpLmMtNDExLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2lwaS5jOjQxMjpcXHRzID0ga3phbGxvY19vYmooc3RydWN0IGxvb25nYXJjaF9pcGkpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2lwaS5jLTQxMy1cXHRpZiAoIXMpXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDE4OjIyOjM5LjM2NTk0MzIxMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg5NjkwNDAwNDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNYWNybyBSZWZhY3RvcmluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5IHNlZSB0aGUgY2hhbmdlcyBhcmUgYWxsIGFib3V0IHJlcGxhY2luZyBzdGFuZGFyZCBhbGxvY2F0aW9uIGZ1bmN0aW9ucyB3aXRoIHRoZXNlIGBremFsbG9jX29iamAgYW5kIGBrdm1hbGxvY19vYmpzYCBtYWNyb3MuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgcHVyZWx5IHN5bnRhY3RpYyDigJMgYSByZWZhY3RvcmluZyBmb3IgY29kZSBjbGFyaXR5IG9yIHBlcmhhcHMgdG8gbGV2ZXJhZ2Ugc29tZSBpbnRlcm5hbCBrZXJuZWwgYWxsb2NhdGlvbiBvcHRpbWl6YXRpb24uIFRoZXJlJ3Mgbm8gaW1tZWRpYXRlbHkgb2J2aW91cyBjaGFuZ2UgaW4gdGhlICpsb2dpYyogb2YgdGhlIGNvZGUuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJ20gZ29pbmcgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCBhc3N1bXB0aW9uLiBMb29raW5nIGF0IHRoZSBkaWZmLCBpdCdzIHByZXR0eSBjbGVhcjogYGt6YWxsb2Moc2l6ZW9mKCp0KSwgR0ZQX0tFUk5FTClgIGlzIG5vdyBga3phbGxvY19vYmooKnQpYCwgYW5kIGBrdm1hbGxvY19hcnJheShzY291bnRzLCBzaXplb2YoKnQtXHUwMDNlc2VxYyksIEdGUF9LRVJORUwpYCBpcyBub3cgYGt2bWFsbG9jX29ianMoKnQtXHUwMDNlc2VxYywgc2NvdW50cylgLiBObyBmdW5jdGlvbmFsIGNoYW5nZXMgaGVyZS5cblxuTm93LCBsZXQncyBqdXN0IGNvbmZpcm0gdGhhdCB0aGlzIG1hY3JvIGJlaGF2ZXMgYXMgZXhwZWN0ZWQuIExldCBtZSBzZWUuLi4gYGt2bWFsbG9jX2FycmF5YCB0YWtlcyBgKHNpemVfdCBuLCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpYCwgd2hpbGUgYGt2bWFsbG9jX29ianNgIHByb2JhYmx5IGluZmVycyB0aGUgYHNpemVvZihvYmopYCB3aXRoaW4gdGhlIG1hY3JvIGFuZCBsaWtlbHkgZGVmYXVsdHMgdG8gYSBgR0ZQX0tFUk5FTGAgZXF1aXZhbGVudC4gU28gdGhlIG5ldyBtYWNybyAqbWlnaHQqIGJlaGF2ZSBsaWtlIGBrdm1hbGxvY19hcnJheShuLCBzaXplb2Yob2JqKSwgR0ZQX0tFUk5FTClgLlxuXG5Db25zaWRlcmluZyBhbGwgb2YgdGhpcywgYmVjYXVzZSBpdCBpcyAqanVzdCogYSBtYWNybyByZXBsYWNlbWVudCwgdGhpcyBkb2Vzbid0IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgYmVoYXZpb3IgdG8gdGhlIGtlcm5lbC4gVGhlcmVmb3JlLCBteSBhc3Nlc3NtZW50IGlzIHRoYXQgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGRlZmluaXRlbHkgYmUgYGZhbHNlYCBpbiB0aGlzIGNhc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNjgzLCJPdXRwdXRUb2tlbnMiOjg0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDE4OjIyOjQ4LjMzNDk4NjA4OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA5NzQzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IHJlcGxhY2VzIHN0YW5kYXJkIG1lbW9yeSBhbGxvY2F0aW9uIGZ1bmN0aW9ucyAoa3phbGxvYywga3ZtYWxsb2NfYXJyYXkpIHdpdGggdGhlaXIgbWFjcm8gZXF1aXZhbGVudHMgKGt6YWxsb2Nfb2JqLCBrdm1hbGxvY19vYmpzKS4gVGhpcyBpcyBhIHB1cmVseSBzeW50YWN0aWMgcmVmYWN0b3JpbmcgdGhhdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGxvZ2ljIG9mIHRoZSBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IHJlcGxhY2VzIHN0YW5kYXJkIG1lbW9yeSBhbGxvY2F0aW9uIGZ1bmN0aW9ucyAoa3phbGxvYywga3ZtYWxsb2NfYXJyYXkpIHdpdGggdGhlaXIgbWFjcm8gZXF1aXZhbGVudHMgKGt6YWxsb2Nfb2JqLCBrdm1hbGxvY19vYmpzKS4gVGhpcyBpcyBhIHB1cmVseSBzeW50YWN0aWMgcmVmYWN0b3JpbmcgdGhhdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGxvZ2ljIG9mIHRoZSBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjt686[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-16 18:14:11 +0000 UTC FinishedAt: 2026-07-16 18:22: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+CgkJCTx0ZD4yMDI2LzA3LzE2IDE4OjIyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgcmVwbGFjZXMgc3RhbmRhcmQgbWVtb3J5IGFsbG9jYXRpb24gZnVuY3Rpb25zIChremFsbG9jLCBrdm1hbGxvY19hcnJheSkgd2l0aCB0aGVpciBtYWNybyBlcXVpdmFsZW50cyAoa3phbGxvY19vYmosIGt2bWFsbG9jX29ianMpLiBUaGlzIGlzIGEgcHVyZWx5IHN5bnRhY3RpYyByZWZhY3RvcmluZyB0aGF0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgbG9naWMgb2YgdGhlIGtlcm5lbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTg6MjI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkNTc1YWY5YjNmM2IxNDU4NmMwMGNkMzRjNGQ0MmEzNmFlZmZlNmJiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMTYgMTg6MjI6MTMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcbmluZGV4IDM1Y2JlODIxYzI1OTY3Li43NDA0N2JmMWUzMmRlMSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcbkBAIC0xNzYsNyAmIzQzOzE3Niw3IEBAIHZvaWQgaXBfdnNfcmh0X3JjdV9mcmVlKHN0cnVjdCByY3VfaGVhZCAqaGVhZClcbiBcbiBzdHJ1Y3QgaXBfdnNfcmh0ICppcF92c19yaHRfYWxsb2MoaW50IGJ1Y2tldHMsIGludCBzY291bnRzLCBpbnQgbG9ja3MpXG4ge1xuLVx0c3RydWN0IGlwX3ZzX3JodCAqdCA9IGt6YWxsb2Moc2l6ZW9mKCp0KSwgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0c3RydWN0IGlwX3ZzX3JodCAqdCA9IGt6YWxsb2Nfb2JqKCp0KTtcbiBcdGludCBpO1xuIFxuIFx0aWYgKCF0KVxuQEAgLTE4Niw3ICYjNDM7MTg2LDcgQEAgc3RydWN0IGlwX3ZzX3JodCAqaXBfdnNfcmh0X2FsbG9jKGludCBidWNrZXRzLCBpbnQgc2NvdW50cywgaW50IGxvY2tzKVxuIFxuIFx0XHRzY291bnRzID0gbWluKHNjb3VudHMsIGJ1Y2tldHMpO1xuIFx0XHRzY291bnRzID0gbWluKHNjb3VudHMsIG1sKTtcbi1cdFx0dC1cdTAwM2VzZXFjID0ga3ZtYWxsb2NfYXJyYXkoc2NvdW50cywgc2l6ZW9mKCp0LVx1MDAzZXNlcWMpLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRcdHQtXHUwMDNlc2VxYyA9IGt2bWFsbG9jX29ianMoKnQtXHUwMDNlc2VxYywgc2NvdW50cyk7XG4gXHRcdGlmICghdC1cdTAwM2VzZXFjKVxuIFx0XHRcdGdvdG8gZXJyO1xuIFx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBzY291bnRzOyBpJiM0MzsmIzQzOylcbkBAIC0xOTQsOCAmIzQzOzE5NCw3IEBAIHN0cnVjdCBpcF92c19yaHQgKmlwX3ZzX3JodF9hbGxvYyhpbnQgYnVja2V0cywgaW50IHNjb3VudHMsIGludCBsb2NrcylcbiBcbiBcdFx0aWYgKGxvY2tzKSB7XG4gXHRcdFx0bG9ja3MgPSBtaW4obG9ja3MsIHNjb3VudHMpO1xuLVx0XHRcdHQtXHUwMDNlbG9jayA9IGt2bWFsbG9jX2FycmF5KGxvY2tzLCBzaXplb2YoKnQtXHUwMDNlbG9jayksXG4tXHRcdFx0XHRcdFx0IEdGUF9LRVJORUwpO1xuJiM0MztcdFx0XHR0LVx1MDAzZWxvY2sgPSBrdm1hbGxvY19vYmpzKCp0LVx1MDAzZWxvY2ssIGxvY2tzKTtcbiBcdFx0XHRpZiAoIXQtXHUwMDNlbG9jaylcbiBcdFx0XHRcdGdvdG8gZXJyO1xuIFx0XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGxvY2tzOyBpJiM0MzsmIzQzOylcbkBAIC0yMDMsNyAmIzQzOzIwMiw3IEBAIHN0cnVjdCBpcF92c19yaHQgKmlwX3ZzX3JodF9hbGxvYyhpbnQgYnVja2V0cywgaW50IHNjb3VudHMsIGludCBsb2NrcylcbiBcdFx0fVxuIFx0fVxuIFxuLVx0dC1cdTAwM2VidWNrZXRzID0ga3ZtYWxsb2NfYXJyYXkoYnVja2V0cywgc2l6ZW9mKCp0LVx1MDAzZWJ1Y2tldHMpLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHR0LVx1MDAzZWJ1Y2tldHMgPSBrdm1hbGxvY19vYmpzKCp0LVx1MDAzZWJ1Y2tldHMsIGJ1Y2tldHMpO1xuIFx0aWYgKCF0LVx1MDAzZWJ1Y2tldHMpXG4gXHRcdGdvdG8gZXJyO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYnVja2V0czsgaSYjNDM7JiM0MzspXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTg6MjI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSByZXBsYWNlcyBzdGFuZGFyZCBtZW1vcnkgYWxsb2NhdGlvbiBmdW5jdGlvbnMgKGt6YWxsb2MsIGt2bWFsbG9jX2FycmF5KSB3aXRoIHRoZWlyIG1hY3JvIGVxdWl2YWxlbnRzIChremFsbG9jX29iaiwga3ZtYWxsb2Nfb2JqcykuIFRoaXMgaXMgYSBwdXJlbHkgc3ludGFjdGljIHJlZmFjdG9yaW5nIHRoYXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBsb2dpYyBvZiB0aGUga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZDU3NWFmOWIzZjNiMTQ1ODZjMDBjZDM0YzRkNDJhMzZhZWZmZTZiYgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDE2IDE4OjIyOjEzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMKaW5kZXggMzVjYmU4MjFjMjU5NjcuLjc0MDQ3YmYxZTMyZGUxIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMKQEAgLTE3Niw3ICYjNDM7MTc2LDcgQEAgdm9pZCBpcF92c19yaHRfcmN1X2ZyZWUoc3RydWN0IHJjdV9oZWFkICpoZWFkKQogCiBzdHJ1Y3QgaXBfdnNfcmh0ICppcF92c19yaHRfYWxsb2MoaW50IGJ1Y2tldHMsIGludCBzY291bnRzLCBpbnQgbG9ja3MpCiB7Ci0Jc3RydWN0IGlwX3ZzX3JodCAqdCA9IGt6YWxsb2Moc2l6ZW9mKCp0KSwgR0ZQX0tFUk5FTCk7CiYjNDM7CXN0cnVjdCBpcF92c19yaHQgKnQgPSBremFsbG9jX29iaigqdCk7CiAJaW50IGk7CiAKIAlpZiAoIXQpCkBAIC0xODYsNyAmIzQzOzE4Niw3IEBAIHN0cnVjdCBpcF92c19yaHQgKmlwX3ZzX3JodF9hbGxvYyhpbnQgYnVja2V0cywgaW50IHNjb3VudHMsIGludCBsb2NrcykKIAogCQlzY291bnRzID0gbWluKHNjb3VudHMsIGJ1Y2tldHMpOwogCQlzY291bnRzID0gbWluKHNjb3VudHMsIG1sKTsKLQkJdC0mZ3Q7c2VxYyA9IGt2bWFsbG9jX2FycmF5KHNjb3VudHMsIHNpemVvZigqdC0mZ3Q7c2VxYyksIEdGUF9LRVJORUwpOwomIzQzOwkJdC0mZ3Q7c2VxYyA9IGt2bWFsbG9jX29ianMoKnQtJmd0O3NlcWMsIHNjb3VudHMpOwogCQlpZiAoIXQtJmd0O3NlcWMpCiAJCQlnb3RvIGVycjsKIAkJZm9yIChpID0gMDsgaSAmbHQ7IHNjb3VudHM7IGkmIzQzOyYjNDM7KQpAQCAtMTk0LDggJiM0MzsxOTQsNyBAQCBzdHJ1Y3QgaXBfdnNfcmh0ICppcF92c19yaHRfYWxsb2MoaW50IGJ1Y2tldHMsIGludCBzY291bnRzLCBpbnQgbG9ja3MpCiAKIAkJaWYgKGxvY2tzKSB7CiAJCQlsb2NrcyA9IG1pbihsb2Nrcywgc2NvdW50cyk7Ci0JCQl0LSZndDtsb2NrID0ga3ZtYWxsb2NfYXJyYXkobG9ja3MsIHNpemVvZigqdC0mZ3Q7bG9jayksCi0JCQkJCQkgR0ZQX0tFUk5FTCk7CiYjNDM7CQkJdC0mZ3Q7bG9jayA9IGt2bWFsbG9jX29ianMoKnQtJmd0O2xvY2ssIGxvY2tzKTsKIAkJCWlmICghdC0mZ3Q7bG9jaykKIAkJCQlnb3RvIGVycjsKIAkJCWZvciAoaSA9IDA7IGkgJmx0OyBsb2NrczsgaSYjNDM7JiM0MzspCkBAIC0yMDMsNyAmIzQzOzIwMiw3IEBAIHN0cnVjdCBpcF92c19yaHQgKmlwX3ZzX3JodF9hbGxvYyhpbnQgYnVja2V0cywgaW50IHNjb3VudHMsIGludCBsb2NrcykKIAkJfQogCX0KIAotCXQtJmd0O2J1Y2tldHMgPSBrdm1hbGxvY19hcnJheShidWNrZXRzLCBzaXplb2YoKnQtJmd0O2J1Y2tldHMpLCBHRlBfS0VSTkVMKTsKJiM0MzsJdC0mZ3Q7YnVja2V0cyA9IGt2bWFsbG9jX29ianMoKnQtJmd0O2J1Y2tldHMsIGJ1Y2tldHMpOwogCWlmICghdC0mZ3Q7YnVja2V0cykKIAkJZ290byBlcnI7CiAJZm9yIChpID0gMDsgaSAmbHQ7IGJ1Y2tldHM7IGkmIzQzOyYjNDM7KQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxODoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjg5CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMTg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldGZpbHRlciBJUFZTIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY2AuIFRoZSBjb3JlIGNoYW5nZSBpcyBhIHJlcGxhY2VtZW50IG9mIG1lbW9yeSBhbGxvY2F0aW9uIGZ1bmN0aW9ucy4gU3BlY2lmaWNhbGx5LCBpdCBzd2FwcyBvdXQgYGt6YWxsb2NgIHdpdGggYGt6YWxsb2Nfb2JqYCBhbmQgYGt2bWFsbG9jX2FycmF5YCB3aXRoIGBrdm1hbGxvY19vYmpzYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCByZWZhY3RvcmluZywgcHJvYmFibHkgbGV2ZXJhZ2luZyBzb21lIG5ldyBhbGxvY2F0aW9uIG1hY3JvcyB0aGF0IGNhbWUgaW4gd2l0aCBhIHByZXZpb3VzIGNvbW1pdCBvciBhcyBwYXJ0IG9mIGEgbGFyZ2VyIHNlcmllcy4gSSBtZWFuLCBpdCAqbG9va3MqIGxpa2UgYSBzaW1wbGUgc3Vic3RpdHV0aW9uLgoKQnV0IGhhbmcgb27igKYgYXJlIHRoZXNlIGV2ZW4gKnJlYWwqIG1hY3Jvcz8gYGt6YWxsb2Nfb2JqYCBhbmQgYGt2bWFsbG9jX29ianNgIGFyZW4mIzM5O3QgaW1tZWRpYXRlbHkgcmluZ2luZyBhbnkgYmVsbHMuIFRoZXkgYXJlbiYjMzk7dCBzdGFuZGFyZCBrZXJuZWwgaWRpb21zLCBzbyBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMganVzdCBhIG1hY3JvIHJlcGxhY2VtZW50IGFuZCB0aGF0IGl0JiMzOTtzIG5vdCBhY3R1YWxseSBpbnRyb2R1Y2luZyBhbnl0aGluZyBuZXcuIEFscmlnaHQsIGFmdGVyIGEgY2xvc2VyIGxvb2ssIGl0ICppcyoganVzdCBhIG1hY3JvIHJlcGxhY2VtZW50LiBUaGUgY29yZSBsb2dpYyBkb2VzbiYjMzk7dCBhcHBlYXIgdG8gYmUgYWx0ZXJlZCBpbiBhbnkgbWVhbmluZ2Z1bCB3YXkuIEl0IGxvb2tzIGxpa2UgaXQganVzdCB1c2VzIHRoZSBleGlzdGluZyBhbGxvY2F0aW9uIGZ1bmN0aW9ucyBhcyBhIGJhc2UuCgpOb3csIEkgc3RpbGwgbmVlZCB0byBjaGVjayBleGFjdGx5IHdoYXQgdGhlIG1hY3JvcyBhcmUgZG9pbmcuIEkgd2FudCB0byBzZWUgaWYgYGt6YWxsb2Nfb2JqYCBpcyBkZWZpbmVkIHNvbWV3aGVyZSwganVzdCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDE4OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t6YWxsb2Nfb2JqJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA3OTA0NiBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9saXN0LnJzdD0xMDM9bGlzdDpcbi0tXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2xpc3QucnN0LTExNC1cbkRvY3VtZW50YXRpb24vY29yZS1hcGkvbGlzdC5yc3Q6MTE1OiAgICAgICAgICBncm9jayA9IGt6YWxsb2Nfb2JqKCpncm9jayk7XG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2xpc3QucnN0LTExNi0gICAgICAgICAgaWYgKCFncm9jaylcbi0tXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2xpc3QucnN0LTEyNS1cbkRvY3VtZW50YXRpb24vY29yZS1hcGkvbGlzdC5yc3Q6MTI2OiAgICAgICAgICBkaW1pdHJpID0ga3phbGxvY19vYmooKmRpbWl0cmkpO1xuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9saXN0LnJzdC0xMjctICAgICAgICAgIGlmICghZGltaXRyaSlcbi0tXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbWFpbGJveC5yc3Q9NDU9YSBtZXNzYWdlIGFuZCBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHRoZSBBUEkgYW5kIHJldHVybiBpbW1lZGlhdGVseSkuXG4tLVxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21haWxib3gucnN0LTg5LVxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21haWxib3gucnN0OjkwOlx0XHRkY19zeW5jID0ga3phbGxvY19vYmooKmRjX3N5bmMpO1xuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21haWxib3gucnN0OjkxOlx0XHRkY19hc3luYyA9IGt6YWxsb2Nfb2JqKCpkY19hc3luYyk7XG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbWFpbGJveC5yc3QtOTItXG4tLVxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21lZGlhL3Y0bDItZmgucnN0PTI2PUV4YW1wbGU6XG4tLVxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21lZGlhL3Y0bDItZmgucnN0LTQ0LVxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21lZGlhL3Y0bDItZmgucnN0OjQ1Olx0XHRteV9maCA9IGt6YWxsb2Nfb2JqKCpteV9maCk7XG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbWVkaWEvdjRsMi1maC5yc3QtNDYtXG4tLVxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2NvZGluZy1zdHlsZS5yc3Q9OTM4PVRoZSBrZXJuZWwgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBnZW5lcmFsIHB1cnBvc2UgbWVtb3J5IGFsbG9jYXRvcnM6XG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY29kaW5nLXN0eWxlLnJzdDo5Mzk6a21hbGxvYygpLCBremFsbG9jKCksIGttYWxsb2Nfb2JqcygpLCBremFsbG9jX29ianMoKSwgdm1hbGxvYygpLCBhbmRcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0LTk0MC12emFsbG9jKCkuICBQbGVhc2UgcmVmZXIgdG8gdGhlIEFQSSBkb2N1bWVudGF0aW9uIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uXG4tLVxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2NvZGluZy1zdHlsZS5yc3Q9OTY0PVRoZSBwcmVmZXJyZWQgZm9ybSBmb3IgYWxsb2NhdGluZyBhIHplcm9lZCBhcnJheSBpcyB0aGUgZm9sbG93aW5nOlxuLS1cbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0LTk2Ny1cbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0Ojk2ODpcdHAgPSBremFsbG9jX29ianMoKnAsIG4sIC4uLik7XG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY29kaW5nLXN0eWxlLnJzdC05NjktXG4tLVxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0PTM5OD1iZWNvbWUsIHJlc3BlY3RpdmVseTo6XG4tLVxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0LTQwMC1cdHB0ciA9IGttYWxsb2Nfb2JqKCpwdHIgWywgZ2ZwXSApO1xuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0OjQwMTpcdHB0ciA9IGt6YWxsb2Nfb2JqKCpwdHIgWywgZ2ZwXSApO1xuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0LTQwMi1cdHB0ciA9IGttYWxsb2Nfb2JqcygqcHRyLCBjb3VudCBbLCBnZnBdICk7XG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3Q6NDAzOlx0cHRyID0ga3phbGxvY19vYmpzKCpwdHIsIGNvdW50IFssIGdmcF0gKTtcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZXByZWNhdGVkLnJzdC00MDQtXHRwdHIgPSBrbWFsbG9jX2ZsZXgoKnB0ciwgZmxleF9tZW1iZXIsIGNvdW50IFssIGdmcF0gKTtcbi0tXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3Q9MjA4PXRvIGRldGFpbHMgZXhwbGFpbmVkIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbi5cbi0tXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtMjY4LSAgICAgICAgICAgICAgLyogYWxsb2NhdGUgYSBjaGlwLXNwZWNpZmljIGRhdGEgd2l0aCB6ZXJvIGZpbGxlZCAqL1xuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0OjI2OTogICAgICAgICAgICAgIGNoaXAgPSBremFsbG9jX29iaigqY2hpcCk7XG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtMjcwLSAgICAgICAgICAgICAgaWYgKGNoaXAgPT0gTlVMTClcbi0tXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3Q9NjIzPUFmdGVyIGFsbG9jYXRpbmcgYSBjYXJkIGluc3RhbmNlIHZpYSA6YzpmdW5jOmBzbmRfY2FyZF9uZXcoKWBcbi0tXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtNjMwLSAgLi4uLi5cbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdDo2MzE6ICBjaGlwID0ga3phbGxvY19vYmooKmNoaXApO1xuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0LTYzMi1cbi0tXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3Q9Njk4PWRlc3RydWN0b3IgYW5kIFBDSSBlbnRyaWVzLiBFeGFtcGxlIGNvZGUgaXMgc2hvd24gZmlyc3QsIGJlbG93Ojpcbi0tXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtNzQ5LVxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0Ojc1MDogICAgICAgICAgICAgIGNoaXAgPSBremFsbG9jX29iaigqY2hpcCk7XG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtNzUxLSAgICAgICAgICAgICAgaWYgKGNoaXAgPT0gTlVMTCkge1xuLS1cbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdD0zODIzPWNoaXAgZGF0YSBpbmRpdmlkdWFsbHk6OlxuLS1cbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdC0zODM1LSAgICAgICAgICAuLi4uXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3Q6MzgzNjogICAgICAgICAgY2hpcCA9IGt6YWxsb2Nfb2JqKCpjaGlwKTtcbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdC0zODM3LSAgICAgICAgICAuLi4uXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vdmlkZW80bGludXgvdjRsMi1mcmFtZXdvcmsudHh0PTc5ND1pbnQgbXlfb3BlbihzdHJ1Y3QgZmlsZSAqZmlsZSlcbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi92aWRlbzRsaW51eC92NGwyLWZyYW1ld29yay50eHQtODAxLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vdmlkZW80bGludXgvdjRsMi1mcmFtZXdvcmsudHh0OjgwMjpcdG15X2ZoID0ga3phbGxvY19vYmooKm15X2ZoKTtcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL3ZpZGVvNGxpbnV4L3Y0bDItZnJhbWV3b3JrLnR4dC04MDMtXG4tLVxuYXJjaC9hbHBoYS9rZXJuZWwvbW9kdWxlLmM9NjQ9bW9kdWxlX2Zyb2JfYXJjaF9zZWN0aW9ucyhFbGY2NF9FaGRyICpoZHIsIEVsZjY0X1NoZHIgKnNlY2hkcnMsXG4tLVxuYXJjaC9hbHBoYS9rZXJuZWwvbW9kdWxlLmMtOTUtXHRuc3ltcyA9IHN5bXRhYi1cdTAwM2VzaF9zaXplIC8gc2l6ZW9mKEVsZjY0X1N5bSk7XG5hcmNoL2FscGhhL2tlcm5lbC9tb2R1bGUuYzo5NjpcdGNoYWlucyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgZ290X2VudHJ5LCBuc3ltcyk7XG5hcmNoL2FscGhhL2tlcm5lbC9tb2R1bGUuYy05Ny1cdGlmICghY2hhaW5zKSB7XG4tLVxuYXJjaC9hbHBoYS9rZXJuZWwvc2V0dXAuYz0zOTA9cmVnaXN0ZXJfY3B1cyh2b2lkKVxuLS1cbmFyY2gvYWxwaGEva2VybmVsL3NldHVwLmMtMzk0LVx0Zm9yX2VhY2hfcG9zc2libGVfY3B1KGkpIHtcbmFyY2gvYWxwaGEva2VybmVsL3NldHVwLmM6Mzk1Olx0XHRzdHJ1Y3QgY3B1ICpwID0ga3phbGxvY19vYmooKnApO1xuYXJjaC9hbHBoYS9rZXJuZWwvc2V0dXAuYy0zOTYtXHRcdGlmICghcClcbi0tXG5hcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmM9MTEyMD1zdGF0aWMgaW50IGppdF9wcmVwYXJlX2ZpbmFsX21lbV9hbGxvYyhzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbi0tXG5hcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmMtMTEzMS1cdGlmIChjdHgtXHUwMDNlbmVlZF9leHRyYV9wYXNzKSB7XG5hcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmM6MTEzMjpcdFx0Y3R4LVx1MDAzZWppdF9kYXRhID0ga3phbGxvY19vYmooKmN0eC1cdTAwM2VqaXRfZGF0YSk7XG5hcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmMtMTEzMy1cdFx0aWYgKCFjdHgtXHUwMDNlaml0X2RhdGEpXG4tLVxuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jPTIyMD1sb2NvbW9faW5pdF9vbmVfY2hpbGQoc3RydWN0IGxvY29tbyAqbGNoaXAsIHN0cnVjdCBsb2NvbW9fZGV2X2luZm8gKmluZm8pXG4tLVxuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jLTIyNC1cbmFyY2gvYXJtL2NvbW1vbi9sb2NvbW8uYzoyMjU6XHRkZXYgPSBremFsbG9jX29iaihzdHJ1Y3QgbG9jb21vX2Rldik7XG5hcmNoL2FybS9jb21tb24vbG9jb21vLmMtMjI2LVx0aWYgKCFkZXYpIHtcbi0tXG5hcmNoL2FybS9jb21tb24vbG9jb21vLmM9MzU2PV9fbG9jb21vX3Byb2JlKHN0cnVjdCBkZXZpY2UgKm1lLCBzdHJ1Y3QgcmVzb3VyY2UgKm1lbSwgaW50IGlycSlcbi0tXG5hcmNoL2FybS9jb21tb24vbG9jb21vLmMtMzYyLVxuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jOjM2MzpcdGxjaGlwID0ga3phbGxvY19vYmooc3RydWN0IGxvY29tbyk7XG5hcmNoL2FybS9jb21tb24vbG9jb21vLmMtMzY0LVx0aWYgKCFsY2hpcClcbi0tXG5hcmNoL2FybS9jb21tb24vc2ExMTExLmM9NzMzPXNhMTExMV9pbml0X29uZV9jaGlsZChzdHJ1Y3Qgc2ExMTExICpzYWNoaXAsIHN0cnVjdCByZXNvdXJjZSAqcGFyZW50LFxuLS1cbmFyY2gvYXJtL2NvbW1vbi9zYTExMTEuYy03MzktXG5hcmNoL2FybS9jb21tb24vc2ExMTExLmM6NzQwOlx0ZGV2ID0ga3phbGxvY19vYmooc3RydWN0IHNhMTExMV9kZXYpO1xuYXJjaC9hcm0vY29tbW9uL3NhMTExMS5jLTc0MS1cdGlmICghZGV2KSB7XG4tLVxuYXJjaC9hcm0vY29tbW9uL3Njb29wLmM9MTc4PXN0YXRpYyBpbnQgc2Nvb3BfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5hcmNoL2FybS9jb21tb24vc2Nvb3AuYy0xODctXG5hcmNoL2FybS9jb21tb24vc2Nvb3AuYzoxODg6XHRkZXZwdHIgPSBremFsbG9jX29iaihzdHJ1Y3Qgc2Nvb3BfZGV2KTtcbmFyY2gvYXJtL2NvbW1vbi9zY29vcC5jLTE4OS1cdGlmICghZGV2cHRyKVxuLS1cbmFyY2gvYXJtL2tlcm5lbC9zbXAuYz0xMDg9c3RhdGljIGludCBzZWNvbmRhcnlfYmlnbGl0dGxlX3ByZXBhcmUodW5zaWduZWQgaW50IGNwdSlcbi0tXG5hcmNoL2FybS9rZXJuZWwvc21wLmMtMTEwLVx0aWYgKCFjcHVfdnRhYmxlW2NwdV0pXG5hcmNoL2FybS9rZXJuZWwvc21wLmM6MTExOlx0XHRjcHVfdnRhYmxlW2NwdV0gPSBremFsbG9jX29iaigqY3B1X3Z0YWJsZVtjcHVdKTtcbmFyY2gvYXJtL2tlcm5lbC9zbXAuYy0xMTItXG4tLVxuYXJjaC9hcm0va2VybmVsL3Zkc28uYz0xNjk9c3RhdGljIGludCBfX2luaXQgdmRzb19pbml0KHZvaWQpXG4tLVxuYXJjaC9hcm0va2VybmVsL3Zkc28uYy0xODEtXHQvKiBBbGxvY2F0ZSB0aGUgVkRTTyB0ZXh0IHBhZ2VsaXN0ICovXG5hcmNoL2FybS9rZXJuZWwvdmRzby5jOjE4MjpcdHZkc29fdGV4dF9wYWdlbGlzdCA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgcGFnZSAqLCB0ZXh0X3BhZ2VzKTtcbmFyY2gvYXJtL2tlcm5lbC92ZHNvLmMtMTgzLVx0aWYgKHZkc29fdGV4dF9wYWdlbGlzdCA9PSBOVUxMKVxuLS1cbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9kYzIxMjg1LmM9MjYxPWludCBfX2luaXQgZGMyMTI4NV9zZXR1cChpbnQgbnIsIHN0cnVjdCBwY2lfc3lzX2RhdGEgKnN5cylcbi0tXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZGMyMTI4NS5jLTI2NC1cbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9kYzIxMjg1LmM6MjY1Olx0cmVzID0ga3phbGxvY19vYmpzKHN0cnVjdCByZXNvdXJjZSwgMik7XG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZGMyMTI4NS5jLTI2Ni1cdGlmICghcmVzKSB7XG4tLVxuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL2Vic2EyODUuYz02OT1zdGF0aWMgaW50IF9faW5pdCBlYnNhMjg1X2xlZHNfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9lYnNhMjg1LmMtODYtXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZWJzYTI4NS5jOjg3Olx0XHRsZWQgPSBremFsbG9jX29iaigqbGVkKTtcbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9lYnNhMjg1LmMtODgtXHRcdGlmICghbGVkKVxuLS1cbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9uZXR3aW5kZXItaHcuYz03MjA9c3RhdGljIGludCBfX2luaXQgbmV0d2luZGVyX2xlZHNfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9uZXR3aW5kZXItaHcuYy03MjktXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvbmV0d2luZGVyLWh3LmM6NzMwOlx0XHRsZWQgPSBremFsbG9jX29iaigqbGVkKTtcbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9uZXR3aW5kZXItaHcuYy03MzEtXHRcdGlmICghbGVkKVxuLS1cbmFyY2gvYXJtL21hY2gtaW14L21tZGMuYz00NzM9c3RhdGljIGludCBpbXhfbW1kY19wZXJmX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgdm9pZCBfX2lvbWVtICptbWRjX2Jhc2UsXG4tLVxuYXJjaC9hcm0vbWFjaC1pbXgvbW1kYy5jLTQ3OS1cbmFyY2gvYXJtL21hY2gtaW14L21tZGMuYzo0ODA6XHRwbXVfbW1kYyA9IGt6YWxsb2Nfb2JqKCpwbXVfbW1kYyk7XG5hcmNoL2FybS9tYWNoLWlteC9tbWRjLmMtNDgxLVx0aWYgKCFwbXVfbW1kYykge1xuLS1cbmFyY2gvYXJtL21hY2gtbXZlYnUvYm9hcmQtdjcuYz0xMTQ9c3RhdGljIHZvaWQgX19pbml0IGkyY19xdWlyayh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtbXZlYnUvYm9hcmQtdjcuYy0xMjktXG5hcmNoL2FybS9tYWNoLW12ZWJ1L2JvYXJkLXY3LmM6MTMwOlx0XHRuZXdfY29tcGF0ID0ga3phbGxvY19vYmooKm5ld19jb21wYXQpO1xuYXJjaC9hcm0vbWFjaC1tdmVidS9ib2FyZC12Ny5jLTEzMS1cbi0tXG5hcmNoL2FybS9tYWNoLW12ZWJ1L2NvaGVyZW5jeS5jPTE2Mz1zdGF0aWMgdm9pZCBfX2luaXQgYXJtYWRhXzM3NV8zODBfY29oZXJlbmN5X2luaXQoc3RydWN0IGRldmljZV9ub2RlICpucClcbi0tXG5hcmNoL2FybS9tYWNoLW12ZWJ1L2NvaGVyZW5jeS5jLTE4Ny1cbmFyY2gvYXJtL21hY2gtbXZlYnUvY29oZXJlbmN5LmM6MTg4Olx0XHRwID0ga3phbGxvY19vYmooKnApO1xuYXJjaC9hcm0vbWFjaC1tdmVidS9jb2hlcmVuY3kuYy0xODktXHRcdHAtXHUwMDNlbmFtZSA9IGtzdHJkdXAoXCYjMzQ7YXJtLGlvLWNvaGVyZW50XCYjMzQ7LCBHRlBfS0VSTkVMKTtcbi0tXG5hcmNoL2FybS9tYWNoLW12ZWJ1L212ZWJ1LXNvYy1pZC5jPTE0OD1zdGF0aWMgaW50IF9faW5pdCBtdmVidV9zb2NfZGV2aWNlKHZvaWQpXG4tLVxuYXJjaC9hcm0vbWFjaC1tdmVidS9tdmVidS1zb2MtaWQuYy0xNTYtXG5hcmNoL2FybS9tYWNoLW12ZWJ1L212ZWJ1LXNvYy1pZC5jOjE1NzpcdHNvY19kZXZfYXR0ciA9IGt6YWxsb2Nfb2JqKCpzb2NfZGV2X2F0dHIpO1xuYXJjaC9hcm0vbWFjaC1tdmVidS9tdmVidS1zb2MtaWQuYy0xNTgtXHRpZiAoIXNvY19kZXZfYXR0cilcbi0tXG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jPTM4MD1zdGF0aWMgdm9pZCBfX2luaXQgbXhzX21hY2hpbmVfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtMzg5LVxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYzozOTA6XHRzb2NfZGV2X2F0dHIgPSBremFsbG9jX29iaigqc29jX2Rldl9hdHRyKTtcbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmMtMzkxLVx0aWYgKCFzb2NfZGV2X2F0dHIpXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMS9kbWEuYz0yOTQ9c3RhdGljIGludCBfX2luaXQgb21hcDFfc3lzdGVtX2RtYV9pbml0KHZvaWQpXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMS9kbWEuYy0zMjEtXG5hcmNoL2FybS9tYWNoLW9tYXAxL2RtYS5jOjMyMjpcdGQgPSBremFsbG9jX29iaigqZCk7XG5hcmNoL2FybS9tYWNoLW9tYXAxL2RtYS5jLTMyMy1cdGlmICghZCkge1xuLS1cbmFyY2gvYXJtL21hY2gtb21hcDEvbWNic3AuYz0yOTI9c3RhdGljIHZvaWQgb21hcF9tY2JzcF9yZWdpc3Rlcl9ib2FyZF9jZmcoc3RydWN0IHJlc291cmNlICpyZXMsIGludCByZXNfY291bnQsXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMS9tY2JzcC5jLTI5Ni1cbmFyY2gvYXJtL21hY2gtb21hcDEvbWNic3AuYzoyOTc6XHRvbWFwX21jYnNwX2RldmljZXMgPSBremFsbG9jX29ianMoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqLCBzaXplKTtcbmFyY2gvYXJtL21hY2gtb21hcDEvbWNic3AuYy0yOTgtXHRpZiAoIW9tYXBfbWNic3BfZGV2aWNlcykge1xuLS1cbmFyY2gvYXJtL21hY2gtb21hcDEvdGltZXIuYz01MT1zdGF0aWMgaW50IF9faW5pdCBvbWFwMV9kbV90aW1lcl9pbml0KHZvaWQpXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMS90aW1lci5jLTEyNy1cbmFyY2gvYXJtL21hY2gtb21hcDEvdGltZXIuYzoxMjg6XHRcdHBkYXRhID0ga3phbGxvY19vYmooKnBkYXRhKTtcbmFyY2gvYXJtL21hY2gtb21hcDEvdGltZXIuYy0xMjktXHRcdGlmICghcGRhdGEpIHtcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL2Nsa3QyeHh4X3ZpcnRfcHJjbV9zZXQuYz0yMzA9dm9pZCBvbWFwMnh4eF9jbGt0X3Zwc19pbml0KHZvaWQpXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jbGt0Mnh4eF92aXJ0X3ByY21fc2V0LmMtMjM5LVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jbGt0Mnh4eF92aXJ0X3ByY21fc2V0LmM6MjQwOlx0aHcgPSBremFsbG9jX29iaigqaHcpO1xuYXJjaC9hcm0vbWFjaC1vbWFwMi9jbGt0Mnh4eF92aXJ0X3ByY21fc2V0LmMtMjQxLVx0aWYgKCFodylcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL2lkLmM9Nzg2PXZvaWQgX19pbml0IG9tYXBfc29jX2RldmljZV9pbml0KHZvaWQpXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9pZC5jLTc5MC1cbmFyY2gvYXJtL21hY2gtb21hcDIvaWQuYzo3OTE6XHRzb2NfZGV2X2F0dHIgPSBremFsbG9jX29iaigqc29jX2Rldl9hdHRyKTtcbmFyY2gvYXJtL21hY2gtb21hcDIvaWQuYy03OTItXHRpZiAoIXNvY19kZXZfYXR0cilcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfZGV2aWNlLmM9MTMxPXN0YXRpYyBpbnQgb21hcF9kZXZpY2VfYnVpbGRfZnJvbV9kdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9kZXZpY2UuYy0xNTgtXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfZGV2aWNlLmM6MTU5Olx0aHdtb2RzID0ga3phbGxvY19vYmpzKHN0cnVjdCBvbWFwX2h3bW9kICosIG9oX2NudCk7XG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfZGV2aWNlLmMtMTYwLVx0aWYgKCFod21vZHMpIHtcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYz0zMzgxPXN0YXRpYyBpbnQgb21hcF9od21vZF9hbGxvY2F0ZV9tb2R1bGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgb21hcF9od21vZCAqb2gsXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzM5NC1cbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jOjMzOTU6XHRzeXNjID0ga3phbGxvY19vYmooKnN5c2MpO1xuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzM5Ni1cdGlmICghc3lzYylcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYy0zNDI0LVx0aWYgKGxpc3RfZW1wdHkoXHUwMDI2b2gtXHUwMDNlc2xhdmVfcG9ydHMpKSB7XG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYzozNDI1Olx0XHRvaSA9IGt6YWxsb2Nfb2JqKCpvaSk7XG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYy0zNDI2LVx0XHRpZiAoIW9pKVxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jPTM1MTM9aW50IG9tYXBfaHdtb2RfaW5pdF9tb2R1bGUoc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jLTM1MjctXHRpZiAoIW9oKSB7XG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYzozNTI4Olx0XHRvaCA9IGt6YWxsb2Nfb2JqKCpvaCk7XG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYy0zNTI5LVx0XHRpZiAoIW9oKVxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jLTM1MzgtXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYzozNTM5Olx0XHRvaC1cdTAwM2VjbGFzcyA9IGt6YWxsb2Nfb2JqKCpvaC1cdTAwM2VjbGFzcyk7XG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYy0zNTQwLVx0XHRpZiAoIW9oLVx1MDAzZWNsYXNzKSB7XG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9wbTMzeHgtY29yZS5jPTM3OT1zdGF0aWMgaW50IF9faW5pdCBhbXgzX2lkbGVfaW5pdChzdHJ1Y3QgZGV2aWNlX25vZGUgKmNwdV9ub2RlLCBpbnQgY3B1KVxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDIvcG0zM3h4LWNvcmUuYy00MTItXG5hcmNoL2FybS9tYWNoLW9tYXAyL3BtMzN4eC1jb3JlLmM6NDEzOlx0aWRsZV9zdGF0ZXMgPSBremFsbG9jX29ianMoKmlkbGVfc3RhdGVzLCBzdGF0ZV9jb3VudCk7XG5hcmNoL2FybS9tYWNoLW9tYXAyL3BtMzN4eC1jb3JlLmMtNDE0LVx0aWYgKCFpZGxlX3N0YXRlcylcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL3NyX2RldmljZS5jPTMwPXN0YXRpYyB2b2lkIF9faW5pdCBzcl9zZXRfbnZhbHVlcyhzdHJ1Y3Qgb21hcF92b2x0X2RhdGEgKnZvbHRfZGF0YSxcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL3NyX2RldmljZS5jLTQxLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9zcl9kZXZpY2UuYzo0MjpcdG52YWx1ZV90YWJsZSA9IGt6YWxsb2Nfb2JqcygqbnZhbHVlX3RhYmxlLCBjb3VudCk7XG5hcmNoL2FybS9tYWNoLW9tYXAyL3NyX2RldmljZS5jLTQzLVx0aWYgKCFudmFsdWVfdGFibGUpXG4tLVxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jPTEzOT1zdGF0aWMgaW50IF9faW5pdCBwY2llX3NldHVwKHN0cnVjdCBwY2lfc3lzX2RhdGEgKnN5cylcbi0tXG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmMtMTcxLVx0ICovXG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmM6MTcyOlx0cmVzID0ga3phbGxvY19vYmooc3RydWN0IHJlc291cmNlKTtcbmFyY2gvYXJtL21hY2gtb3Jpb241eC9wY2kuYy0xNzMtXHRpZiAoIXJlcylcbi0tXG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmM9NDY2PXN0YXRpYyBpbnQgX19pbml0IHBjaV9zZXR1cChzdHJ1Y3QgcGNpX3N5c19kYXRhICpzeXMpXG4tLVxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jLTQ5Mi1cdCAqL1xuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jOjQ5MzpcdHJlcyA9IGt6YWxsb2Nfb2JqKHN0cnVjdCByZXNvdXJjZSk7XG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmMtNDk0LVx0aWYgKCFyZXMpXG4tLVxuYXJjaC9hcm0vbWFjaC1ycGMvZWNhcmQuYz02ODk9c3RhdGljIHN0cnVjdCBleHBhbnNpb25fY2FyZCAqX19pbml0IGVjYXJkX2FsbG9jX2NhcmQoaW50IHR5cGUsIGludCBzbG90KVxuLS1cbmFyY2gvYXJtL21hY2gtcnBjL2VjYXJkLmMtNjk0LVxuYXJjaC9hcm0vbWFjaC1ycGMvZWNhcmQuYzo2OTU6XHRlYyA9IGt6YWxsb2Nfb2JqKGVjYXJkX3QpO1xuYXJjaC9hcm0vbWFjaC1ycGMvZWNhcmQuYy02OTYtXHRpZiAoIWVjKSB7XG4tLVxuYXJjaC9hcm0vbWFjaC1zYTExMDAvY2xvY2suYz05Mz1pbnQgX19pbml0IHNhMTF4eF9jbGtfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtc2ExMTAwL2Nsb2NrLmMtMTA5LVxuYXJjaC9hcm0vbWFjaC1zYTExMDAvY2xvY2suYzoxMTA6XHRodyA9IGt6YWxsb2Nfb2JqKCpodyk7XG5hcmNoL2FybS9tYWNoLXNhMTEwMC9jbG9jay5jLTExMS1cdGlmICghaHcpXG4tLVxuYXJjaC9hcm0vbWFjaC1zYTExMDAvY2xvY2suYy0xMzEtXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9jbG9jay5jOjEzMjpcdGh3ID0ga3phbGxvY19vYmooKmh3KTtcbmFyY2gvYXJtL21hY2gtc2ExMTAwL2Nsb2NrLmMtMTMzLVx0aWYgKCFodylcbi0tXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9nZW5lcmljLmM9MzE3PWludCBfX2luaXQgc2ExMXgwX3JlZ2lzdGVyX2ZpeGVkX3JlZ3VsYXRvcihpbnQgbixcbi0tXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9nZW5lcmljLmMtMzIzLVxuYXJjaC9hcm0vbWFjaC1zYTExMDAvZ2VuZXJpYy5jOjMyNDpcdGNmZy1cdTAwM2Vpbml0X2RhdGEgPSBpZCA9IGt6YWxsb2Nfb2JqKCpjZmctXHUwMDNlaW5pdF9kYXRhKTtcbmFyY2gvYXJtL21hY2gtc2ExMTAwL2dlbmVyaWMuYy0zMjUtXHRpZiAoIWNmZy1cdTAwM2Vpbml0X2RhdGEpXG4tLVxuYXJjaC9hcm0vbWFjaC1zYTExMDAvbmVwb25zZXQuYz0yMjU9c3RhdGljIGludCBuZXBvbnNldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXYpXG4tLVxuYXJjaC9hcm0vbWFjaC1zYTExMDAvbmVwb25zZXQuYy0yNzgtXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9uZXBvbnNldC5jOjI3OTpcdGQgPSBremFsbG9jX29iaigqZCk7XG5hcmNoL2FybS9tYWNoLXNhMTEwMC9uZXBvbnNldC5jLTI4MC1cdGlmICghZCkge1xuLS1cbmFyY2gvYXJtL21hY2gtc2htb2JpbGUvcmVndWxhdG9yLXF1aXJrLXJjYXItZ2VuMi5jPTE0MT1zdGF0aWMgaW50IF9faW5pdCByY2FyX2dlbjJfcmVndWxhdG9yX3F1aXJrKHZvaWQpXG4tLVxuYXJjaC9hcm0vbWFjaC1zaG1vYmlsZS9yZWd1bGF0b3ItcXVpcmstcmNhci1nZW4yLmMtMTY2LVxuYXJjaC9hcm0vbWFjaC1zaG1vYmlsZS9yZWd1bGF0b3ItcXVpcmstcmNhci1nZW4yLmM6MTY3Olx0XHRxdWlyayA9IGt6YWxsb2Nfb2JqKCpxdWlyayk7XG5hcmNoL2FybS9tYWNoLXNobW9iaWxlL3JlZ3VsYXRvci1xdWlyay1yY2FyLWdlbjIuYy0xNjgtXHRcdGlmICghcXVpcmspIHtcbi0tXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYz0zOTM9c3RhdGljIGludCB2ZV9zcGNfcG9wdWxhdGVfb3Bwcyh1aW50MzJfdCBjbHVzdGVyKVxuLS1cbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTM5Ny1cbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jOjM5ODpcdG9wcHMgPSBremFsbG9jX29ianMoKm9wcHMsIE1BWF9PUFBTKTtcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTM5OS1cdGlmICghb3Bwcylcbi0tXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYz00NDI9aW50IF9faW5pdCB2ZV9zcGNfaW5pdCh2b2lkIF9faW9tZW0gKmJhc2VhZGRyLCB1MzIgYTE1X2NsdXNpZCwgaW50IGlycSlcbi0tXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYy00NDQtXHRpbnQgcmV0O1xuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvc3BjLmM6NDQ1Olx0aW5mbyA9IGt6YWxsb2Nfb2JqKCppbmZvKTtcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTQ0Ni1cdGlmICghaW5mbylcbi0tXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYz01MjM9c3RhdGljIHN0cnVjdCBjbGsgKnZlX3NwY19jbGtfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqY3B1X2Rldilcbi0tXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYy01MjctXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYzo1Mjg6XHRzcGMgPSBremFsbG9jX29iaigqc3BjKTtcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTUyOS1cdGlmICghc3BjKVxuLS1cbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3ZlcnNhdGlsZS5jPTEyMz1zdGF0aWMgdm9pZCBfX2luaXQgdmVyc2F0aWxlX2R0X3BjaV9pbml0KHZvaWQpXG4tLVxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvdmVyc2F0aWxlLmMtMTQ0LVxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvdmVyc2F0aWxlLmM6MTQ1Olx0bmV3cHJvcCA9IGt6YWxsb2Nfb2JqKCpuZXdwcm9wKTtcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3ZlcnNhdGlsZS5jLTE0Ni1cdGlmICghbmV3cHJvcClcbi0tXG5hcmNoL2FybS9tYWNoLXp5bnEvY29tbW9uLmM9MTA1PXN0YXRpYyB2b2lkIF9faW5pdCB6eW5xX2luaXRfbWFjaGluZSh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtenlucS9jb21tb24uYy0xMTAtXG5hcmNoL2FybS9tYWNoLXp5bnEvY29tbW9uLmM6MTExOlx0c29jX2Rldl9hdHRyID0ga3phbGxvY19vYmooKnNvY19kZXZfYXR0cik7XG5hcmNoL2FybS9tYWNoLXp5bnEvY29tbW9uLmMtMTEyLVx0aWYgKCFzb2NfZGV2X2F0dHIpXG4tLVxuYXJjaC9hcm0vbW0vY2FjaGUtbDJ4MC1wbXUuYz01MDM9c3RhdGljIF9faW5pdCBpbnQgbDJ4MF9wbXVfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21tL2NhY2hlLWwyeDAtcG11LmMtNTA5LVxuYXJjaC9hcm0vbW0vY2FjaGUtbDJ4MC1wbXUuYzo1MTA6XHRsMngwX3BtdSA9IGt6YWxsb2Nfb2JqKCpsMngwX3BtdSk7XG5hcmNoL2FybS9tbS9jYWNoZS1sMngwLXBtdS5jLTUxMS1cdGlmICghbDJ4MF9wbXUpIHtcbi0tXG5hcmNoL2FybS9tbS9jYWNoZS11bmlwaGllci5jPTMxNT1zdGF0aWMgaW50IF9faW5pdCBfX3VuaXBoaWVyX2NhY2hlX2luaXQoc3RydWN0IGRldmljZV9ub2RlICpucCxcbi0tXG5hcmNoL2FybS9tbS9jYWNoZS11bmlwaGllci5jLTM0NC1cbmFyY2gvYXJtL21tL2NhY2hlLXVuaXBoaWVyLmM6MzQ1Olx0ZGF0YSA9IGt6YWxsb2Nfb2JqKCpkYXRhKTtcbmFyY2gvYXJtL21tL2NhY2hlLXVuaXBoaWVyLmMtMzQ2LVx0aWYgKCFkYXRhKVxuLS1cbmFyY2gvYXJtL21tL2RtYS1tYXBwaW5nLmM9NTMzPXN0YXRpYyB2b2lkICpfX2RtYV9hbGxvYyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHNpemVfdCBzaXplLCBkbWFfYWRkcl90ICpoYW5kbGUsXG4tLVxuYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYy01NjAtXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jOjU2MTpcdGJ1ZiA9IGt6YWxsb2Nfb2JqKCpidWYsXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jLTU2Mi1cdFx0XHQgIGdmcCBcdTAwMjYgfihfX0dGUF9ETUEgfCBfX0dGUF9ETUEzMiB8IF9fR0ZQX0hJR0hNRU0pKTtcbi0tXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jPTE0ODc9YXJtX2lvbW11X2NyZWF0ZV9tYXBwaW5nKHN0cnVjdCBkZXZpY2UgKmRldiwgZG1hX2FkZHJfdCBiYXNlLCB1NjQgc2l6ZSlcbi0tXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jLTE1MDYtXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jOjE1MDc6XHRtYXBwaW5nID0ga3phbGxvY19vYmooc3RydWN0IGRtYV9pb21tdV9tYXBwaW5nKTtcbmFyY2gvYXJtL21tL2RtYS1tYXBwaW5nLmMtMTUwOC1cdGlmICghbWFwcGluZylcbi0tXG5hcmNoL2FybS94ZW4vZW5saWdodGVuLmM9MzE2PWludCBfX2luaXQgYXJjaF94ZW5fdW5wb3B1bGF0ZWRfaW5pdChzdHJ1Y3QgcmVzb3VyY2UgKipyZXMpXG4tLVxuYXJjaC9hcm0veGVuL2VubGlnaHRlbi5jLTM0My1cbmFyY2gvYXJtL3hlbi9lbmxpZ2h0ZW4uYzozNDQ6XHRyZWdzID0ga3phbGxvY19vYmpzKCpyZWdzLCBucl9yZWcpO1xuYXJjaC9hcm0veGVuL2VubGlnaHRlbi5jLTM0NS1cdGlmICghcmVncykge1xuLS1cbmFyY2gvYXJtL3hlbi9lbmxpZ2h0ZW4uYy0zODctXG5hcmNoL2FybS94ZW4vZW5saWdodGVuLmM6Mzg4Olx0XHR0bXBfcmVzID0ga3phbGxvY19vYmooKnRtcF9yZXMpO1xuYXJjaC9hcm0veGVuL2VubGlnaHRlbi5jLTM4OS1cdFx0aWYgKCF0bXBfcmVzKSB7XG4tLVxuYXJjaC9hcm0veGVuL3AybS5jPTE1MD1ib29sIF9fc2V0X3BoeXNfdG9fbWFjaGluZV9tdWx0aSh1bnNpZ25lZCBsb25nIHBmbixcbi0tXG5hcmNoL2FybS94ZW4vcDJtLmMtMTc4LVxuYXJjaC9hcm0veGVuL3AybS5jOjE3OTpcdHAybV9lbnRyeSA9IGt6YWxsb2Nfb2JqKCpwMm1fZW50cnksIEdGUF9OT1dBSVQpO1xuYXJjaC9hcm0veGVuL3AybS5jLTE4MC1cdGlmICghcDJtX2VudHJ5KVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL3Zkc28uYz02OD1zdGF0aWMgaW50IF9faW5pdCBfX3Zkc29faW5pdChlbnVtIHZkc29fYWJpIGFiaSlcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC92ZHNvLmMtODMtXG5hcmNoL2FybTY0L2tlcm5lbC92ZHNvLmM6ODQ6XHR2ZHNvX3BhZ2VsaXN0ID0ga3phbGxvY19vYmpzKHN0cnVjdCBwYWdlICosIHZkc29faW5mb1thYmldLnZkc29fcGFnZXMpO1xuYXJjaC9hcm02NC9rZXJuZWwvdmRzby5jLTg1LVx0aWYgKHZkc29fcGFnZWxpc3QgPT0gTlVMTClcbi0tXG5hcmNoL2FybTY0L2t2bS9tbXUuYz00ODA9c3RhdGljIGludCBzaGFyZV9wZm5faHlwKHU2NCBwZm4pXG4tLVxuYXJjaC9hcm02NC9rdm0vbW11LmMtNDkyLVxuYXJjaC9hcm02NC9rdm0vbW11LmM6NDkzOlx0dGhpcyA9IGt6YWxsb2Nfb2JqKCp0aGlzKTtcbmFyY2gvYXJtNjQva3ZtL21tdS5jLTQ5NC1cdGlmICghdGhpcykge1xuLS1cbmFyY2gvYXJtNjQva3ZtL21tdS5jPTk4MT1pbnQga3ZtX2luaXRfc3RhZ2UyX21tdShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fczJfbW11ICptbXUsIHVuc2lnbmVkIGxvbmcgdHlwZSlcbi0tXG5hcmNoL2FybTY0L2t2bS9tbXUuYy0xMDA3LVxuYXJjaC9hcm02NC9rdm0vbW11LmM6MTAwODpcdHBndCA9IGt6YWxsb2Nfb2JqKCpwZ3QsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG5hcmNoL2FybTY0L2t2bS9tbXUuYy0xMDA5LVx0aWYgKCFwZ3QpXG4tLVxuYXJjaC9hcm02NC9rdm0vbW11LmM9MTE4MD1pbnQgdG9wdXBfaHlwX21lbWNhY2hlKHN0cnVjdCBrdm1faHlwX21lbWNhY2hlICptYywgdW5zaWduZWQgbG9uZyBtaW5fcGFnZXMpXG4tLVxuYXJjaC9hcm02NC9rdm0vbW11LmMtMTE4NS1cdGlmICghbWMtXHUwMDNlbWFwcGluZykge1xuYXJjaC9hcm02NC9rdm0vbW11LmM6MTE4NjpcdFx0bWMtXHUwMDNlbWFwcGluZyA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBwa3ZtX21hcHBpbmcsXG5hcmNoL2FybTY0L2t2bS9tbXUuYy0xMTg3LVx0XHRcdFx0XHQgIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4tLVxuYXJjaC9hcm02NC9rdm0vbW11LmM9MjUxMD1pbnQgX19pbml0IGt2bV9tbXVfaW5pdCh1MzIgaHlwX3ZhX2JpdHMpXG4tLVxuYXJjaC9hcm02NC9rdm0vbW11LmMtMjU0My1cbmFyY2gvYXJtNjQva3ZtL21tdS5jOjI1NDQ6XHRoeXBfcGd0YWJsZSA9IGt6YWxsb2Nfb2JqKCpoeXBfcGd0YWJsZSk7XG5hcmNoL2FybTY0L2t2bS9tbXUuYy0yNTQ1LVx0aWYgKCFoeXBfcGd0YWJsZSkge1xuLS1cbmFyY2gvYXJtNjQva3ZtL25lc3RlZC5jPTEzMjc9aW50IGt2bV92Y3B1X2FsbG9jYXRlX3ZuY3JfdGxiKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYy0xMzMyLVx0aWYgKCF2Y3B1LVx1MDAzZWFyY2gudm5jcl90bGIpIHtcbmFyY2gvYXJtNjQva3ZtL25lc3RlZC5jOjEzMzM6XHRcdHN0cnVjdCB2bmNyX3RsYiAqdnQgPSBremFsbG9jX29iaigqdmNwdS1cdTAwM2VhcmNoLnZuY3JfdGxiLFxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmMtMTMzNC1cdFx0XHRcdFx0XHQgIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4tLVxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmM9MTc5MT1pbnQga3ZtX2luaXRfbnZfc3lzcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmMtMTgwMC1cbmFyY2gvYXJtNjQva3ZtL25lc3RlZC5jOjE4MDE6XHRrdm0tXHUwMDNlYXJjaC5zeXNyZWdfbWFza3MgPSBremFsbG9jX29iaigqKGt2bS1cdTAwM2VhcmNoLnN5c3JlZ19tYXNrcyksXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYy0xODAyLVx0XHRcdFx0XHQgICAgIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4tLVxuYXJjaC9hcm02NC9rdm0vcHRkdW1wLmM9MTE2PXN0YXRpYyBzdHJ1Y3Qga3ZtX3B0ZHVtcF9ndWVzdF9zdGF0ZSAqa3ZtX3B0ZHVtcF9wYXJzZXJfY3JlYXRlKHN0cnVjdCBrdm1fczJfbW11ICptbXUpXG4tLVxuYXJjaC9hcm02NC9rdm0vcHRkdW1wLmMtMTIxLVxuYXJjaC9hcm02NC9rdm0vcHRkdW1wLmM6MTIyOlx0c3QgPSBremFsbG9jX29iaihzdHJ1Y3Qga3ZtX3B0ZHVtcF9ndWVzdF9zdGF0ZSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbmFyY2gvYXJtNjQva3ZtL3B0ZHVtcC5jLTEyMy1cdGlmICghc3QpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYz0yMDc9c3RhdGljIGludCBrdm1fdmdpY19kaXN0X2luaXQoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgbnJfc3Bpcylcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jLTIxMy1cdGRpc3QtXHUwMDNlYWN0aXZlX3NwaXMgPSAoYXRvbWljX3QpQVRPTUlDX0lOSVQoMCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jOjIxNDpcdGRpc3QtXHUwMDNlc3BpcyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgdmdpY19pcnEsIG5yX3NwaXMsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jLTIxNS1cdGlmICghZGlzdC1cdTAwM2VzcGlzKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmM9MzE2PXN0YXRpYyBpbnQgdmdpY19hbGxvY2F0ZV9wcml2YXRlX2lycXNfbG9ja2VkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIHR5cGUpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYy0zMzEtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jOjMzMjpcdHZnaWNfY3B1LVx1MDAzZXByaXZhdGVfaXJxcyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgdmdpY19pcnEsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jLTMzMy1cdFx0XHRcdFx0ICAgICAgbnVtX3ByaXZhdGVfaXJxcyxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXJxZmQuYz0xNDI9aW50IGt2bV92Z2ljX3NldHVwX2RlZmF1bHRfaXJxX3JvdXRpbmcoc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pcnFmZC5jLTE0OC1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pcnFmZC5jOjE0OTpcdGVudHJpZXMgPSBremFsbG9jX29ianMoKmVudHJpZXMsIG5yLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWlycWZkLmMtMTUwLVx0aWYgKCFlbnRyaWVzKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz03Nj1zdGF0aWMgc3RydWN0IHZnaWNfaXJxICp2Z2ljX2FkZF9scGkoc3RydWN0IGt2bSAqa3ZtLCB1MzIgaW50aWQsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTg3LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjg4Olx0aXJxID0ga3phbGxvY19vYmooc3RydWN0IHZnaWNfaXJxLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTg5LVx0aWYgKCFpcnEpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTk2MD1zdGF0aWMgaW50IHZnaWNfaXRzX2FsbG9jX2NvbGxlY3Rpb24oc3RydWN0IHZnaWNfaXRzICppdHMsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTk2NS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo5NjY6XHRjb2xsZWN0aW9uID0ga3phbGxvY19vYmooKmNvbGxlY3Rpb24sIEdGUF9LRVJORUxfQUNDT1VOVCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtOTY3LVx0aWYgKCFjb2xsZWN0aW9uKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xMDA0PXN0YXRpYyBzdHJ1Y3QgaXRzX2l0ZSAqdmdpY19pdHNfYWxsb2NfaXRlKHN0cnVjdCBpdHNfZGV2aWNlICpkZXZpY2UsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTEwMDktXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTAxMDpcdGl0ZSA9IGt6YWxsb2Nfb2JqKCppdGUsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTAxMS1cdGlmICghaXRlKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xMTMxPXN0YXRpYyBzdHJ1Y3QgaXRzX2RldmljZSAqdmdpY19pdHNfYWxsb2NfZGV2aWNlKHN0cnVjdCB2Z2ljX2l0cyAqaXRzLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xMTM2LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjExMzc6XHRkZXZpY2UgPSBremFsbG9jX29iaigqZGV2aWNlLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTExMzgtXHRpZiAoIWRldmljZSlcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MTg0ND1zdGF0aWMgaW50IHZnaWNfaXRzX2NyZWF0ZShzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LCB1MzIgdHlwZSlcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTg1MS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoxODUyOlx0aXRzID0ga3phbGxvY19vYmooc3RydWN0IHZnaWNfaXRzLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE4NTMtXHRpZiAoIWl0cylcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jPTg4Nj1zdGF0aWMgaW50IHZnaWNfdjNfYWxsb2NfcmVkaXN0X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sIHVpbnQzMl90IGluZGV4LFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtOTMxLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo5MzI6XHRyZHJlZyA9IGt6YWxsb2Nfb2JqKCpyZHJlZywgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmMtOTMzLVx0aWYgKCFyZHJlZylcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjQuYz0yNDI9aW50IHZnaWNfdjRfaW5pdChzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXY0LmMtMjU4LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXY0LmM6MjU5Olx0ZGlzdC1cdTAwM2VpdHNfdm0udnBlcyA9IGt6YWxsb2Nfb2JqcygqZGlzdC1cdTAwM2VpdHNfdm0udnBlcywgbnJfdmNwdXMsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjQuYy0yNjAtXHRcdFx0XHRcdCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuLS1cbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jPTIwODA9c3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbi0tXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0yMTAxLVx0aWYgKCFqaXRfZGF0YSkge1xuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM6MjEwMjpcdFx0aml0X2RhdGEgPSBremFsbG9jX29iaigqaml0X2RhdGEpO1xuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMjEwMy1cdFx0aWYgKCFqaXRfZGF0YSlcbi0tXG5hcmNoL2Nza3kva2VybmVsL3Zkc28uYz0xNz1zdGF0aWMgaW50IF9faW5pdCB2ZHNvX2luaXQodm9pZClcbi0tXG5hcmNoL2Nza3kva2VybmVsL3Zkc28uYy0yMi1cdHZkc29fcGFnZWxpc3QgPVxuYXJjaC9jc2t5L2tlcm5lbC92ZHNvLmM6MjM6XHRcdGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgcGFnZSAqLCB2ZHNvX3BhZ2VzKTtcbmFyY2gvY3NreS9rZXJuZWwvdmRzby5jLTI0LVx0aWYgKHVubGlrZWx5KHZkc29fcGFnZWxpc3QgPT0gTlVMTCkpIHtcbi0tXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvc2V0dXAuYz00NjY9c3RhdGljIGludCBfX2luaXQgYWRkX2xlZ2FjeV9pc2FfaW8oc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSxcbi0tXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvc2V0dXAuYy00NzItXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvc2V0dXAuYzo0NzM6XHRyYW5nZSA9IGt6YWxsb2Nfb2JqKCpyYW5nZSwgR0ZQX0FUT01JQyk7XG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvc2V0dXAuYy00NzQtXHRpZiAoIXJhbmdlKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC92ZHNvLmM9NDU9c3RhdGljIGludCBfX2luaXQgaW5pdF92ZHNvKHZvaWQpXG4tLVxuYXJjaC9sb29uZ2FyY2gva2VybmVsL3Zkc28uYy01NS1cdHZkc29faW5mby5jb2RlX21hcHBpbmcucGFnZXMgPVxuYXJjaC9sb29uZ2FyY2gva2VybmVsL3Zkc28uYzo1NjpcdFx0a3phbGxvY19vYmpzKHN0cnVjdCBwYWdlICosIHZkc29faW5mby5zaXplIC8gUEFHRV9TSVpFKTtcbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC92ZHNvLmMtNTctXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jPTYxND1zdGF0aWMgaW50IGt2bV9laW9pbnRjX2NyZWF0ZShzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LCB1MzIgdHlwZSlcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjI0LVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjYyNTpcdHMgPSBremFsbG9jX29iaihzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTYyNi1cdGlmICghcylcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9pcGkuYz0zOTQ9c3RhdGljIGludCBrdm1faXBpX2NyZWF0ZShzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LCB1MzIgdHlwZSlcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9pcGkuYy00MTEtXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9pcGkuYzo0MTI6XHRzID0ga3phbGxvY19vYmooc3RydWN0IGxvb25nYXJjaF9pcGkpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvaXBpLmMtNDEzLVx0aWYgKCFzKVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTg6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM2ODMKCQkJCQkJCW91dHB1dDogODQKCQkJCQkJCXRob3VnaHRzOiA4ODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNYWNybyBSZWZhY3RvcmluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHkgc2VlIHRoZSBjaGFuZ2VzIGFyZSBhbGwgYWJvdXQgcmVwbGFjaW5nIHN0YW5kYXJkIGFsbG9jYXRpb24gZnVuY3Rpb25zIHdpdGggdGhlc2UgYGt6YWxsb2Nfb2JqYCBhbmQgYGt2bWFsbG9jX29ianNgIG1hY3Jvcy4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpcyBwdXJlbHkgc3ludGFjdGljIOKAkyBhIHJlZmFjdG9yaW5nIGZvciBjb2RlIGNsYXJpdHkgb3IgcGVyaGFwcyB0byBsZXZlcmFnZSBzb21lIGludGVybmFsIGtlcm5lbCBhbGxvY2F0aW9uIG9wdGltaXphdGlvbi4gVGhlcmUmIzM5O3Mgbm8gaW1tZWRpYXRlbHkgb2J2aW91cyBjaGFuZ2UgaW4gdGhlICpsb2dpYyogb2YgdGhlIGNvZGUuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHZlcmlmeSB0aGF0IGFzc3VtcHRpb24uIExvb2tpbmcgYXQgdGhlIGRpZmYsIGl0JiMzOTtzIHByZXR0eSBjbGVhcjogYGt6YWxsb2Moc2l6ZW9mKCp0KSwgR0ZQX0tFUk5FTClgIGlzIG5vdyBga3phbGxvY19vYmooKnQpYCwgYW5kIGBrdm1hbGxvY19hcnJheShzY291bnRzLCBzaXplb2YoKnQtJmd0O3NlcWMpLCBHRlBfS0VSTkVMKWAgaXMgbm93IGBrdm1hbGxvY19vYmpzKCp0LSZndDtzZXFjLCBzY291bnRzKWAuIE5vIGZ1bmN0aW9uYWwgY2hhbmdlcyBoZXJlLgoKTm93LCBsZXQmIzM5O3MganVzdCBjb25maXJtIHRoYXQgdGhpcyBtYWNybyBiZWhhdmVzIGFzIGV4cGVjdGVkLiBMZXQgbWUgc2VlLi4uIGBrdm1hbGxvY19hcnJheWAgdGFrZXMgYChzaXplX3Qgbiwgc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzKWAsIHdoaWxlIGBrdm1hbGxvY19vYmpzYCBwcm9iYWJseSBpbmZlcnMgdGhlIGBzaXplb2Yob2JqKWAgd2l0aGluIHRoZSBtYWNybyBhbmQgbGlrZWx5IGRlZmF1bHRzIHRvIGEgYEdGUF9LRVJORUxgIGVxdWl2YWxlbnQuIFNvIHRoZSBuZXcgbWFjcm8gKm1pZ2h0KiBiZWhhdmUgbGlrZSBga3ZtYWxsb2NfYXJyYXkobiwgc2l6ZW9mKG9iaiksIEdGUF9LRVJORUwpYC4KCkNvbnNpZGVyaW5nIGFsbCBvZiB0aGlzLCBiZWNhdXNlIGl0IGlzICpqdXN0KiBhIG1hY3JvIHJlcGxhY2VtZW50LCB0aGlzIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgYmVoYXZpb3IgdG8gdGhlIGtlcm5lbC4gVGhlcmVmb3JlLCBteSBhc3Nlc3NtZW50IGlzIHRoYXQgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGRlZmluaXRlbHkgYmUgYGZhbHNlYCBpbiB0aGlzIGNhc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTg6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IHJlcGxhY2VzIHN0YW5kYXJkIG1lbW9yeSBhbGxvY2F0aW9uIGZ1bmN0aW9ucyAoa3phbGxvYywga3ZtYWxsb2NfYXJyYXkpIHdpdGggdGhlaXIgbWFjcm8gZXF1aXZhbGVudHMgKGt6YWxsb2Nfb2JqLCBrdm1hbGxvY19vYmpzKS4gVGhpcyBpcyBhIHB1cmVseSBzeW50YWN0aWMgcmVmYWN0b3JpbmcgdGhhdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGxvZ2ljIG9mIHRoZSBrZXJuZWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IHJlcGxhY2VzIHN0YW5kYXJkIG1lbW9yeSBhbGxvY2F0aW9uIGZ1bmN0aW9ucyAoa3phbGxvYywga3ZtYWxsb2NfYXJyYXkpIHdpdGggdGhlaXIgbWFjcm8gZXF1aXZhbGVudHMgKGt6YWxsb2Nfb2JqLCBrdm1hbGxvY19vYmpzKS4gVGhpcyBpcyBhIHB1cmVseSBzeW50YWN0aWMgcmVmYWN0b3JpbmcgdGhhdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGxvZ2ljIG9mIHRoZSBrZXJuZWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTZUMTg6MjI6MTQuNjQ1MTUzNjI5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzM2OTE5NDg0MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgcmVwbGFjZXMgc3RhbmRhcmQgbWVtb3J5IGFsbG9jYXRpb24gZnVuY3Rpb25zIChremFsbG9jLCBrdm1hbGxvY19hcnJheSkgd2l0aCB0aGVpciBtYWNybyBlcXVpdmFsZW50cyAoa3phbGxvY19vYmosIGt2bWFsbG9jX29ianMpLiBUaGlzIGlzIGEgcHVyZWx5IHN5bnRhY3RpYyByZWZhY3RvcmluZyB0aGF0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgbG9naWMgb2YgdGhlIGtlcm5lbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDE4OjIyOjE0LjY0NTE1OTY4OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY4NTU5MjkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZDU3NWFmOWIzZjNiMTQ1ODZjMDBjZDM0YzRkNDJhMzZhZWZmZTZiYlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAxNiAxODoyMjoxMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY1xcbmluZGV4IDM1Y2JlODIxYzI1OTY3Li43NDA0N2JmMWUzMmRlMSAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY1xcbkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBpcF92c19yaHRfcmN1X2ZyZWUoc3RydWN0IHJjdV9oZWFkICpoZWFkKVxcbiBcXG4gc3RydWN0IGlwX3ZzX3JodCAqaXBfdnNfcmh0X2FsbG9jKGludCBidWNrZXRzLCBpbnQgc2NvdW50cywgaW50IGxvY2tzKVxcbiB7XFxuLVxcdHN0cnVjdCBpcF92c19yaHQgKnQgPSBremFsbG9jKHNpemVvZigqdCksIEdGUF9LRVJORUwpO1xcbitcXHRzdHJ1Y3QgaXBfdnNfcmh0ICp0ID0ga3phbGxvY19vYmooKnQpO1xcbiBcXHRpbnQgaTtcXG4gXFxuIFxcdGlmICghdClcXG5AQCAtMTg2LDcgKzE4Niw3IEBAIHN0cnVjdCBpcF92c19yaHQgKmlwX3ZzX3JodF9hbGxvYyhpbnQgYnVja2V0cywgaW50IHNjb3VudHMsIGludCBsb2NrcylcXG4gXFxuIFxcdFxcdHNjb3VudHMgPSBtaW4oc2NvdW50cywgYnVja2V0cyk7XFxuIFxcdFxcdHNjb3VudHMgPSBtaW4oc2NvdW50cywgbWwpO1xcbi1cXHRcXHR0LVxcdTAwM2VzZXFjID0ga3ZtYWxsb2NfYXJyYXkoc2NvdW50cywgc2l6ZW9mKCp0LVxcdTAwM2VzZXFjKSwgR0ZQX0tFUk5FTCk7XFxuK1xcdFxcdHQtXFx1MDAzZXNlcWMgPSBrdm1hbGxvY19vYmpzKCp0LVxcdTAwM2VzZXFjLCBzY291bnRzKTtcXG4gXFx0XFx0aWYgKCF0LVxcdTAwM2VzZXFjKVxcbiBcXHRcXHRcXHRnb3RvIGVycjtcXG4gXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHNjb3VudHM7IGkrKylcXG5AQCAtMTk0LDggKzE5NCw3IEBAIHN0cnVjdCBpcF92c19yaHQgKmlwX3ZzX3JodF9hbGxvYyhpbnQgYnVja2V0cywgaW50IHNjb3VudHMsIGludCBsb2NrcylcXG4gXFxuIFxcdFxcdGlmIChsb2Nrcykge1xcbiBcXHRcXHRcXHRsb2NrcyA9IG1pbihsb2Nrcywgc2NvdW50cyk7XFxuLVxcdFxcdFxcdHQtXFx1MDAzZWxvY2sgPSBrdm1hbGxvY19hcnJheShsb2Nrcywgc2l6ZW9mKCp0LVxcdTAwM2Vsb2NrKSxcXG4tXFx0XFx0XFx0XFx0XFx0XFx0IEdGUF9LRVJORUwpO1xcbitcXHRcXHRcXHR0LVxcdTAwM2Vsb2NrID0ga3ZtYWxsb2Nfb2JqcygqdC1cXHUwMDNlbG9jaywgbG9ja3MpO1xcbiBcXHRcXHRcXHRpZiAoIXQtXFx1MDAzZWxvY2spXFxuIFxcdFxcdFxcdFxcdGdvdG8gZXJyO1xcbiBcXHRcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbG9ja3M7IGkrKylcXG5AQCAtMjAzLDcgKzIwMiw3IEBAIHN0cnVjdCBpcF92c19yaHQgKmlwX3ZzX3JodF9hbGxvYyhpbnQgYnVja2V0cywgaW50IHNjb3VudHMsIGludCBsb2NrcylcXG4gXFx0XFx0fVxcbiBcXHR9XFxuIFxcbi1cXHR0LVxcdTAwM2VidWNrZXRzID0ga3ZtYWxsb2NfYXJyYXkoYnVja2V0cywgc2l6ZW9mKCp0LVxcdTAwM2VidWNrZXRzKSwgR0ZQX0tFUk5FTCk7XFxuK1xcdHQtXFx1MDAzZWJ1Y2tldHMgPSBrdm1hbGxvY19vYmpzKCp0LVxcdTAwM2VidWNrZXRzLCBidWNrZXRzKTtcXG4gXFx0aWYgKCF0LVxcdTAwM2VidWNrZXRzKVxcbiBcXHRcXHRnb3RvIGVycjtcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGJ1Y2tldHM7IGkrKylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTg6MjI6MTUuMTE0NjQ3MjcxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzIyMjQ0MDc4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSByZXBsYWNlcyBzdGFuZGFyZCBtZW1vcnkgYWxsb2NhdGlvbiBmdW5jdGlvbnMgKGt6YWxsb2MsIGt2bWFsbG9jX2FycmF5KSB3aXRoIHRoZWlyIG1hY3JvIGVxdWl2YWxlbnRzIChremFsbG9jX29iaiwga3ZtYWxsb2Nfb2JqcykuIFRoaXMgaXMgYSBwdXJlbHkgc3ludGFjdGljIHJlZmFjdG9yaW5nIHRoYXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBsb2dpYyBvZiB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkNTc1YWY5YjNmM2IxNDU4NmMwMGNkMzRjNGQ0MmEzNmFlZmZlNmJiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMTYgMTg6MjI6MTMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY1xuaW5kZXggMzVjYmU4MjFjMjU5NjcuLjc0MDQ3YmYxZTMyZGUxIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY1xuQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIGlwX3ZzX3JodF9yY3VfZnJlZShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXG4gXG4gc3RydWN0IGlwX3ZzX3JodCAqaXBfdnNfcmh0X2FsbG9jKGludCBidWNrZXRzLCBpbnQgc2NvdW50cywgaW50IGxvY2tzKVxuIHtcbi1cdHN0cnVjdCBpcF92c19yaHQgKnQgPSBremFsbG9jKHNpemVvZigqdCksIEdGUF9LRVJORUwpO1xuK1x0c3RydWN0IGlwX3ZzX3JodCAqdCA9IGt6YWxsb2Nfb2JqKCp0KTtcbiBcdGludCBpO1xuIFxuIFx0aWYgKCF0KVxuQEAgLTE4Niw3ICsxODYsNyBAQCBzdHJ1Y3QgaXBfdnNfcmh0ICppcF92c19yaHRfYWxsb2MoaW50IGJ1Y2tldHMsIGludCBzY291bnRzLCBpbnQgbG9ja3MpXG4gXG4gXHRcdHNjb3VudHMgPSBtaW4oc2NvdW50cywgYnVja2V0cyk7XG4gXHRcdHNjb3VudHMgPSBtaW4oc2NvdW50cywgbWwpO1xuLVx0XHR0LVx1MDAzZXNlcWMgPSBrdm1hbGxvY19hcnJheShzY291bnRzLCBzaXplb2YoKnQtXHUwMDNlc2VxYyksIEdGUF9LRVJORUwpO1xuK1x0XHR0LVx1MDAzZXNlcWMgPSBrdm1hbGxvY19vYmpzKCp0LVx1MDAzZXNlcWMsIHNjb3VudHMpO1xuIFx0XHRpZiAoIXQtXHUwMDNlc2VxYylcbiBcdFx0XHRnb3RvIGVycjtcbiBcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgc2NvdW50czsgaSsrKVxuQEAgLTE5NCw4ICsxOTQsNyBAQCBzdHJ1Y3QgaXBfdnNfcmh0ICppcF92c19yaHRfYWxsb2MoaW50IGJ1Y2tldHMsIGludCBzY291bnRzLCBpbnQgbG9ja3MpXG4gXG4gXHRcdGlmIChsb2Nrcykge1xuIFx0XHRcdGxvY2tzID0gbWluKGxvY2tzLCBzY291bnRzKTtcbi1cdFx0XHR0LVx1MDAzZWxvY2sgPSBrdm1hbGxvY19hcnJheShsb2Nrcywgc2l6ZW9mKCp0LVx1MDAzZWxvY2spLFxuLVx0XHRcdFx0XHRcdCBHRlBfS0VSTkVMKTtcbitcdFx0XHR0LVx1MDAzZWxvY2sgPSBrdm1hbGxvY19vYmpzKCp0LVx1MDAzZWxvY2ssIGxvY2tzKTtcbiBcdFx0XHRpZiAoIXQtXHUwMDNlbG9jaylcbiBcdFx0XHRcdGdvdG8gZXJyO1xuIFx0XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGxvY2tzOyBpKyspXG5AQCAtMjAzLDcgKzIwMiw3IEBAIHN0cnVjdCBpcF92c19yaHQgKmlwX3ZzX3JodF9hbGxvYyhpbnQgYnVja2V0cywgaW50IHNjb3VudHMsIGludCBsb2NrcylcbiBcdFx0fVxuIFx0fVxuIFxuLVx0dC1cdTAwM2VidWNrZXRzID0ga3ZtYWxsb2NfYXJyYXkoYnVja2V0cywgc2l6ZW9mKCp0LVx1MDAzZWJ1Y2tldHMpLCBHRlBfS0VSTkVMKTtcbitcdHQtXHUwMDNlYnVja2V0cyA9IGt2bWFsbG9jX29ianMoKnQtXHUwMDNlYnVja2V0cywgYnVja2V0cyk7XG4gXHRpZiAoIXQtXHUwMDNlYnVja2V0cylcbiBcdFx0Z290byBlcnI7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBidWNrZXRzOyBpKyspXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxODoyMjoxNS4xMTQ2NDkzMzFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMTE4MzM4MDUxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXRmaWx0ZXIgSVBWUyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jYC4gVGhlIGNvcmUgY2hhbmdlIGlzIGEgcmVwbGFjZW1lbnQgb2YgbWVtb3J5IGFsbG9jYXRpb24gZnVuY3Rpb25zLiBTcGVjaWZpY2FsbHksIGl0IHN3YXBzIG91dCBga3phbGxvY2Agd2l0aCBga3phbGxvY19vYmpgIGFuZCBga3ZtYWxsb2NfYXJyYXlgIHdpdGggYGt2bWFsbG9jX29ianNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGEgc3RyYWlnaHRmb3J3YXJkIHJlZmFjdG9yaW5nLCBwcm9iYWJseSBsZXZlcmFnaW5nIHNvbWUgbmV3IGFsbG9jYXRpb24gbWFjcm9zIHRoYXQgY2FtZSBpbiB3aXRoIGEgcHJldmlvdXMgY29tbWl0IG9yIGFzIHBhcnQgb2YgYSBsYXJnZXIgc2VyaWVzLiBJIG1lYW4sIGl0ICpsb29rcyogbGlrZSBhIHNpbXBsZSBzdWJzdGl0dXRpb24uXG5cbkJ1dCBoYW5nIG9u4oCmIGFyZSB0aGVzZSBldmVuICpyZWFsKiBtYWNyb3M/IGBremFsbG9jX29iamAgYW5kIGBrdm1hbGxvY19vYmpzYCBhcmVuJ3QgaW1tZWRpYXRlbHkgcmluZ2luZyBhbnkgYmVsbHMuIFRoZXkgYXJlbid0IHN0YW5kYXJkIGtlcm5lbCBpZGlvbXMsIHNvIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpcyBqdXN0IGEgbWFjcm8gcmVwbGFjZW1lbnQgYW5kIHRoYXQgaXQncyBub3QgYWN0dWFsbHkgaW50cm9kdWNpbmcgYW55dGhpbmcgbmV3LiBBbHJpZ2h0LCBhZnRlciBhIGNsb3NlciBsb29rLCBpdCAqaXMqIGp1c3QgYSBtYWNybyByZXBsYWNlbWVudC4gVGhlIGNvcmUgbG9naWMgZG9lc24ndCBhcHBlYXIgdG8gYmUgYWx0ZXJlZCBpbiBhbnkgbWVhbmluZ2Z1bCB3YXkuIEl0IGxvb2tzIGxpa2UgaXQganVzdCB1c2VzIHRoZSBleGlzdGluZyBhbGxvY2F0aW9uIGZ1bmN0aW9ucyBhcyBhIGJhc2UuXG5cbk5vdywgSSBzdGlsbCBuZWVkIHRvIGNoZWNrIGV4YWN0bHkgd2hhdCB0aGUgbWFjcm9zIGFyZSBkb2luZy4gSSB3YW50IHRvIHNlZSBpZiBga3phbGxvY19vYmpgIGlzIGRlZmluZWQgc29tZXdoZXJlLCBqdXN0IHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyODksIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxODoyMjozNi4yOTgwMzE2MjRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA2NzkwMTkxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJremFsbG9jX29ialwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDc5MDQ2IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2xpc3QucnN0PTEwMz1saXN0Olxcbi0tXFxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9saXN0LnJzdC0xMTQtXFxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9saXN0LnJzdDoxMTU6ICAgICAgICAgIGdyb2NrID0ga3phbGxvY19vYmooKmdyb2NrKTtcXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2xpc3QucnN0LTExNi0gICAgICAgICAgaWYgKCFncm9jaylcXG4tLVxcbkRvY3VtZW50YXRpb24vY29yZS1hcGkvbGlzdC5yc3QtMTI1LVxcbkRvY3VtZW50YXRpb24vY29yZS1hcGkvbGlzdC5yc3Q6MTI2OiAgICAgICAgICBkaW1pdHJpID0ga3phbGxvY19vYmooKmRpbWl0cmkpO1xcbkRvY3VtZW50YXRpb24vY29yZS1hcGkvbGlzdC5yc3QtMTI3LSAgICAgICAgICBpZiAoIWRpbWl0cmkpXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbWFpbGJveC5yc3Q9NDU9YSBtZXNzYWdlIGFuZCBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHRoZSBBUEkgYW5kIHJldHVybiBpbW1lZGlhdGVseSkuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbWFpbGJveC5yc3QtODktXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21haWxib3gucnN0OjkwOlxcdFxcdGRjX3N5bmMgPSBremFsbG9jX29iaigqZGNfc3luYyk7XFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21haWxib3gucnN0OjkxOlxcdFxcdGRjX2FzeW5jID0ga3phbGxvY19vYmooKmRjX2FzeW5jKTtcXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbWFpbGJveC5yc3QtOTItXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbWVkaWEvdjRsMi1maC5yc3Q9MjY9RXhhbXBsZTpcXG4tLVxcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tZWRpYS92NGwyLWZoLnJzdC00NC1cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbWVkaWEvdjRsMi1maC5yc3Q6NDU6XFx0XFx0bXlfZmggPSBremFsbG9jX29iaigqbXlfZmgpO1xcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tZWRpYS92NGwyLWZoLnJzdC00Ni1cXG4tLVxcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0PTkzOD1UaGUga2VybmVsIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgZ2VuZXJhbCBwdXJwb3NlIG1lbW9yeSBhbGxvY2F0b3JzOlxcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0OjkzOTprbWFsbG9jKCksIGt6YWxsb2MoKSwga21hbGxvY19vYmpzKCksIGt6YWxsb2Nfb2JqcygpLCB2bWFsbG9jKCksIGFuZFxcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0LTk0MC12emFsbG9jKCkuICBQbGVhc2UgcmVmZXIgdG8gdGhlIEFQSSBkb2N1bWVudGF0aW9uIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY29kaW5nLXN0eWxlLnJzdD05NjQ9VGhlIHByZWZlcnJlZCBmb3JtIGZvciBhbGxvY2F0aW5nIGEgemVyb2VkIGFycmF5IGlzIHRoZSBmb2xsb3dpbmc6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY29kaW5nLXN0eWxlLnJzdC05NjctXFxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2NvZGluZy1zdHlsZS5yc3Q6OTY4OlxcdHAgPSBremFsbG9jX29ianMoKnAsIG4sIC4uLik7XFxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2NvZGluZy1zdHlsZS5yc3QtOTY5LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0PTM5OD1iZWNvbWUsIHJlc3BlY3RpdmVseTo6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3QtNDAwLVxcdHB0ciA9IGttYWxsb2Nfb2JqKCpwdHIgWywgZ2ZwXSApO1xcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZXByZWNhdGVkLnJzdDo0MDE6XFx0cHRyID0ga3phbGxvY19vYmooKnB0ciBbLCBnZnBdICk7XFxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0LTQwMi1cXHRwdHIgPSBrbWFsbG9jX29ianMoKnB0ciwgY291bnQgWywgZ2ZwXSApO1xcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZXByZWNhdGVkLnJzdDo0MDM6XFx0cHRyID0ga3phbGxvY19vYmpzKCpwdHIsIGNvdW50IFssIGdmcF0gKTtcXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3QtNDA0LVxcdHB0ciA9IGttYWxsb2NfZmxleCgqcHRyLCBmbGV4X21lbWJlciwgY291bnQgWywgZ2ZwXSApO1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0PTIwOD10byBkZXRhaWxzIGV4cGxhaW5lZCBpbiB0aGUgZm9sbG93aW5nIHNlY3Rpb24uXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtMjY4LSAgICAgICAgICAgICAgLyogYWxsb2NhdGUgYSBjaGlwLXNwZWNpZmljIGRhdGEgd2l0aCB6ZXJvIGZpbGxlZCAqL1xcbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdDoyNjk6ICAgICAgICAgICAgICBjaGlwID0ga3phbGxvY19vYmooKmNoaXApO1xcbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdC0yNzAtICAgICAgICAgICAgICBpZiAoY2hpcCA9PSBOVUxMKVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0PTYyMz1BZnRlciBhbGxvY2F0aW5nIGEgY2FyZCBpbnN0YW5jZSB2aWEgOmM6ZnVuYzpgc25kX2NhcmRfbmV3KClgXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtNjMwLSAgLi4uLi5cXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3Q6NjMxOiAgY2hpcCA9IGt6YWxsb2Nfb2JqKCpjaGlwKTtcXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtNjMyLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0PTY5OD1kZXN0cnVjdG9yIGFuZCBQQ0kgZW50cmllcy4gRXhhbXBsZSBjb2RlIGlzIHNob3duIGZpcnN0LCBiZWxvdzo6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtNzQ5LVxcbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdDo3NTA6ICAgICAgICAgICAgICBjaGlwID0ga3phbGxvY19vYmooKmNoaXApO1xcbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdC03NTEtICAgICAgICAgICAgICBpZiAoY2hpcCA9PSBOVUxMKSB7XFxuLS1cXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3Q9MzgyMz1jaGlwIGRhdGEgaW5kaXZpZHVhbGx5OjpcXG4tLVxcbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdC0zODM1LSAgICAgICAgICAuLi4uXFxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0OjM4MzY6ICAgICAgICAgIGNoaXAgPSBremFsbG9jX29iaigqY2hpcCk7XFxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0LTM4MzctICAgICAgICAgIC4uLi5cXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL3ZpZGVvNGxpbnV4L3Y0bDItZnJhbWV3b3JrLnR4dD03OTQ9aW50IG15X29wZW4oc3RydWN0IGZpbGUgKmZpbGUpXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi92aWRlbzRsaW51eC92NGwyLWZyYW1ld29yay50eHQtODAxLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL3ZpZGVvNGxpbnV4L3Y0bDItZnJhbWV3b3JrLnR4dDo4MDI6XFx0bXlfZmggPSBremFsbG9jX29iaigqbXlfZmgpO1xcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL3ZpZGVvNGxpbnV4L3Y0bDItZnJhbWV3b3JrLnR4dC04MDMtXFxuLS1cXG5hcmNoL2FscGhhL2tlcm5lbC9tb2R1bGUuYz02ND1tb2R1bGVfZnJvYl9hcmNoX3NlY3Rpb25zKEVsZjY0X0VoZHIgKmhkciwgRWxmNjRfU2hkciAqc2VjaGRycyxcXG4tLVxcbmFyY2gvYWxwaGEva2VybmVsL21vZHVsZS5jLTk1LVxcdG5zeW1zID0gc3ltdGFiLVxcdTAwM2VzaF9zaXplIC8gc2l6ZW9mKEVsZjY0X1N5bSk7XFxuYXJjaC9hbHBoYS9rZXJuZWwvbW9kdWxlLmM6OTY6XFx0Y2hhaW5zID0ga3phbGxvY19vYmpzKHN0cnVjdCBnb3RfZW50cnksIG5zeW1zKTtcXG5hcmNoL2FscGhhL2tlcm5lbC9tb2R1bGUuYy05Ny1cXHRpZiAoIWNoYWlucykge1xcbi0tXFxuYXJjaC9hbHBoYS9rZXJuZWwvc2V0dXAuYz0zOTA9cmVnaXN0ZXJfY3B1cyh2b2lkKVxcbi0tXFxuYXJjaC9hbHBoYS9rZXJuZWwvc2V0dXAuYy0zOTQtXFx0Zm9yX2VhY2hfcG9zc2libGVfY3B1KGkpIHtcXG5hcmNoL2FscGhhL2tlcm5lbC9zZXR1cC5jOjM5NTpcXHRcXHRzdHJ1Y3QgY3B1ICpwID0ga3phbGxvY19vYmooKnApO1xcbmFyY2gvYWxwaGEva2VybmVsL3NldHVwLmMtMzk2LVxcdFxcdGlmICghcClcXG4tLVxcbmFyY2gvYXJjL25ldC9icGZfaml0X2NvcmUuYz0xMTIwPXN0YXRpYyBpbnQgaml0X3ByZXBhcmVfZmluYWxfbWVtX2FsbG9jKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxcbi0tXFxuYXJjaC9hcmMvbmV0L2JwZl9qaXRfY29yZS5jLTExMzEtXFx0aWYgKGN0eC1cXHUwMDNlbmVlZF9leHRyYV9wYXNzKSB7XFxuYXJjaC9hcmMvbmV0L2JwZl9qaXRfY29yZS5jOjExMzI6XFx0XFx0Y3R4LVxcdTAwM2VqaXRfZGF0YSA9IGt6YWxsb2Nfb2JqKCpjdHgtXFx1MDAzZWppdF9kYXRhKTtcXG5hcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmMtMTEzMy1cXHRcXHRpZiAoIWN0eC1cXHUwMDNlaml0X2RhdGEpXFxuLS1cXG5hcmNoL2FybS9jb21tb24vbG9jb21vLmM9MjIwPWxvY29tb19pbml0X29uZV9jaGlsZChzdHJ1Y3QgbG9jb21vICpsY2hpcCwgc3RydWN0IGxvY29tb19kZXZfaW5mbyAqaW5mbylcXG4tLVxcbmFyY2gvYXJtL2NvbW1vbi9sb2NvbW8uYy0yMjQtXFxuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jOjIyNTpcXHRkZXYgPSBremFsbG9jX29iaihzdHJ1Y3QgbG9jb21vX2Rldik7XFxuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jLTIyNi1cXHRpZiAoIWRldikge1xcbi0tXFxuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jPTM1Nj1fX2xvY29tb19wcm9iZShzdHJ1Y3QgZGV2aWNlICptZSwgc3RydWN0IHJlc291cmNlICptZW0sIGludCBpcnEpXFxuLS1cXG5hcmNoL2FybS9jb21tb24vbG9jb21vLmMtMzYyLVxcbmFyY2gvYXJtL2NvbW1vbi9sb2NvbW8uYzozNjM6XFx0bGNoaXAgPSBremFsbG9jX29iaihzdHJ1Y3QgbG9jb21vKTtcXG5hcmNoL2FybS9jb21tb24vbG9jb21vLmMtMzY0LVxcdGlmICghbGNoaXApXFxuLS1cXG5hcmNoL2FybS9jb21tb24vc2ExMTExLmM9NzMzPXNhMTExMV9pbml0X29uZV9jaGlsZChzdHJ1Y3Qgc2ExMTExICpzYWNoaXAsIHN0cnVjdCByZXNvdXJjZSAqcGFyZW50LFxcbi0tXFxuYXJjaC9hcm0vY29tbW9uL3NhMTExMS5jLTczOS1cXG5hcmNoL2FybS9jb21tb24vc2ExMTExLmM6NzQwOlxcdGRldiA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBzYTExMTFfZGV2KTtcXG5hcmNoL2FybS9jb21tb24vc2ExMTExLmMtNzQxLVxcdGlmICghZGV2KSB7XFxuLS1cXG5hcmNoL2FybS9jb21tb24vc2Nvb3AuYz0xNzg9c3RhdGljIGludCBzY29vcF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuYXJjaC9hcm0vY29tbW9uL3Njb29wLmMtMTg3LVxcbmFyY2gvYXJtL2NvbW1vbi9zY29vcC5jOjE4ODpcXHRkZXZwdHIgPSBremFsbG9jX29iaihzdHJ1Y3Qgc2Nvb3BfZGV2KTtcXG5hcmNoL2FybS9jb21tb24vc2Nvb3AuYy0xODktXFx0aWYgKCFkZXZwdHIpXFxuLS1cXG5hcmNoL2FybS9rZXJuZWwvc21wLmM9MTA4PXN0YXRpYyBpbnQgc2Vjb25kYXJ5X2JpZ2xpdHRsZV9wcmVwYXJlKHVuc2lnbmVkIGludCBjcHUpXFxuLS1cXG5hcmNoL2FybS9rZXJuZWwvc21wLmMtMTEwLVxcdGlmICghY3B1X3Z0YWJsZVtjcHVdKVxcbmFyY2gvYXJtL2tlcm5lbC9zbXAuYzoxMTE6XFx0XFx0Y3B1X3Z0YWJsZVtjcHVdID0ga3phbGxvY19vYmooKmNwdV92dGFibGVbY3B1XSk7XFxuYXJjaC9hcm0va2VybmVsL3NtcC5jLTExMi1cXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC92ZHNvLmM9MTY5PXN0YXRpYyBpbnQgX19pbml0IHZkc29faW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm0va2VybmVsL3Zkc28uYy0xODEtXFx0LyogQWxsb2NhdGUgdGhlIFZEU08gdGV4dCBwYWdlbGlzdCAqL1xcbmFyY2gvYXJtL2tlcm5lbC92ZHNvLmM6MTgyOlxcdHZkc29fdGV4dF9wYWdlbGlzdCA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgcGFnZSAqLCB0ZXh0X3BhZ2VzKTtcXG5hcmNoL2FybS9rZXJuZWwvdmRzby5jLTE4My1cXHRpZiAodmRzb190ZXh0X3BhZ2VsaXN0ID09IE5VTEwpXFxuLS1cXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZGMyMTI4NS5jPTI2MT1pbnQgX19pbml0IGRjMjEyODVfc2V0dXAoaW50IG5yLCBzdHJ1Y3QgcGNpX3N5c19kYXRhICpzeXMpXFxuLS1cXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZGMyMTI4NS5jLTI2NC1cXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZGMyMTI4NS5jOjI2NTpcXHRyZXMgPSBremFsbG9jX29ianMoc3RydWN0IHJlc291cmNlLCAyKTtcXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZGMyMTI4NS5jLTI2Ni1cXHRpZiAoIXJlcykge1xcbi0tXFxuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL2Vic2EyODUuYz02OT1zdGF0aWMgaW50IF9faW5pdCBlYnNhMjg1X2xlZHNfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL2Vic2EyODUuYy04Ni1cXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZWJzYTI4NS5jOjg3OlxcdFxcdGxlZCA9IGt6YWxsb2Nfb2JqKCpsZWQpO1xcbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9lYnNhMjg1LmMtODgtXFx0XFx0aWYgKCFsZWQpXFxuLS1cXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvbmV0d2luZGVyLWh3LmM9NzIwPXN0YXRpYyBpbnQgX19pbml0IG5ldHdpbmRlcl9sZWRzX2luaXQodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9uZXR3aW5kZXItaHcuYy03MjktXFxuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL25ldHdpbmRlci1ody5jOjczMDpcXHRcXHRsZWQgPSBremFsbG9jX29iaigqbGVkKTtcXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvbmV0d2luZGVyLWh3LmMtNzMxLVxcdFxcdGlmICghbGVkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1pbXgvbW1kYy5jPTQ3Mz1zdGF0aWMgaW50IGlteF9tbWRjX3BlcmZfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCB2b2lkIF9faW9tZW0gKm1tZGNfYmFzZSxcXG4tLVxcbmFyY2gvYXJtL21hY2gtaW14L21tZGMuYy00NzktXFxuYXJjaC9hcm0vbWFjaC1pbXgvbW1kYy5jOjQ4MDpcXHRwbXVfbW1kYyA9IGt6YWxsb2Nfb2JqKCpwbXVfbW1kYyk7XFxuYXJjaC9hcm0vbWFjaC1pbXgvbW1kYy5jLTQ4MS1cXHRpZiAoIXBtdV9tbWRjKSB7XFxuLS1cXG5hcmNoL2FybS9tYWNoLW12ZWJ1L2JvYXJkLXY3LmM9MTE0PXN0YXRpYyB2b2lkIF9faW5pdCBpMmNfcXVpcmsodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtbXZlYnUvYm9hcmQtdjcuYy0xMjktXFxuYXJjaC9hcm0vbWFjaC1tdmVidS9ib2FyZC12Ny5jOjEzMDpcXHRcXHRuZXdfY29tcGF0ID0ga3phbGxvY19vYmooKm5ld19jb21wYXQpO1xcbmFyY2gvYXJtL21hY2gtbXZlYnUvYm9hcmQtdjcuYy0xMzEtXFxuLS1cXG5hcmNoL2FybS9tYWNoLW12ZWJ1L2NvaGVyZW5jeS5jPTE2Mz1zdGF0aWMgdm9pZCBfX2luaXQgYXJtYWRhXzM3NV8zODBfY29oZXJlbmN5X2luaXQoc3RydWN0IGRldmljZV9ub2RlICpucClcXG4tLVxcbmFyY2gvYXJtL21hY2gtbXZlYnUvY29oZXJlbmN5LmMtMTg3LVxcbmFyY2gvYXJtL21hY2gtbXZlYnUvY29oZXJlbmN5LmM6MTg4OlxcdFxcdHAgPSBremFsbG9jX29iaigqcCk7XFxuYXJjaC9hcm0vbWFjaC1tdmVidS9jb2hlcmVuY3kuYy0xODktXFx0XFx0cC1cXHUwMDNlbmFtZSA9IGtzdHJkdXAoXFxcImFybSxpby1jb2hlcmVudFxcXCIsIEdGUF9LRVJORUwpO1xcbi0tXFxuYXJjaC9hcm0vbWFjaC1tdmVidS9tdmVidS1zb2MtaWQuYz0xNDg9c3RhdGljIGludCBfX2luaXQgbXZlYnVfc29jX2RldmljZSh2b2lkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1tdmVidS9tdmVidS1zb2MtaWQuYy0xNTYtXFxuYXJjaC9hcm0vbWFjaC1tdmVidS9tdmVidS1zb2MtaWQuYzoxNTc6XFx0c29jX2Rldl9hdHRyID0ga3phbGxvY19vYmooKnNvY19kZXZfYXR0cik7XFxuYXJjaC9hcm0vbWFjaC1tdmVidS9tdmVidS1zb2MtaWQuYy0xNTgtXFx0aWYgKCFzb2NfZGV2X2F0dHIpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jPTM4MD1zdGF0aWMgdm9pZCBfX2luaXQgbXhzX21hY2hpbmVfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYy0zODktXFxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYzozOTA6XFx0c29jX2Rldl9hdHRyID0ga3phbGxvY19vYmooKnNvY19kZXZfYXR0cik7XFxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYy0zOTEtXFx0aWYgKCFzb2NfZGV2X2F0dHIpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAxL2RtYS5jPTI5ND1zdGF0aWMgaW50IF9faW5pdCBvbWFwMV9zeXN0ZW1fZG1hX2luaXQodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDEvZG1hLmMtMzIxLVxcbmFyY2gvYXJtL21hY2gtb21hcDEvZG1hLmM6MzIyOlxcdGQgPSBremFsbG9jX29iaigqZCk7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMS9kbWEuYy0zMjMtXFx0aWYgKCFkKSB7XFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAxL21jYnNwLmM9MjkyPXN0YXRpYyB2b2lkIG9tYXBfbWNic3BfcmVnaXN0ZXJfYm9hcmRfY2ZnKHN0cnVjdCByZXNvdXJjZSAqcmVzLCBpbnQgcmVzX2NvdW50LFxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMS9tY2JzcC5jLTI5Ni1cXG5hcmNoL2FybS9tYWNoLW9tYXAxL21jYnNwLmM6Mjk3OlxcdG9tYXBfbWNic3BfZGV2aWNlcyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICosIHNpemUpO1xcbmFyY2gvYXJtL21hY2gtb21hcDEvbWNic3AuYy0yOTgtXFx0aWYgKCFvbWFwX21jYnNwX2RldmljZXMpIHtcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDEvdGltZXIuYz01MT1zdGF0aWMgaW50IF9faW5pdCBvbWFwMV9kbV90aW1lcl9pbml0KHZvaWQpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAxL3RpbWVyLmMtMTI3LVxcbmFyY2gvYXJtL21hY2gtb21hcDEvdGltZXIuYzoxMjg6XFx0XFx0cGRhdGEgPSBremFsbG9jX29iaigqcGRhdGEpO1xcbmFyY2gvYXJtL21hY2gtb21hcDEvdGltZXIuYy0xMjktXFx0XFx0aWYgKCFwZGF0YSkge1xcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jbGt0Mnh4eF92aXJ0X3ByY21fc2V0LmM9MjMwPXZvaWQgb21hcDJ4eHhfY2xrdF92cHNfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jbGt0Mnh4eF92aXJ0X3ByY21fc2V0LmMtMjM5LVxcbmFyY2gvYXJtL21hY2gtb21hcDIvY2xrdDJ4eHhfdmlydF9wcmNtX3NldC5jOjI0MDpcXHRodyA9IGt6YWxsb2Nfb2JqKCpodyk7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jbGt0Mnh4eF92aXJ0X3ByY21fc2V0LmMtMjQxLVxcdGlmICghaHcpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL2lkLmM9Nzg2PXZvaWQgX19pbml0IG9tYXBfc29jX2RldmljZV9pbml0KHZvaWQpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL2lkLmMtNzkwLVxcbmFyY2gvYXJtL21hY2gtb21hcDIvaWQuYzo3OTE6XFx0c29jX2Rldl9hdHRyID0ga3phbGxvY19vYmooKnNvY19kZXZfYXR0cik7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9pZC5jLTc5Mi1cXHRpZiAoIXNvY19kZXZfYXR0cilcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9kZXZpY2UuYz0xMzE9c3RhdGljIGludCBvbWFwX2RldmljZV9idWlsZF9mcm9tX2R0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfZGV2aWNlLmMtMTU4LVxcbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9kZXZpY2UuYzoxNTk6XFx0aHdtb2RzID0ga3phbGxvY19vYmpzKHN0cnVjdCBvbWFwX2h3bW9kICosIG9oX2NudCk7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2RldmljZS5jLTE2MC1cXHRpZiAoIWh3bW9kcykge1xcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmM9MzM4MT1zdGF0aWMgaW50IG9tYXBfaHdtb2RfYWxsb2NhdGVfbW9kdWxlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG9tYXBfaHdtb2QgKm9oLFxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzM5NC1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYzozMzk1OlxcdHN5c2MgPSBremFsbG9jX29iaigqc3lzYyk7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzM5Ni1cXHRpZiAoIXN5c2MpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYy0zNDI0LVxcdGlmIChsaXN0X2VtcHR5KFxcdTAwMjZvaC1cXHUwMDNlc2xhdmVfcG9ydHMpKSB7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmM6MzQyNTpcXHRcXHRvaSA9IGt6YWxsb2Nfb2JqKCpvaSk7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzQyNi1cXHRcXHRpZiAoIW9pKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmM9MzUxMz1pbnQgb21hcF9od21vZF9pbml0X21vZHVsZShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYy0zNTI3LVxcdGlmICghb2gpIHtcXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYzozNTI4OlxcdFxcdG9oID0ga3phbGxvY19vYmooKm9oKTtcXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYy0zNTI5LVxcdFxcdGlmICghb2gpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYy0zNTM4LVxcbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jOjM1Mzk6XFx0XFx0b2gtXFx1MDAzZWNsYXNzID0ga3phbGxvY19vYmooKm9oLVxcdTAwM2VjbGFzcyk7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzU0MC1cXHRcXHRpZiAoIW9oLVxcdTAwM2VjbGFzcykge1xcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9wbTMzeHgtY29yZS5jPTM3OT1zdGF0aWMgaW50IF9faW5pdCBhbXgzX2lkbGVfaW5pdChzdHJ1Y3QgZGV2aWNlX25vZGUgKmNwdV9ub2RlLCBpbnQgY3B1KVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9wbTMzeHgtY29yZS5jLTQxMi1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL3BtMzN4eC1jb3JlLmM6NDEzOlxcdGlkbGVfc3RhdGVzID0ga3phbGxvY19vYmpzKCppZGxlX3N0YXRlcywgc3RhdGVfY291bnQpO1xcbmFyY2gvYXJtL21hY2gtb21hcDIvcG0zM3h4LWNvcmUuYy00MTQtXFx0aWYgKCFpZGxlX3N0YXRlcylcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDIvc3JfZGV2aWNlLmM9MzA9c3RhdGljIHZvaWQgX19pbml0IHNyX3NldF9udmFsdWVzKHN0cnVjdCBvbWFwX3ZvbHRfZGF0YSAqdm9sdF9kYXRhLFxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9zcl9kZXZpY2UuYy00MS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL3NyX2RldmljZS5jOjQyOlxcdG52YWx1ZV90YWJsZSA9IGt6YWxsb2Nfb2JqcygqbnZhbHVlX3RhYmxlLCBjb3VudCk7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9zcl9kZXZpY2UuYy00My1cXHRpZiAoIW52YWx1ZV90YWJsZSlcXG4tLVxcbmFyY2gvYXJtL21hY2gtb3Jpb241eC9wY2kuYz0xMzk9c3RhdGljIGludCBfX2luaXQgcGNpZV9zZXR1cChzdHJ1Y3QgcGNpX3N5c19kYXRhICpzeXMpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmMtMTcxLVxcdCAqL1xcbmFyY2gvYXJtL21hY2gtb3Jpb241eC9wY2kuYzoxNzI6XFx0cmVzID0ga3phbGxvY19vYmooc3RydWN0IHJlc291cmNlKTtcXG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmMtMTczLVxcdGlmICghcmVzKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jPTQ2Nj1zdGF0aWMgaW50IF9faW5pdCBwY2lfc2V0dXAoc3RydWN0IHBjaV9zeXNfZGF0YSAqc3lzKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jLTQ5Mi1cXHQgKi9cXG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmM6NDkzOlxcdHJlcyA9IGt6YWxsb2Nfb2JqKHN0cnVjdCByZXNvdXJjZSk7XFxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jLTQ5NC1cXHRpZiAoIXJlcylcXG4tLVxcbmFyY2gvYXJtL21hY2gtcnBjL2VjYXJkLmM9Njg5PXN0YXRpYyBzdHJ1Y3QgZXhwYW5zaW9uX2NhcmQgKl9faW5pdCBlY2FyZF9hbGxvY19jYXJkKGludCB0eXBlLCBpbnQgc2xvdClcXG4tLVxcbmFyY2gvYXJtL21hY2gtcnBjL2VjYXJkLmMtNjk0LVxcbmFyY2gvYXJtL21hY2gtcnBjL2VjYXJkLmM6Njk1OlxcdGVjID0ga3phbGxvY19vYmooZWNhcmRfdCk7XFxuYXJjaC9hcm0vbWFjaC1ycGMvZWNhcmQuYy02OTYtXFx0aWYgKCFlYykge1xcbi0tXFxuYXJjaC9hcm0vbWFjaC1zYTExMDAvY2xvY2suYz05Mz1pbnQgX19pbml0IHNhMTF4eF9jbGtfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1zYTExMDAvY2xvY2suYy0xMDktXFxuYXJjaC9hcm0vbWFjaC1zYTExMDAvY2xvY2suYzoxMTA6XFx0aHcgPSBremFsbG9jX29iaigqaHcpO1xcbmFyY2gvYXJtL21hY2gtc2ExMTAwL2Nsb2NrLmMtMTExLVxcdGlmICghaHcpXFxuLS1cXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9jbG9jay5jLTEzMS1cXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9jbG9jay5jOjEzMjpcXHRodyA9IGt6YWxsb2Nfb2JqKCpodyk7XFxuYXJjaC9hcm0vbWFjaC1zYTExMDAvY2xvY2suYy0xMzMtXFx0aWYgKCFodylcXG4tLVxcbmFyY2gvYXJtL21hY2gtc2ExMTAwL2dlbmVyaWMuYz0zMTc9aW50IF9faW5pdCBzYTExeDBfcmVnaXN0ZXJfZml4ZWRfcmVndWxhdG9yKGludCBuLFxcbi0tXFxuYXJjaC9hcm0vbWFjaC1zYTExMDAvZ2VuZXJpYy5jLTMyMy1cXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9nZW5lcmljLmM6MzI0OlxcdGNmZy1cXHUwMDNlaW5pdF9kYXRhID0gaWQgPSBremFsbG9jX29iaigqY2ZnLVxcdTAwM2Vpbml0X2RhdGEpO1xcbmFyY2gvYXJtL21hY2gtc2ExMTAwL2dlbmVyaWMuYy0zMjUtXFx0aWYgKCFjZmctXFx1MDAzZWluaXRfZGF0YSlcXG4tLVxcbmFyY2gvYXJtL21hY2gtc2ExMTAwL25lcG9uc2V0LmM9MjI1PXN0YXRpYyBpbnQgbmVwb25zZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2KVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1zYTExMDAvbmVwb25zZXQuYy0yNzgtXFxuYXJjaC9hcm0vbWFjaC1zYTExMDAvbmVwb25zZXQuYzoyNzk6XFx0ZCA9IGt6YWxsb2Nfb2JqKCpkKTtcXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9uZXBvbnNldC5jLTI4MC1cXHRpZiAoIWQpIHtcXG4tLVxcbmFyY2gvYXJtL21hY2gtc2htb2JpbGUvcmVndWxhdG9yLXF1aXJrLXJjYXItZ2VuMi5jPTE0MT1zdGF0aWMgaW50IF9faW5pdCByY2FyX2dlbjJfcmVndWxhdG9yX3F1aXJrKHZvaWQpXFxuLS1cXG5hcmNoL2FybS9tYWNoLXNobW9iaWxlL3JlZ3VsYXRvci1xdWlyay1yY2FyLWdlbjIuYy0xNjYtXFxuYXJjaC9hcm0vbWFjaC1zaG1vYmlsZS9yZWd1bGF0b3ItcXVpcmstcmNhci1nZW4yLmM6MTY3OlxcdFxcdHF1aXJrID0ga3phbGxvY19vYmooKnF1aXJrKTtcXG5hcmNoL2FybS9tYWNoLXNobW9iaWxlL3JlZ3VsYXRvci1xdWlyay1yY2FyLWdlbjIuYy0xNjgtXFx0XFx0aWYgKCFxdWlyaykge1xcbi0tXFxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvc3BjLmM9MzkzPXN0YXRpYyBpbnQgdmVfc3BjX3BvcHVsYXRlX29wcHModWludDMyX3QgY2x1c3RlcilcXG4tLVxcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTM5Ny1cXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYzozOTg6XFx0b3BwcyA9IGt6YWxsb2Nfb2Jqcygqb3BwcywgTUFYX09QUFMpO1xcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTM5OS1cXHRpZiAoIW9wcHMpXFxuLS1cXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYz00NDI9aW50IF9faW5pdCB2ZV9zcGNfaW5pdCh2b2lkIF9faW9tZW0gKmJhc2VhZGRyLCB1MzIgYTE1X2NsdXNpZCwgaW50IGlycSlcXG4tLVxcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTQ0NC1cXHRpbnQgcmV0O1xcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jOjQ0NTpcXHRpbmZvID0ga3phbGxvY19vYmooKmluZm8pO1xcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTQ0Ni1cXHRpZiAoIWluZm8pXFxuLS1cXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYz01MjM9c3RhdGljIHN0cnVjdCBjbGsgKnZlX3NwY19jbGtfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqY3B1X2RldilcXG4tLVxcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTUyNy1cXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYzo1Mjg6XFx0c3BjID0ga3phbGxvY19vYmooKnNwYyk7XFxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvc3BjLmMtNTI5LVxcdGlmICghc3BjKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvdmVyc2F0aWxlLmM9MTIzPXN0YXRpYyB2b2lkIF9faW5pdCB2ZXJzYXRpbGVfZHRfcGNpX2luaXQodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3ZlcnNhdGlsZS5jLTE0NC1cXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS92ZXJzYXRpbGUuYzoxNDU6XFx0bmV3cHJvcCA9IGt6YWxsb2Nfb2JqKCpuZXdwcm9wKTtcXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS92ZXJzYXRpbGUuYy0xNDYtXFx0aWYgKCFuZXdwcm9wKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC16eW5xL2NvbW1vbi5jPTEwNT1zdGF0aWMgdm9pZCBfX2luaXQgenlucV9pbml0X21hY2hpbmUodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtenlucS9jb21tb24uYy0xMTAtXFxuYXJjaC9hcm0vbWFjaC16eW5xL2NvbW1vbi5jOjExMTpcXHRzb2NfZGV2X2F0dHIgPSBremFsbG9jX29iaigqc29jX2Rldl9hdHRyKTtcXG5hcmNoL2FybS9tYWNoLXp5bnEvY29tbW9uLmMtMTEyLVxcdGlmICghc29jX2Rldl9hdHRyKVxcbi0tXFxuYXJjaC9hcm0vbW0vY2FjaGUtbDJ4MC1wbXUuYz01MDM9c3RhdGljIF9faW5pdCBpbnQgbDJ4MF9wbXVfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm0vbW0vY2FjaGUtbDJ4MC1wbXUuYy01MDktXFxuYXJjaC9hcm0vbW0vY2FjaGUtbDJ4MC1wbXUuYzo1MTA6XFx0bDJ4MF9wbXUgPSBremFsbG9jX29iaigqbDJ4MF9wbXUpO1xcbmFyY2gvYXJtL21tL2NhY2hlLWwyeDAtcG11LmMtNTExLVxcdGlmICghbDJ4MF9wbXUpIHtcXG4tLVxcbmFyY2gvYXJtL21tL2NhY2hlLXVuaXBoaWVyLmM9MzE1PXN0YXRpYyBpbnQgX19pbml0IF9fdW5pcGhpZXJfY2FjaGVfaW5pdChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLFxcbi0tXFxuYXJjaC9hcm0vbW0vY2FjaGUtdW5pcGhpZXIuYy0zNDQtXFxuYXJjaC9hcm0vbW0vY2FjaGUtdW5pcGhpZXIuYzozNDU6XFx0ZGF0YSA9IGt6YWxsb2Nfb2JqKCpkYXRhKTtcXG5hcmNoL2FybS9tbS9jYWNoZS11bmlwaGllci5jLTM0Ni1cXHRpZiAoIWRhdGEpXFxuLS1cXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jPTUzMz1zdGF0aWMgdm9pZCAqX19kbWFfYWxsb2Moc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSwgZG1hX2FkZHJfdCAqaGFuZGxlLFxcbi0tXFxuYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYy01NjAtXFxuYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYzo1NjE6XFx0YnVmID0ga3phbGxvY19vYmooKmJ1ZixcXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jLTU2Mi1cXHRcXHRcXHQgIGdmcCBcXHUwMDI2IH4oX19HRlBfRE1BIHwgX19HRlBfRE1BMzIgfCBfX0dGUF9ISUdITUVNKSk7XFxuLS1cXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jPTE0ODc9YXJtX2lvbW11X2NyZWF0ZV9tYXBwaW5nKHN0cnVjdCBkZXZpY2UgKmRldiwgZG1hX2FkZHJfdCBiYXNlLCB1NjQgc2l6ZSlcXG4tLVxcbmFyY2gvYXJtL21tL2RtYS1tYXBwaW5nLmMtMTUwNi1cXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jOjE1MDc6XFx0bWFwcGluZyA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBkbWFfaW9tbXVfbWFwcGluZyk7XFxuYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYy0xNTA4LVxcdGlmICghbWFwcGluZylcXG4tLVxcbmFyY2gvYXJtL3hlbi9lbmxpZ2h0ZW4uYz0zMTY9aW50IF9faW5pdCBhcmNoX3hlbl91bnBvcHVsYXRlZF9pbml0KHN0cnVjdCByZXNvdXJjZSAqKnJlcylcXG4tLVxcbmFyY2gvYXJtL3hlbi9lbmxpZ2h0ZW4uYy0zNDMtXFxuYXJjaC9hcm0veGVuL2VubGlnaHRlbi5jOjM0NDpcXHRyZWdzID0ga3phbGxvY19vYmpzKCpyZWdzLCBucl9yZWcpO1xcbmFyY2gvYXJtL3hlbi9lbmxpZ2h0ZW4uYy0zNDUtXFx0aWYgKCFyZWdzKSB7XFxuLS1cXG5hcmNoL2FybS94ZW4vZW5saWdodGVuLmMtMzg3LVxcbmFyY2gvYXJtL3hlbi9lbmxpZ2h0ZW4uYzozODg6XFx0XFx0dG1wX3JlcyA9IGt6YWxsb2Nfb2JqKCp0bXBfcmVzKTtcXG5hcmNoL2FybS94ZW4vZW5saWdodGVuLmMtMzg5LVxcdFxcdGlmICghdG1wX3Jlcykge1xcbi0tXFxuYXJjaC9hcm0veGVuL3AybS5jPTE1MD1ib29sIF9fc2V0X3BoeXNfdG9fbWFjaGluZV9tdWx0aSh1bnNpZ25lZCBsb25nIHBmbixcXG4tLVxcbmFyY2gvYXJtL3hlbi9wMm0uYy0xNzgtXFxuYXJjaC9hcm0veGVuL3AybS5jOjE3OTpcXHRwMm1fZW50cnkgPSBremFsbG9jX29iaigqcDJtX2VudHJ5LCBHRlBfTk9XQUlUKTtcXG5hcmNoL2FybS94ZW4vcDJtLmMtMTgwLVxcdGlmICghcDJtX2VudHJ5KVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvdmRzby5jPTY4PXN0YXRpYyBpbnQgX19pbml0IF9fdmRzb19pbml0KGVudW0gdmRzb19hYmkgYWJpKVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvdmRzby5jLTgzLVxcbmFyY2gvYXJtNjQva2VybmVsL3Zkc28uYzo4NDpcXHR2ZHNvX3BhZ2VsaXN0ID0ga3phbGxvY19vYmpzKHN0cnVjdCBwYWdlICosIHZkc29faW5mb1thYmldLnZkc29fcGFnZXMpO1xcbmFyY2gvYXJtNjQva2VybmVsL3Zkc28uYy04NS1cXHRpZiAodmRzb19wYWdlbGlzdCA9PSBOVUxMKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vbW11LmM9NDgwPXN0YXRpYyBpbnQgc2hhcmVfcGZuX2h5cCh1NjQgcGZuKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vbW11LmMtNDkyLVxcbmFyY2gvYXJtNjQva3ZtL21tdS5jOjQ5MzpcXHR0aGlzID0ga3phbGxvY19vYmooKnRoaXMpO1xcbmFyY2gvYXJtNjQva3ZtL21tdS5jLTQ5NC1cXHRpZiAoIXRoaXMpIHtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL21tdS5jPTk4MT1pbnQga3ZtX2luaXRfc3RhZ2UyX21tdShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fczJfbW11ICptbXUsIHVuc2lnbmVkIGxvbmcgdHlwZSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL21tdS5jLTEwMDctXFxuYXJjaC9hcm02NC9rdm0vbW11LmM6MTAwODpcXHRwZ3QgPSBremFsbG9jX29iaigqcGd0LCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbmFyY2gvYXJtNjQva3ZtL21tdS5jLTEwMDktXFx0aWYgKCFwZ3QpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9tbXUuYz0xMTgwPWludCB0b3B1cF9oeXBfbWVtY2FjaGUoc3RydWN0IGt2bV9oeXBfbWVtY2FjaGUgKm1jLCB1bnNpZ25lZCBsb25nIG1pbl9wYWdlcylcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL21tdS5jLTExODUtXFx0aWYgKCFtYy1cXHUwMDNlbWFwcGluZykge1xcbmFyY2gvYXJtNjQva3ZtL21tdS5jOjExODY6XFx0XFx0bWMtXFx1MDAzZW1hcHBpbmcgPSBremFsbG9jX29iaihzdHJ1Y3QgcGt2bV9tYXBwaW5nLFxcbmFyY2gvYXJtNjQva3ZtL21tdS5jLTExODctXFx0XFx0XFx0XFx0XFx0ICBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vbW11LmM9MjUxMD1pbnQgX19pbml0IGt2bV9tbXVfaW5pdCh1MzIgaHlwX3ZhX2JpdHMpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9tbXUuYy0yNTQzLVxcbmFyY2gvYXJtNjQva3ZtL21tdS5jOjI1NDQ6XFx0aHlwX3BndGFibGUgPSBremFsbG9jX29iaigqaHlwX3BndGFibGUpO1xcbmFyY2gvYXJtNjQva3ZtL21tdS5jLTI1NDUtXFx0aWYgKCFoeXBfcGd0YWJsZSkge1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmM9MTMyNz1pbnQga3ZtX3ZjcHVfYWxsb2NhdGVfdm5jcl90bGIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmMtMTMzMi1cXHRpZiAoIXZjcHUtXFx1MDAzZWFyY2gudm5jcl90bGIpIHtcXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYzoxMzMzOlxcdFxcdHN0cnVjdCB2bmNyX3RsYiAqdnQgPSBremFsbG9jX29iaigqdmNwdS1cXHUwMDNlYXJjaC52bmNyX3RsYixcXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYy0xMzM0LVxcdFxcdFxcdFxcdFxcdFxcdCAgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL25lc3RlZC5jPTE3OTE9aW50IGt2bV9pbml0X252X3N5c3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmMtMTgwMC1cXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYzoxODAxOlxcdGt2bS1cXHUwMDNlYXJjaC5zeXNyZWdfbWFza3MgPSBremFsbG9jX29iaigqKGt2bS1cXHUwMDNlYXJjaC5zeXNyZWdfbWFza3MpLFxcbmFyY2gvYXJtNjQva3ZtL25lc3RlZC5jLTE4MDItXFx0XFx0XFx0XFx0XFx0ICAgICBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vcHRkdW1wLmM9MTE2PXN0YXRpYyBzdHJ1Y3Qga3ZtX3B0ZHVtcF9ndWVzdF9zdGF0ZSAqa3ZtX3B0ZHVtcF9wYXJzZXJfY3JlYXRlKHN0cnVjdCBrdm1fczJfbW11ICptbXUpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9wdGR1bXAuYy0xMjEtXFxuYXJjaC9hcm02NC9rdm0vcHRkdW1wLmM6MTIyOlxcdHN0ID0ga3phbGxvY19vYmooc3RydWN0IGt2bV9wdGR1bXBfZ3Vlc3Rfc3RhdGUsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuYXJjaC9hcm02NC9rdm0vcHRkdW1wLmMtMTIzLVxcdGlmICghc3QpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jPTIwNz1zdGF0aWMgaW50IGt2bV92Z2ljX2Rpc3RfaW5pdChzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGludCBucl9zcGlzKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYy0yMTMtXFx0ZGlzdC1cXHUwMDNlYWN0aXZlX3NwaXMgPSAoYXRvbWljX3QpQVRPTUlDX0lOSVQoMCk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYzoyMTQ6XFx0ZGlzdC1cXHUwMDNlc3BpcyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgdmdpY19pcnEsIG5yX3NwaXMsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYy0yMTUtXFx0aWYgKCFkaXN0LVxcdTAwM2VzcGlzKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYz0zMTY9c3RhdGljIGludCB2Z2ljX2FsbG9jYXRlX3ByaXZhdGVfaXJxc19sb2NrZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgdHlwZSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmMtMzMxLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmM6MzMyOlxcdHZnaWNfY3B1LVxcdTAwM2Vwcml2YXRlX2lycXMgPSBremFsbG9jX29ianMoc3RydWN0IHZnaWNfaXJxLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmMtMzMzLVxcdFxcdFxcdFxcdFxcdCAgICAgIG51bV9wcml2YXRlX2lycXMsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXJxZmQuYz0xNDI9aW50IGt2bV92Z2ljX3NldHVwX2RlZmF1bHRfaXJxX3JvdXRpbmcoc3RydWN0IGt2bSAqa3ZtKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWlycWZkLmMtMTQ4LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pcnFmZC5jOjE0OTpcXHRlbnRyaWVzID0ga3phbGxvY19vYmpzKCplbnRyaWVzLCBuciwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXJxZmQuYy0xNTAtXFx0aWYgKCFlbnRyaWVzKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTc2PXN0YXRpYyBzdHJ1Y3QgdmdpY19pcnEgKnZnaWNfYWRkX2xwaShzdHJ1Y3Qga3ZtICprdm0sIHUzMiBpbnRpZCxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy04Ny1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6ODg6XFx0aXJxID0ga3phbGxvY19vYmooc3RydWN0IHZnaWNfaXJxLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy04OS1cXHRpZiAoIWlycSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz05NjA9c3RhdGljIGludCB2Z2ljX2l0c19hbGxvY19jb2xsZWN0aW9uKHN0cnVjdCB2Z2ljX2l0cyAqaXRzLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTk2NS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6OTY2OlxcdGNvbGxlY3Rpb24gPSBremFsbG9jX29iaigqY29sbGVjdGlvbiwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtOTY3LVxcdGlmICghY29sbGVjdGlvbilcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xMDA0PXN0YXRpYyBzdHJ1Y3QgaXRzX2l0ZSAqdmdpY19pdHNfYWxsb2NfaXRlKHN0cnVjdCBpdHNfZGV2aWNlICpkZXZpY2UsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTAwOS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTAxMDpcXHRpdGUgPSBremFsbG9jX29iaigqaXRlLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xMDExLVxcdGlmICghaXRlKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTExMzE9c3RhdGljIHN0cnVjdCBpdHNfZGV2aWNlICp2Z2ljX2l0c19hbGxvY19kZXZpY2Uoc3RydWN0IHZnaWNfaXRzICppdHMsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTEzNi1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTEzNzpcXHRkZXZpY2UgPSBremFsbG9jX29iaigqZGV2aWNlLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xMTM4LVxcdGlmICghZGV2aWNlKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTE4NDQ9c3RhdGljIGludCB2Z2ljX2l0c19jcmVhdGUoc3RydWN0IGt2bV9kZXZpY2UgKmRldiwgdTMyIHR5cGUpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTg1MS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTg1MjpcXHRpdHMgPSBremFsbG9jX29iaihzdHJ1Y3QgdmdpY19pdHMsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE4NTMtXFx0aWYgKCFpdHMpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jPTg4Nj1zdGF0aWMgaW50IHZnaWNfdjNfYWxsb2NfcmVkaXN0X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sIHVpbnQzMl90IGluZGV4LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy05MzEtXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo5MzI6XFx0cmRyZWcgPSBremFsbG9jX29iaigqcmRyZWcsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy05MzMtXFx0aWYgKCFyZHJlZylcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy12NC5jPTI0Mj1pbnQgdmdpY192NF9pbml0KHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy12NC5jLTI1OC1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjQuYzoyNTk6XFx0ZGlzdC1cXHUwMDNlaXRzX3ZtLnZwZXMgPSBremFsbG9jX29ianMoKmRpc3QtXFx1MDAzZWl0c192bS52cGVzLCBucl92Y3B1cyxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjQuYy0yNjAtXFx0XFx0XFx0XFx0XFx0IEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuLS1cXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYz0yMDgwPXN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuLS1cXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0yMTAxLVxcdGlmICghaml0X2RhdGEpIHtcXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYzoyMTAyOlxcdFxcdGppdF9kYXRhID0ga3phbGxvY19vYmooKmppdF9kYXRhKTtcXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0yMTAzLVxcdFxcdGlmICghaml0X2RhdGEpXFxuLS1cXG5hcmNoL2Nza3kva2VybmVsL3Zkc28uYz0xNz1zdGF0aWMgaW50IF9faW5pdCB2ZHNvX2luaXQodm9pZClcXG4tLVxcbmFyY2gvY3NreS9rZXJuZWwvdmRzby5jLTIyLVxcdHZkc29fcGFnZWxpc3QgPVxcbmFyY2gvY3NreS9rZXJuZWwvdmRzby5jOjIzOlxcdFxcdGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgcGFnZSAqLCB2ZHNvX3BhZ2VzKTtcXG5hcmNoL2Nza3kva2VybmVsL3Zkc28uYy0yNC1cXHRpZiAodW5saWtlbHkodmRzb19wYWdlbGlzdCA9PSBOVUxMKSkge1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva2VybmVsL3NldHVwLmM9NDY2PXN0YXRpYyBpbnQgX19pbml0IGFkZF9sZWdhY3lfaXNhX2lvKHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvc2V0dXAuYy00NzItXFxuYXJjaC9sb29uZ2FyY2gva2VybmVsL3NldHVwLmM6NDczOlxcdHJhbmdlID0ga3phbGxvY19vYmooKnJhbmdlLCBHRlBfQVRPTUlDKTtcXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvc2V0dXAuYy00NzQtXFx0aWYgKCFyYW5nZSlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC92ZHNvLmM9NDU9c3RhdGljIGludCBfX2luaXQgaW5pdF92ZHNvKHZvaWQpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvdmRzby5jLTU1LVxcdHZkc29faW5mby5jb2RlX21hcHBpbmcucGFnZXMgPVxcbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC92ZHNvLmM6NTY6XFx0XFx0a3phbGxvY19vYmpzKHN0cnVjdCBwYWdlICosIHZkc29faW5mby5zaXplIC8gUEFHRV9TSVpFKTtcXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvdmRzby5jLTU3LVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jPTYxND1zdGF0aWMgaW50IGt2bV9laW9pbnRjX2NyZWF0ZShzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LCB1MzIgdHlwZSlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02MjQtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjYyNTpcXHRzID0ga3phbGxvY19vYmooc3RydWN0IGxvb25nYXJjaF9laW9pbnRjKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjI2LVxcdGlmICghcylcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2lwaS5jPTM5ND1zdGF0aWMgaW50IGt2bV9pcGlfY3JlYXRlKHN0cnVjdCBrdm1fZGV2aWNlICpkZXYsIHUzMiB0eXBlKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvaXBpLmMtNDExLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2lwaS5jOjQxMjpcXHRzID0ga3phbGxvY19vYmooc3RydWN0IGxvb25nYXJjaF9pcGkpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2lwaS5jLTQxMy1cXHRpZiAoIXMpXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDE4OjIyOjM5LjM2NTk0MzIxMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg5NjkwNDAwNDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNYWNybyBSZWZhY3RvcmluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5IHNlZSB0aGUgY2hhbmdlcyBhcmUgYWxsIGFib3V0IHJlcGxhY2luZyBzdGFuZGFyZCBhbGxvY2F0aW9uIGZ1bmN0aW9ucyB3aXRoIHRoZXNlIGBremFsbG9jX29iamAgYW5kIGBrdm1hbGxvY19vYmpzYCBtYWNyb3MuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgcHVyZWx5IHN5bnRhY3RpYyDigJMgYSByZWZhY3RvcmluZyBmb3IgY29kZSBjbGFyaXR5IG9yIHBlcmhhcHMgdG8gbGV2ZXJhZ2Ugc29tZSBpbnRlcm5hbCBrZXJuZWwgYWxsb2NhdGlvbiBvcHRpbWl6YXRpb24uIFRoZXJlJ3Mgbm8gaW1tZWRpYXRlbHkgb2J2aW91cyBjaGFuZ2UgaW4gdGhlICpsb2dpYyogb2YgdGhlIGNvZGUuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJ20gZ29pbmcgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCBhc3N1bXB0aW9uLiBMb29raW5nIGF0IHRoZSBkaWZmLCBpdCdzIHByZXR0eSBjbGVhcjogYGt6YWxsb2Moc2l6ZW9mKCp0KSwgR0ZQX0tFUk5FTClgIGlzIG5vdyBga3phbGxvY19vYmooKnQpYCwgYW5kIGBrdm1hbGxvY19hcnJheShzY291bnRzLCBzaXplb2YoKnQtXHUwMDNlc2VxYyksIEdGUF9LRVJORUwpYCBpcyBub3cgYGt2bWFsbG9jX29ianMoKnQtXHUwMDNlc2VxYywgc2NvdW50cylgLiBObyBmdW5jdGlvbmFsIGNoYW5nZXMgaGVyZS5cblxuTm93LCBsZXQncyBqdXN0IGNvbmZpcm0gdGhhdCB0aGlzIG1hY3JvIGJlaGF2ZXMgYXMgZXhwZWN0ZWQuIExldCBtZSBzZWUuLi4gYGt2bWFsbG9jX2FycmF5YCB0YWtlcyBgKHNpemVfdCBuLCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpYCwgd2hpbGUgYGt2bWFsbG9jX29ianNgIHByb2JhYmx5IGluZmVycyB0aGUgYHNpemVvZihvYmopYCB3aXRoaW4gdGhlIG1hY3JvIGFuZCBsaWtlbHkgZGVmYXVsdHMgdG8gYSBgR0ZQX0tFUk5FTGAgZXF1aXZhbGVudC4gU28gdGhlIG5ldyBtYWNybyAqbWlnaHQqIGJlaGF2ZSBsaWtlIGBrdm1hbGxvY19hcnJheShuLCBzaXplb2Yob2JqKSwgR0ZQX0tFUk5FTClgLlxuXG5Db25zaWRlcmluZyBhbGwgb2YgdGhpcywgYmVjYXVzZSBpdCBpcyAqanVzdCogYSBtYWNybyByZXBsYWNlbWVudCwgdGhpcyBkb2Vzbid0IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgYmVoYXZpb3IgdG8gdGhlIGtlcm5lbC4gVGhlcmVmb3JlLCBteSBhc3Nlc3NtZW50IGlzIHRoYXQgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGRlZmluaXRlbHkgYmUgYGZhbHNlYCBpbiB0aGlzIGNhc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNjgzLCJPdXRwdXRUb2tlbnMiOjg0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDE4OjIyOjQ4LjMzNDk4NjA4OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA5NzQzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IHJlcGxhY2VzIHN0YW5kYXJkIG1lbW9yeSBhbGxvY2F0aW9uIGZ1bmN0aW9ucyAoa3phbGxvYywga3ZtYWxsb2NfYXJyYXkpIHdpdGggdGhlaXIgbWFjcm8gZXF1aXZhbGVudHMgKGt6YWxsb2Nfb2JqLCBrdm1hbGxvY19vYmpzKS4gVGhpcyBpcyBhIHB1cmVseSBzeW50YWN0aWMgcmVmYWN0b3JpbmcgdGhhdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGxvZ2ljIG9mIHRoZSBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IHJlcGxhY2VzIHN0YW5kYXJkIG1lbW9yeSBhbGxvY2F0aW9uIGZ1bmN0aW9ucyAoa3phbGxvYywga3ZtYWxsb2NfYXJyYXkpIHdpdGggdGhlaXIgbWFjcm8gZXF1aXZhbGVudHMgKGt6YWxsb2Nfb2JqLCBrdm1hbGxvY19vYmpzKS4gVGhpcyBpcyBhIHB1cmVseSBzeW50YWN0aWMgcmVmYWN0b3JpbmcgdGhhdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGxvZ2ljIG9mIHRoZSBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjt686[1] Phase: Running StartedAt: 2026-07-16 18:22:59 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjt686[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-16 18:22:59 +0000 UTC FinishedAt: 2026-07-16 18:23:08 +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,}