Name: series-workflowdjcs7 Phase: Failed StartedAt: 2026-09-05 14:26:08 +0000 UTC FinishedAt: 2026-09-05 14:29:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdjcs7[0] Phase: Succeeded StartedAt: 2026-09-05 14:26:08 +0000 UTC FinishedAt: 2026-09-05 14:29:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdjcs7[0].run-triage Phase: Succeeded StartedAt: 2026-09-05 14:26:08 +0000 UTC FinishedAt: 2026-09-05 14:29: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+CgkJCTx0ZD4yMDI2LzA5LzA1IDE0OjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBkaXN0aW5ndWlzaGluZyB0aGUgS1NaOTg5N1MgRXRoZXJuZXQgc3dpdGNoIHZhcmlhbnQgd2l0aGluIHRoZSBNaWNyb2NoaXAgS1NaIHN3aXRjaCBEU0EgZHJpdmVyIChkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwLykuIFRoaXMgZHJpdmVyIGludGVyYWN0cyB3aXRoIGRpc2NyZXRlIHBoeXNpY2FsIE1pY3JvY2hpcCBzd2l0Y2ggQVNJQ3Mgb3ZlciBJMkMvU1BJL1NNSSBidXNlcy4gQmVjYXVzZSB0aGUgcmVxdWlyZWQgcGh5c2ljYWwgaGFyZHdhcmUgaXMgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKGUuZy4sIFFFTVUgYW1kNjQpLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE0OjI4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMDZlZmM2MDY5NWQyODAzNDk3MzJiODliMmRjM2Q3YzIxYzgzYjU4MFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgU2VwIDUgMTQ6Mjg6NTIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uY1xuaW5kZXggMWE5ZDZmODNhMDIzMi4uODE3OThhOWZhNjcxZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uY1xuQEAgLTE0ODYsNiAmIzQzOzE0ODYsNDEgQEAgY29uc3Qgc3RydWN0IGtzel9jaGlwX2RhdGEga3N6X3N3aXRjaF9jaGlwc1tdID0ge1xuIFx0XHQuZ2JpdF9jYXBhYmxlXHQ9IHt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlfSxcbiBcdH0sXG4gXG4mIzQzO1x0W0tTWjk4OTdTXSA9IHtcbiYjNDM7XHRcdC5jaGlwX2lkID0gS1NaOTg5N1NfQ0hJUF9JRCxcbiYjNDM7XHRcdC5kZXZfbmFtZSA9IFwmIzM0O0tTWjk4OTdTXCYjMzQ7LFxuJiM0MztcdFx0Lm51bV92bGFucyA9IDQwOTYsXG4mIzQzO1x0XHQubnVtX2FsdXMgPSA0MDk2LFxuJiM0MztcdFx0Lm51bV9zdGF0aWNzID0gMTYsXG4mIzQzO1x0XHQuY3B1X3BvcnRzID0gMHg3RixcdC8qIGNhbiBiZSBjb25maWd1cmVkIGFzIGNwdSBwb3J0ICovXG4mIzQzO1x0XHQucG9ydF9jbnQgPSA3LFx0XHQvKiB0b3RhbCBwaHlzaWNhbCBwb3J0IGNvdW50ICovXG4mIzQzO1x0XHQucG9ydF9uaXJxcyA9IDIsXG4mIzQzO1x0XHQubnVtX3R4X3F1ZXVlcyA9IDQsXG4mIzQzO1x0XHQubnVtX2lwbXMgPSA4LFxuJiM0MztcdFx0Lm9wcyA9IFx1MDAyNmtzejk0NzdfZGV2X29wcyxcbiYjNDM7XHRcdC5zd2l0Y2hfb3BzID0gXHUwMDI2a3N6OTQ3N19zd2l0Y2hfb3BzLFxuJiM0MztcdFx0LnBoeWxpbmtfbWFjX29wcyA9IFx1MDAyNmtzejk0NzdfcGh5bGlua19tYWNfb3BzLFxuJiM0MztcdFx0LnBoeV9lcnJhdGFfOTQ3NyA9IHRydWUsXG4mIzQzO1x0XHQubWliX25hbWVzID0ga3N6OTQ3N19taWJfbmFtZXMsXG4mIzQzO1x0XHQubWliX2NudCA9IEFSUkFZX1NJWkUoa3N6OTQ3N19taWJfbmFtZXMpLFxuJiM0MztcdFx0LnJlZ19taWJfY250ID0gTUlCX0NPVU5URVJfTlVNLFxuJiM0MztcdFx0LnJlZ3MgPSBrc3o5NDc3X3JlZ3MsXG4mIzQzO1x0XHQubWFza3MgPSBrc3o5NDc3X21hc2tzLFxuJiM0MztcdFx0LnNoaWZ0cyA9IGtzejk0Nzdfc2hpZnRzLFxuJiM0MztcdFx0LnhtaWlfY3RybDAgPSBrc3o5NDc3X3htaWlfY3RybDAsXG4mIzQzO1x0XHQueG1paV9jdHJsMSA9IGtzejk0NzdfeG1paV9jdHJsMSxcbiYjNDM7XHRcdC5zdXBwb3J0c19taWlcdD0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLFxuJiM0MztcdFx0XHRcdCAgIGZhbHNlLCB0cnVlLCBmYWxzZX0sXG4mIzQzO1x0XHQuc3VwcG9ydHNfcm1paVx0PSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsXG4mIzQzO1x0XHRcdFx0ICAgZmFsc2UsIHRydWUsIGZhbHNlfSxcbiYjNDM7XHRcdC5zdXBwb3J0c19yZ21paSA9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxcbiYjNDM7XHRcdFx0XHQgICBmYWxzZSwgdHJ1ZSwgZmFsc2V9LFxuJiM0MztcdFx0LmludGVybmFsX3BoeVx0PSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSxcbiYjNDM7XHRcdFx0XHQgICB0cnVlLCBmYWxzZSwgZmFsc2V9LFxuJiM0MztcdFx0LmdiaXRfY2FwYWJsZVx0PSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZX0sXG4mIzQzO1x0XHQuc2dtaWlfcG9ydCA9IDcsXG4mIzQzO1x0fSxcbiYjNDM7XG4gXHRbS1NaOTg5M10gPSB7XG4gXHRcdC5jaGlwX2lkID0gS1NaOTg5M19DSElQX0lELFxuIFx0XHQuZGV2X25hbWUgPSBcJiMzNDtLU1o5ODkzXCYjMzQ7LFxuQEAgLTM4OTcsNiAmIzQzOzM5MzIsNyBAQCBpbnQga3N6X3N3aXRjaF9yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuIFx0c3RydWN0IGRldmljZV9ub2RlICpwb3J0cztcbiBcdHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2U7XG4gXHR1bnNpZ25lZCBpbnQgcG9ydF9udW07XG4mIzQzO1x0dTMyIGxvb2t1cF9jaGlwX2lkO1xuIFx0aW50IHJldDtcbiBcdGludCBpO1xuIFxuQEAgLTM5MzMsNyAmIzQzOzM5NjksMzAgQEAgaW50IGtzel9zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4tXHRpbmZvID0ga3N6X2xvb2t1cF9pbmZvKGRldi1cdTAwM2VjaGlwX2lkKTtcbiYjNDM7XHRsb29rdXBfY2hpcF9pZCA9IGRldi1cdTAwM2VjaGlwX2lkO1xuJiM0MztcbiYjNDM7XHQvKiBUaGUgS1NaOTg5N1MgYW5kIHRoZSBLU1o5ODk3UiByZXBvcnQgdGhlIHNhbWUgY2hpcCBJRCBhbmQgZGlmZmVyXG4mIzQzO1x0ICogb25seSBpbiBjaGlwX2RhdGE6IG9ubHkgdGhlIFMgaGFzIHRoZSBTR01JSSBwb3J0IDcsIHRoZSBSIGhhcyBhXG4mIzQzO1x0ICogc2Vjb25kIFJHTUlJIHBvcnQgaW5zdGVhZC4gQml0IDcgb2YgdGhlIHBvcnQgNyBYTUlJIGNvbnRyb2wgMFxuJiM0MztcdCAqIHJlZ2lzdGVyIGlzIHJlYWQtb25seSBhbmQgdGVsbHMgdGhlbSBhcGFydDsgaXQgcmVhZHMgb25lIG9uIHRoZSBTLlxuJiM0MztcdCAqIENvbXBhcmUgdGhlIEtTWjk4OTdTIGRhdGEgc2hlZXQgRFMwMDAwMjM5NEMgc2VjdGlvbiA1LjIuNC4xIHdpdGhcbiYjNDM7XHQgKiB0aGUgS1NaOTg5N1IgZGF0YSBzaGVldCBEUzAwMDAyMzMwRCBzZWN0aW9uIDUuMi4zLjEuXG4mIzQzO1x0ICpcbiYjNDM7XHQgKiBPbmx5IHRoZSBjaGlwX2RhdGEgZW50cnkgZGlmZmVycywgc28gZGV2LVx1MDAzZWNoaXBfaWQga2VlcHMgdGhlIHNoYXJlZFxuJiM0MztcdCAqIGNoaXAgSUQgYW5kIG5vdGhpbmcgZWxzZSBoYXMgdG8ga25vdyBhYm91dCB0aGUgdmFyaWFudC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoZGV2LVx1MDAzZWNoaXBfaWQgPT0gS1NaOTg5N19DSElQX0lEKSB7XG4mIzQzO1x0XHR1OCB2YWw7XG4mIzQzO1xuJiM0MztcdFx0cmV0ID0ga3N6X3JlYWQ4KGRldiwgS1NaOTg5N19SRUdfUE9SVDdfWE1JSV9DVFJMXzAsIFx1MDAyNnZhbCk7XG4mIzQzO1x0XHRpZiAocmV0KVxuJiM0MztcdFx0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHRcdGlmICh2YWwgXHUwMDI2IEtTWjk4OTdfUE9SVDdfU0dNSUlfU0VMKVxuJiM0MztcdFx0XHRsb29rdXBfY2hpcF9pZCA9IEtTWjk4OTdTX0NISVBfSUQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpbmZvID0ga3N6X2xvb2t1cF9pbmZvKGxvb2t1cF9jaGlwX2lkKTtcbiBcdGlmICghaW5mbylcbiBcdFx0cmV0dXJuIC1FTk9ERVY7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmggYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaFxuaW5kZXggY2JlOTg0OTQ1NzhjMy4uMGNmZjMzZGYwNmE0YiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaFxuQEAgLTI4NCw2ICYjNDM7Mjg0LDcgQEAgZW51bSBrc3pfbW9kZWwge1xuIFx0S1NaOTQ3NyxcbiBcdEtTWjk4OTYsXG4gXHRLU1o5ODk3LFxuJiM0MztcdEtTWjk4OTdTLFxuIFx0S1NaOTg5MyxcbiBcdEtTWjk1NjMsXG4gXHRLU1o5NTY3LFxuQEAgLTg3NCw2ICYjNDM7ODc1LDEwIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBrc3pfaXNfc2dtaWlfcG9ydChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydClcbiAjZGVmaW5lIFNLVV9JRF9LU1o4NTYzXHRcdFx0MHgzY1xuICNkZWZpbmUgU0tVX0lEX0tTWjk1NjNcdFx0XHQweDFjXG4gXG4mIzQzOy8qIEtTWjk4OTcgc3BlY2lmaWMgcmVnaXN0ZXI6IHBvcnQgNyBYTUlJIGNvbnRyb2wgMCAqL1xuJiM0MzsjZGVmaW5lIEtTWjk4OTdfUkVHX1BPUlQ3X1hNSUlfQ1RSTF8wXHQweDczMDBcbiYjNDM7I2RlZmluZSBLU1o5ODk3X1BPUlQ3X1NHTUlJX1NFTFx0XHRCSVQoNylcbiYjNDM7XG4gLyogRHJpdmVyIHNldCBzd2l0Y2ggYnJvYWRjYXN0IHN0b3JtIHByb3RlY3Rpb24gYXQgMTAlIHJhdGUuICovXG4gI2RlZmluZSBCUk9BRENBU1RfU1RPUk1fUFJPVF9SQVRFXHQxMFxuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9taWNyb2NoaXAta3N6LmggYi9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbWljcm9jaGlwLWtzei5oXG5pbmRleCAwMjg3ODFhZDQwNTkzLi5mZThkZjE3NzQyODljIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaFxuQEAgLTM0LDYgJiM0MzszNCw3IEBAIGVudW0ga3N6X2NoaXBfaWQge1xuIFx0S1NaOTQ3N19DSElQX0lEID0gMHgwMDk0NzcwMCxcbiBcdEtTWjk4OTZfQ0hJUF9JRCA9IDB4MDA5ODk2MDAsXG4gXHRLU1o5ODk3X0NISVBfSUQgPSAweDAwOTg5NzAwLFxuJiM0MztcdEtTWjk4OTdTX0NISVBfSUQgPSAweDAwOTg5NzAxLFxuIFx0S1NaOTg5M19DSElQX0lEID0gMHgwMDk4OTMwMCxcbiBcdEtTWjk1NjNfQ0hJUF9JRCA9IDB4MDA5NTYzMDAsXG4gXHRLU1o4NTY3X0NISVBfSUQgPSAweDAwODU2NzAwLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE0OjI4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgZGlzdGluZ3Vpc2hpbmcgdGhlIEtTWjk4OTdTIEV0aGVybmV0IHN3aXRjaCB2YXJpYW50IHdpdGhpbiB0aGUgTWljcm9jaGlwIEtTWiBzd2l0Y2ggRFNBIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC8pLiBUaGlzIGRyaXZlciBpbnRlcmFjdHMgd2l0aCBkaXNjcmV0ZSBwaHlzaWNhbCBNaWNyb2NoaXAgc3dpdGNoIEFTSUNzIG92ZXIgSTJDL1NQSS9TTUkgYnVzZXMuIEJlY2F1c2UgdGhlIHJlcXVpcmVkIHBoeXNpY2FsIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChlLmcuLCBRRU1VIGFtZDY0KSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDA2ZWZjNjA2OTVkMjgwMzQ5NzMyYjg5YjJkYzNkN2MyMWM4M2I1ODAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IFNlcCA1IDE0OjI4OjUyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYwppbmRleCAxYTlkNmY4M2EwMjMyLi44MTc5OGE5ZmE2NzFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYwpAQCAtMTQ4Niw2ICYjNDM7MTQ4Niw0MSBAQCBjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSBrc3pfc3dpdGNoX2NoaXBzW10gPSB7CiAJCS5nYml0X2NhcGFibGUJPSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZX0sCiAJfSwKIAomIzQzOwlbS1NaOTg5N1NdID0gewomIzQzOwkJLmNoaXBfaWQgPSBLU1o5ODk3U19DSElQX0lELAomIzQzOwkJLmRldl9uYW1lID0gJiMzNDtLU1o5ODk3UyYjMzQ7LAomIzQzOwkJLm51bV92bGFucyA9IDQwOTYsCiYjNDM7CQkubnVtX2FsdXMgPSA0MDk2LAomIzQzOwkJLm51bV9zdGF0aWNzID0gMTYsCiYjNDM7CQkuY3B1X3BvcnRzID0gMHg3RiwJLyogY2FuIGJlIGNvbmZpZ3VyZWQgYXMgY3B1IHBvcnQgKi8KJiM0MzsJCS5wb3J0X2NudCA9IDcsCQkvKiB0b3RhbCBwaHlzaWNhbCBwb3J0IGNvdW50ICovCiYjNDM7CQkucG9ydF9uaXJxcyA9IDIsCiYjNDM7CQkubnVtX3R4X3F1ZXVlcyA9IDQsCiYjNDM7CQkubnVtX2lwbXMgPSA4LAomIzQzOwkJLm9wcyA9ICZhbXA7a3N6OTQ3N19kZXZfb3BzLAomIzQzOwkJLnN3aXRjaF9vcHMgPSAmYW1wO2tzejk0Nzdfc3dpdGNoX29wcywKJiM0MzsJCS5waHlsaW5rX21hY19vcHMgPSAmYW1wO2tzejk0NzdfcGh5bGlua19tYWNfb3BzLAomIzQzOwkJLnBoeV9lcnJhdGFfOTQ3NyA9IHRydWUsCiYjNDM7CQkubWliX25hbWVzID0ga3N6OTQ3N19taWJfbmFtZXMsCiYjNDM7CQkubWliX2NudCA9IEFSUkFZX1NJWkUoa3N6OTQ3N19taWJfbmFtZXMpLAomIzQzOwkJLnJlZ19taWJfY250ID0gTUlCX0NPVU5URVJfTlVNLAomIzQzOwkJLnJlZ3MgPSBrc3o5NDc3X3JlZ3MsCiYjNDM7CQkubWFza3MgPSBrc3o5NDc3X21hc2tzLAomIzQzOwkJLnNoaWZ0cyA9IGtzejk0Nzdfc2hpZnRzLAomIzQzOwkJLnhtaWlfY3RybDAgPSBrc3o5NDc3X3htaWlfY3RybDAsCiYjNDM7CQkueG1paV9jdHJsMSA9IGtzejk0NzdfeG1paV9jdHJsMSwKJiM0MzsJCS5zdXBwb3J0c19taWkJPSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCiYjNDM7CQkJCSAgIGZhbHNlLCB0cnVlLCBmYWxzZX0sCiYjNDM7CQkuc3VwcG9ydHNfcm1paQk9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKJiM0MzsJCQkJICAgZmFsc2UsIHRydWUsIGZhbHNlfSwKJiM0MzsJCS5zdXBwb3J0c19yZ21paSA9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKJiM0MzsJCQkJICAgZmFsc2UsIHRydWUsIGZhbHNlfSwKJiM0MzsJCS5pbnRlcm5hbF9waHkJPSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwKJiM0MzsJCQkJICAgdHJ1ZSwgZmFsc2UsIGZhbHNlfSwKJiM0MzsJCS5nYml0X2NhcGFibGUJPSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZX0sCiYjNDM7CQkuc2dtaWlfcG9ydCA9IDcsCiYjNDM7CX0sCiYjNDM7CiAJW0tTWjk4OTNdID0gewogCQkuY2hpcF9pZCA9IEtTWjk4OTNfQ0hJUF9JRCwKIAkJLmRldl9uYW1lID0gJiMzNDtLU1o5ODkzJiMzNDssCkBAIC0zODk3LDYgJiM0MzszOTMyLDcgQEAgaW50IGtzel9zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldikKIAlzdHJ1Y3QgZGV2aWNlX25vZGUgKnBvcnRzOwogCXBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2U7CiAJdW5zaWduZWQgaW50IHBvcnRfbnVtOwomIzQzOwl1MzIgbG9va3VwX2NoaXBfaWQ7CiAJaW50IHJldDsKIAlpbnQgaTsKIApAQCAtMzkzMyw3ICYjNDM7Mzk2OSwzMCBAQCBpbnQga3N6X3N3aXRjaF9yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KQogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlpbmZvID0ga3N6X2xvb2t1cF9pbmZvKGRldi0mZ3Q7Y2hpcF9pZCk7CiYjNDM7CWxvb2t1cF9jaGlwX2lkID0gZGV2LSZndDtjaGlwX2lkOwomIzQzOwomIzQzOwkvKiBUaGUgS1NaOTg5N1MgYW5kIHRoZSBLU1o5ODk3UiByZXBvcnQgdGhlIHNhbWUgY2hpcCBJRCBhbmQgZGlmZmVyCiYjNDM7CSAqIG9ubHkgaW4gY2hpcF9kYXRhOiBvbmx5IHRoZSBTIGhhcyB0aGUgU0dNSUkgcG9ydCA3LCB0aGUgUiBoYXMgYQomIzQzOwkgKiBzZWNvbmQgUkdNSUkgcG9ydCBpbnN0ZWFkLiBCaXQgNyBvZiB0aGUgcG9ydCA3IFhNSUkgY29udHJvbCAwCiYjNDM7CSAqIHJlZ2lzdGVyIGlzIHJlYWQtb25seSBhbmQgdGVsbHMgdGhlbSBhcGFydDsgaXQgcmVhZHMgb25lIG9uIHRoZSBTLgomIzQzOwkgKiBDb21wYXJlIHRoZSBLU1o5ODk3UyBkYXRhIHNoZWV0IERTMDAwMDIzOTRDIHNlY3Rpb24gNS4yLjQuMSB3aXRoCiYjNDM7CSAqIHRoZSBLU1o5ODk3UiBkYXRhIHNoZWV0IERTMDAwMDIzMzBEIHNlY3Rpb24gNS4yLjMuMS4KJiM0MzsJICoKJiM0MzsJICogT25seSB0aGUgY2hpcF9kYXRhIGVudHJ5IGRpZmZlcnMsIHNvIGRldi0mZ3Q7Y2hpcF9pZCBrZWVwcyB0aGUgc2hhcmVkCiYjNDM7CSAqIGNoaXAgSUQgYW5kIG5vdGhpbmcgZWxzZSBoYXMgdG8ga25vdyBhYm91dCB0aGUgdmFyaWFudC4KJiM0MzsJICovCiYjNDM7CWlmIChkZXYtJmd0O2NoaXBfaWQgPT0gS1NaOTg5N19DSElQX0lEKSB7CiYjNDM7CQl1OCB2YWw7CiYjNDM7CiYjNDM7CQlyZXQgPSBrc3pfcmVhZDgoZGV2LCBLU1o5ODk3X1JFR19QT1JUN19YTUlJX0NUUkxfMCwgJmFtcDt2YWwpOwomIzQzOwkJaWYgKHJldCkKJiM0MzsJCQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwkJaWYgKHZhbCAmYW1wOyBLU1o5ODk3X1BPUlQ3X1NHTUlJX1NFTCkKJiM0MzsJCQlsb29rdXBfY2hpcF9pZCA9IEtTWjk4OTdTX0NISVBfSUQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJaW5mbyA9IGtzel9sb29rdXBfaW5mbyhsb29rdXBfY2hpcF9pZCk7CiAJaWYgKCFpbmZvKQogCQlyZXR1cm4gLUVOT0RFVjsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmggYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaAppbmRleCBjYmU5ODQ5NDU3OGMzLi4wY2ZmMzNkZjA2YTRiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaApAQCAtMjg0LDYgJiM0MzsyODQsNyBAQCBlbnVtIGtzel9tb2RlbCB7CiAJS1NaOTQ3NywKIAlLU1o5ODk2LAogCUtTWjk4OTcsCiYjNDM7CUtTWjk4OTdTLAogCUtTWjk4OTMsCiAJS1NaOTU2MywKIAlLU1o5NTY3LApAQCAtODc0LDYgJiM0Mzs4NzUsMTAgQEAgc3RhdGljIGlubGluZSBib29sIGtzel9pc19zZ21paV9wb3J0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0KQogI2RlZmluZSBTS1VfSURfS1NaODU2MwkJCTB4M2MKICNkZWZpbmUgU0tVX0lEX0tTWjk1NjMJCQkweDFjCiAKJiM0MzsvKiBLU1o5ODk3IHNwZWNpZmljIHJlZ2lzdGVyOiBwb3J0IDcgWE1JSSBjb250cm9sIDAgKi8KJiM0MzsjZGVmaW5lIEtTWjk4OTdfUkVHX1BPUlQ3X1hNSUlfQ1RSTF8wCTB4NzMwMAomIzQzOyNkZWZpbmUgS1NaOTg5N19QT1JUN19TR01JSV9TRUwJCUJJVCg3KQomIzQzOwogLyogRHJpdmVyIHNldCBzd2l0Y2ggYnJvYWRjYXN0IHN0b3JtIHByb3RlY3Rpb24gYXQgMTAlIHJhdGUuICovCiAjZGVmaW5lIEJST0FEQ0FTVF9TVE9STV9QUk9UX1JBVEUJMTAKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaCBiL2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9taWNyb2NoaXAta3N6LmgKaW5kZXggMDI4NzgxYWQ0MDU5My4uZmU4ZGYxNzc0Mjg5YyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbWljcm9jaGlwLWtzei5oCkBAIC0zNCw2ICYjNDM7MzQsNyBAQCBlbnVtIGtzel9jaGlwX2lkIHsKIAlLU1o5NDc3X0NISVBfSUQgPSAweDAwOTQ3NzAwLAogCUtTWjk4OTZfQ0hJUF9JRCA9IDB4MDA5ODk2MDAsCiAJS1NaOTg5N19DSElQX0lEID0gMHgwMDk4OTcwMCwKJiM0MzsJS1NaOTg5N1NfQ0hJUF9JRCA9IDB4MDA5ODk3MDEsCiAJS1NaOTg5M19DSElQX0lEID0gMHgwMDk4OTMwMCwKIAlLU1o5NTYzX0NISVBfSUQgPSAweDAwOTU2MzAwLAogCUtTWjg1NjdfQ0hJUF9JRCA9IDB4MDA4NTY3MDAsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE0OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3MDMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkFuYWx5emluZyBhIEtTWiBTd2l0Y2ggRHJpdmVyIFBhdGNoKioKCkFscmlnaHQsIHRoaXMgcGF0Y2ggYWZmZWN0cyBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNgLCB0aGUgaGVhZGVyLCBhbmQgYSBwbGF0Zm9ybSBkYXRhIGluY2x1ZGUuIEltbWVkaWF0ZWx5LCBJJiMzOTttIHRoaW5raW5nIE1pY3JvY2hpcCBLU1og4oCTIHRoYXQgbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBEU0Egc3dpdGNoZXMuIFNwZWNpZmljYWxseSwgdGhpbmdzIGxpa2UgdGhlIEtTWjk4OTcsIEtTWjk0NzcsIEtTWjg3OTUsIEtTWjg4NjMsIGFsbCBzb2xpZCBwbGF5ZXJzLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBzaXplIHVwIHRoZSByZWFjaCBvZiB0aGlzIGNvZGUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gQXJlIHRoZXJlIGV2ZW4gYW55IHZpcnR1YWwgZW52aXJvbm1lbnRzIHRoYXQgd291bGQgcmVhbGlzdGljYWxseSBoaXQgdGhpcz8gUHJvYmFibHkgbm90IGRpcmVjdGx5LCBidXQgaXTigJlzIHdvcnRoIGtlZXBpbmcgaW4gbWluZCBwb3RlbnRpYWwgaW1wbGljYXRpb25zLgoKTXkgbmV4dCBzdGVwIGlzIHRvIHF1aWNrbHkgcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGF0dGFjaG1lbnQgYW5kIHByb2JlIG1lY2hhbmlzbXMgZm9yIHRoZXNlIEtTWiBzd2l0Y2hlcy4gV2UmIzM5O3JlIG1vc3QgbGlrZWx5IGxvb2tpbmcgYXQgU1BJLCBJMkMsIG9yIE1ESU8gZm9yIGNvbW11bmljYXRpb24gd2l0aCB0aGUgbWFpbiBzeXN0ZW0uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIGludGVyZmFjZXMgd2l0aCB0aGUgaGFyZHdhcmUgYW5kIGhhbmRsZXMgdGhlIERTQSBhcmNoaXRlY3R1cmUuIEdyZXBwZXIgaXMgbXkgZnJpZW5kIGhlcmUuIFRpbWUgdG8gZGl2ZSBpbnRvIGBkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2AgYW5kIHNlZSB3aGF0IHRoZSBkcml2ZXIgaXMgZG9pbmcgYXQgaXRzIGNvcmUuIEnigJlsbCBiZSBsb29raW5nIGZvciBjbHVlcyBvbiBob3cgdGhlIGRyaXZlciBoYW5kbGVzIGRldmljZSBlbnVtZXJhdGlvbiwgaW5pdGlhbGl6YXRpb24sIGFuZCBkYXRhIHRyYW5zZmVyLiBHb3R0YSB1bmRlcnN0YW5kIHRoZSBsb3ctbGV2ZWwgaW50ZXJhY3Rpb25zIHRvIGdhdWdlIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTQ6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3N6XyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1NjkwIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX05FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT04pXHQmIzQzOz0ga3N6X3N3aXRjaC5vXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlOjM6a3N6X3N3aXRjaC1vYmpzIDo9IGtzel9jb21tb24ubyBrc3pfZGNiLm9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGU6NDprc3pfc3dpdGNoLW9ianMgJiM0Mzs9IGtzejk0NzcubyBrc3o5NDc3X2FjbC5vIGtzejk0NzdfdGNfZmxvd2VyLm9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGU6NTprc3pfc3dpdGNoLW9ianMgJiM0Mzs9IGtzejgub1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZTo2Omtzel9zd2l0Y2gtb2JqcyAmIzQzOz0gbGFuOTM3eF9tYWluLm9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGUtNy1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGU9OD1pZmRlZiBDT05GSUdfTkVUX0RTQV9NSUNST0NISVBfS1NaX1BUUFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZTo5Omtzel9zd2l0Y2gtb2JqcyAmIzQzOz0ga3N6X3B0cC5vXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlLTEwLWVuZGlmXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZT0xMj1vYmotJChDT05GSUdfTkVUX0RTQV9NSUNST0NISVBfS1NaOTQ3N19JMkMpXHQmIzQzOz0ga3N6OTQ3N19pMmMub1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfTkVUX0RTQV9NSUNST0NISVBfS1NaX1NQSSlcdFx0JiM0Mzs9IGtzel9zcGkub1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZS0xNC1vYmotJChDT05GSUdfTkVUX0RTQV9NSUNST0NISVBfS1NaODg2M19TTUkpXHQmIzQzOz0ga3N6ODg2M19zbWkub1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE4LSNpbmNsdWRlIFx1MDAzY2xpbnV4L2RlbGF5LmhcdTAwM2VcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjE5OiNpbmNsdWRlIFx1MDAzY2xpbnV4L2RzYS9rc3pfY29tbW9uLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTIwLSNpbmNsdWRlIFx1MDAzY2xpbnV4L2V4cG9ydC5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzMtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzozNDojaW5jbHVkZSBcJiMzNDtrc3pfY29tbW9uLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjM1OiNpbmNsdWRlIFwmIzM0O2tzel9kY2IuaFwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzYtI2luY2x1ZGUgXCYjMzQ7a3N6OF9yZWcuaFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQ5LSAqL1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTA6c3RhdGljIGNvbnN0IHN0cnVjdCBrc3pfZHJpdmVfc3RyZW5ndGgga3N6ODh4M19kcml2ZV9zdHJlbmd0aHNbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUxLVx0eyAwLCAgODAwMCB9LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jPTU1PXN0cnVjdCBrc3o4OHh4X3N0YXRzX3JhdyB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTEtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo5MjpzdGF0aWMgdm9pZCBrc3pfY2ZnKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUzMiBhZGRyLCB1OCBiaXRzLCBib29sIHNldClcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTkzLXtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjk0Olx0a3N6X3JtdzgoZGV2LCBhZGRyLCBiaXRzLCBzZXQgPyBiaXRzIDogMCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05NS19XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05Ni1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjk3OnN0YXRpYyB2b2lkIGtzel9wb3J0X2NmZyhzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydCwgaW50IG9mZnNldCwgdTggYml0cyxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTk4LVx0XHRcdCBib29sIHNldClcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTk5LXtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEwMDpcdGtzel9ybXc4KGRldiwgZGV2LVx1MDAzZWRldl9vcHMtXHUwMDNlZ2V0X3BvcnRfYWRkcihwb3J0LCBvZmZzZXQpLCBiaXRzLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTAxLVx0XHQgc2V0ID8gYml0cyA6IDApO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExMi0gKiBQTUUgc3dpdGNoIGZ1bmN0aW9uYWxpdGllcy4gQm90aCA4LWJpdCByZWdpc3RlcnMgMTEwIGFuZCAxMTEgYXJlXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMTM6ICogd3JpdHRlbiBhdCBvbmNlIHdpdGgga3N6X3dyaXRlMTYsIHVzaW5nIHRoZSBzZXJpYWwgbXVsdGlwbGUgd3JpdGVcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExNC0gKiBmdW5jdGlvbmFsaXR5LlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExNy0gKi9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjExODpzdGF0aWMgaW50IGtzejhfaW5kX3dyaXRlOChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1OCB0YWJsZSwgdTE2IGFkZHIsIHU4IGRhdGEpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTkte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEyOC1cdGN0cmxfYWRkciA9IElORF9BQ0NfVEFCTEUodGFibGUpIHwgYWRkcjtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEyOTpcdHJldCA9IGtzel93cml0ZTE2KGRldiwgcmVnc1tSRUdfSU5EX0NUUkxfMF0sIGN0cmxfYWRkcik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzAtXHRpZiAoIXJldClcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEzMTpcdFx0cmV0ID0ga3N6X3dyaXRlOChkZXYsIHJlZ3NbUkVHX0lORF9CWVRFXSwgZGF0YSk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzItXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQ2LSAqIFBNRSBzd2l0Y2ggZnVuY3Rpb25hbGl0aWVzLiBCb3RoIDgtYml0IHJlZ2lzdGVycyAxMTAgYW5kIDExMSBhcmVcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjE0NzogKiB3cml0dGVuIGF0IG9uY2Ugd2l0aCBrc3pfd3JpdGUxNiwgdXNpbmcgdGhlIHNlcmlhbCBtdWx0aXBsZSB3cml0ZVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQ4LSAqIGZ1bmN0aW9uYWxpdHkuXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTUxLSAqL1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTUyOnN0YXRpYyBpbnQga3N6OF9pbmRfcmVhZDgoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTggdGFibGUsIHUxNiBhZGRyLCB1OCAqdmFsKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTUzLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNjItXHRjdHJsX2FkZHIgPSBJTkRfQUNDX1RBQkxFKHRhYmxlIHwgVEFCTEVfUkVBRCkgfCBhZGRyO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTYzOlx0cmV0ID0ga3N6X3dyaXRlMTYoZGV2LCByZWdzW1JFR19JTkRfQ1RSTF8wXSwgY3RybF9hZGRyKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE2NC1cdGlmICghcmV0KVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTY1Olx0XHRyZXQgPSBrc3pfcmVhZDgoZGV2LCByZWdzW1JFR19JTkRfQllURV0sIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNjYtXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTcxLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTcyOnN0YXRpYyBpbnQga3N6OF9wbWVfd3JpdGU4KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUzMiByZWcsIHU4IHZhbHVlKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTczLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNzYtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNzc6c3RhdGljIGludCBrc3o4X3BtZV9wcmVhZDgoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIGludCBvZmZzZXQsIHU4ICpkYXRhKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTc4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xODMtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxODQ6c3RhdGljIGludCBrc3o4X3BtZV9wd3JpdGU4KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0LCBpbnQgb2Zmc2V0LCB1OCBkYXRhKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTg1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYz0xOTE9c3RhdGljIHZvaWQga3N6ODQ2M19pcnFfbWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmQpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xOTIte1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTkzOlx0c3RydWN0IGtzel9pcnEgKmtpcnEgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE5NC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYz0xOTg9c3RhdGljIHZvaWQga3N6ODQ2M19pcnFfdW5tYXNrKHN0cnVjdCBpcnFfZGF0YSAqZClcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE5OS17XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyMDA6XHRzdHJ1Y3Qga3N6X2lycSAqa2lycSA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjAxLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jPTIwNT1zdGF0aWMgY29uc3Qgc3RydWN0IGlycV9jaGlwIGtzejg0NjNfaXJxX2NoaXAgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjA4LVx0LmlycV91bm1hc2tcdFx0PSBrc3o4NDYzX2lycV91bm1hc2ssXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyMDk6XHQuaXJxX2J1c19sb2NrXHRcdD0ga3N6X2lycV9idXNfbG9jayxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjIxMDpcdC5pcnFfYnVzX3N5bmNfdW5sb2NrXHQ9IGtzel9pcnFfYnVzX3N5bmNfdW5sb2NrLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjExLX07XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MjIzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2RvbWFpbl9vcHMga3N6ODQ2M19pcnFfZG9tYWluX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yMjctXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyMjg6c3RhdGljIGludCBrc3o4NDYzX2dpcnFfc2V0dXAoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTIyOS17XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyMzA6XHRzdHJ1Y3Qga3N6X2lycSAqZ2lycSA9IFx1MDAyNmRldi1cdTAwM2VnaXJxO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjMxLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTIzOS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI0MDpcdHJldHVybiBrc3pfaXJxX2NvbW1vbl9zZXR1cChkZXYsIGdpcnEsIFx1MDAyNmtzejg0NjNfaXJxX2RvbWFpbl9vcHMpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjQxLX1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI0Mi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI0MzpzdGF0aWMgaW50IGtzejg0NjNfcmVzZXRfc3dpdGNoKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNDQte1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjQ1Olx0a3N6X2NmZyhkZXYsIEtTWjg0NjNfUkVHX1NXX1JFU0VULFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjQ2LVx0XHRLU1o4NDYzX0dMT0JBTF9TT0ZUV0FSRV9SRVNFVCB8IEtTWjg0NjNfUFRQX1NPRlRXQVJFX1JFU0VULFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjQ3LVx0XHR0cnVlKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI0ODpcdGtzel9jZmcoZGV2LCBLU1o4NDYzX1JFR19TV19SRVNFVCxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI0OS1cdFx0S1NaODQ2M19HTE9CQUxfU09GVFdBUkVfUkVTRVQgfCBLU1o4NDYzX1BUUF9TT0ZUV0FSRV9SRVNFVCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNTMtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNTQ6c3RhdGljIGludCBrc3o4X3Jlc2V0X3N3aXRjaChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjU1LXtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI1NjpcdGlmIChrc3pfaXNfa3N6ODh4MyhkZXYpKSB7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNTctXHRcdC8qIHJlc2V0IHN3aXRjaCAqL1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjU4Olx0XHRrc3pfY2ZnKGRldiwgS1NaODg2M19SRUdfU1dfUkVTRVQsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNTktXHRcdFx0S1NaODg2M19HTE9CQUxfU09GVFdBUkVfUkVTRVQgfCBLU1o4ODYzX1BDU19SRVNFVCwgdHJ1ZSk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNjA6XHRcdGtzel9jZmcoZGV2LCBLU1o4ODYzX1JFR19TV19SRVNFVCxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI2MS1cdFx0XHRLU1o4ODYzX0dMT0JBTF9TT0ZUV0FSRV9SRVNFVCB8IEtTWjg4NjNfUENTX1JFU0VULCBmYWxzZSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjYzLVx0XHQvKiByZXNldCBzd2l0Y2ggKi9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI2NDpcdFx0a3N6X3dyaXRlOChkZXYsIFJFR19QT1dFUl9NQU5BR0VNRU5UXzEsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNjUtXHRcdFx0ICAgU1dfU09GVFdBUkVfUE9XRVJfRE9XTiBcdTAwM2NcdTAwM2MgU1dfUE9XRVJfTUFOQUdFTUVOVF9NT0RFX1MpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjY2Olx0XHRrc3pfd3JpdGU4KGRldiwgUkVHX1BPV0VSX01BTkFHRU1FTlRfMSwgMCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNjctXHR9XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MjcyPXN0YXRpYyBpbnQga3N6ODh4eF9jaGFuZ2VfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCBtdHUpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNzMte1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6Mjc0Olx0c3RydWN0IGtzel9kZXZpY2UgKmRldiA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNzUtXHRpbnQgZnJhbWVfc2l6ZTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yODctXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyODg6XHRyZXR1cm4ga3N6X3JtdzgoZGV2LCBSRUdfU1dfQ1RSTF8yLCBLU1o4ODYzX0xFR0FMX1BBQ0tFVF9FTkFCTEUgfFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjg5LVx0XHRcdEtTWjg4NjNfSFVHRV9QQUNLRVRfRU5BQkxFLCBjdHJsMik7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MjkyPXN0YXRpYyBpbnQga3N6ODd4eF9jaGFuZ2VfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCBtdHUpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yOTMte1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6Mjk0Olx0c3RydWN0IGtzel9kZXZpY2UgKmRldiA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yOTUtXHR1OCBjdHJsMSA9IDAsIGN0cmwyID0gMDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zMDgtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzozMDk6XHRyZXQgPSBrc3pfcm13OChkZXYsIFJFR19TV19DVFJMXzEsIFNXX0hVR0VfUEFDS0VULCBjdHJsMSk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zMTAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTMxMi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjMxMzpcdHJldHVybiBrc3pfcm13OChkZXYsIFJFR19TV19DVFJMXzIsIFNXX0xFR0FMX1BBQ0tFVF9ESVNBQkxFLCBjdHJsMik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zMTQtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jPTMyMT1zdGF0aWMgaW50IGtzejg4eHhfbWF4X210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTMyNS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjMyNjpzdGF0aWMgaW50IGtzejhfcG9ydF9xdWV1ZV9zcGxpdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydCwgaW50IHF1ZXVlcylcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTMyNy17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzMzLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MzM0Olx0aWYgKGtzel9pc19rc3o4OHgzKGRldikpIHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTMzNS1cdFx0bWFza180cSA9IEtTWjg4NzNfUE9SVF80UVVFVUVfU1BMSVRfRU47XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzQ1LVx0XHQgKi9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjM0NjpcdFx0cmV0ID0ga3N6X3JtdzgoZGV2LCBSRUdfU1dfQ1RSTF8zLCBXRUlHSFRFRF9GQUlSX1FVRVVFX0VOQUJMRSxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM0Ny1cdFx0XHQgICAgICAgV0VJR0hURURfRkFJUl9RVUVVRV9FTkFCTEUpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM0OS1cdFx0XHRyZXR1cm4gcmV0O1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MzUwOlx0fSBlbHNlIGlmIChrc3pfaXNfa3N6ODQ2MyhkZXYpKSB7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zNTEtXHRcdG1hc2tfNHEgPSBLU1o4ODczX1BPUlRfNFFVRVVFX1NQTElUX0VOO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM2My1cdFx0ICovXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzozNjQ6XHRcdHJldCA9IGtzel9ybXc4KGRldiwgUkVHX1NXX0NUUkxfMTksXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zNjUtXHRcdFx0ICAgICAgIFNXX09VVF9SQVRFX0xJTUlUX1FVRVVFX0JBU0VELFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM3NS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjM3NjpcdHJldCA9IGtzel9wcm13OChkZXYsIHBvcnQsIHJlZ180cSwgbWFza180cSwgZGF0YV80cSk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zNzctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM3OS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjM4MDpcdHJldHVybiBrc3pfcHJtdzgoZGV2LCBwb3J0LCByZWdfMnEsIG1hc2tfMnEsIGRhdGFfMnEpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzgxLX1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM4Mi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjM4MzpzdGF0aWMgdm9pZCBrc3o4X3JfbWliX2NudChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydCwgdTE2IGFkZHIsIHU2NCAqY250KVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzg0LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zOTgtXHRtdXRleF9sb2NrKFx1MDAyNmRldi1cdTAwM2VhbHVfbXV0ZXgpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6Mzk5Olx0a3N6X3dyaXRlMTYoZGV2LCByZWdzW1JFR19JTkRfQ1RSTF8wXSwgY3RybF9hZGRyKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQwMC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00MDQtXHRmb3IgKGxvb3AgPSAyOyBsb29wIFx1MDAzZSAwOyBsb29wLS0pIHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjQwNTpcdFx0a3N6X3JlYWQ4KGRldiwgcmVnc1tSRUdfSU5EX01JQl9DSEVDS10sIFx1MDAyNmNoZWNrKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQwNi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQwNy1cdFx0aWYgKGNoZWNrIFx1MDAyNiBtYXNrc1tNSUJfQ09VTlRFUl9WQUxJRF0pIHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjQwODpcdFx0XHRrc3pfcmVhZDMyKGRldiwgcmVnc1tSRUdfSU5EX0RBVEFfTE9dLCBcdTAwMjZkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQwOS1cdFx0XHRpZiAoY2hlY2sgXHUwMDI2IG1hc2tzW01JQl9DT1VOVEVSX09WRVJGTE9XXSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00MTctXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo0MTg6c3RhdGljIHZvaWQga3N6ODc5NV9yX21pYl9wa3Qoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIHUxNiBhZGRyLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDE5LVx0XHRcdCAgICAgIHU2NCAqZHJvcHBlZCwgdTY0ICpjbnQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDM2LVx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNlYWx1X211dGV4KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjQzNzpcdGtzel93cml0ZTE2KGRldiwgcmVnc1tSRUdfSU5EX0NUUkxfMF0sIGN0cmxfYWRkcik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00MzgtXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDQyLVx0Zm9yIChsb29wID0gMjsgbG9vcCBcdTAwM2UgMDsgbG9vcC0tKSB7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo0NDM6XHRcdGtzel9yZWFkOChkZXYsIHJlZ3NbUkVHX0lORF9NSUJfQ0hFQ0tdLCBcdTAwMjZjaGVjayk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00NDQtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00NDUtXHRcdGlmIChjaGVjayBcdTAwMjYgbWFza3NbTUlCX0NPVU5URVJfVkFMSURdKSB7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo0NDY6XHRcdFx0a3N6X3JlYWQzMihkZXYsIHJlZ3NbUkVHX0lORF9EQVRBX0xPXSwgXHUwMDI2ZGF0YSk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00NDctXHRcdFx0aWYgKGFkZHIgXHUwMDNjIDIpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00NjktXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo0NzA6c3RhdGljIHZvaWQga3N6ODg2M19yX21pYl9wa3Qoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIHUxNiBhZGRyLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDcxLVx0XHRcdCAgICAgIHU2NCAqZHJvcHBlZCwgdTY0ICpjbnQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDgzLVx0XHRcdCAgIEtTWjg4NjNfTUlCX1BBQ0tFVF9EUk9QUEVEX1JYXzA7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo0ODQ6XHRpZiAoa3N6X2lzXzg4OTVfZmFtaWx5KGRldikgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00ODUtXHQgICAgY3RybF9hZGRyID09IEtTWjg4NjNfTUlCX1BBQ0tFVF9EUk9QUEVEX1JYXzApXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDkwLVx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNlYWx1X211dGV4KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjQ5MTpcdGtzel93cml0ZTE2KGRldiwgcmVnc1tSRUdfSU5EX0NUUkxfMF0sIGN0cmxfYWRkcik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo0OTI6XHRrc3pfcmVhZDMyKGRldiwgcmVnc1tSRUdfSU5EX0RBVEFfTE9dLCBcdTAwMjZkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQ5My1cdG11dGV4X3VubG9jayhcdTAwMjZkZXYtXHUwMDNlYWx1X211dGV4KTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MDUtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1MDY6c3RhdGljIHZvaWQga3N6OF9yX21pYl9wa3Qoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIHUxNiBhZGRyLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTA3LVx0XHRcdCAgIHU2NCAqZHJvcHBlZCwgdTY0ICpjbnQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTE0LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTE1OnN0YXRpYyB2b2lkIGtzejhfZnJlZXplX21pYihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydCwgYm9vbCBmcmVlemUpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MTYte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUyMS1cdGlmIChmcmVlemUpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1MjI6XHRcdGtzel9jZmcoZGV2LCBSRUdfU1dfQ1RSTF82LCBCSVQocG9ydCksIHRydWUpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTIzOlx0a3N6X2NmZyhkZXYsIFJFR19TV19DVFJMXzYsIFNXX01JQl9DT1VOVEVSX0ZSRUVaRSwgZnJlZXplKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUyNC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MjYtXHRpZiAoIWZyZWV6ZSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjUyNzpcdFx0a3N6X2NmZyhkZXYsIFJFR19TV19DVFJMXzYsIEJJVChwb3J0KSwgZmFsc2UpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTI4LX1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUyOS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjUzMDpzdGF0aWMgdm9pZCBrc3o4X3BvcnRfaW5pdF9jbnQoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MzEte1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTMyOlx0c3RydWN0IGtzel9wb3J0X21pYiAqbWliID0gXHUwMDI2ZGV2LVx1MDAzZXBvcnRzW3BvcnRdLm1pYjtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUzMy1cdHU2NCAqZHJvcHBlZDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MzUtXHQvKiBGb3IgS1NaODc5NSBmYW1pbHkuICovXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1MzY6XHRpZiAoa3N6X2lzX2tzejg3eHgoZGV2KSkge1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTM3LVx0XHQvKiBmbHVzaCBhbGwgZW5hYmxlZCBwb3J0IE1JQiBjb3VudGVycyAqL1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTM4Olx0XHRrc3pfY2ZnKGRldiwgUkVHX1NXX0NUUkxfNiwgQklUKHBvcnQpLCB0cnVlKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjUzOTpcdFx0a3N6X2NmZyhkZXYsIFJFR19TV19DVFJMXzYsIFNXX01JQl9DT1VOVEVSX0ZMVVNILCB0cnVlKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjU0MDpcdFx0a3N6X2NmZyhkZXYsIFJFR19TV19DVFJMXzYsIEJJVChwb3J0KSwgZmFsc2UpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTQxLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTU2Mi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjU2MzpzdGF0aWMgaW50IGtzejhfcl90YWJsZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgdGFibGUsIHUxNiBhZGRyLCB1NjQgKmRhdGEpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01NjQte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTU3My1cdG11dGV4X2xvY2soXHUwMDI2ZGV2LVx1MDAzZWFsdV9tdXRleCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1NzQ6XHRyZXQgPSBrc3pfd3JpdGUxNihkZXYsIHJlZ3NbUkVHX0lORF9DVFJMXzBdLCBjdHJsX2FkZHIpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTc1LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01NzctXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1Nzg6XHRyZXQgPSBrc3pfcmVhZDY0KGRldiwgcmVnc1tSRUdfSU5EX0RBVEFfSEldLCBkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTU3OS11bmxvY2tfYWx1OlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTU4NC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjU4NTpzdGF0aWMgaW50IGtzejhfd190YWJsZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgdGFibGUsIHUxNiBhZGRyLCB1NjQgZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTU4Ni17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTk1LVx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNlYWx1X211dGV4KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjU5NjpcdHJldCA9IGtzel93cml0ZTY0KGRldiwgcmVnc1tSRUdfSU5EX0RBVEFfSEldLCBkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTU5Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTk5LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NjAwOlx0cmV0ID0ga3N6X3dyaXRlMTYoZGV2LCByZWdzW1JFR19JTkRfQ1RSTF8wXSwgY3RybF9hZGRyKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTYwMS11bmxvY2tfYWx1OlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTYwNi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjYwNzpzdGF0aWMgaW50IGtzejhfdmFsaWRfZHluX2VudHJ5KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHU4ICpkYXRhKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNjA4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02MTctXHRkbyB7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo2MTg6XHRcdHJldCA9IGtzel9yZWFkOChkZXYsIHJlZ3NbUkVHX0lORF9EQVRBX0NIRUNLXSwgZGF0YSk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02MTktXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNjI5LVx0LyogRW50cnkgaXMgcmVhZHkgZm9yIGFjY2Vzc2luZy4gKi9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjYzMDpcdHJldHVybiBrc3pfcmVhZDgoZGV2LCByZWdzW1JFR19JTkRfREFUQV84XSwgZGF0YSk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02MzEtfVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNjMyLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NjMzOnN0YXRpYyBpbnQga3N6OF9yX2R5bl9tYWNfdGFibGUoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTE2IGFkZHIsIHU4ICptYWNfYWRkcixcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTYzNC1cdFx0XHRcdHU4ICpmaWQsIHU4ICpzcmNfcG9ydCwgdTE2ICplbnRyaWVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTY1Mi1cdG11dGV4X2xvY2soXHUwMDI2ZGV2LVx1MDAzZWFsdV9tdXRleCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo2NTM6XHRyZXQgPSBrc3pfd3JpdGUxNihkZXYsIHJlZ3NbUkVHX0lORF9DVFJMXzBdLCBjdHJsX2FkZHIpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNjU0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02NjUtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo2NjY6XHRyZXQgPSBrc3pfcmVhZDY0KGRldiwgcmVnc1tSRUdfSU5EX0RBVEFfSEldLCBcdTAwMjZidWYpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNjY3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02OTgtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo2OTk6c3RhdGljIGludCBrc3o4X3Jfc3RhX21hY190YWJsZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MTYgYWRkcixcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTcwMC1cdFx0XHRcdHN0cnVjdCBhbHVfc3RydWN0ICphbHUsIGJvb2wgKnZhbGlkKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTczOC1cdCAqL1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NzM5Olx0aWYgKGtzel9pc19rc3o4N3h4KGRldikgfHwga3N6X2lzXzg4OTVfZmFtaWx5KGRldikpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy03NDAtXHRcdGRhdGFfaGkgXHUwMDNlXHUwMDNlPSAxO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTc1MC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjc1MTpzdGF0aWMgaW50IGtzejhfd19zdGFfbWFjX3RhYmxlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUxNiBhZGRyLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNzUyLVx0XHRcdFx0c3RydWN0IGFsdV9zdHJ1Y3QgKmFsdSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy03ODMtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo3ODQ6c3RhdGljIHZvaWQga3N6OF9mcm9tX3ZsYW4oc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTMyIHZsYW4sIHU4ICpmaWQsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy03ODUtXHRcdFx0ICAgdTggKm1lbWJlciwgdTggKnZhbGlkKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTc5OC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjc5OTpzdGF0aWMgdm9pZCBrc3o4X3RvX3ZsYW4oc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTggZmlkLCB1OCBtZW1iZXIsIHU4IHZhbGlkLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtODAwLVx0XHRcdCB1MTYgKnZsYW4pXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtODEzLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6ODE0OnN0YXRpYyB2b2lkIGtzejhfcl92bGFuX2VudHJpZXMoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTE2IGFkZHIpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy04MTUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTgyOS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjgzMDpzdGF0aWMgdm9pZCBrc3o4X3Jfdmxhbl90YWJsZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MTYgdmlkLCB1MTYgKnZsYW4pXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy04MzEte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTg0My1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjg0NDpzdGF0aWMgdm9pZCBrc3o4X3dfdmxhbl90YWJsZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MTYgdmlkLCB1MTYgdmxhbilcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTg0NS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtODcxLSAqL1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6ODcyOnN0YXRpYyBpbnQga3N6ODc5eF9nZXRfbG9vcGJhY2soc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTE2IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy04NzMtXHRcdFx0XHR1MTYgKnZhbClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy04NzctXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo4Nzg6XHRyZXQgPSBrc3pfcHJlYWQ4KGRldiwgcG9ydCwgUkVHX1BPUlRfU1RBVFVTXzMsIFx1MDAyNnN0YXQzKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTg3OS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtODk5LSAqL1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6OTAwOnN0YXRpYyBpbnQga3N6ODc5eF9zZXRfbG9vcGJhY2soc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTE2IHBvcnQsIHUxNiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05MDEte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTkwNi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjkwNzpcdHJldHVybiBrc3pfcHJtdzgoZGV2LCBwb3J0LCBSRUdfUE9SVF9TVEFUVVNfMywgUE9SVF9QSFlfTE9PUEJBQ0ssXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05MDgtXHRcdFx0IHN0YXQzKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05MTAtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo5MTE6c3RhdGljIGludCBrc3o4N3h4X2FwcGx5X2xvd19sb3NzX3ByZXNldChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBib29sIGVuYWJsZSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTkxMi17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTIxLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6OTIyOlx0aWYgKCFrc3pfaXNfa3N6ODd4eChkZXYpKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTIzLVx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTU3LSAqL1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6OTU4OnN0YXRpYyBpbnQga3N6OF9yX3BoeV9jdHJsKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0LCB1MTYgKnZhbClcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTk1OS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTY1LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6OTY2Olx0cmV0ID0ga3N6X3ByZWFkOChkZXYsIHBvcnQsIHJlZ3NbUF9MSU5LX1NUQVRVU10sIFx1MDAyNnJlZ192YWwpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTY3LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05NzItXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo5NzM6XHRyZXQgPSBrc3pfcHJlYWQ4KGRldiwgcG9ydCwgUkVHX1BPUlRfTElOS19NRF9DVFJMLCBcdTAwMjZyZWdfdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTk3NC1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTAyMy0gKi9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEwMjQ6c3RhdGljIGludCBrc3o4X3JfcGh5X2JtY3Ioc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTE2IHBvcnQsIHUxNiAqdmFsKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTAyNS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTAzMS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEwMzI6XHRyZXQgPSBrc3pfcHJlYWQ4KGRldiwgcG9ydCwgcmVnc1tQX05FR19SRVNUQVJUX0NUUkxdLCBcdTAwMjZyZXN0YXJ0KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEwMzMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEwMzUtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMDM2Olx0cmV0ID0ga3N6X3ByZWFkOChkZXYsIHBvcnQsIHJlZ3NbUF9TUEVFRF9TVEFUVVNdLCBcdTAwMjZzcGVlZCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDM3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDM5LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTA0MDpcdHJldCA9IGtzel9wcmVhZDgoZGV2LCBwb3J0LCByZWdzW1BfRk9SQ0VfQ1RSTF0sIFx1MDAyNmN0cmwpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTA0MS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTA0Ni1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEwNDc6XHRpZiAoa3N6X2lzX2tzejg4eDMoZGV2KSkge1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTA0OC1cdFx0aWYgKHJlc3RhcnQgXHUwMDI2IEtTWjg4NzNfUE9SVF9QSFlfTE9PUEJBQ0spXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTA4OC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEwODk6c3RhdGljIGludCBrc3o4X3JfcGh5KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUxNiBwaHksIHUxNiByZWcsIHUxNiAqdmFsKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTA5MC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTEwNi1cdGNhc2UgTUlJX0JNU1I6XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMTA3Olx0XHRyZXQgPSBrc3pfcHJlYWQ4KGRldiwgcCwgcmVnc1tQX0xJTktfU1RBVFVTXSwgXHUwMDI2bGluayk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTA4LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExMjQtXHRjYXNlIE1JSV9QSFlTSUQyOlxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTEyNTpcdFx0aWYgKGtzel9pc19rc3o4OHgzKGRldikpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTI2LVx0XHRcdGRhdGEgPSBLU1o4ODYzX0lEX0xPO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExMzAtXHRjYXNlIE1JSV9BRFZFUlRJU0U6XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMTMxOlx0XHRyZXQgPSBrc3pfcHJlYWQ4KGRldiwgcCwgcmVnc1tQX0xPQ0FMX0NUUkxdLCBcdTAwMjZjdHJsKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExMzItXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTE0Ny1cdGNhc2UgTUlJX0xQQTpcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjExNDg6XHRcdHJldCA9IGtzel9wcmVhZDgoZGV2LCBwLCByZWdzW1BfUkVNT1RFX1NUQVRVU10sIFx1MDAyNmxpbmspO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTE0OS1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTY2LVx0Y2FzZSBQSFlfUkVHX0xJTktfTUQ6XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMTY3Olx0XHRyZXQgPSBrc3pfcHJlYWQ4KGRldiwgcCwgUkVHX1BPUlRfTElOS19NRF9DVFJMLCBcdTAwMjZ2YWwxKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExNjgtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTE3MC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjExNzE6XHRcdHJldCA9IGtzel9wcmVhZDgoZGV2LCBwLCBSRUdfUE9SVF9MSU5LX01EX1JFU1VMVCwgXHUwMDI2dmFsMik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTcyLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExOTQtXHRjYXNlIFBIWV9SRUdfS1NaODdYWF9TSE9SVF9DQUJMRTpcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjExOTU6XHRcdGlmICgha3N6X2lzX2tzejg3eHgoZGV2KSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExOTYtXHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEyMDAtXHRjYXNlIFBIWV9SRUdfS1NaODdYWF9MUEZfQlc6XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMjAxOlx0XHRpZiAoIWtzel9pc19rc3o4N3h4KGRldikpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMjAyLVx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMjA1LVx0Y2FzZSBQSFlfUkVHX0tTWjg3WFhfRVFfSU5JVDpcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEyMDY6XHRcdGlmICgha3N6X2lzX2tzejg3eHgoZGV2KSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEyMDctXHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jPTEyMjA9c3RhdGljIGludCBrc3o4X3BoeV9yZWFkMTYoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgYWRkciwgaW50IHJlZylcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEyMjEte1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTIyMjpcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTIyMy1cdHUxNiB2YWwgPSAweGZmZmY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTI0NS0gKi9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEyNDY6c3RhdGljIGludCBrc3o4X3dfcGh5X2N0cmwoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIHUxNiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMjQ3LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMjU5LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTI2MDpcdHJldCA9IGtzel9wcm13OChkZXYsIHBvcnQsIFJFR19QT1JUX0xJTktfTURfQ1RSTCwgUE9SVF9GT1JDRV9MSU5LIHxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEyNjEtXHRcdFx0UE9SVF9QT1dFUl9TQVZJTkcgfCBQT1JUX1BIWV9SRU1PVEVfTE9PUEJBQ0ssIHJlZ192YWwpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEyOTktICovXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMzAwOnN0YXRpYyBpbnQga3N6OF93X3BoeV9ibWNyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUxNiBwb3J0LCB1MTYgdmFsKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTMwMS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTMxMy1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEzMTQ6XHRyZXQgPSBrc3pfcHJtdzgoZGV2LCBwb3J0LCByZWdzW1BfU1BFRURfU1RBVFVTXSwgUE9SVF9IUF9NRElYLCBzcGVlZCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzE1LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzE4LVx0Y3RybCA9IDA7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMzE5Olx0aWYgKGtzel9pc19rc3o4OHgzKGRldikpIHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzMjAtXHRcdGlmICgodmFsIFx1MDAyNiBCTUNSX0FORU5BQkxFKSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzM2LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTMzNzpcdHJldCA9IGtzel9wcm13OChkZXYsIHBvcnQsIHJlZ3NbUF9GT1JDRV9DVFJMXSwgUE9SVF9GT1JDRV8xMDBfTUJJVCB8XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzM4LVx0XHQgLyogUE9SVF9BVVRPX05FR19FTkFCTEUgYW5kIFBPUlRfQVVUT19ORUdfRElTQUJMRSBhcmUgdGhlIHNhbWVcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzY2LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTM2NzpcdGlmIChrc3pfaXNfa3N6ODh4MyhkZXYpKSB7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzY4LVx0XHRyZXN0YXJ0X21hc2sgfD0gS1NaODg3M19QT1JUX1BIWV9MT09QQkFDSztcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzc3LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTM3ODpcdHJldHVybiBrc3pfcHJtdzgoZGV2LCBwb3J0LCByZWdzW1BfTkVHX1JFU1RBUlRfQ1RSTF0sIHJlc3RhcnRfbWFzayxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzNzktXHRcdFx0IHJlc3RhcnQpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzODEtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMzgyOnN0YXRpYyBpbnQga3N6OF93X3BoeShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MTYgcGh5LCB1MTYgcmVnLCB1MTYgdmFsKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTM4My17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTM5Ny1cdGNhc2UgTUlJX0FEVkVSVElTRTpcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEzOTg6XHRcdHJldCA9IGtzel9wcmVhZDgoZGV2LCBwLCByZWdzW1BfTE9DQUxfQ1RSTF0sIFx1MDAyNmN0cmwpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTM5OS1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNDE5LVx0XHRpZiAoZGF0YSAhPSBjdHJsKSB7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNDIwOlx0XHRcdHJldCA9IGtzel9wd3JpdGU4KGRldiwgcCwgcmVnc1tQX0xPQ0FMX0NUUkxdLCBkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE0MjEtXHRcdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNDI2LVx0XHRpZiAodmFsIFx1MDAyNiBQSFlfU1RBUlRfQ0FCTEVfRElBRylcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjE0Mjc6XHRcdFx0a3N6X3BvcnRfY2ZnKGRldiwgcCwgUkVHX1BPUlRfTElOS19NRF9DVFJMLCBQT1JUX1NUQVJUX0NBQkxFX0RJQUcsIHRydWUpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQyOC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQzNS1cdGNhc2UgUEhZX1JFR19LU1o4N1hYX1NIT1JUX0NBQkxFOlxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTQzNjpcdFx0aWYgKCFrc3pfaXNfa3N6ODd4eChkZXYpKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQzNy1cdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQ0NC1cdGNhc2UgUEhZX1JFR19LU1o4N1hYX0xQRl9CVzpcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjE0NDU6XHRcdGlmICgha3N6X2lzX2tzejg3eHgoZGV2KSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE0NDYtXHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE0NTctXHRjYXNlIFBIWV9SRUdfS1NaODdYWF9FUV9JTklUOlxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTQ1ODpcdFx0aWYgKCFrc3pfaXNfa3N6ODd4eChkZXYpKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQ1OS1cdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MTQ3Nz1zdGF0aWMgaW50IGtzejhfcGh5X3dyaXRlMTYoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgYWRkciwgaW50IHJlZywgdTE2IHZhbClcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE0OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MjExCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdyBhcm91bmQgYGtzel9zd2l0Y2hfcmVnaXN0ZXJgLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gaG93IGl0JiMzOTtzIGludm9rZWQgYW5kLCBjcml0aWNhbGx5LCB3aGF0IGJ1c2VzIGl0JiMzOTtzIHByb2Jpbmcgb3Zlci4gVGhpcyBpcyBsaWtlbHkgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBkZXZpY2UgZGlzY292ZXJ5IG1lY2hhbmlzbS4KClJpZ2h0LCB0aW1lIHRvIGV4ZWN1dGUgYSBjb2RlIHNlYXJjaCBmb3IgYGtzel9zd2l0Y2hfcmVnaXN0ZXJgIHdpdGhpbiB0aGUgY29kZWJhc2UuIEhvcGVmdWxseSwgSSYjMzk7bGwgZmluZCBhbGwgdGhlIGNhbGwgc2l0ZXMgYW5kIHVuZGVyc3RhbmQgdGhlIGVudHJ5IHBvaW50cyBmb3IgdGhpcyBmdW5jdGlvbi4gS25vd2luZyB3aGljaCBidXMgZHJpdmVycyBtaWdodCBiZSBjYWxsaW5nIGludG8gdGhpcyBpcyB3aGVyZSB0byBmb2N1cyB0aGUgaW52ZXN0aWdhdGlvbi4gVGhpcyB3aWxsIGdpdmUgYSBnb29kIG92ZXJ2aWV3IG9mIHRoZSBkZXNpZ24hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTQ6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3N6X3N3aXRjaF9yZWdpc3RlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmM9MTMzPXN0YXRpYyBpbnQga3N6ODg2M19zbWlfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYy0xNjgtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmM6MTY5Olx0cmV0ID0ga3N6X3N3aXRjaF9yZWdpc3RlcihkZXYpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jLTE3MC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmM9MTc9c3RhdGljIGludCBrc3o5NDc3X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy01MC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzo1MTpcdHJldCA9IGtzel9zd2l0Y2hfcmVnaXN0ZXIoZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy01Mi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0zOTI0PXN0YXRpYyBpbnQga3N6ODQ2M19yZWxlYXNlX3N0cmFwc19zcGkoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zOTI4LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MzkyOTppbnQga3N6X3N3aXRjaF9yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzkzMC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtNDA5OC19XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzo0MDk5OkVYUE9SVF9TWU1CT0woa3N6X3N3aXRjaF9yZWdpc3Rlcik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy00MTAwLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oPTQyOD1zdHJ1Y3Qga3N6X2RldmljZSAqa3N6X3N3aXRjaF9hbGxvYyhzdHJ1Y3QgZGV2aWNlICpiYXNlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTQzMC1cdFx0XHRcdCAgICB2b2lkICpwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oOjQzMTppbnQga3N6X3N3aXRjaF9yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTQzMi12b2lkIGtzel9zd2l0Y2hfcmVtb3ZlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jPTEzNz1zdGF0aWMgaW50IGtzel9zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYy0xOTQtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoxOTU6XHRyZXQgPSBrc3pfc3dpdGNoX3JlZ2lzdGVyKGRldik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYy0xOTYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTQ6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkxNjIKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiA0MDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBSZWFjaGFiaWxpdHkgaW4gUUVNVS9TeXprYWxsZXIgZm9yIE1pY3JvY2hpcCBTd2l0Y2ggRHJpdmVycyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJIHNlZSB3ZSYjMzk7cmUgbG9va2luZyBhdCBga3N6OTQ3N19pMmMuY2AsIGBrc3pfc3BpLmNgLCBhbmQgcG90ZW50aWFsbHkgYGtzejg4NjNfc21pLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIHRoZXNlIGJlIGluc3RhbnRpYXRlZCwgcHJvYmVkLCBhbmQgdWx0aW1hdGVseSBmdXp6ZWQgZWZmZWN0aXZlbHkgd2l0aGluIFFFTVUgb3IgU3l6a2FsbGVyPyBPciBhcmUgd2UgZGVhbGluZyB3aXRoIGEgc2l0dWF0aW9uIHJlcXVpcmluZyBhY3R1YWwgaGFyZHdhcmUsIHNwZWNpZmljYWxseSBEU0Egc3dpdGNoIGhhcmR3YXJlPwoKVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGhlcmUgaXMgd2hldGhlciBJMkMvU1BJIERTQSBzd2l0Y2hlcyBjYW4gYmUgaW5zdGFudGlhdGVkIG9yIGV2ZW4gZW11bGF0ZWQgc29tZWhvdywgcGVyaGFwcyBmcm9tIHVzZXJzcGFjZSwgd2hpY2ggd291bGQgYmUgaWRlYWwuIEkgbmVlZCB0byByZWNhbGwgaG93IHN5emthbGxlciBoYW5kbGVzIEkyQyBkZXZpY2VzLiBEb2VzIGl0IHVzZSBgc3l6X21vdW50X2ltYWdlYCwgdGhlIGBuZXdfZGV2aWNlYCBzeXNmcyBpbnRlcmZhY2UsIG9yIHBlcmhhcHMgbGV2ZXJhZ2UgZGV2aWNlIHRyZWVzIG9yIEFDUEk/IEkgbmVlZCB0byBjbGFyaWZ5IHdoYXQgc3l6a2FsbGVyICphY3R1YWxseSogZnV6emVzLgoKUmlnaHQsIHRpbWUgdG8gY29uc3VsdCBvdXIgZ3VpZGVsaW5lcy4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgY29yZSB0cmlhZ2UgcGhpbG9zb3BoeSBzdGF0ZXMgZnV6emluZyBpcyBvbmx5IHZhbGlkIGZvciBjb2RlIHRoYXQgKmV4ZWN1dGVzKiBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIE5vIHN0cnVjdHVyYWwgdW5yZWFjaGFibGUgY29kZSBzaG91bGQgYmUgZnV6emVkLCByZWdhcmRsZXNzIG9mIGhvdyBjb21wbGV4IHRoZSBjb2RlLiBJIHJlbWVtYmVyIHRoZSBzZWN0aW9uIG9uIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSB3ZWxsLiBUaGlzIHBvaW50cyBkaXJlY3RseSB0byB0aGUgcHJvYmxlbTogdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgR1BVIGRyaXZlcnMg4oCTIHRoZXNlIGFsbCByZXF1aXJlIHBoeXNpY2FsIEFTSUNzIG9yIFBDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCgpOb3csIHdoYXQgYWJvdXQgRFNBIHN3aXRjaGVzPyBBcmUgdGhlc2UgZ2VuZXJhbGx5IGltcGxlbWVudGVkIGFzIGhhcmR3YXJlIEFTSUMgc3dpdGNoZXMgdGhhdCBhcmUgY29ubmVjdGVkIHZpYSBTUEkvSTJDL01ESU8gb3IgbWVtb3J5LW1hcHBlZCBidXNlcz8gVGhpcyBpcyBhIGtleSBwb2ludC4gQ2FuIERTQSBtaWNyb2NoaXAgc3dpdGNoIGRyaXZlcnMsIGxpa2UgdGhlIG9uZXMgaW4gdGhlc2UgZmlsZXMsIGFjdHVhbGx5IGJlIGluc3RhbnRpYXRlZCBvciByZWFjaGVkIHdpdGhpbiBzdGFuZGFyZCBRRU1VL3N5emthbGxlciBzZXR1cHM/CgpNeSBuZXh0IHN0ZXAgaXMgY2xlYXIuIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIGNvZGUgaXRzZWxmLiBJJiMzOTtsbCByZWFkIGBrc3o5NDc3X2kyYy5jYCBhbmQgYGtzel9zcGkuY2AgY2xvc2VseSB0byB1bmRlcnN0YW5kIGhvdyBga3N6OTQ3N2AgYW5kIGBrc3pfY29tbW9uYCBhcmUgZGVzaWduZWQgYW5kIGhvdyB0aGV5IGludGVyYWN0IHdpdGggdGhlIGhhcmR3YXJlLiBUaGlzIHdpbGwgZGV0ZXJtaW5lIGlmIHRoZXJlJiMzOTtzIGFueSBwYXRod2F5IGZvciB0aGVtIHRvIGJlIGZ1enplZCwgb3IgaWYgdGhleSBhcmUgZG9vbWVkIHRvIGJlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0LypcbiAgIDM6XHQgKiBNaWNyb2NoaXAgS1NaOTQ3NyBzZXJpZXMgcmVnaXN0ZXIgYWNjZXNzIHRocm91Z2ggSTJDXG4gICA0Olx0ICpcbiAgIDU6XHQgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyNCBNaWNyb2NoaXAgVGVjaG5vbG9neSBJbmMuXG4gICA2Olx0ICovXG4gICA3Olx0XG4gICA4Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvaTJjLmhcdTAwM2VcbiAgIDk6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9rZXJuZWwuaFx1MDAzZVxuICAxMDpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4gIDExOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvcmVnbWFwLmhcdTAwM2VcbiAgMTI6XHRcbiAgMTM6XHQjaW5jbHVkZSBcJiMzNDtrc3pfY29tbW9uLmhcJiMzNDtcbiAgMTQ6XHRcbiAgMTU6XHRLU1pfUkVHTUFQX1RBQkxFKGtzejk0NzcsIG5vdF91c2VkLCAxNiwgMCwgMCk7XG4gIDE2Olx0XG4gIDE3Olx0c3RhdGljIGludCBrc3o5NDc3X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKVxuICAxODpcdHtcbiAgMTk6XHRcdGNvbnN0IHN0cnVjdCBrc3pfY2hpcF9kYXRhICpjaGlwO1xuICAyMDpcdFx0c3RydWN0IGRldmljZSAqZGRldiA9IFx1MDAyNmkyYy1cdTAwM2VkZXY7XG4gIDIxOlx0XHRzdHJ1Y3QgcmVnbWFwX2NvbmZpZyByYztcbiAgMjI6XHRcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXY7XG4gIDIzOlx0XHRpbnQgaSwgcmV0O1xuICAyNDpcdFxuICAyNTpcdFx0Y2hpcCA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZGV2KTtcbiAgMjY6XHRcdGlmICghY2hpcClcbiAgMjc6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gIDI4Olx0XG4gIDI5Olx0XHRkZXYgPSBrc3pfc3dpdGNoX2FsbG9jKFx1MDAyNmkyYy1cdTAwM2VkZXYsIGNoaXAsIGkyYyk7XG4gIDMwOlx0XHRpZiAoIWRldilcbiAgMzE6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gIDMyOlx0XG4gIDMzOlx0XHQvKiBTYXZlIGNoaXAgaWQgdG8gZG8gc3BlY2lhbCBpbml0aWFsaXphdGlvbiB3aGVuIHByb2JpbmcuICovXG4gIDM0Olx0XHRkZXYtXHUwMDNlY2hpcF9pZCA9IGNoaXAtXHUwMDNlY2hpcF9pZDtcbiAgMzU6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIF9fS1NaX05VTV9SRUdNQVBTOyBpJiM0MzsmIzQzOykge1xuICAzNjpcdFx0XHRyYyA9IGtzejk0NzdfcmVnbWFwX2NvbmZpZ1tpXTtcbiAgMzc6XHRcdFx0cmMubG9ja19hcmcgPSBcdTAwMjZkZXYtXHUwMDNlcmVnbWFwX211dGV4O1xuICAzODpcdFx0XHRkZXYtXHUwMDNlcmVnbWFwW2ldID0gZGV2bV9yZWdtYXBfaW5pdF9pMmMoaTJjLCBcdTAwMjZyYyk7XG4gIDM5Olx0XHRcdGlmIChJU19FUlIoZGV2LVx1MDAzZXJlZ21hcFtpXSkpIHtcbiAgNDA6XHRcdFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShcdTAwMjZpMmMtXHUwMDNlZGV2LCBQVFJfRVJSKGRldi1cdTAwM2VyZWdtYXBbaV0pLFxuICA0MTpcdFx0XHRcdFx0XHQgICAgIFwmIzM0O0ZhaWxlZCB0byBpbml0aWFsaXplIHJlZ21hcCVpXFxuXCYjMzQ7LFxuICA0MjpcdFx0XHRcdFx0XHQgICAgIGtzejk0NzdfcmVnbWFwX2NvbmZpZ1tpXS52YWxfYml0cyk7XG4gIDQzOlx0XHRcdH1cbiAgNDQ6XHRcdH1cbiAgNDU6XHRcbiAgNDY6XHRcdGlmIChpMmMtXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGEpXG4gIDQ3Olx0XHRcdGRldi1cdTAwM2VwZGF0YSA9IGkyYy1cdTAwM2VkZXYucGxhdGZvcm1fZGF0YTtcbiAgNDg6XHRcbiAgNDk6XHRcdGRldi1cdTAwM2VpcnEgPSBpMmMtXHUwMDNlaXJxO1xuICA1MDpcdFxuICA1MTpcdFx0cmV0ID0ga3N6X3N3aXRjaF9yZWdpc3RlcihkZXYpO1xuICA1MjpcdFxuICA1MzpcdFx0LyogTWFpbiBEU0EgZHJpdmVyIG1heSBub3QgYmUgc3RhcnRlZCB5ZXQuICovXG4gIDU0Olx0XHRpZiAocmV0KVxuICA1NTpcdFx0XHRyZXR1cm4gcmV0O1xuICA1NjpcdFxuICA1NzpcdFx0aTJjX3NldF9jbGllbnRkYXRhKGkyYywgZGV2KTtcbiAgNTg6XHRcbiAgNTk6XHRcdHJldHVybiAwO1xuICA2MDpcdH1cbiAgNjE6XHRcbiAgNjI6XHRzdGF0aWMgdm9pZCBrc3o5NDc3X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmkyYylcbiAgNjM6XHR7XG4gIDY0Olx0XHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2ID0gaTJjX2dldF9jbGllbnRkYXRhKGkyYyk7XG4gIDY1Olx0XG4gIDY2Olx0XHRpZiAoZGV2KVxuICA2NzpcdFx0XHRrc3pfc3dpdGNoX3JlbW92ZShkZXYpO1xuICA2ODpcdH1cbiAgNjk6XHRcbiAgNzA6XHRzdGF0aWMgdm9pZCBrc3o5NDc3X2kyY19zaHV0ZG93bihzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKVxuICA3MTpcdHtcbiAgNzI6XHRcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoaTJjKTtcbiAgNzM6XHRcbiAgNzQ6XHRcdGlmICghZGV2KVxuICA3NTpcdFx0XHRyZXR1cm47XG4gIDc2Olx0XG4gIDc3Olx0XHRrc3pfc3dpdGNoX3NodXRkb3duKGRldik7XG4gIDc4Olx0XG4gIDc5Olx0XHRpMmNfc2V0X2NsaWVudGRhdGEoaTJjLCBOVUxMKTtcbiAgODA6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTQ6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEyMjYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGFuIGV4cGVydCBpbiB0aGlzIGFyZWE6CgoqKkFuYWx5emluZyB0aGUgSTJDIFByb2JlIEZ1bmN0aW9uIGFuZCBSZWxldmFudCBLY29uZmlnIE9wdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBrc3o5NDc3X2kyY19wcm9iZWAuIFRoZSBuYW1lIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgZGVhbGluZyB3aXRoIGFuIEkyQyBjbGllbnQsIHdoaWNoIGlzIHdoYXQgSSBzdXNwZWN0ZWQuIE15IGZpcnN0IHRob3VnaHQgaXMgd2hldGhlciB0aGlzIGRyaXZlciBvciB0aGUgSTJDIGNsaWVudCBpdCYjMzk7cyBtZWFudCB0byBpbnRlcmZhY2Ugd2l0aCBpcyBzb21ldGhpbmcgdGhhdCBjYW4gYmUgdGFyZ2V0ZWQgZWZmZWN0aXZlbHkgaW4gZnV6emluZyBjYW1wYWlnbnMuIEkgaGF2ZSB0byB0aGluayBhYm91dCB3aGV0aGVyIGBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OYCBvciBgTkVUX0RTQWAgYXJlIGV2ZW4gcmVhY2hhYmxlIGluIGEgcHVyZSBzb2Z0d2FyZSBjb250ZXh0LCBvciBpZiB0aGV5JiMzOTtyZSB0aWVkIHRvIGEgaGFyZHdhcmUgc3dpdGNoIEFTSUMuIFRoZSBsYXR0ZXIgd291bGQgbWFrZSBmdXp6aW5nIGRpcmVjdGx5IGxlc3MgZWZmaWNpZW50LCBpZiBub3QgaW1wb3NzaWJsZS4KClRvIGZpZ3VyZSBvdXQgdGhlIHBvdGVudGlhbCBmdXp6aW5nIHN1cmZhY2UgYW5kIGhvdyB0byByZWFjaCB0aGUgZnVuY3Rpb25hbGl0eSB0aGF0IHRoZSBwcm9iZSBmdW5jdGlvbiBjb3ZlcnMsIEkmIzM5O20gZ29pbmcgdG8gZGlnIGludG8gdGhlIEtjb25maWcgZm9yIGBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OYCBhbmQgYW55IHJlbGF0ZWQgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGJ1aWxkIG9wdGlvbnMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgSSBjYW4gdHJpZ2dlciB0aGlzIGNvZGUgcGF0aCBmcm9tIGEgdGVzdCBlbnZpcm9ubWVudCBvciBpZiBpdCByZXF1aXJlcyBhIHNwZWNpZmljIGhhcmR3YXJlIHNldHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORVRfRFNBX01JQ1JPQ0hJUCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6MjptZW51Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT05cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TWljcm9jaGlwIEtTWjhYWFgvS1NaOVhYWC9MQU45MzdYIHNlcmllcyBzd2l0Y2ggc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0xNi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZzoxNzpjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaOTQ3N19JMkNcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O0tTWiBzZXJpZXMgSTJDIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6MTk6XHRkZXBlbmRzIG9uIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT04gXHUwMDI2XHUwMDI2IEkyQ1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTIwLVx0c2VsZWN0IFJFR01BUF9JMkNcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMjMtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6MjQ6Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9TUElcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0yNS1cdHRyaXN0YXRlIFwmIzM0O0tTWiBzZXJpZXMgU1BJIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6MjY6XHRkZXBlbmRzIG9uIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT04gXHUwMDI2XHUwMDI2IFNQSVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTI3LVx0c2VsZWN0IFJFR01BUF9TUElcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMzAtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6MzE6Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9QVFBcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0zMi1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgdGhlIFBUUCBjbG9jayBvbiB0aGUgS1NaOTU2My9MQU45Mzd4IEV0aGVybmV0IFN3aXRjaFwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnOjMzOlx0ZGVwZW5kcyBvbiBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OIFx1MDAyNlx1MDAyNiBQVFBfMTU4OF9DTE9DS1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnOjM0Olx0ZGVwZW5kcyBvbiBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OPW0gfHwgUFRQXzE1ODhfQ0xPQ0s9eVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTM1LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy00MC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZzo0MTpjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaODg2M19TTUlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy00Mi1cdHRyaXN0YXRlIFwmIzM0O0tTWiBzZXJpZXMgU01JIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6NDM6XHRkZXBlbmRzIG9uIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT05cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy00NC1cdHNlbGVjdCBNRElPX0JJVEJBTkdcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX05FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT04pXHQmIzQzOz0ga3N6X3N3aXRjaC5vXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlLTMta3N6X3N3aXRjaC1vYmpzIDo9IGtzel9jb21tb24ubyBrc3pfZGNiLm9cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlPTY9a3N6X3N3aXRjaC1vYmpzICYjNDM7PSBsYW45Mzd4X21haW4ub1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZS03LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZTo4OmlmZGVmIENPTkZJR19ORVRfRFNBX01JQ1JPQ0hJUF9LU1pfUFRQXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlLTkta3N6X3N3aXRjaC1vYmpzICYjNDM7PSBrc3pfcHRwLm9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGU9MTA9ZW5kaWZcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGUtMTEtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19ORVRfRFNBX01JQ1JPQ0hJUF9LU1o5NDc3X0kyQylcdCYjNDM7PSBrc3o5NDc3X2kyYy5vXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlOjEzOm9iai0kKENPTkZJR19ORVRfRFNBX01JQ1JPQ0hJUF9LU1pfU1BJKVx0XHQmIzQzOz0ga3N6X3NwaS5vXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlOjE0Om9iai0kKENPTkZJR19ORVRfRFNBX01JQ1JPQ0hJUF9LU1o4ODYzX1NNSSlcdCYjNDM7PSBrc3o4ODYzX3NtaS5vXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg9MTY5PXN0cnVjdCBrc3pfcG9ydCB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtMTkyLVx0c3RydWN0IHBoeWxpbmtfcGNzICpwY3M7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaDoxOTM6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9EU0FfTUlDUk9DSElQX0tTWl9QVFApXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC0xOTQtXHRzdHJ1Y3Qga2VybmVsX2h3dHN0YW1wX2NvbmZpZyB0c3RhbXBfY29uZmlnO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTEwLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmg6MTE6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9EU0FfTUlDUk9DSElQX0tTWl9QVFApXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaC0xMi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaD04Nz1zdGF0aWMgaW5saW5lIHZvaWQga3N6ODQ2M19wdHBfaXJxX2ZyZWUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKSB7fVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTEwMi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oOjEwMzojZW5kaWZcdC8qIEVuZCBvZiBDT05GSUdfTkVUX0RTQV9NSUNST0NISVBfS1NaX1BUUCAqL1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmgtMTA0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNDoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzA5MwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDIwOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBY2Nlc3NpbmcgRFNBIFN3aXRjaCBIYXJkd2FyZSAmYW1wOyBJMkMgRGV2aWNlIEluc3RhbnRpYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgYWNjZXNzIG1ldGhvZHMgZm9yIERTQSBzd2l0Y2ggaGFyZHdhcmUsIHNwZWNpZmljYWxseSBob3cgdG8gaW50ZXJhY3Qgd2l0aCBpdC4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBJMkMgZGV2aWNlcyBhcmUgYWNjZXNzZWQgd2l0aGluIHRoaXMgY29udGV4dC4gQ2FuIEkgcHJvYmUgdGhlc2UgZGV2aWNlcyB1c2luZyB0aGUgc3RhbmRhcmQgYC9zeXMvYnVzL2kyYy9kZXZpY2VzL2kyYy1YL25ld19kZXZpY2VgIG1ldGhvZD8gQWgsIHllcywgaW4gTGludXgsIHRoYXQmIzM5O3MgaXQhIFVzZXJzcGFjZSBjYW4gd3JpdGUgdG8gdGhhdCBwYXRoIHRvIGluc3RhbnRpYXRlIGFuIEkyQyBkZXZpY2UuIEZvciBleGFtcGxlLCB1c2luZyBgZWNobyAmIzM0O2tzejk0NzcgMHg1ZiYjMzQ7ICZndDsgL3N5cy9idXMvaTJjL2RldmljZXMvaTJjLTAvbmV3X2RldmljZWAuCgpCdXQgbm93IEkgbmVlZCB0byBjaGVjayBzb21ldGhpbmc6IGRvZXMgdGhlIGBrc3o5NDc3YCBkcml2ZXIsIG9yIHRoZSBga3N6X2NvbW1vbmAgbGlicmFyeSBpdCB1c2VzLCAqcmVxdWlyZSogYWN0dWFsIHBoeXNpY2FsIGhhcmR3YXJlIHRvIHN1Y2Nlc3NmdWxseSByZWFkIHJlZ2lzdGVycz8gSWYgSSBpbnN0YW50aWF0ZSBpdCBvbiwgc2F5LCBpMmMtMCwgZXZlbiBpZiB0aGVyZSYjMzk7cyBubyBwaHlzaWNhbCBjaGlwIHByZXNlbnQsIG9yIGV2ZW4gdXNpbmcgYSBkdW1teSBJMkMgYWRhcHRlciwgd2hhdCBleGFjdGx5ICpoYXBwZW5zKiB3aXRoaW4gYGtzel9zd2l0Y2hfcmVnaXN0ZXJgPyBUaGF0JiMzOTtzIHRoZSBrZXkuIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIGNvZGUuIExldCYjMzk7cyBleGFtaW5lIGBrc3pfc3dpdGNoX3JlZ2lzdGVyYCBmdW5jdGlvbiwgaXQmIzM5O3MgZGVmaW5lZCB3aXRoaW4gYGtzel9jb21tb24uY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE0OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzOTI1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzM5MjU6XHR7XG4zOTI2Olx0XHRyZXR1cm4gcGluY3RybF9zZWxlY3RfZGVmYXVsdF9zdGF0ZShkZXYtXHUwMDNlZGV2KTtcbjM5Mjc6XHR9XG4zOTI4Olx0XG4zOTI5Olx0aW50IGtzel9zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbjM5MzA6XHR7XG4zOTMxOlx0XHRjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSAqaW5mbztcbjM5MzI6XHRcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqcG9ydHM7XG4zOTMzOlx0XHRwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlO1xuMzkzNDpcdFx0dW5zaWduZWQgaW50IHBvcnRfbnVtO1xuMzkzNTpcdFx0dTMyIGxvb2t1cF9jaGlwX2lkO1xuMzkzNjpcdFx0aW50IHJldDtcbjM5Mzc6XHRcdGludCBpO1xuMzkzODpcdFxuMzkzOTpcdFx0ZGV2LVx1MDAzZXJlc2V0X2dwaW8gPSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbChkZXYtXHUwMDNlZGV2LCBcJiMzNDtyZXNldFwmIzM0OyxcbjM5NDA6XHRcdFx0XHRcdFx0XHQgIEdQSU9EX09VVF9MT1cpO1xuMzk0MTpcdFx0aWYgKElTX0VSUihkZXYtXHUwMDNlcmVzZXRfZ3BpbykpXG4zOTQyOlx0XHRcdHJldHVybiBQVFJfRVJSKGRldi1cdTAwM2VyZXNldF9ncGlvKTtcbjM5NDM6XHRcbjM5NDQ6XHRcdGlmIChkZXYtXHUwMDNlcmVzZXRfZ3Bpbykge1xuMzk0NTpcdFx0XHRpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUoZGV2LVx1MDAzZWRldi1cdTAwM2VvZl9ub2RlLCBcJiMzNDttaWNyb2NoaXAsa3N6ODQ2M1wmIzM0OykpIHtcbjM5NDY6XHRcdFx0XHRyZXQgPSBrc3o4NDYzX2NvbmZpZ3VyZV9zdHJhcHNfc3BpKGRldik7XG4zOTQ3Olx0XHRcdFx0aWYgKHJldClcbjM5NDg6XHRcdFx0XHRcdHJldHVybiByZXQ7XG4zOTQ5Olx0XHRcdH1cbjM5NTA6XHRcbjM5NTE6XHRcdFx0Z3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKGRldi1cdTAwM2VyZXNldF9ncGlvLCAxKTtcbjM5NTI6XHRcdFx0dXNsZWVwX3JhbmdlKDEwMDAwLCAxMjAwMCk7XG4zOTUzOlx0XHRcdGdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChkZXYtXHUwMDNlcmVzZXRfZ3BpbywgMCk7XG4zOTU0Olx0XHRcdG1zbGVlcCgxMDApO1xuMzk1NTpcdFxuMzk1NjpcdFx0XHRpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUoZGV2LVx1MDAzZWRldi1cdTAwM2VvZl9ub2RlLCBcJiMzNDttaWNyb2NoaXAsa3N6ODQ2M1wmIzM0OykpIHtcbjM5NTc6XHRcdFx0XHRyZXQgPSBrc3o4NDYzX3JlbGVhc2Vfc3RyYXBzX3NwaShkZXYpO1xuMzk1ODpcdFx0XHRcdGlmIChyZXQpXG4zOTU5Olx0XHRcdFx0XHRyZXR1cm4gcmV0O1xuMzk2MDpcdFx0XHR9XG4zOTYxOlx0XHR9XG4zOTYyOlx0XG4zOTYzOlx0XHRtdXRleF9pbml0KFx1MDAyNmRldi1cdTAwM2VkZXZfbXV0ZXgpO1xuMzk2NDpcdFx0bXV0ZXhfaW5pdChcdTAwMjZkZXYtXHUwMDNlcmVnbWFwX211dGV4KTtcbjM5NjU6XHRcdG11dGV4X2luaXQoXHUwMDI2ZGV2LVx1MDAzZWFsdV9tdXRleCk7XG4zOTY2Olx0XHRtdXRleF9pbml0KFx1MDAyNmRldi1cdTAwM2V2bGFuX211dGV4KTtcbjM5Njc6XHRcbjM5Njg6XHRcdHJldCA9IGtzel9zd2l0Y2hfZGV0ZWN0KGRldik7XG4zOTY5Olx0XHRpZiAocmV0KVxuMzk3MDpcdFx0XHRyZXR1cm4gcmV0O1xuMzk3MTpcdFxuMzk3MjpcdFx0bG9va3VwX2NoaXBfaWQgPSBkZXYtXHUwMDNlY2hpcF9pZDtcbjM5NzM6XHRcbjM5NzQ6XHRcdC8qIFRoZSBLU1o5ODk3UyBhbmQgdGhlIEtTWjk4OTdSIHJlcG9ydCB0aGUgc2FtZSBjaGlwIElEIGFuZCBkaWZmZXJcbjM5NzU6XHRcdCAqIG9ubHkgaW4gY2hpcF9kYXRhOiBvbmx5IHRoZSBTIGhhcyB0aGUgU0dNSUkgcG9ydCA3LCB0aGUgUiBoYXMgYVxuMzk3NjpcdFx0ICogc2Vjb25kIFJHTUlJIHBvcnQgaW5zdGVhZC4gQml0IDcgb2YgdGhlIHBvcnQgNyBYTUlJIGNvbnRyb2wgMFxuMzk3NzpcdFx0ICogcmVnaXN0ZXIgaXMgcmVhZC1vbmx5IGFuZCB0ZWxscyB0aGVtIGFwYXJ0OyBpdCByZWFkcyBvbmUgb24gdGhlIFMuXG4zOTc4Olx0XHQgKiBDb21wYXJlIHRoZSBLU1o5ODk3UyBkYXRhIHNoZWV0IERTMDAwMDIzOTRDIHNlY3Rpb24gNS4yLjQuMSB3aXRoXG4zOTc5Olx0XHQgKiB0aGUgS1NaOTg5N1IgZGF0YSBzaGVldCBEUzAwMDAyMzMwRCBzZWN0aW9uIDUuMi4zLjEuXG4zOTgwOlx0XHQgKlxuMzk4MTpcdFx0ICogT25seSB0aGUgY2hpcF9kYXRhIGVudHJ5IGRpZmZlcnMsIHNvIGRldi1cdTAwM2VjaGlwX2lkIGtlZXBzIHRoZSBzaGFyZWRcbjM5ODI6XHRcdCAqIGNoaXAgSUQgYW5kIG5vdGhpbmcgZWxzZSBoYXMgdG8ga25vdyBhYm91dCB0aGUgdmFyaWFudC5cbjM5ODM6XHRcdCAqL1xuMzk4NDpcdFx0aWYgKGRldi1cdTAwM2VjaGlwX2lkID09IEtTWjk4OTdfQ0hJUF9JRCkge1xuMzk4NTpcdFx0XHR1OCB2YWw7XG4zOTg2Olx0XG4zOTg3Olx0XHRcdHJldCA9IGtzel9yZWFkOChkZXYsIEtTWjk4OTdfUkVHX1BPUlQ3X1hNSUlfQ1RSTF8wLCBcdTAwMjZ2YWwpO1xuMzk4ODpcdFx0XHRpZiAocmV0KVxuMzk4OTpcdFx0XHRcdHJldHVybiByZXQ7XG4zOTkwOlx0XG4zOTkxOlx0XHRcdGlmICh2YWwgXHUwMDI2IEtTWjk4OTdfUE9SVDdfU0dNSUlfU0VMKVxuMzk5MjpcdFx0XHRcdGxvb2t1cF9jaGlwX2lkID0gS1NaOTg5N1NfQ0hJUF9JRDtcbjM5OTM6XHRcdH1cbjM5OTQ6XHRcbjM5OTU6XHRcdGluZm8gPSBrc3pfbG9va3VwX2luZm8obG9va3VwX2NoaXBfaWQpO1xuMzk5NjpcdFx0aWYgKCFpbmZvKVxuMzk5NzpcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbjM5OTg6XHRcbjM5OTk6XHRcdC8qIFVwZGF0ZSB0aGUgY29tcGF0aWJsZSBpbmZvIHdpdGggdGhlIHByb2JlZCBvbmUgKi9cbjQwMDA6XHRcdGRldi1cdTAwM2VpbmZvID0gaW5mbztcbjQwMDE6XHRcbjQwMDI6XHRcdGRldl9pbmZvKGRldi1cdTAwM2VkZXYsIFwmIzM0O2ZvdW5kIHN3aXRjaDogJXMsIHJldiAlaVxcblwmIzM0OyxcbjQwMDM6XHRcdFx0IGRldi1cdTAwM2VpbmZvLVx1MDAzZWRldl9uYW1lLCBkZXYtXHUwMDNlY2hpcF9yZXYpO1xuNDAwNDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNDoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDk1OQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipEaXZpbmcgaW50byB0aGUgYGtzel9zd2l0Y2hfZGV0ZWN0YCBGdW5jdGlvbioqCgpBbHJpZ2h0LCBzbyB0aGUgdGFzayBhdCBoYW5kIGlzIHRvIGFuYWx5emUgdGhlIGBrc3pfc3dpdGNoX2RldGVjdChkZXYpYCBmdW5jdGlvbi4gVGhlIGluaXRpYWwgY2x1ZSBpcyB0aGF0IGl0JiMzOTtzIGludGVyYWN0aW5nIGRpcmVjdGx5IHdpdGggdGhlIHBoeXNpY2FsIGNoaXAsIGxpa2VseSB0aHJvdWdoIHJlZ2lzdGVyIHJlYWRzLiBNeSBpbW1lZGlhdGUgbWVudGFsIHByb2Nlc3MgaXMgdG8gZHJpbGwgZG93biBpbnRvIHRoZSBkZXRhaWxzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQmIzM5O3MgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgaGFyZHdhcmUuIFdoYXQgcmVnaXN0ZXJzIGFyZSB3ZSB0YWxraW5nIGFib3V0PyBXaGF0IGFyZSB0aGUgZXhwZWN0ZWQgdmFsdWVzPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIHRob3NlIHZhbHVlcz8gVGhpcyBmdW5jdGlvbiBpcyBwcm9iYWJseSB0aGUgaGVhcnQgb2YgdGhlIHN3aXRjaCYjMzk7cyBpbml0aWFsIGlkZW50aWZpY2F0aW9uIG9yIGJyaW5nLXVwIHNlcXVlbmNlLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0sIGJ1dCBJJiMzOTttIGV4cGVjdGluZyB0aGlzIGlzIHdoZXJlIHdlIGNoZWNrIGZvciBjaGlwIHByZXNlbmNlLCB2ZXJzaW9uLCBhbmQgcG9zc2libHkgYmFzaWMgY29uZmlndXJhdGlvbi4gTGV0JiMzOTtzIGdldCB0byB0aGUgc291cmNlIGNvZGUgYW5kIGZpZ3VyZSBvdXQgdGhlIGV4YWN0IHJlZ2lzdGVyIGludGVyYWN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTQ6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3N6X3N3aXRjaF9kZXRlY3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTI5Mjk9dm9pZCBrc3pfcGh5bGlua19tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI5NDAtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyOTQxOnN0YXRpYyBpbnQga3N6X3N3aXRjaF9kZXRlY3Qoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI5NDIte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTM5Mjk9aW50IGtzel9zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zOTY3LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6Mzk2ODpcdHJldCA9IGtzel9zd2l0Y2hfZGV0ZWN0KGRldik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zOTY5LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTQ6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU0NzMKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhhdCBmdW5jdGlvbiwgYGtzel9zd2l0Y2hfZGV0ZWN0YCwgbmVzdGxlZCB3aXRoaW4gYGRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jYC4KCioqRGl2aW5nIERlZXAgaW50byBLU1ogU3dpdGNoIERldGVjdGlvbioqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpc3NlY3QgYGtzel9zd2l0Y2hfZGV0ZWN0YCBmcm9tIGBrc3pfY29tbW9uLmNgLiBJJiMzOTttIGdvaW5nIHRvIHdhbnQgdG8gdW5kZXJzdGFuZCB3aGF0IHRyaWdnZXJzIHRoaXMgcm91dGluZSwgdGhlIGtleSByZWdpc3RlcnMgaXQmIzM5O3MgcmVhZGluZyBhbmQgd3JpdGluZywgYW5kIHRoZSBsb2dpYyBiZWhpbmQgaG93IGl0IGRldGVybWluZXMgaWYgYSBNaWNyb2NoaXAgS1NaIHN3aXRjaCBpcyBwcmVzZW50IGFuZCBmdW5jdGlvbmluZyBjb3JyZWN0bHkuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBoYXJkd2FyZS1zcGVjaWZpYyBxdWlya3Mgb3Igd29ya2Fyb3VuZHMgaW4gdGhpcyBsb3ctbGV2ZWwgZHJpdmVyLiBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBwYXJ0IG9mIGEgbGFyZ2VyIERTQSAoRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSkgZnJhbWV3b3JrLCBzbyBJIHNob3VsZCBiZSBrZWVwaW5nIGFuIGV5ZSBvdXQgZm9yIGhvdyB0aGlzIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoIHRoZSBoaWdoZXItbGV2ZWwgRFNBIGNvbXBvbmVudHMuIEkmIzM5O2xsIGJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGFueSBlcnJvciBoYW5kbGluZyBhbmQgcmV0cnkgbWVjaGFuaXNtcy4gSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyBzb21lIHBvdGVudGlhbCBjaGFsbGVuZ2VzIOKAkyB0aGUgbmVlZCB0byBoYW5kbGUgZGlmZmVyZW50IEtTWiBzd2l0Y2ggcmV2aXNpb25zLCB2YXJpYXRpb25zIGluIFBIWSBjb25maWd1cmF0aW9ucywgYW5kIG1heWJlIGV2ZW4gc29tZSBjbGV2ZXIgcmVnaXN0ZXIgcHJvYmluZyB0ZWNobmlxdWVzLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBzbyBsZXQmIzM5O3Mgc2VlIHdoYXQgdGhleSYjMzk7dmUgY29tZSB1cCB3aXRoLiBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMgY29kZSBpcyB3ZWxsLXdyaXR0ZW4sIGVmZmljaWVudCwgYW5kIHJvYnVzdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTQ6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI5NDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7Mjk0MTpcdHN0YXRpYyBpbnQga3N6X3N3aXRjaF9kZXRlY3Qoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbjI5NDI6XHR7XG4yOTQzOlx0XHR1OCBpZDEsIGlkMiwgaWQ0O1xuMjk0NDpcdFx0dTE2IGlkMTY7XG4yOTQ1Olx0XHR1MzIgaWQzMjtcbjI5NDY6XHRcdGludCByZXQ7XG4yOTQ3Olx0XG4yOTQ4Olx0XHQvKiByZWFkIGNoaXAgaWQgKi9cbjI5NDk6XHRcdHJldCA9IGtzel9yZWFkMTYoZGV2LCBSRUdfQ0hJUF9JRDAsIFx1MDAyNmlkMTYpO1xuMjk1MDpcdFx0aWYgKHJldClcbjI5NTE6XHRcdFx0cmV0dXJuIHJldDtcbjI5NTI6XHRcbjI5NTM6XHRcdGlkMSA9IEZJRUxEX0dFVChTV19GQU1JTFlfSURfTSwgaWQxNik7XG4yOTU0Olx0XHRpZDIgPSBGSUVMRF9HRVQoU1dfQ0hJUF9JRF9NLCBpZDE2KTtcbjI5NTU6XHRcbjI5NTY6XHRcdHN3aXRjaCAoaWQxKSB7XG4yOTU3Olx0XHRjYXNlIEtTWjg0X0ZBTUlMWV9JRDpcbjI5NTg6XHRcdFx0ZGV2LVx1MDAzZWNoaXBfaWQgPSBLU1o4NDYzX0NISVBfSUQ7XG4yOTU5Olx0XHRcdGJyZWFrO1xuMjk2MDpcdFx0Y2FzZSBLU1o4N19GQU1JTFlfSUQ6XG4yOTYxOlx0XHRcdGlmIChpZDIgPT0gS1NaODdfQ0hJUF9JRF85NSkge1xuMjk2MjpcdFx0XHRcdHU4IHZhbDtcbjI5NjM6XHRcbjI5NjQ6XHRcdFx0XHRkZXYtXHUwMDNlY2hpcF9pZCA9IEtTWjg3OTVfQ0hJUF9JRDtcbjI5NjU6XHRcbjI5NjY6XHRcdFx0XHRrc3pfcmVhZDgoZGV2LCBLU1o4X1BPUlRfU1RBVFVTXzAsIFx1MDAyNnZhbCk7XG4yOTY3Olx0XHRcdFx0aWYgKHZhbCBcdTAwMjYgS1NaOF9QT1JUX0ZJQkVSX01PREUpXG4yOTY4Olx0XHRcdFx0XHRkZXYtXHUwMDNlY2hpcF9pZCA9IEtTWjg3NjVfQ0hJUF9JRDtcbjI5Njk6XHRcdFx0fSBlbHNlIGlmIChpZDIgPT0gS1NaODdfQ0hJUF9JRF85NCkge1xuMjk3MDpcdFx0XHRcdGRldi1cdTAwM2VjaGlwX2lkID0gS1NaODc5NF9DSElQX0lEO1xuMjk3MTpcdFx0XHR9IGVsc2Uge1xuMjk3MjpcdFx0XHRcdHJldHVybiAtRU5PREVWO1xuMjk3MzpcdFx0XHR9XG4yOTc0Olx0XHRcdGJyZWFrO1xuMjk3NTpcdFx0Y2FzZSBLU1o4OF9GQU1JTFlfSUQ6XG4yOTc2Olx0XHRcdGlmIChpZDIgPT0gS1NaODhfQ0hJUF9JRF82MylcbjI5Nzc6XHRcdFx0XHRkZXYtXHUwMDNlY2hpcF9pZCA9IEtTWjg4WDNfQ0hJUF9JRDtcbjI5Nzg6XHRcdFx0ZWxzZVxuMjk3OTpcdFx0XHRcdHJldHVybiAtRU5PREVWO1xuMjk4MDpcdFx0XHRicmVhaztcbjI5ODE6XHRcdGNhc2UgS1NaODg5NV9GQU1JTFlfSUQ6XG4yOTgyOlx0XHRcdGlmIChpZDIgPT0gS1NaODg5NV9DSElQX0lEXzk1IHx8XG4yOTgzOlx0XHRcdCAgICBpZDIgPT0gS1NaODg5NV9DSElQX0lEXzk1UilcbjI5ODQ6XHRcdFx0XHRkZXYtXHUwMDNlY2hpcF9pZCA9IEtTWjg4OTVfQ0hJUF9JRDtcbjI5ODU6XHRcdFx0ZWxzZVxuMjk4NjpcdFx0XHRcdHJldHVybiAtRU5PREVWO1xuMjk4NzpcdFx0XHRyZXQgPSBrc3pfcmVhZDgoZGV2LCBSRUdfS1NaODg2NF9DSElQX0lELCBcdTAwMjZpZDQpO1xuMjk4ODpcdFx0XHRpZiAocmV0KVxuMjk4OTpcdFx0XHRcdHJldHVybiByZXQ7XG4yOTkwOlx0XHRcdGlmIChpZDQgXHUwMDI2IFNXX0tTWjg4NjQpXG4yOTkxOlx0XHRcdFx0ZGV2LVx1MDAzZWNoaXBfaWQgPSBLU1o4ODY0X0NISVBfSUQ7XG4yOTkyOlx0XHRcdGJyZWFrO1xuMjk5MzpcdFx0ZGVmYXVsdDpcbjI5OTQ6XHRcdFx0cmV0ID0ga3N6X3JlYWQzMihkZXYsIFJFR19DSElQX0lEMCwgXHUwMDI2aWQzMik7XG4yOTk1Olx0XHRcdGlmIChyZXQpXG4yOTk2Olx0XHRcdFx0cmV0dXJuIHJldDtcbjI5OTc6XHRcbjI5OTg6XHRcdFx0ZGV2LVx1MDAzZWNoaXBfcmV2ID0gRklFTERfR0VUKFNXX1JFVl9JRF9NLCBpZDMyKTtcbjI5OTk6XHRcdFx0aWQzMiBcdTAwMjY9IH4weEZGO1xuMzAwMDpcdFxuMzAwMTpcdFx0XHRzd2l0Y2ggKGlkMzIpIHtcbjMwMDI6XHRcdFx0Y2FzZSBLU1o5NDc3X0NISVBfSUQ6XG4zMDAzOlx0XHRcdGNhc2UgS1NaOTg5Nl9DSElQX0lEOlxuMzAwNDpcdFx0XHRjYXNlIEtTWjk4OTdfQ0hJUF9JRDpcbjMwMDU6XHRcdFx0Y2FzZSBLU1o5NTY3X0NISVBfSUQ6XG4zMDA2Olx0XHRcdGNhc2UgS1NaODU2N19DSElQX0lEOlxuMzAwNzpcdFx0XHRjYXNlIExBTjkzNzBfQ0hJUF9JRDpcbjMwMDg6XHRcdFx0Y2FzZSBMQU45MzcxX0NISVBfSUQ6XG4zMDA5Olx0XHRcdGNhc2UgTEFOOTM3Ml9DSElQX0lEOlxuMzAxMDpcdFx0XHRjYXNlIExBTjkzNzNfQ0hJUF9JRDpcbjMwMTE6XHRcdFx0Y2FzZSBMQU45Mzc0X0NISVBfSUQ6XG4zMDEyOlx0XG4zMDEzOlx0XHRcdFx0LyogTEFOOTY0NiBkb2VzIG5vdCBoYXZlIGl0cyBvd24gY2hpcCBpZC4gKi9cbjMwMTQ6XHRcdFx0XHRpZiAoZGV2LVx1MDAzZWNoaXBfaWQgIT0gTEFOOTY0Nl9DSElQX0lEKVxuMzAxNTpcdFx0XHRcdFx0ZGV2LVx1MDAzZWNoaXBfaWQgPSBpZDMyO1xuMzAxNjpcdFx0XHRcdGJyZWFrO1xuMzAxNzpcdFx0XHRjYXNlIEtTWjk4OTNfQ0hJUF9JRDpcbjMwMTg6XHRcdFx0XHRyZXQgPSBrc3pfcmVhZDgoZGV2LCBSRUdfQ0hJUF9JRDQsXG4zMDE5Olx0XHRcdFx0XHRcdFx1MDAyNmlkNCk7XG4zMDIwOlx0XHRcdFx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTQ6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcxODEKCQkJCQkJCW91dHB1dDogMTI3CgkJCQkJCQl0aG91Z2h0czogMTE2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmc9ZmFsc2U6IE1pY3JvY2hpcCBLU1ogU3dpdGNoIERyaXZlciBVcGRhdGUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBjb21taXQgZGVhbHMgd2l0aCB0aGUgYGRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvYCBkaXJlY3RvcnksIHdoaWNoIGluZGljYXRlcyBhIGRyaXZlciBmb3IgTWljcm9jaGlwIEtTWiBzZXJpZXMgRXRoZXJuZXQgc3dpdGNoIEFTSUNzLiBUaGVzZSBhcmUgcGh5c2ljYWwgaGFyZHdhcmUgY29tcG9uZW50cyBhY2Nlc3NlZCB2aWEgU1BJLCBJMkMsIG9yIFNNSS9NRElPLgoKTXkgbmV4dCB0aG91Z2h0IGlzIHRvIGRldGVybWluZSBpZiB0aGlzIGNvZGUgaXMgc3BlY2lmaWMgdG8gaGFyZHdhcmUgdGhhdCYjMzk7cyBpbmFjY2Vzc2libGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgZ3VpZGVsaW5lcyBleHBsaWNpdGx5IHN0YXRlIHRoYXQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLCBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzIG9yLCBpbiB0aGlzIGNhc2UsIHBoeXNpY2FsIHN3aXRjaCBBU0lDcywgc2hvdWxkIHJlc3VsdCBpbiBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCkkmIzM5O3ZlIHZlcmlmaWVkIHRoYXQgdGhlIEtTWjk4OTcvUy9SLCBLU1o5NDc3LCBLU1o4Nzk1LCBhbmQgb3RoZXJzIGFyZSBpbmRlZWQgcGh5c2ljYWwgRXRoZXJuZXQgc3dpdGNoIElDcyBmcm9tIE1pY3JvY2hpcCAoZm9ybWVybHkgTWljcmVsKS4gVGhleSYjMzk7cmUgZGlzY3JldGUgY2hpcHMsIGFuZCB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZW0gb3ZlciBJMkMvU1BJL1NNSS4gSW4gYSBzdGFuZGFyZCBRRU1VIGFtZDY0IGVudmlyb25tZW50LCB3aXRob3V0IGN1c3RvbSBkZXZpY2UgdHJlZXMgb3IgYWN0dWFsIGhhcmR3YXJlLCB0aGVyZSYjMzk7cyBubyBlbXVsYXRlZCBLU1ogc3dpdGNoIGRldmljZS4gQW55IEkyQyBwcm9iaW5nIChga3N6X3N3aXRjaF9kZXRlY3RgKSB3b3VsZCBmYWlsIGJlY2F1c2Ugbm8gZGV2aWNlIHdvdWxkIHJlc3BvbmQgKEVOWElPL0VJTyksIG9yIGlmIGEgZHVtbXkgcmVnbWFwIHJldHVybnMgYWxsIHplcm9zIG9yIG9uZXMsIGBrc3pfc3dpdGNoX2RldGVjdGAgcmV0dXJucyBFTk9ERVYgYmVjYXVzZSB0aGUgY2hpcCBJRCByZWFkIGZyb20gdGhlIHJlZ2lzdGVycyB3b3VsZG4mIzM5O3QgbWF0Y2ggYW55IHZhbGlkIEtTWiBjaGlwIElELiBJJiMzOTttIHRoaW5raW5nIGhlcmUgb2YgcmVnaXN0ZXJzIGFuZCByZWFkaW5nIHRoZSBjaGlwIElEOiBLU1o4NF9GQU1JTFlfSUQgPSAweDg0LCBLU1o4NyA9IDB4ODcsIEtTWjg4ID0gMHg4OCwgS1NaOTQ3N19DSElQX0lEID0gMHgwMDk0NzcwMCwgYW5kIHNvIG9uLgoKVGhlIERTQSAoRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSkgc3dpdGNoIGRyaXZlcnMgYXJlIGZvciAqcGh5c2ljYWwqIGhhcmR3YXJlLCBsaWtlIE1pY3JvY2hpcCBLU1osIFJlYWx0ZWssIE1hcnZlbGwsIGFuZCBTSkExMTA1LiBTbywgdGhlIGJvdHRvbSBsaW5lIGlzIHRoYXQgdGhlc2UgZHJpdmVycyByZXF1aXJlIHRoZSBhY3R1YWwgc3dpdGNoIGhhcmR3YXJlIC8gQVNJQ3MuCgpJJiMzOTt2ZSB0YWtlbiBhIGxvb2sgYXQgdGhlIG1vZGlmaWVkIGZpbGVzOiBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNgLCBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmhgLCBhbmQgYGluY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9taWNyb2NoaXAta3N6LmhgLiBUaGlzIGNvbW1pdCYjMzk7cyBhZGRpbmcgc3VwcG9ydCBmb3IgdGhlIEtTWjk4OTdTIHZhcmlhbnQgYnkgY2hlY2tpbmcgYSBwYXJ0aWN1bGFyIGJpdCAoYml0IDcgb2YgdGhlIFhNSUkgY29udHJvbCAwIHJlZ2lzdGVyKSB0byBkaWZmZXJlbnRpYXRlIGl0IGZyb20gS1NaOTg5N1IuCgpBbmFseXppbmcgdGhlIGRpZmYsIGBrc3pfY29tbW9uLmNgIG5vdyBpbmNsdWRlcyBhIGBbS1NaOTg5N1NdYCBlbnRyeSBpbiBga3N6X3N3aXRjaF9jaGlwc1tdYCBhbmQgYSByZWdpc3RlciBjaGVjay4gYGtzel9jb21tb24uaGAgaW50cm9kdWNlcyBgS1NaOTg5N1NgIHRvIHRoZSBgZW51bSBrc3pfbW9kZWxgIGFuZCBkZWZpbmVzIG5ldyBjb25zdGFudHMuIGBtaWNyb2NoaXAta3N6LmhgIGFkZHMgYEtTWjk4OTdTX0NISVBfSURgLgoKQWxsIHRoZXNlIGNoYW5nZXMgYXJlICpleGNsdXNpdmVseSogd2l0aGluIHRoZSBNaWNyb2NoaXAgS1NaIEV0aGVybmV0IHN3aXRjaCBkcml2ZXIsIHdoaWNoIGlzIGEgZHJpdmVyIGZvciBkaXNjcmV0ZSBwaHlzaWNhbCBoYXJkd2FyZSBBU0lDcywgYW5kIGl0JiMzOTtzIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIFFFTVUvc3l6a2FsbGVyLgoKVGhlcmVmb3JlLCBiZWNhdXNlIHRoZSBjb2RlIGV4Y2x1c2l2ZWx5IHRvdWNoZXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLCBteSBjb25jbHVzaW9uIGlzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDoKMS4gIFRoZSBwYXRjaCBhZGRzIEtTWjk4OTdTIHN1cHBvcnQuCjIuICBUaGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHBoeXNpY2FsIE1pY3JvY2hpcCBzd2l0Y2ggQVNJQ3MuCjMuICBObyBlbXVsYXRpb24gaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLgo0LiAgSGVuY2UsIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKTm93LCB0aW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTQ6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGRpc3Rpbmd1aXNoaW5nIHRoZSBLU1o5ODk3UyBFdGhlcm5ldCBzd2l0Y2ggdmFyaWFudCB3aXRoaW4gdGhlIE1pY3JvY2hpcCBLU1ogc3dpdGNoIERTQSBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvKS4gVGhpcyBkcml2ZXIgaW50ZXJhY3RzIHdpdGggZGlzY3JldGUgcGh5c2ljYWwgTWljcm9jaGlwIHN3aXRjaCBBU0lDcyBvdmVyIEkyQy9TUEkvU01JIGJ1c2VzLiBCZWNhdXNlIHRoZSByZXF1aXJlZCBwaHlzaWNhbCBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoZS5nLiwgUUVNVSBhbWQ2NCksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgZGlzdGluZ3Vpc2hpbmcgdGhlIEtTWjk4OTdTIEV0aGVybmV0IHN3aXRjaCB2YXJpYW50IHdpdGhpbiB0aGUgTWljcm9jaGlwIEtTWiBzd2l0Y2ggRFNBIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC8pLiBUaGlzIGRyaXZlciBpbnRlcmFjdHMgd2l0aCBkaXNjcmV0ZSBwaHlzaWNhbCBNaWNyb2NoaXAgc3dpdGNoIEFTSUNzIG92ZXIgSTJDL1NQSS9TTUkgYnVzZXMuIEJlY2F1c2UgdGhlIHJlcXVpcmVkIHBoeXNpY2FsIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChlLmcuLCBRRU1VIGFtZDY0KSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTQ6Mjk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE0OjI4OjUzLjczMTIwNjc5MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzOTYyODU0ODYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBkaXN0aW5ndWlzaGluZyB0aGUgS1NaOTg5N1MgRXRoZXJuZXQgc3dpdGNoIHZhcmlhbnQgd2l0aGluIHRoZSBNaWNyb2NoaXAgS1NaIHN3aXRjaCBEU0EgZHJpdmVyIChkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwLykuIFRoaXMgZHJpdmVyIGludGVyYWN0cyB3aXRoIGRpc2NyZXRlIHBoeXNpY2FsIE1pY3JvY2hpcCBzd2l0Y2ggQVNJQ3Mgb3ZlciBJMkMvU1BJL1NNSSBidXNlcy4gQmVjYXVzZSB0aGUgcmVxdWlyZWQgcGh5c2ljYWwgaGFyZHdhcmUgaXMgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKGUuZy4sIFFFTVUgYW1kNjQpLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNDoyODo1My43MzEyMTA3MjFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NDA4NjQ2NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAwNmVmYzYwNjk1ZDI4MDM0OTczMmI4OWIyZGMzZDdjMjFjODNiNTgwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgU2VwIDUgMTQ6Mjg6NTIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uY1xcbmluZGV4IDFhOWQ2ZjgzYTAyMzIuLjgxNzk4YTlmYTY3MWQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uY1xcbkBAIC0xNDg2LDYgKzE0ODYsNDEgQEAgY29uc3Qgc3RydWN0IGtzel9jaGlwX2RhdGEga3N6X3N3aXRjaF9jaGlwc1tdID0ge1xcbiBcXHRcXHQuZ2JpdF9jYXBhYmxlXFx0PSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZX0sXFxuIFxcdH0sXFxuIFxcbitcXHRbS1NaOTg5N1NdID0ge1xcbitcXHRcXHQuY2hpcF9pZCA9IEtTWjk4OTdTX0NISVBfSUQsXFxuK1xcdFxcdC5kZXZfbmFtZSA9IFxcXCJLU1o5ODk3U1xcXCIsXFxuK1xcdFxcdC5udW1fdmxhbnMgPSA0MDk2LFxcbitcXHRcXHQubnVtX2FsdXMgPSA0MDk2LFxcbitcXHRcXHQubnVtX3N0YXRpY3MgPSAxNixcXG4rXFx0XFx0LmNwdV9wb3J0cyA9IDB4N0YsXFx0LyogY2FuIGJlIGNvbmZpZ3VyZWQgYXMgY3B1IHBvcnQgKi9cXG4rXFx0XFx0LnBvcnRfY250ID0gNyxcXHRcXHQvKiB0b3RhbCBwaHlzaWNhbCBwb3J0IGNvdW50ICovXFxuK1xcdFxcdC5wb3J0X25pcnFzID0gMixcXG4rXFx0XFx0Lm51bV90eF9xdWV1ZXMgPSA0LFxcbitcXHRcXHQubnVtX2lwbXMgPSA4LFxcbitcXHRcXHQub3BzID0gXFx1MDAyNmtzejk0NzdfZGV2X29wcyxcXG4rXFx0XFx0LnN3aXRjaF9vcHMgPSBcXHUwMDI2a3N6OTQ3N19zd2l0Y2hfb3BzLFxcbitcXHRcXHQucGh5bGlua19tYWNfb3BzID0gXFx1MDAyNmtzejk0NzdfcGh5bGlua19tYWNfb3BzLFxcbitcXHRcXHQucGh5X2VycmF0YV85NDc3ID0gdHJ1ZSxcXG4rXFx0XFx0Lm1pYl9uYW1lcyA9IGtzejk0NzdfbWliX25hbWVzLFxcbitcXHRcXHQubWliX2NudCA9IEFSUkFZX1NJWkUoa3N6OTQ3N19taWJfbmFtZXMpLFxcbitcXHRcXHQucmVnX21pYl9jbnQgPSBNSUJfQ09VTlRFUl9OVU0sXFxuK1xcdFxcdC5yZWdzID0ga3N6OTQ3N19yZWdzLFxcbitcXHRcXHQubWFza3MgPSBrc3o5NDc3X21hc2tzLFxcbitcXHRcXHQuc2hpZnRzID0ga3N6OTQ3N19zaGlmdHMsXFxuK1xcdFxcdC54bWlpX2N0cmwwID0ga3N6OTQ3N194bWlpX2N0cmwwLFxcbitcXHRcXHQueG1paV9jdHJsMSA9IGtzejk0NzdfeG1paV9jdHJsMSxcXG4rXFx0XFx0LnN1cHBvcnRzX21paVxcdD0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLFxcbitcXHRcXHRcXHRcXHQgICBmYWxzZSwgdHJ1ZSwgZmFsc2V9LFxcbitcXHRcXHQuc3VwcG9ydHNfcm1paVxcdD0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLFxcbitcXHRcXHRcXHRcXHQgICBmYWxzZSwgdHJ1ZSwgZmFsc2V9LFxcbitcXHRcXHQuc3VwcG9ydHNfcmdtaWkgPSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsXFxuK1xcdFxcdFxcdFxcdCAgIGZhbHNlLCB0cnVlLCBmYWxzZX0sXFxuK1xcdFxcdC5pbnRlcm5hbF9waHlcXHQ9IHt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLFxcbitcXHRcXHRcXHRcXHQgICB0cnVlLCBmYWxzZSwgZmFsc2V9LFxcbitcXHRcXHQuZ2JpdF9jYXBhYmxlXFx0PSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZX0sXFxuK1xcdFxcdC5zZ21paV9wb3J0ID0gNyxcXG4rXFx0fSxcXG4rXFxuIFxcdFtLU1o5ODkzXSA9IHtcXG4gXFx0XFx0LmNoaXBfaWQgPSBLU1o5ODkzX0NISVBfSUQsXFxuIFxcdFxcdC5kZXZfbmFtZSA9IFxcXCJLU1o5ODkzXFxcIixcXG5AQCAtMzg5Nyw2ICszOTMyLDcgQEAgaW50IGtzel9zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcXG4gXFx0c3RydWN0IGRldmljZV9ub2RlICpwb3J0cztcXG4gXFx0cGh5X2ludGVyZmFjZV90IGludGVyZmFjZTtcXG4gXFx0dW5zaWduZWQgaW50IHBvcnRfbnVtO1xcbitcXHR1MzIgbG9va3VwX2NoaXBfaWQ7XFxuIFxcdGludCByZXQ7XFxuIFxcdGludCBpO1xcbiBcXG5AQCAtMzkzMyw3ICszOTY5LDMwIEBAIGludCBrc3pfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbi1cXHRpbmZvID0ga3N6X2xvb2t1cF9pbmZvKGRldi1cXHUwMDNlY2hpcF9pZCk7XFxuK1xcdGxvb2t1cF9jaGlwX2lkID0gZGV2LVxcdTAwM2VjaGlwX2lkO1xcbitcXG4rXFx0LyogVGhlIEtTWjk4OTdTIGFuZCB0aGUgS1NaOTg5N1IgcmVwb3J0IHRoZSBzYW1lIGNoaXAgSUQgYW5kIGRpZmZlclxcbitcXHQgKiBvbmx5IGluIGNoaXBfZGF0YTogb25seSB0aGUgUyBoYXMgdGhlIFNHTUlJIHBvcnQgNywgdGhlIFIgaGFzIGFcXG4rXFx0ICogc2Vjb25kIFJHTUlJIHBvcnQgaW5zdGVhZC4gQml0IDcgb2YgdGhlIHBvcnQgNyBYTUlJIGNvbnRyb2wgMFxcbitcXHQgKiByZWdpc3RlciBpcyByZWFkLW9ubHkgYW5kIHRlbGxzIHRoZW0gYXBhcnQ7IGl0IHJlYWRzIG9uZSBvbiB0aGUgUy5cXG4rXFx0ICogQ29tcGFyZSB0aGUgS1NaOTg5N1MgZGF0YSBzaGVldCBEUzAwMDAyMzk0QyBzZWN0aW9uIDUuMi40LjEgd2l0aFxcbitcXHQgKiB0aGUgS1NaOTg5N1IgZGF0YSBzaGVldCBEUzAwMDAyMzMwRCBzZWN0aW9uIDUuMi4zLjEuXFxuK1xcdCAqXFxuK1xcdCAqIE9ubHkgdGhlIGNoaXBfZGF0YSBlbnRyeSBkaWZmZXJzLCBzbyBkZXYtXFx1MDAzZWNoaXBfaWQga2VlcHMgdGhlIHNoYXJlZFxcbitcXHQgKiBjaGlwIElEIGFuZCBub3RoaW5nIGVsc2UgaGFzIHRvIGtub3cgYWJvdXQgdGhlIHZhcmlhbnQuXFxuK1xcdCAqL1xcbitcXHRpZiAoZGV2LVxcdTAwM2VjaGlwX2lkID09IEtTWjk4OTdfQ0hJUF9JRCkge1xcbitcXHRcXHR1OCB2YWw7XFxuK1xcbitcXHRcXHRyZXQgPSBrc3pfcmVhZDgoZGV2LCBLU1o5ODk3X1JFR19QT1JUN19YTUlJX0NUUkxfMCwgXFx1MDAyNnZhbCk7XFxuK1xcdFxcdGlmIChyZXQpXFxuK1xcdFxcdFxcdHJldHVybiByZXQ7XFxuK1xcbitcXHRcXHRpZiAodmFsIFxcdTAwMjYgS1NaOTg5N19QT1JUN19TR01JSV9TRUwpXFxuK1xcdFxcdFxcdGxvb2t1cF9jaGlwX2lkID0gS1NaOTg5N1NfQ0hJUF9JRDtcXG4rXFx0fVxcbitcXG4rXFx0aW5mbyA9IGtzel9sb29rdXBfaW5mbyhsb29rdXBfY2hpcF9pZCk7XFxuIFxcdGlmICghaW5mbylcXG4gXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaCBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oXFxuaW5kZXggY2JlOTg0OTQ1NzhjMy4uMGNmZjMzZGYwNmE0YiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaFxcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oXFxuQEAgLTI4NCw2ICsyODQsNyBAQCBlbnVtIGtzel9tb2RlbCB7XFxuIFxcdEtTWjk0NzcsXFxuIFxcdEtTWjk4OTYsXFxuIFxcdEtTWjk4OTcsXFxuK1xcdEtTWjk4OTdTLFxcbiBcXHRLU1o5ODkzLFxcbiBcXHRLU1o5NTYzLFxcbiBcXHRLU1o5NTY3LFxcbkBAIC04NzQsNiArODc1LDEwIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBrc3pfaXNfc2dtaWlfcG9ydChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydClcXG4gI2RlZmluZSBTS1VfSURfS1NaODU2M1xcdFxcdFxcdDB4M2NcXG4gI2RlZmluZSBTS1VfSURfS1NaOTU2M1xcdFxcdFxcdDB4MWNcXG4gXFxuKy8qIEtTWjk4OTcgc3BlY2lmaWMgcmVnaXN0ZXI6IHBvcnQgNyBYTUlJIGNvbnRyb2wgMCAqL1xcbisjZGVmaW5lIEtTWjk4OTdfUkVHX1BPUlQ3X1hNSUlfQ1RSTF8wXFx0MHg3MzAwXFxuKyNkZWZpbmUgS1NaOTg5N19QT1JUN19TR01JSV9TRUxcXHRcXHRCSVQoNylcXG4rXFxuIC8qIERyaXZlciBzZXQgc3dpdGNoIGJyb2FkY2FzdCBzdG9ybSBwcm90ZWN0aW9uIGF0IDEwJSByYXRlLiAqL1xcbiAjZGVmaW5lIEJST0FEQ0FTVF9TVE9STV9QUk9UX1JBVEVcXHQxMFxcbiBcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaCBiL2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9taWNyb2NoaXAta3N6LmhcXG5pbmRleCAwMjg3ODFhZDQwNTkzLi5mZThkZjE3NzQyODljIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9taWNyb2NoaXAta3N6LmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbWljcm9jaGlwLWtzei5oXFxuQEAgLTM0LDYgKzM0LDcgQEAgZW51bSBrc3pfY2hpcF9pZCB7XFxuIFxcdEtTWjk0NzdfQ0hJUF9JRCA9IDB4MDA5NDc3MDAsXFxuIFxcdEtTWjk4OTZfQ0hJUF9JRCA9IDB4MDA5ODk2MDAsXFxuIFxcdEtTWjk4OTdfQ0hJUF9JRCA9IDB4MDA5ODk3MDAsXFxuK1xcdEtTWjk4OTdTX0NISVBfSUQgPSAweDAwOTg5NzAxLFxcbiBcXHRLU1o5ODkzX0NISVBfSUQgPSAweDAwOTg5MzAwLFxcbiBcXHRLU1o5NTYzX0NISVBfSUQgPSAweDAwOTU2MzAwLFxcbiBcXHRLU1o4NTY3X0NISVBfSUQgPSAweDAwODU2NzAwLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNDoyODo1NS4xNzI4OTEzODhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjQyNTIxMTU2MTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGRpc3Rpbmd1aXNoaW5nIHRoZSBLU1o5ODk3UyBFdGhlcm5ldCBzd2l0Y2ggdmFyaWFudCB3aXRoaW4gdGhlIE1pY3JvY2hpcCBLU1ogc3dpdGNoIERTQSBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvKS4gVGhpcyBkcml2ZXIgaW50ZXJhY3RzIHdpdGggZGlzY3JldGUgcGh5c2ljYWwgTWljcm9jaGlwIHN3aXRjaCBBU0lDcyBvdmVyIEkyQy9TUEkvU01JIGJ1c2VzLiBCZWNhdXNlIHRoZSByZXF1aXJlZCBwaHlzaWNhbCBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoZS5nLiwgUUVNVSBhbWQ2NCksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMDZlZmM2MDY5NWQyODAzNDk3MzJiODliMmRjM2Q3YzIxYzgzYjU4MFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgU2VwIDUgMTQ6Mjg6NTIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jXG5pbmRleCAxYTlkNmY4M2EwMjMyLi44MTc5OGE5ZmE2NzFkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jXG5AQCAtMTQ4Niw2ICsxNDg2LDQxIEBAIGNvbnN0IHN0cnVjdCBrc3pfY2hpcF9kYXRhIGtzel9zd2l0Y2hfY2hpcHNbXSA9IHtcbiBcdFx0LmdiaXRfY2FwYWJsZVx0PSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZX0sXG4gXHR9LFxuIFxuK1x0W0tTWjk4OTdTXSA9IHtcbitcdFx0LmNoaXBfaWQgPSBLU1o5ODk3U19DSElQX0lELFxuK1x0XHQuZGV2X25hbWUgPSBcIktTWjk4OTdTXCIsXG4rXHRcdC5udW1fdmxhbnMgPSA0MDk2LFxuK1x0XHQubnVtX2FsdXMgPSA0MDk2LFxuK1x0XHQubnVtX3N0YXRpY3MgPSAxNixcbitcdFx0LmNwdV9wb3J0cyA9IDB4N0YsXHQvKiBjYW4gYmUgY29uZmlndXJlZCBhcyBjcHUgcG9ydCAqL1xuK1x0XHQucG9ydF9jbnQgPSA3LFx0XHQvKiB0b3RhbCBwaHlzaWNhbCBwb3J0IGNvdW50ICovXG4rXHRcdC5wb3J0X25pcnFzID0gMixcbitcdFx0Lm51bV90eF9xdWV1ZXMgPSA0LFxuK1x0XHQubnVtX2lwbXMgPSA4LFxuK1x0XHQub3BzID0gXHUwMDI2a3N6OTQ3N19kZXZfb3BzLFxuK1x0XHQuc3dpdGNoX29wcyA9IFx1MDAyNmtzejk0Nzdfc3dpdGNoX29wcyxcbitcdFx0LnBoeWxpbmtfbWFjX29wcyA9IFx1MDAyNmtzejk0NzdfcGh5bGlua19tYWNfb3BzLFxuK1x0XHQucGh5X2VycmF0YV85NDc3ID0gdHJ1ZSxcbitcdFx0Lm1pYl9uYW1lcyA9IGtzejk0NzdfbWliX25hbWVzLFxuK1x0XHQubWliX2NudCA9IEFSUkFZX1NJWkUoa3N6OTQ3N19taWJfbmFtZXMpLFxuK1x0XHQucmVnX21pYl9jbnQgPSBNSUJfQ09VTlRFUl9OVU0sXG4rXHRcdC5yZWdzID0ga3N6OTQ3N19yZWdzLFxuK1x0XHQubWFza3MgPSBrc3o5NDc3X21hc2tzLFxuK1x0XHQuc2hpZnRzID0ga3N6OTQ3N19zaGlmdHMsXG4rXHRcdC54bWlpX2N0cmwwID0ga3N6OTQ3N194bWlpX2N0cmwwLFxuK1x0XHQueG1paV9jdHJsMSA9IGtzejk0NzdfeG1paV9jdHJsMSxcbitcdFx0LnN1cHBvcnRzX21paVx0PSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsXG4rXHRcdFx0XHQgICBmYWxzZSwgdHJ1ZSwgZmFsc2V9LFxuK1x0XHQuc3VwcG9ydHNfcm1paVx0PSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsXG4rXHRcdFx0XHQgICBmYWxzZSwgdHJ1ZSwgZmFsc2V9LFxuK1x0XHQuc3VwcG9ydHNfcmdtaWkgPSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsXG4rXHRcdFx0XHQgICBmYWxzZSwgdHJ1ZSwgZmFsc2V9LFxuK1x0XHQuaW50ZXJuYWxfcGh5XHQ9IHt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLFxuK1x0XHRcdFx0ICAgdHJ1ZSwgZmFsc2UsIGZhbHNlfSxcbitcdFx0LmdiaXRfY2FwYWJsZVx0PSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZX0sXG4rXHRcdC5zZ21paV9wb3J0ID0gNyxcbitcdH0sXG4rXG4gXHRbS1NaOTg5M10gPSB7XG4gXHRcdC5jaGlwX2lkID0gS1NaOTg5M19DSElQX0lELFxuIFx0XHQuZGV2X25hbWUgPSBcIktTWjk4OTNcIixcbkBAIC0zODk3LDYgKzM5MzIsNyBAQCBpbnQga3N6X3N3aXRjaF9yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuIFx0c3RydWN0IGRldmljZV9ub2RlICpwb3J0cztcbiBcdHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2U7XG4gXHR1bnNpZ25lZCBpbnQgcG9ydF9udW07XG4rXHR1MzIgbG9va3VwX2NoaXBfaWQ7XG4gXHRpbnQgcmV0O1xuIFx0aW50IGk7XG4gXG5AQCAtMzkzMyw3ICszOTY5LDMwIEBAIGludCBrc3pfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0aW5mbyA9IGtzel9sb29rdXBfaW5mbyhkZXYtXHUwMDNlY2hpcF9pZCk7XG4rXHRsb29rdXBfY2hpcF9pZCA9IGRldi1cdTAwM2VjaGlwX2lkO1xuK1xuK1x0LyogVGhlIEtTWjk4OTdTIGFuZCB0aGUgS1NaOTg5N1IgcmVwb3J0IHRoZSBzYW1lIGNoaXAgSUQgYW5kIGRpZmZlclxuK1x0ICogb25seSBpbiBjaGlwX2RhdGE6IG9ubHkgdGhlIFMgaGFzIHRoZSBTR01JSSBwb3J0IDcsIHRoZSBSIGhhcyBhXG4rXHQgKiBzZWNvbmQgUkdNSUkgcG9ydCBpbnN0ZWFkLiBCaXQgNyBvZiB0aGUgcG9ydCA3IFhNSUkgY29udHJvbCAwXG4rXHQgKiByZWdpc3RlciBpcyByZWFkLW9ubHkgYW5kIHRlbGxzIHRoZW0gYXBhcnQ7IGl0IHJlYWRzIG9uZSBvbiB0aGUgUy5cbitcdCAqIENvbXBhcmUgdGhlIEtTWjk4OTdTIGRhdGEgc2hlZXQgRFMwMDAwMjM5NEMgc2VjdGlvbiA1LjIuNC4xIHdpdGhcbitcdCAqIHRoZSBLU1o5ODk3UiBkYXRhIHNoZWV0IERTMDAwMDIzMzBEIHNlY3Rpb24gNS4yLjMuMS5cbitcdCAqXG4rXHQgKiBPbmx5IHRoZSBjaGlwX2RhdGEgZW50cnkgZGlmZmVycywgc28gZGV2LVx1MDAzZWNoaXBfaWQga2VlcHMgdGhlIHNoYXJlZFxuK1x0ICogY2hpcCBJRCBhbmQgbm90aGluZyBlbHNlIGhhcyB0byBrbm93IGFib3V0IHRoZSB2YXJpYW50LlxuK1x0ICovXG4rXHRpZiAoZGV2LVx1MDAzZWNoaXBfaWQgPT0gS1NaOTg5N19DSElQX0lEKSB7XG4rXHRcdHU4IHZhbDtcbitcbitcdFx0cmV0ID0ga3N6X3JlYWQ4KGRldiwgS1NaOTg5N19SRUdfUE9SVDdfWE1JSV9DVFJMXzAsIFx1MDAyNnZhbCk7XG4rXHRcdGlmIChyZXQpXG4rXHRcdFx0cmV0dXJuIHJldDtcbitcbitcdFx0aWYgKHZhbCBcdTAwMjYgS1NaOTg5N19QT1JUN19TR01JSV9TRUwpXG4rXHRcdFx0bG9va3VwX2NoaXBfaWQgPSBLU1o5ODk3U19DSElQX0lEO1xuK1x0fVxuK1xuK1x0aW5mbyA9IGtzel9sb29rdXBfaW5mbyhsb29rdXBfY2hpcF9pZCk7XG4gXHRpZiAoIWluZm8pXG4gXHRcdHJldHVybiAtRU5PREVWO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oIGIvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmhcbmluZGV4IGNiZTk4NDk0NTc4YzMuLjBjZmYzM2RmMDZhNGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmhcbkBAIC0yODQsNiArMjg0LDcgQEAgZW51bSBrc3pfbW9kZWwge1xuIFx0S1NaOTQ3NyxcbiBcdEtTWjk4OTYsXG4gXHRLU1o5ODk3LFxuK1x0S1NaOTg5N1MsXG4gXHRLU1o5ODkzLFxuIFx0S1NaOTU2MyxcbiBcdEtTWjk1NjcsXG5AQCAtODc0LDYgKzg3NSwxMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wga3N6X2lzX3NnbWlpX3BvcnQoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQpXG4gI2RlZmluZSBTS1VfSURfS1NaODU2M1x0XHRcdDB4M2NcbiAjZGVmaW5lIFNLVV9JRF9LU1o5NTYzXHRcdFx0MHgxY1xuIFxuKy8qIEtTWjk4OTcgc3BlY2lmaWMgcmVnaXN0ZXI6IHBvcnQgNyBYTUlJIGNvbnRyb2wgMCAqL1xuKyNkZWZpbmUgS1NaOTg5N19SRUdfUE9SVDdfWE1JSV9DVFJMXzBcdDB4NzMwMFxuKyNkZWZpbmUgS1NaOTg5N19QT1JUN19TR01JSV9TRUxcdFx0QklUKDcpXG4rXG4gLyogRHJpdmVyIHNldCBzd2l0Y2ggYnJvYWRjYXN0IHN0b3JtIHByb3RlY3Rpb24gYXQgMTAlIHJhdGUuICovXG4gI2RlZmluZSBCUk9BRENBU1RfU1RPUk1fUFJPVF9SQVRFXHQxMFxuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9taWNyb2NoaXAta3N6LmggYi9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbWljcm9jaGlwLWtzei5oXG5pbmRleCAwMjg3ODFhZDQwNTkzLi5mZThkZjE3NzQyODljIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaFxuKysrIGIvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaFxuQEAgLTM0LDYgKzM0LDcgQEAgZW51bSBrc3pfY2hpcF9pZCB7XG4gXHRLU1o5NDc3X0NISVBfSUQgPSAweDAwOTQ3NzAwLFxuIFx0S1NaOTg5Nl9DSElQX0lEID0gMHgwMDk4OTYwMCxcbiBcdEtTWjk4OTdfQ0hJUF9JRCA9IDB4MDA5ODk3MDAsXG4rXHRLU1o5ODk3U19DSElQX0lEID0gMHgwMDk4OTcwMSxcbiBcdEtTWjk4OTNfQ0hJUF9JRCA9IDB4MDA5ODkzMDAsXG4gXHRLU1o5NTYzX0NISVBfSUQgPSAweDAwOTU2MzAwLFxuIFx0S1NaODU2N19DSElQX0lEID0gMHgwMDg1NjcwMCxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE0OjI4OjU1LjE3Mjg5MjY2OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEwOTA1NTQ2OTczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipBbmFseXppbmcgYSBLU1ogU3dpdGNoIERyaXZlciBQYXRjaCoqXG5cbkFscmlnaHQsIHRoaXMgcGF0Y2ggYWZmZWN0cyBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNgLCB0aGUgaGVhZGVyLCBhbmQgYSBwbGF0Zm9ybSBkYXRhIGluY2x1ZGUuIEltbWVkaWF0ZWx5LCBJJ20gdGhpbmtpbmcgTWljcm9jaGlwIEtTWiDigJMgdGhhdCBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggRFNBIHN3aXRjaGVzLiBTcGVjaWZpY2FsbHksIHRoaW5ncyBsaWtlIHRoZSBLU1o5ODk3LCBLU1o5NDc3LCBLU1o4Nzk1LCBLU1o4ODYzLCBhbGwgc29saWQgcGxheWVycy4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gc2l6ZSB1cCB0aGUgcmVhY2ggb2YgdGhpcyBjb2RlIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIEFyZSB0aGVyZSBldmVuIGFueSB2aXJ0dWFsIGVudmlyb25tZW50cyB0aGF0IHdvdWxkIHJlYWxpc3RpY2FsbHkgaGl0IHRoaXM/IFByb2JhYmx5IG5vdCBkaXJlY3RseSwgYnV0IGl04oCZcyB3b3J0aCBrZWVwaW5nIGluIG1pbmQgcG90ZW50aWFsIGltcGxpY2F0aW9ucy5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIHF1aWNrbHkgcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGF0dGFjaG1lbnQgYW5kIHByb2JlIG1lY2hhbmlzbXMgZm9yIHRoZXNlIEtTWiBzd2l0Y2hlcy4gV2UncmUgbW9zdCBsaWtlbHkgbG9va2luZyBhdCBTUEksIEkyQywgb3IgTURJTyBmb3IgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBtYWluIHN5c3RlbS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgaW50ZXJmYWNlcyB3aXRoIHRoZSBoYXJkd2FyZSBhbmQgaGFuZGxlcyB0aGUgRFNBIGFyY2hpdGVjdHVyZS4gR3JlcHBlciBpcyBteSBmcmllbmQgaGVyZS4gVGltZSB0byBkaXZlIGludG8gYGRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvYCBhbmQgc2VlIHdoYXQgdGhlIGRyaXZlciBpcyBkb2luZyBhdCBpdHMgY29yZS4gSeKAmWxsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIG9uIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgZGV2aWNlIGVudW1lcmF0aW9uLCBpbml0aWFsaXphdGlvbiwgYW5kIGRhdGEgdHJhbnNmZXIuIEdvdHRhIHVuZGVyc3RhbmQgdGhlIGxvdy1sZXZlbCBpbnRlcmFjdGlvbnMgdG8gZ2F1Z2UgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDcwMywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE0OjI5OjA2LjA3ODQ0MTk1MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Njc1MDA5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrc3pfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTY5MCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfTkVUX0RTQV9NSUNST0NISVBfS1NaX0NPTU1PTilcXHQrPSBrc3pfc3dpdGNoLm9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlOjM6a3N6X3N3aXRjaC1vYmpzIDo9IGtzel9jb21tb24ubyBrc3pfZGNiLm9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlOjQ6a3N6X3N3aXRjaC1vYmpzICs9IGtzejk0NzcubyBrc3o5NDc3X2FjbC5vIGtzejk0NzdfdGNfZmxvd2VyLm9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlOjU6a3N6X3N3aXRjaC1vYmpzICs9IGtzejgub1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGU6Njprc3pfc3dpdGNoLW9ianMgKz0gbGFuOTM3eF9tYWluLm9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlLTctXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZT04PWlmZGVmIENPTkZJR19ORVRfRFNBX01JQ1JPQ0hJUF9LU1pfUFRQXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZTo5Omtzel9zd2l0Y2gtb2JqcyArPSBrc3pfcHRwLm9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlLTEwLWVuZGlmXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlPTEyPW9iai0kKENPTkZJR19ORVRfRFNBX01JQ1JPQ0hJUF9LU1o5NDc3X0kyQylcXHQrPSBrc3o5NDc3X2kyYy5vXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfTkVUX0RTQV9NSUNST0NISVBfS1NaX1NQSSlcXHRcXHQrPSBrc3pfc3BpLm9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlLTE0LW9iai0kKENPTkZJR19ORVRfRFNBX01JQ1JPQ0hJUF9LU1o4ODYzX1NNSSlcXHQrPSBrc3o4ODYzX3NtaS5vXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xOC0jaW5jbHVkZSBcXHUwMDNjbGludXgvZGVsYXkuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxOTojaW5jbHVkZSBcXHUwMDNjbGludXgvZHNhL2tzel9jb21tb24uaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yMC0jaW5jbHVkZSBcXHUwMDNjbGludXgvZXhwb3J0LmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zMy1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzozNDojaW5jbHVkZSBcXFwia3N6X2NvbW1vbi5oXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjM1OiNpbmNsdWRlIFxcXCJrc3pfZGNiLmhcXFwiXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzYtI2luY2x1ZGUgXFxcImtzejhfcmVnLmhcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00OS0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1MDpzdGF0aWMgY29uc3Qgc3RydWN0IGtzel9kcml2ZV9zdHJlbmd0aCBrc3o4OHgzX2RyaXZlX3N0cmVuZ3Roc1tdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUxLVxcdHsgMCwgIDgwMDAgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jPTU1PXN0cnVjdCBrc3o4OHh4X3N0YXRzX3JhdyB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05MS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo5MjpzdGF0aWMgdm9pZCBrc3pfY2ZnKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUzMiBhZGRyLCB1OCBiaXRzLCBib29sIHNldClcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05My17XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6OTQ6XFx0a3N6X3JtdzgoZGV2LCBhZGRyLCBiaXRzLCBzZXQgPyBiaXRzIDogMCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTUtfVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTk2LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjk3OnN0YXRpYyB2b2lkIGtzel9wb3J0X2NmZyhzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydCwgaW50IG9mZnNldCwgdTggYml0cyxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05OC1cXHRcXHRcXHQgYm9vbCBzZXQpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTkte1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEwMDpcXHRrc3pfcm13OChkZXYsIGRldi1cXHUwMDNlZGV2X29wcy1cXHUwMDNlZ2V0X3BvcnRfYWRkcihwb3J0LCBvZmZzZXQpLCBiaXRzLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEwMS1cXHRcXHQgc2V0ID8gYml0cyA6IDApO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTEyLSAqIFBNRSBzd2l0Y2ggZnVuY3Rpb25hbGl0aWVzLiBCb3RoIDgtYml0IHJlZ2lzdGVycyAxMTAgYW5kIDExMSBhcmVcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMTM6ICogd3JpdHRlbiBhdCBvbmNlIHdpdGgga3N6X3dyaXRlMTYsIHVzaW5nIHRoZSBzZXJpYWwgbXVsdGlwbGUgd3JpdGVcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTQtICogZnVuY3Rpb25hbGl0eS5cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExNy0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMTg6c3RhdGljIGludCBrc3o4X2luZF93cml0ZTgoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTggdGFibGUsIHUxNiBhZGRyLCB1OCBkYXRhKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExOS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMjgtXFx0Y3RybF9hZGRyID0gSU5EX0FDQ19UQUJMRSh0YWJsZSkgfCBhZGRyO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEyOTpcXHRyZXQgPSBrc3pfd3JpdGUxNihkZXYsIHJlZ3NbUkVHX0lORF9DVFJMXzBdLCBjdHJsX2FkZHIpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzMC1cXHRpZiAoIXJldClcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMzE6XFx0XFx0cmV0ID0ga3N6X3dyaXRlOChkZXYsIHJlZ3NbUkVHX0lORF9CWVRFXSwgZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTMyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQ2LSAqIFBNRSBzd2l0Y2ggZnVuY3Rpb25hbGl0aWVzLiBCb3RoIDgtYml0IHJlZ2lzdGVycyAxMTAgYW5kIDExMSBhcmVcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNDc6ICogd3JpdHRlbiBhdCBvbmNlIHdpdGgga3N6X3dyaXRlMTYsIHVzaW5nIHRoZSBzZXJpYWwgbXVsdGlwbGUgd3JpdGVcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNDgtICogZnVuY3Rpb25hbGl0eS5cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE1MS0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNTI6c3RhdGljIGludCBrc3o4X2luZF9yZWFkOChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1OCB0YWJsZSwgdTE2IGFkZHIsIHU4ICp2YWwpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTUzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE2Mi1cXHRjdHJsX2FkZHIgPSBJTkRfQUNDX1RBQkxFKHRhYmxlIHwgVEFCTEVfUkVBRCkgfCBhZGRyO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjE2MzpcXHRyZXQgPSBrc3pfd3JpdGUxNihkZXYsIHJlZ3NbUkVHX0lORF9DVFJMXzBdLCBjdHJsX2FkZHIpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE2NC1cXHRpZiAoIXJldClcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNjU6XFx0XFx0cmV0ID0ga3N6X3JlYWQ4KGRldiwgcmVnc1tSRUdfSU5EX0JZVEVdLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE2Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE3MS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNzI6c3RhdGljIGludCBrc3o4X3BtZV93cml0ZTgoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTMyIHJlZywgdTggdmFsdWUpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTczLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE3Ni1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNzc6c3RhdGljIGludCBrc3o4X3BtZV9wcmVhZDgoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIGludCBvZmZzZXQsIHU4ICpkYXRhKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE3OC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xODMtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTg0OnN0YXRpYyBpbnQga3N6OF9wbWVfcHdyaXRlOChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydCwgaW50IG9mZnNldCwgdTggZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xODUte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MTkxPXN0YXRpYyB2b2lkIGtzejg0NjNfaXJxX21hc2soc3RydWN0IGlycV9kYXRhICpkKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE5Mi17XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTkzOlxcdHN0cnVjdCBrc3pfaXJxICpraXJxID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTk0LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MTk4PXN0YXRpYyB2b2lkIGtzejg0NjNfaXJxX3VubWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmQpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTk5LXtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyMDA6XFx0c3RydWN0IGtzel9pcnEgKmtpcnEgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yMDEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYz0yMDU9c3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfY2hpcCBrc3o4NDYzX2lycV9jaGlwID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjA4LVxcdC5pcnFfdW5tYXNrXFx0XFx0PSBrc3o4NDYzX2lycV91bm1hc2ssXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjA5OlxcdC5pcnFfYnVzX2xvY2tcXHRcXHQ9IGtzel9pcnFfYnVzX2xvY2ssXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjEwOlxcdC5pcnFfYnVzX3N5bmNfdW5sb2NrXFx0PSBrc3pfaXJxX2J1c19zeW5jX3VubG9jayxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yMTEtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jPTIyMz1zdGF0aWMgY29uc3Qgc3RydWN0IGlycV9kb21haW5fb3BzIGtzejg0NjNfaXJxX2RvbWFpbl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yMjctXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjI4OnN0YXRpYyBpbnQga3N6ODQ2M19naXJxX3NldHVwKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjI5LXtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyMzA6XFx0c3RydWN0IGtzel9pcnEgKmdpcnEgPSBcXHUwMDI2ZGV2LVxcdTAwM2VnaXJxO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTIzMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTIzOS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNDA6XFx0cmV0dXJuIGtzel9pcnFfY29tbW9uX3NldHVwKGRldiwgZ2lycSwgXFx1MDAyNmtzejg0NjNfaXJxX2RvbWFpbl9vcHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI0MS19XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjQyLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI0MzpzdGF0aWMgaW50IGtzejg0NjNfcmVzZXRfc3dpdGNoKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjQ0LXtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNDU6XFx0a3N6X2NmZyhkZXYsIEtTWjg0NjNfUkVHX1NXX1JFU0VULFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI0Ni1cXHRcXHRLU1o4NDYzX0dMT0JBTF9TT0ZUV0FSRV9SRVNFVCB8IEtTWjg0NjNfUFRQX1NPRlRXQVJFX1JFU0VULFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI0Ny1cXHRcXHR0cnVlKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNDg6XFx0a3N6X2NmZyhkZXYsIEtTWjg0NjNfUkVHX1NXX1JFU0VULFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI0OS1cXHRcXHRLU1o4NDYzX0dMT0JBTF9TT0ZUV0FSRV9SRVNFVCB8IEtTWjg0NjNfUFRQX1NPRlRXQVJFX1JFU0VULFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjUzLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI1NDpzdGF0aWMgaW50IGtzejhfcmVzZXRfc3dpdGNoKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjU1LXtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNTY6XFx0aWYgKGtzel9pc19rc3o4OHgzKGRldikpIHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNTctXFx0XFx0LyogcmVzZXQgc3dpdGNoICovXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjU4OlxcdFxcdGtzel9jZmcoZGV2LCBLU1o4ODYzX1JFR19TV19SRVNFVCxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNTktXFx0XFx0XFx0S1NaODg2M19HTE9CQUxfU09GVFdBUkVfUkVTRVQgfCBLU1o4ODYzX1BDU19SRVNFVCwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjYwOlxcdFxcdGtzel9jZmcoZGV2LCBLU1o4ODYzX1JFR19TV19SRVNFVCxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNjEtXFx0XFx0XFx0S1NaODg2M19HTE9CQUxfU09GVFdBUkVfUkVTRVQgfCBLU1o4ODYzX1BDU19SRVNFVCwgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjYzLVxcdFxcdC8qIHJlc2V0IHN3aXRjaCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI2NDpcXHRcXHRrc3pfd3JpdGU4KGRldiwgUkVHX1BPV0VSX01BTkFHRU1FTlRfMSxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNjUtXFx0XFx0XFx0ICAgU1dfU09GVFdBUkVfUE9XRVJfRE9XTiBcXHUwMDNjXFx1MDAzYyBTV19QT1dFUl9NQU5BR0VNRU5UX01PREVfUyk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjY2OlxcdFxcdGtzel93cml0ZTgoZGV2LCBSRUdfUE9XRVJfTUFOQUdFTUVOVF8xLCAwKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNjctXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MjcyPXN0YXRpYyBpbnQga3N6ODh4eF9jaGFuZ2VfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCBtdHUpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjczLXtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNzQ6XFx0c3RydWN0IGtzel9kZXZpY2UgKmRldiA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI3NS1cXHRpbnQgZnJhbWVfc2l6ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI4Ny1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyODg6XFx0cmV0dXJuIGtzel9ybXc4KGRldiwgUkVHX1NXX0NUUkxfMiwgS1NaODg2M19MRUdBTF9QQUNLRVRfRU5BQkxFIHxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yODktXFx0XFx0XFx0S1NaODg2M19IVUdFX1BBQ0tFVF9FTkFCTEUsIGN0cmwyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jPTI5Mj1zdGF0aWMgaW50IGtzejg3eHhfY2hhbmdlX210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgbXR1KVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI5My17XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6Mjk0OlxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yOTUtXFx0dTggY3RybDEgPSAwLCBjdHJsMiA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zMDgtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MzA5OlxcdHJldCA9IGtzel9ybXc4KGRldiwgUkVHX1NXX0NUUkxfMSwgU1dfSFVHRV9QQUNLRVQsIGN0cmwxKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zMTAtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTMxMi1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzozMTM6XFx0cmV0dXJuIGtzel9ybXc4KGRldiwgUkVHX1NXX0NUUkxfMiwgU1dfTEVHQUxfUEFDS0VUX0RJU0FCTEUsIGN0cmwyKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zMTQtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MzIxPXN0YXRpYyBpbnQga3N6ODh4eF9tYXhfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zMjUtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MzI2OnN0YXRpYyBpbnQga3N6OF9wb3J0X3F1ZXVlX3NwbGl0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0LCBpbnQgcXVldWVzKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTMyNy17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zMzMtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MzM0OlxcdGlmIChrc3pfaXNfa3N6ODh4MyhkZXYpKSB7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzM1LVxcdFxcdG1hc2tfNHEgPSBLU1o4ODczX1BPUlRfNFFVRVVFX1NQTElUX0VOO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzQ1LVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjM0NjpcXHRcXHRyZXQgPSBrc3pfcm13OChkZXYsIFJFR19TV19DVFJMXzMsIFdFSUdIVEVEX0ZBSVJfUVVFVUVfRU5BQkxFLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM0Ny1cXHRcXHRcXHQgICAgICAgV0VJR0hURURfRkFJUl9RVUVVRV9FTkFCTEUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzQ5LVxcdFxcdFxcdHJldHVybiByZXQ7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MzUwOlxcdH0gZWxzZSBpZiAoa3N6X2lzX2tzejg0NjMoZGV2KSkge1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM1MS1cXHRcXHRtYXNrXzRxID0gS1NaODg3M19QT1JUXzRRVUVVRV9TUExJVF9FTjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM2My1cXHRcXHQgKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzozNjQ6XFx0XFx0cmV0ID0ga3N6X3JtdzgoZGV2LCBSRUdfU1dfQ1RSTF8xOSxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zNjUtXFx0XFx0XFx0ICAgICAgIFNXX09VVF9SQVRFX0xJTUlUX1FVRVVFX0JBU0VELFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzc1LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjM3NjpcXHRyZXQgPSBrc3pfcHJtdzgoZGV2LCBwb3J0LCByZWdfNHEsIG1hc2tfNHEsIGRhdGFfNHEpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM3Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzc5LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjM4MDpcXHRyZXR1cm4ga3N6X3BybXc4KGRldiwgcG9ydCwgcmVnXzJxLCBtYXNrXzJxLCBkYXRhXzJxKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zODEtfVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM4Mi1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzozODM6c3RhdGljIHZvaWQga3N6OF9yX21pYl9jbnQoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIHUxNiBhZGRyLCB1NjQgKmNudClcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zODQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzk4LVxcdG11dGV4X2xvY2soXFx1MDAyNmRldi1cXHUwMDNlYWx1X211dGV4KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzozOTk6XFx0a3N6X3dyaXRlMTYoZGV2LCByZWdzW1JFR19JTkRfQ1RSTF8wXSwgY3RybF9hZGRyKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00MDAtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00MDQtXFx0Zm9yIChsb29wID0gMjsgbG9vcCBcXHUwMDNlIDA7IGxvb3AtLSkge1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjQwNTpcXHRcXHRrc3pfcmVhZDgoZGV2LCByZWdzW1JFR19JTkRfTUlCX0NIRUNLXSwgXFx1MDAyNmNoZWNrKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00MDYtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDA3LVxcdFxcdGlmIChjaGVjayBcXHUwMDI2IG1hc2tzW01JQl9DT1VOVEVSX1ZBTElEXSkge1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjQwODpcXHRcXHRcXHRrc3pfcmVhZDMyKGRldiwgcmVnc1tSRUdfSU5EX0RBVEFfTE9dLCBcXHUwMDI2ZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDA5LVxcdFxcdFxcdGlmIChjaGVjayBcXHUwMDI2IG1hc2tzW01JQl9DT1VOVEVSX09WRVJGTE9XXSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQxNy1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo0MTg6c3RhdGljIHZvaWQga3N6ODc5NV9yX21pYl9wa3Qoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIHUxNiBhZGRyLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQxOS1cXHRcXHRcXHQgICAgICB1NjQgKmRyb3BwZWQsIHU2NCAqY250KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDM2LVxcdG11dGV4X2xvY2soXFx1MDAyNmRldi1cXHUwMDNlYWx1X211dGV4KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo0Mzc6XFx0a3N6X3dyaXRlMTYoZGV2LCByZWdzW1JFR19JTkRfQ1RSTF8wXSwgY3RybF9hZGRyKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00MzgtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00NDItXFx0Zm9yIChsb29wID0gMjsgbG9vcCBcXHUwMDNlIDA7IGxvb3AtLSkge1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjQ0MzpcXHRcXHRrc3pfcmVhZDgoZGV2LCByZWdzW1JFR19JTkRfTUlCX0NIRUNLXSwgXFx1MDAyNmNoZWNrKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00NDQtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDQ1LVxcdFxcdGlmIChjaGVjayBcXHUwMDI2IG1hc2tzW01JQl9DT1VOVEVSX1ZBTElEXSkge1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjQ0NjpcXHRcXHRcXHRrc3pfcmVhZDMyKGRldiwgcmVnc1tSRUdfSU5EX0RBVEFfTE9dLCBcXHUwMDI2ZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDQ3LVxcdFxcdFxcdGlmIChhZGRyIFxcdTAwM2MgMikge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDY5LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjQ3MDpzdGF0aWMgdm9pZCBrc3o4ODYzX3JfbWliX3BrdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydCwgdTE2IGFkZHIsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDcxLVxcdFxcdFxcdCAgICAgIHU2NCAqZHJvcHBlZCwgdTY0ICpjbnQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00ODMtXFx0XFx0XFx0ICAgS1NaODg2M19NSUJfUEFDS0VUX0RST1BQRURfUlhfMDtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo0ODQ6XFx0aWYgKGtzel9pc184ODk1X2ZhbWlseShkZXYpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDg1LVxcdCAgICBjdHJsX2FkZHIgPT0gS1NaODg2M19NSUJfUEFDS0VUX0RST1BQRURfUlhfMClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQ5MC1cXHRtdXRleF9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZWFsdV9tdXRleCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NDkxOlxcdGtzel93cml0ZTE2KGRldiwgcmVnc1tSRUdfSU5EX0NUUkxfMF0sIGN0cmxfYWRkcik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NDkyOlxcdGtzel9yZWFkMzIoZGV2LCByZWdzW1JFR19JTkRfREFUQV9MT10sIFxcdTAwMjZkYXRhKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00OTMtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZWFsdV9tdXRleCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MDUtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTA2OnN0YXRpYyB2b2lkIGtzejhfcl9taWJfcGt0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0LCB1MTYgYWRkcixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MDctXFx0XFx0XFx0ICAgdTY0ICpkcm9wcGVkLCB1NjQgKmNudClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUxNC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1MTU6c3RhdGljIHZvaWQga3N6OF9mcmVlemVfbWliKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0LCBib29sIGZyZWV6ZSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MTYte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTIxLVxcdGlmIChmcmVlemUpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTIyOlxcdFxcdGtzel9jZmcoZGV2LCBSRUdfU1dfQ1RSTF82LCBCSVQocG9ydCksIHRydWUpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjUyMzpcXHRrc3pfY2ZnKGRldiwgUkVHX1NXX0NUUkxfNiwgU1dfTUlCX0NPVU5URVJfRlJFRVpFLCBmcmVlemUpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUyNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUyNi1cXHRpZiAoIWZyZWV6ZSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1Mjc6XFx0XFx0a3N6X2NmZyhkZXYsIFJFR19TV19DVFJMXzYsIEJJVChwb3J0KSwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUyOC19XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTI5LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjUzMDpzdGF0aWMgdm9pZCBrc3o4X3BvcnRfaW5pdF9jbnQoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTMxLXtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1MzI6XFx0c3RydWN0IGtzel9wb3J0X21pYiAqbWliID0gXFx1MDAyNmRldi1cXHUwMDNlcG9ydHNbcG9ydF0ubWliO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUzMy1cXHR1NjQgKmRyb3BwZWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MzUtXFx0LyogRm9yIEtTWjg3OTUgZmFtaWx5LiAqL1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjUzNjpcXHRpZiAoa3N6X2lzX2tzejg3eHgoZGV2KSkge1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUzNy1cXHRcXHQvKiBmbHVzaCBhbGwgZW5hYmxlZCBwb3J0IE1JQiBjb3VudGVycyAqL1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjUzODpcXHRcXHRrc3pfY2ZnKGRldiwgUkVHX1NXX0NUUkxfNiwgQklUKHBvcnQpLCB0cnVlKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1Mzk6XFx0XFx0a3N6X2NmZyhkZXYsIFJFR19TV19DVFJMXzYsIFNXX01JQl9DT1VOVEVSX0ZMVVNILCB0cnVlKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1NDA6XFx0XFx0a3N6X2NmZyhkZXYsIFJFR19TV19DVFJMXzYsIEJJVChwb3J0KSwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTU0MS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01NjItXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTYzOnN0YXRpYyBpbnQga3N6OF9yX3RhYmxlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCB0YWJsZSwgdTE2IGFkZHIsIHU2NCAqZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01NjQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTczLVxcdG11dGV4X2xvY2soXFx1MDAyNmRldi1cXHUwMDNlYWx1X211dGV4KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1NzQ6XFx0cmV0ID0ga3N6X3dyaXRlMTYoZGV2LCByZWdzW1JFR19JTkRfQ1RSTF8wXSwgY3RybF9hZGRyKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01NzUtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTU3Ny1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1Nzg6XFx0cmV0ID0ga3N6X3JlYWQ2NChkZXYsIHJlZ3NbUkVHX0lORF9EQVRBX0hJXSwgZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTc5LXVubG9ja19hbHU6XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01ODQtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTg1OnN0YXRpYyBpbnQga3N6OF93X3RhYmxlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCB0YWJsZSwgdTE2IGFkZHIsIHU2NCBkYXRhKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTU4Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01OTUtXFx0bXV0ZXhfbG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VhbHVfbXV0ZXgpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjU5NjpcXHRyZXQgPSBrc3pfd3JpdGU2NChkZXYsIHJlZ3NbUkVHX0lORF9EQVRBX0hJXSwgZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTk3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01OTktXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NjAwOlxcdHJldCA9IGtzel93cml0ZTE2KGRldiwgcmVnc1tSRUdfSU5EX0NUUkxfMF0sIGN0cmxfYWRkcik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNjAxLXVubG9ja19hbHU6XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02MDYtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NjA3OnN0YXRpYyBpbnQga3N6OF92YWxpZF9keW5fZW50cnkoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTggKmRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNjA4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTYxNy1cXHRkbyB7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NjE4OlxcdFxcdHJldCA9IGtzel9yZWFkOChkZXYsIHJlZ3NbUkVHX0lORF9EQVRBX0NIRUNLXSwgZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNjE5LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02MjktXFx0LyogRW50cnkgaXMgcmVhZHkgZm9yIGFjY2Vzc2luZy4gKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo2MzA6XFx0cmV0dXJuIGtzel9yZWFkOChkZXYsIHJlZ3NbUkVHX0lORF9EQVRBXzhdLCBkYXRhKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02MzEtfVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTYzMi1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo2MzM6c3RhdGljIGludCBrc3o4X3JfZHluX21hY190YWJsZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MTYgYWRkciwgdTggKm1hY19hZGRyLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTYzNC1cXHRcXHRcXHRcXHR1OCAqZmlkLCB1OCAqc3JjX3BvcnQsIHUxNiAqZW50cmllcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTY1Mi1cXHRtdXRleF9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZWFsdV9tdXRleCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NjUzOlxcdHJldCA9IGtzel93cml0ZTE2KGRldiwgcmVnc1tSRUdfSU5EX0NUUkxfMF0sIGN0cmxfYWRkcik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNjU0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02NjUtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NjY2OlxcdHJldCA9IGtzel9yZWFkNjQoZGV2LCByZWdzW1JFR19JTkRfREFUQV9ISV0sIFxcdTAwMjZidWYpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTY2Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNjk4LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjY5OTpzdGF0aWMgaW50IGtzejhfcl9zdGFfbWFjX3RhYmxlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUxNiBhZGRyLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTcwMC1cXHRcXHRcXHRcXHRzdHJ1Y3QgYWx1X3N0cnVjdCAqYWx1LCBib29sICp2YWxpZClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTczOC1cXHQgKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo3Mzk6XFx0aWYgKGtzel9pc19rc3o4N3h4KGRldikgfHwga3N6X2lzXzg4OTVfZmFtaWx5KGRldikpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNzQwLVxcdFxcdGRhdGFfaGkgXFx1MDAzZVxcdTAwM2U9IDE7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy03NTAtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NzUxOnN0YXRpYyBpbnQga3N6OF93X3N0YV9tYWNfdGFibGUoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTE2IGFkZHIsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNzUyLVxcdFxcdFxcdFxcdHN0cnVjdCBhbHVfc3RydWN0ICphbHUpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy03ODMtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6Nzg0OnN0YXRpYyB2b2lkIGtzejhfZnJvbV92bGFuKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUzMiB2bGFuLCB1OCAqZmlkLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTc4NS1cXHRcXHRcXHQgICB1OCAqbWVtYmVyLCB1OCAqdmFsaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy03OTgtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6Nzk5OnN0YXRpYyB2b2lkIGtzejhfdG9fdmxhbihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1OCBmaWQsIHU4IG1lbWJlciwgdTggdmFsaWQsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtODAwLVxcdFxcdFxcdCB1MTYgKnZsYW4pXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy04MTMtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6ODE0OnN0YXRpYyB2b2lkIGtzejhfcl92bGFuX2VudHJpZXMoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTE2IGFkZHIpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtODE1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTgyOS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo4MzA6c3RhdGljIHZvaWQga3N6OF9yX3ZsYW5fdGFibGUoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTE2IHZpZCwgdTE2ICp2bGFuKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTgzMS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy04NDMtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6ODQ0OnN0YXRpYyB2b2lkIGtzejhfd192bGFuX3RhYmxlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUxNiB2aWQsIHUxNiB2bGFuKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTg0NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy04NzEtICovXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6ODcyOnN0YXRpYyBpbnQga3N6ODc5eF9nZXRfbG9vcGJhY2soc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTE2IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtODczLVxcdFxcdFxcdFxcdHUxNiAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtODc3LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjg3ODpcXHRyZXQgPSBrc3pfcHJlYWQ4KGRldiwgcG9ydCwgUkVHX1BPUlRfU1RBVFVTXzMsIFxcdTAwMjZzdGF0Myk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtODc5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy04OTktICovXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6OTAwOnN0YXRpYyBpbnQga3N6ODc5eF9zZXRfbG9vcGJhY2soc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTE2IHBvcnQsIHUxNiB2YWwpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTAxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTkwNi1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo5MDc6XFx0cmV0dXJuIGtzel9wcm13OChkZXYsIHBvcnQsIFJFR19QT1JUX1NUQVRVU18zLCBQT1JUX1BIWV9MT09QQkFDSyxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05MDgtXFx0XFx0XFx0IHN0YXQzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTkxMC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo5MTE6c3RhdGljIGludCBrc3o4N3h4X2FwcGx5X2xvd19sb3NzX3ByZXNldChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBib29sIGVuYWJsZSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05MTIte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTIxLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjkyMjpcXHRpZiAoIWtzel9pc19rc3o4N3h4KGRldikpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTIzLVxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTk1Ny0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo5NTg6c3RhdGljIGludCBrc3o4X3JfcGh5X2N0cmwoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIHUxNiAqdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTk1OS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05NjUtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6OTY2OlxcdHJldCA9IGtzel9wcmVhZDgoZGV2LCBwb3J0LCByZWdzW1BfTElOS19TVEFUVVNdLCBcXHUwMDI2cmVnX3ZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTY3LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTcyLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjk3MzpcXHRyZXQgPSBrc3pfcHJlYWQ4KGRldiwgcG9ydCwgUkVHX1BPUlRfTElOS19NRF9DVFJMLCBcXHUwMDI2cmVnX3ZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTc0LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTAyMy0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMDI0OnN0YXRpYyBpbnQga3N6OF9yX3BoeV9ibWNyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUxNiBwb3J0LCB1MTYgKnZhbClcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDI1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEwMzEtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTAzMjpcXHRyZXQgPSBrc3pfcHJlYWQ4KGRldiwgcG9ydCwgcmVnc1tQX05FR19SRVNUQVJUX0NUUkxdLCBcXHUwMDI2cmVzdGFydCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTAzMy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTAzNS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMDM2OlxcdHJldCA9IGtzel9wcmVhZDgoZGV2LCBwb3J0LCByZWdzW1BfU1BFRURfU1RBVFVTXSwgXFx1MDAyNnNwZWVkKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDM3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDM5LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEwNDA6XFx0cmV0ID0ga3N6X3ByZWFkOChkZXYsIHBvcnQsIHJlZ3NbUF9GT1JDRV9DVFJMXSwgXFx1MDAyNmN0cmwpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEwNDEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEwNDYtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTA0NzpcXHRpZiAoa3N6X2lzX2tzejg4eDMoZGV2KSkge1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEwNDgtXFx0XFx0aWYgKHJlc3RhcnQgXFx1MDAyNiBLU1o4ODczX1BPUlRfUEhZX0xPT1BCQUNLKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTA4OC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMDg5OnN0YXRpYyBpbnQga3N6OF9yX3BoeShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MTYgcGh5LCB1MTYgcmVnLCB1MTYgKnZhbClcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExMDYtXFx0Y2FzZSBNSUlfQk1TUjpcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMTA3OlxcdFxcdHJldCA9IGtzel9wcmVhZDgoZGV2LCBwLCByZWdzW1BfTElOS19TVEFUVVNdLCBcXHUwMDI2bGluayk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTEwOC1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTEyNC1cXHRjYXNlIE1JSV9QSFlTSUQyOlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjExMjU6XFx0XFx0aWYgKGtzel9pc19rc3o4OHgzKGRldikpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTEyNi1cXHRcXHRcXHRkYXRhID0gS1NaODg2M19JRF9MTztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExMzAtXFx0Y2FzZSBNSUlfQURWRVJUSVNFOlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjExMzE6XFx0XFx0cmV0ID0ga3N6X3ByZWFkOChkZXYsIHAsIHJlZ3NbUF9MT0NBTF9DVFJMXSwgXFx1MDAyNmN0cmwpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExMzItXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExNDctXFx0Y2FzZSBNSUlfTFBBOlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjExNDg6XFx0XFx0cmV0ID0ga3N6X3ByZWFkOChkZXYsIHAsIHJlZ3NbUF9SRU1PVEVfU1RBVFVTXSwgXFx1MDAyNmxpbmspO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExNDktXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExNjYtXFx0Y2FzZSBQSFlfUkVHX0xJTktfTUQ6XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTE2NzpcXHRcXHRyZXQgPSBrc3pfcHJlYWQ4KGRldiwgcCwgUkVHX1BPUlRfTElOS19NRF9DVFJMLCBcXHUwMDI2dmFsMSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTE2OC1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTE3MC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMTcxOlxcdFxcdHJldCA9IGtzel9wcmVhZDgoZGV2LCBwLCBSRUdfUE9SVF9MSU5LX01EX1JFU1VMVCwgXFx1MDAyNnZhbDIpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExNzItXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExOTQtXFx0Y2FzZSBQSFlfUkVHX0tTWjg3WFhfU0hPUlRfQ0FCTEU6XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTE5NTpcXHRcXHRpZiAoIWtzel9pc19rc3o4N3h4KGRldikpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTE5Ni1cXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMjAwLVxcdGNhc2UgUEhZX1JFR19LU1o4N1hYX0xQRl9CVzpcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMjAxOlxcdFxcdGlmICgha3N6X2lzX2tzejg3eHgoZGV2KSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMjAyLVxcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEyMDUtXFx0Y2FzZSBQSFlfUkVHX0tTWjg3WFhfRVFfSU5JVDpcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMjA2OlxcdFxcdGlmICgha3N6X2lzX2tzejg3eHgoZGV2KSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMjA3LVxcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jPTEyMjA9c3RhdGljIGludCBrc3o4X3BoeV9yZWFkMTYoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgYWRkciwgaW50IHJlZylcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMjIxLXtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMjIyOlxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMjIzLVxcdHUxNiB2YWwgPSAweGZmZmY7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMjQ1LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEyNDY6c3RhdGljIGludCBrc3o4X3dfcGh5X2N0cmwoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIHUxNiB2YWwpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTI0Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMjU5LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEyNjA6XFx0cmV0ID0ga3N6X3BybXc4KGRldiwgcG9ydCwgUkVHX1BPUlRfTElOS19NRF9DVFJMLCBQT1JUX0ZPUkNFX0xJTksgfFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEyNjEtXFx0XFx0XFx0UE9SVF9QT1dFUl9TQVZJTkcgfCBQT1JUX1BIWV9SRU1PVEVfTE9PUEJBQ0ssIHJlZ192YWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTI5OS0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMzAwOnN0YXRpYyBpbnQga3N6OF93X3BoeV9ibWNyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUxNiBwb3J0LCB1MTYgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzMDEte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTMxMy1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMzE0OlxcdHJldCA9IGtzel9wcm13OChkZXYsIHBvcnQsIHJlZ3NbUF9TUEVFRF9TVEFUVVNdLCBQT1JUX0hQX01ESVgsIHNwZWVkKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzE1LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzE4LVxcdGN0cmwgPSAwO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEzMTk6XFx0aWYgKGtzel9pc19rc3o4OHgzKGRldikpIHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzIwLVxcdFxcdGlmICgodmFsIFxcdTAwMjYgQk1DUl9BTkVOQUJMRSkpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzM2LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEzMzc6XFx0cmV0ID0ga3N6X3BybXc4KGRldiwgcG9ydCwgcmVnc1tQX0ZPUkNFX0NUUkxdLCBQT1JUX0ZPUkNFXzEwMF9NQklUIHxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzM4LVxcdFxcdCAvKiBQT1JUX0FVVE9fTkVHX0VOQUJMRSBhbmQgUE9SVF9BVVRPX05FR19ESVNBQkxFIGFyZSB0aGUgc2FtZVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTM2Ni1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMzY3OlxcdGlmIChrc3pfaXNfa3N6ODh4MyhkZXYpKSB7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTM2OC1cXHRcXHRyZXN0YXJ0X21hc2sgfD0gS1NaODg3M19QT1JUX1BIWV9MT09QQkFDSztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzNzctXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTM3ODpcXHRyZXR1cm4ga3N6X3BybXc4KGRldiwgcG9ydCwgcmVnc1tQX05FR19SRVNUQVJUX0NUUkxdLCByZXN0YXJ0X21hc2ssXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTM3OS1cXHRcXHRcXHQgcmVzdGFydCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzgxLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEzODI6c3RhdGljIGludCBrc3o4X3dfcGh5KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUxNiBwaHksIHUxNiByZWcsIHUxNiB2YWwpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTM4My17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzk3LVxcdGNhc2UgTUlJX0FEVkVSVElTRTpcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMzk4OlxcdFxcdHJldCA9IGtzel9wcmVhZDgoZGV2LCBwLCByZWdzW1BfTE9DQUxfQ1RSTF0sIFxcdTAwMjZjdHJsKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzk5LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNDE5LVxcdFxcdGlmIChkYXRhICE9IGN0cmwpIHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNDIwOlxcdFxcdFxcdHJldCA9IGtzel9wd3JpdGU4KGRldiwgcCwgcmVnc1tQX0xPQ0FMX0NUUkxdLCBkYXRhKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNDIxLVxcdFxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNDI2LVxcdFxcdGlmICh2YWwgXFx1MDAyNiBQSFlfU1RBUlRfQ0FCTEVfRElBRylcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNDI3OlxcdFxcdFxcdGtzel9wb3J0X2NmZyhkZXYsIHAsIFJFR19QT1JUX0xJTktfTURfQ1RSTCwgUE9SVF9TVEFSVF9DQUJMRV9ESUFHLCB0cnVlKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNDI4LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQzNS1cXHRjYXNlIFBIWV9SRUdfS1NaODdYWF9TSE9SVF9DQUJMRTpcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNDM2OlxcdFxcdGlmICgha3N6X2lzX2tzejg3eHgoZGV2KSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNDM3LVxcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE0NDQtXFx0Y2FzZSBQSFlfUkVHX0tTWjg3WFhfTFBGX0JXOlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjE0NDU6XFx0XFx0aWYgKCFrc3pfaXNfa3N6ODd4eChkZXYpKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE0NDYtXFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQ1Ny1cXHRjYXNlIFBIWV9SRUdfS1NaODdYWF9FUV9JTklUOlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjE0NTg6XFx0XFx0aWYgKCFrc3pfaXNfa3N6ODd4eChkZXYpKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE0NTktXFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MTQ3Nz1zdGF0aWMgaW50IGtzejhfcGh5X3dyaXRlMTYoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgYWRkciwgaW50IHJlZywgdTE2IHZhbClcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTQ6Mjk6MDYuMTI1MTk0NDUxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjA0ODk0NDg0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cgYXJvdW5kIGBrc3pfc3dpdGNoX3JlZ2lzdGVyYC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGhvdyBpdCdzIGludm9rZWQgYW5kLCBjcml0aWNhbGx5LCB3aGF0IGJ1c2VzIGl0J3MgcHJvYmluZyBvdmVyLiBUaGlzIGlzIGxpa2VseSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaXRzIGRldmljZSBkaXNjb3ZlcnkgbWVjaGFuaXNtLlxuXG5SaWdodCwgdGltZSB0byBleGVjdXRlIGEgY29kZSBzZWFyY2ggZm9yIGBrc3pfc3dpdGNoX3JlZ2lzdGVyYCB3aXRoaW4gdGhlIGNvZGViYXNlLiBIb3BlZnVsbHksIEknbGwgZmluZCBhbGwgdGhlIGNhbGwgc2l0ZXMgYW5kIHVuZGVyc3RhbmQgdGhlIGVudHJ5IHBvaW50cyBmb3IgdGhpcyBmdW5jdGlvbi4gS25vd2luZyB3aGljaCBidXMgZHJpdmVycyBtaWdodCBiZSBjYWxsaW5nIGludG8gdGhpcyBpcyB3aGVyZSB0byBmb2N1cyB0aGUgaW52ZXN0aWdhdGlvbi4gVGhpcyB3aWxsIGdpdmUgYSBnb29kIG92ZXJ2aWV3IG9mIHRoZSBkZXNpZ24hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MjExLCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTQ6Mjk6MDguMTc0MTQyNjQ4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1Mzk3NjczOTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3N6X3N3aXRjaF9yZWdpc3RlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmM9MTMzPXN0YXRpYyBpbnQga3N6ODg2M19zbWlfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jLTE2OC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmM6MTY5OlxcdHJldCA9IGtzel9zd2l0Y2hfcmVnaXN0ZXIoZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmMtMTcwLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jPTE3PXN0YXRpYyBpbnQga3N6OTQ3N19pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmkyYylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy01MC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmM6NTE6XFx0cmV0ID0ga3N6X3N3aXRjaF9yZWdpc3RlcihkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy01Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTM5MjQ9c3RhdGljIGludCBrc3o4NDYzX3JlbGVhc2Vfc3RyYXBzX3NwaShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzkyOC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzozOTI5OmludCBrc3pfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzkzMC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy00MDk4LX1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzo0MDk5OkVYUE9SVF9TWU1CT0woa3N6X3N3aXRjaF9yZWdpc3Rlcik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtNDEwMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oPTQyOD1zdHJ1Y3Qga3N6X2RldmljZSAqa3N6X3N3aXRjaF9hbGxvYyhzdHJ1Y3QgZGV2aWNlICpiYXNlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtNDMwLVxcdFxcdFxcdFxcdCAgICB2b2lkICpwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaDo0MzE6aW50IGtzel9zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtNDMyLXZvaWQga3N6X3N3aXRjaF9yZW1vdmUoc3RydWN0IGtzel9kZXZpY2UgKmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYz0xMzc9c3RhdGljIGludCBrc3pfc3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYy0xOTQtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MTk1OlxcdHJldCA9IGtzel9zd2l0Y2hfcmVnaXN0ZXIoZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYy0xOTYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE0OjI5OjA5LjcxMzkxNDYzM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ2NzY1NjY5MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBSZWFjaGFiaWxpdHkgaW4gUUVNVS9TeXprYWxsZXIgZm9yIE1pY3JvY2hpcCBTd2l0Y2ggRHJpdmVycyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSSBzZWUgd2UncmUgbG9va2luZyBhdCBga3N6OTQ3N19pMmMuY2AsIGBrc3pfc3BpLmNgLCBhbmQgcG90ZW50aWFsbHkgYGtzejg4NjNfc21pLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIHRoZXNlIGJlIGluc3RhbnRpYXRlZCwgcHJvYmVkLCBhbmQgdWx0aW1hdGVseSBmdXp6ZWQgZWZmZWN0aXZlbHkgd2l0aGluIFFFTVUgb3IgU3l6a2FsbGVyPyBPciBhcmUgd2UgZGVhbGluZyB3aXRoIGEgc2l0dWF0aW9uIHJlcXVpcmluZyBhY3R1YWwgaGFyZHdhcmUsIHNwZWNpZmljYWxseSBEU0Egc3dpdGNoIGhhcmR3YXJlP1xuXG5UaGUgY3JpdGljYWwgcXVlc3Rpb24gaGVyZSBpcyB3aGV0aGVyIEkyQy9TUEkgRFNBIHN3aXRjaGVzIGNhbiBiZSBpbnN0YW50aWF0ZWQgb3IgZXZlbiBlbXVsYXRlZCBzb21laG93LCBwZXJoYXBzIGZyb20gdXNlcnNwYWNlLCB3aGljaCB3b3VsZCBiZSBpZGVhbC4gSSBuZWVkIHRvIHJlY2FsbCBob3cgc3l6a2FsbGVyIGhhbmRsZXMgSTJDIGRldmljZXMuIERvZXMgaXQgdXNlIGBzeXpfbW91bnRfaW1hZ2VgLCB0aGUgYG5ld19kZXZpY2VgIHN5c2ZzIGludGVyZmFjZSwgb3IgcGVyaGFwcyBsZXZlcmFnZSBkZXZpY2UgdHJlZXMgb3IgQUNQST8gSSBuZWVkIHRvIGNsYXJpZnkgd2hhdCBzeXprYWxsZXIgKmFjdHVhbGx5KiBmdXp6ZXMuXG5cblJpZ2h0LCB0aW1lIHRvIGNvbnN1bHQgb3VyIGd1aWRlbGluZXMuIExldCdzIHNlZS4uLiB0aGUgY29yZSB0cmlhZ2UgcGhpbG9zb3BoeSBzdGF0ZXMgZnV6emluZyBpcyBvbmx5IHZhbGlkIGZvciBjb2RlIHRoYXQgKmV4ZWN1dGVzKiBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIE5vIHN0cnVjdHVyYWwgdW5yZWFjaGFibGUgY29kZSBzaG91bGQgYmUgZnV6emVkLCByZWdhcmRsZXNzIG9mIGhvdyBjb21wbGV4IHRoZSBjb2RlLiBJIHJlbWVtYmVyIHRoZSBzZWN0aW9uIG9uIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSB3ZWxsLiBUaGlzIHBvaW50cyBkaXJlY3RseSB0byB0aGUgcHJvYmxlbTogdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgR1BVIGRyaXZlcnMg4oCTIHRoZXNlIGFsbCByZXF1aXJlIHBoeXNpY2FsIEFTSUNzIG9yIFBDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG5cbk5vdywgd2hhdCBhYm91dCBEU0Egc3dpdGNoZXM/IEFyZSB0aGVzZSBnZW5lcmFsbHkgaW1wbGVtZW50ZWQgYXMgaGFyZHdhcmUgQVNJQyBzd2l0Y2hlcyB0aGF0IGFyZSBjb25uZWN0ZWQgdmlhIFNQSS9JMkMvTURJTyBvciBtZW1vcnktbWFwcGVkIGJ1c2VzPyBUaGlzIGlzIGEga2V5IHBvaW50LiBDYW4gRFNBIG1pY3JvY2hpcCBzd2l0Y2ggZHJpdmVycywgbGlrZSB0aGUgb25lcyBpbiB0aGVzZSBmaWxlcywgYWN0dWFsbHkgYmUgaW5zdGFudGlhdGVkIG9yIHJlYWNoZWQgd2l0aGluIHN0YW5kYXJkIFFFTVUvc3l6a2FsbGVyIHNldHVwcz9cblxuTXkgbmV4dCBzdGVwIGlzIGNsZWFyLiBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGl0c2VsZi4gSSdsbCByZWFkIGBrc3o5NDc3X2kyYy5jYCBhbmQgYGtzel9zcGkuY2AgY2xvc2VseSB0byB1bmRlcnN0YW5kIGhvdyBga3N6OTQ3N2AgYW5kIGBrc3pfY29tbW9uYCBhcmUgZGVzaWduZWQgYW5kIGhvdyB0aGV5IGludGVyYWN0IHdpdGggdGhlIGhhcmR3YXJlLiBUaGlzIHdpbGwgZGV0ZXJtaW5lIGlmIHRoZXJlJ3MgYW55IHBhdGh3YXkgZm9yIHRoZW0gdG8gYmUgZnV6emVkLCBvciBpZiB0aGV5IGFyZSBkb29tZWQgdG8gYmUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTE2MiwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNDoyOToxNC4zOTA0ODM3OTdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTAwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0LypcXG4gICAzOlxcdCAqIE1pY3JvY2hpcCBLU1o5NDc3IHNlcmllcyByZWdpc3RlciBhY2Nlc3MgdGhyb3VnaCBJMkNcXG4gICA0OlxcdCAqXFxuICAgNTpcXHQgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyNCBNaWNyb2NoaXAgVGVjaG5vbG9neSBJbmMuXFxuICAgNjpcXHQgKi9cXG4gICA3OlxcdFxcbiAgIDg6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2kyYy5oXFx1MDAzZVxcbiAgIDk6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2tlcm5lbC5oXFx1MDAzZVxcbiAgMTA6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbiAgMTE6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JlZ21hcC5oXFx1MDAzZVxcbiAgMTI6XFx0XFxuICAxMzpcXHQjaW5jbHVkZSBcXFwia3N6X2NvbW1vbi5oXFxcIlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRLU1pfUkVHTUFQX1RBQkxFKGtzejk0NzcsIG5vdF91c2VkLCAxNiwgMCwgMCk7XFxuICAxNjpcXHRcXG4gIDE3OlxcdHN0YXRpYyBpbnQga3N6OTQ3N19pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmkyYylcXG4gIDE4OlxcdHtcXG4gIDE5OlxcdFxcdGNvbnN0IHN0cnVjdCBrc3pfY2hpcF9kYXRhICpjaGlwO1xcbiAgMjA6XFx0XFx0c3RydWN0IGRldmljZSAqZGRldiA9IFxcdTAwMjZpMmMtXFx1MDAzZWRldjtcXG4gIDIxOlxcdFxcdHN0cnVjdCByZWdtYXBfY29uZmlnIHJjO1xcbiAgMjI6XFx0XFx0c3RydWN0IGtzel9kZXZpY2UgKmRldjtcXG4gIDIzOlxcdFxcdGludCBpLCByZXQ7XFxuICAyNDpcXHRcXG4gIDI1OlxcdFxcdGNoaXAgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGRldik7XFxuICAyNjpcXHRcXHRpZiAoIWNoaXApXFxuICAyNzpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gIDI4OlxcdFxcbiAgMjk6XFx0XFx0ZGV2ID0ga3N6X3N3aXRjaF9hbGxvYyhcXHUwMDI2aTJjLVxcdTAwM2VkZXYsIGNoaXAsIGkyYyk7XFxuICAzMDpcXHRcXHRpZiAoIWRldilcXG4gIDMxOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAgMzI6XFx0XFxuICAzMzpcXHRcXHQvKiBTYXZlIGNoaXAgaWQgdG8gZG8gc3BlY2lhbCBpbml0aWFsaXphdGlvbiB3aGVuIHByb2JpbmcuICovXFxuICAzNDpcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBjaGlwLVxcdTAwM2VjaGlwX2lkO1xcbiAgMzU6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIF9fS1NaX05VTV9SRUdNQVBTOyBpKyspIHtcXG4gIDM2OlxcdFxcdFxcdHJjID0ga3N6OTQ3N19yZWdtYXBfY29uZmlnW2ldO1xcbiAgMzc6XFx0XFx0XFx0cmMubG9ja19hcmcgPSBcXHUwMDI2ZGV2LVxcdTAwM2VyZWdtYXBfbXV0ZXg7XFxuICAzODpcXHRcXHRcXHRkZXYtXFx1MDAzZXJlZ21hcFtpXSA9IGRldm1fcmVnbWFwX2luaXRfaTJjKGkyYywgXFx1MDAyNnJjKTtcXG4gIDM5OlxcdFxcdFxcdGlmIChJU19FUlIoZGV2LVxcdTAwM2VyZWdtYXBbaV0pKSB7XFxuICA0MDpcXHRcXHRcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShcXHUwMDI2aTJjLVxcdTAwM2VkZXYsIFBUUl9FUlIoZGV2LVxcdTAwM2VyZWdtYXBbaV0pLFxcbiAgNDE6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBcXFwiRmFpbGVkIHRvIGluaXRpYWxpemUgcmVnbWFwJWlcXFxcblxcXCIsXFxuICA0MjpcXHRcXHRcXHRcXHRcXHRcXHQgICAgIGtzejk0NzdfcmVnbWFwX2NvbmZpZ1tpXS52YWxfYml0cyk7XFxuICA0MzpcXHRcXHRcXHR9XFxuICA0NDpcXHRcXHR9XFxuICA0NTpcXHRcXG4gIDQ2OlxcdFxcdGlmIChpMmMtXFx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhKVxcbiAgNDc6XFx0XFx0XFx0ZGV2LVxcdTAwM2VwZGF0YSA9IGkyYy1cXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGE7XFxuICA0ODpcXHRcXG4gIDQ5OlxcdFxcdGRldi1cXHUwMDNlaXJxID0gaTJjLVxcdTAwM2VpcnE7XFxuICA1MDpcXHRcXG4gIDUxOlxcdFxcdHJldCA9IGtzel9zd2l0Y2hfcmVnaXN0ZXIoZGV2KTtcXG4gIDUyOlxcdFxcbiAgNTM6XFx0XFx0LyogTWFpbiBEU0EgZHJpdmVyIG1heSBub3QgYmUgc3RhcnRlZCB5ZXQuICovXFxuICA1NDpcXHRcXHRpZiAocmV0KVxcbiAgNTU6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gIDU2OlxcdFxcbiAgNTc6XFx0XFx0aTJjX3NldF9jbGllbnRkYXRhKGkyYywgZGV2KTtcXG4gIDU4OlxcdFxcbiAgNTk6XFx0XFx0cmV0dXJuIDA7XFxuICA2MDpcXHR9XFxuICA2MTpcXHRcXG4gIDYyOlxcdHN0YXRpYyB2b2lkIGtzejk0NzdfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKVxcbiAgNjM6XFx0e1xcbiAgNjQ6XFx0XFx0c3RydWN0IGtzel9kZXZpY2UgKmRldiA9IGkyY19nZXRfY2xpZW50ZGF0YShpMmMpO1xcbiAgNjU6XFx0XFxuICA2NjpcXHRcXHRpZiAoZGV2KVxcbiAgNjc6XFx0XFx0XFx0a3N6X3N3aXRjaF9yZW1vdmUoZGV2KTtcXG4gIDY4OlxcdH1cXG4gIDY5OlxcdFxcbiAgNzA6XFx0c3RhdGljIHZvaWQga3N6OTQ3N19pMmNfc2h1dGRvd24oc3RydWN0IGkyY19jbGllbnQgKmkyYylcXG4gIDcxOlxcdHtcXG4gIDcyOlxcdFxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoaTJjKTtcXG4gIDczOlxcdFxcbiAgNzQ6XFx0XFx0aWYgKCFkZXYpXFxuICA3NTpcXHRcXHRcXHRyZXR1cm47XFxuICA3NjpcXHRcXG4gIDc3OlxcdFxcdGtzel9zd2l0Y2hfc2h1dGRvd24oZGV2KTtcXG4gIDc4OlxcdFxcbiAgNzk6XFx0XFx0aTJjX3NldF9jbGllbnRkYXRhKGkyYywgTlVMTCk7XFxuICA4MDpcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE0OjI5OjE0LjM5MDU1NDQwN1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMxNjkyMzgzMDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGFuIGV4cGVydCBpbiB0aGlzIGFyZWE6XG5cbioqQW5hbHl6aW5nIHRoZSBJMkMgUHJvYmUgRnVuY3Rpb24gYW5kIFJlbGV2YW50IEtjb25maWcgT3B0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBrc3o5NDc3X2kyY19wcm9iZWAuIFRoZSBuYW1lIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgZGVhbGluZyB3aXRoIGFuIEkyQyBjbGllbnQsIHdoaWNoIGlzIHdoYXQgSSBzdXNwZWN0ZWQuIE15IGZpcnN0IHRob3VnaHQgaXMgd2hldGhlciB0aGlzIGRyaXZlciBvciB0aGUgSTJDIGNsaWVudCBpdCdzIG1lYW50IHRvIGludGVyZmFjZSB3aXRoIGlzIHNvbWV0aGluZyB0aGF0IGNhbiBiZSB0YXJnZXRlZCBlZmZlY3RpdmVseSBpbiBmdXp6aW5nIGNhbXBhaWducy4gSSBoYXZlIHRvIHRoaW5rIGFib3V0IHdoZXRoZXIgYE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT05gIG9yIGBORVRfRFNBYCBhcmUgZXZlbiByZWFjaGFibGUgaW4gYSBwdXJlIHNvZnR3YXJlIGNvbnRleHQsIG9yIGlmIHRoZXkncmUgdGllZCB0byBhIGhhcmR3YXJlIHN3aXRjaCBBU0lDLiBUaGUgbGF0dGVyIHdvdWxkIG1ha2UgZnV6emluZyBkaXJlY3RseSBsZXNzIGVmZmljaWVudCwgaWYgbm90IGltcG9zc2libGUuXG5cblRvIGZpZ3VyZSBvdXQgdGhlIHBvdGVudGlhbCBmdXp6aW5nIHN1cmZhY2UgYW5kIGhvdyB0byByZWFjaCB0aGUgZnVuY3Rpb25hbGl0eSB0aGF0IHRoZSBwcm9iZSBmdW5jdGlvbiBjb3ZlcnMsIEknbSBnb2luZyB0byBkaWcgaW50byB0aGUgS2NvbmZpZyBmb3IgYE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT05gIGFuZCBhbnkgcmVsYXRlZCBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgYnVpbGQgb3B0aW9ucyB0byBkZXRlcm1pbmUgd2hldGhlciBJIGNhbiB0cmlnZ2VyIHRoaXMgY29kZSBwYXRoIGZyb20gYSB0ZXN0IGVudmlyb25tZW50IG9yIGlmIGl0IHJlcXVpcmVzIGEgc3BlY2lmaWMgaGFyZHdhcmUgc2V0dXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMjI2LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNDoyOToxNy41NTk3OTU1NjZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxNjk5MzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5FVF9EU0FfTUlDUk9DSElQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnOjI6bWVudWNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk1pY3JvY2hpcCBLU1o4WFhYL0tTWjlYWFgvTEFOOTM3WCBzZXJpZXMgc3dpdGNoIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMTYtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnOjE3OmNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1o5NDc3X0kyQ1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0xOC1cXHR0cmlzdGF0ZSBcXFwiS1NaIHNlcmllcyBJMkMgY29ubmVjdGVkIHN3aXRjaCBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnOjE5OlxcdGRlcGVuZHMgb24gTkVUX0RTQV9NSUNST0NISVBfS1NaX0NPTU1PTiBcXHUwMDI2XFx1MDAyNiBJMkNcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMjAtXFx0c2VsZWN0IFJFR01BUF9JMkNcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0yMy1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6MjQ6Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9TUElcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMjUtXFx0dHJpc3RhdGUgXFxcIktTWiBzZXJpZXMgU1BJIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZzoyNjpcXHRkZXBlbmRzIG9uIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT04gXFx1MDAyNlxcdTAwMjYgU1BJXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTI3LVxcdHNlbGVjdCBSRUdNQVBfU1BJXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMzAtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnOjMxOmNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfUFRQXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIHRoZSBQVFAgY2xvY2sgb24gdGhlIEtTWjk1NjMvTEFOOTM3eCBFdGhlcm5ldCBTd2l0Y2hcXFwiXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnOjMzOlxcdGRlcGVuZHMgb24gTkVUX0RTQV9NSUNST0NISVBfS1NaX0NPTU1PTiBcXHUwMDI2XFx1MDAyNiBQVFBfMTU4OF9DTE9DS1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZzozNDpcXHRkZXBlbmRzIG9uIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT049bSB8fCBQVFBfMTU4OF9DTE9DSz15XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTM1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy00MC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6NDE6Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWjg4NjNfU01JXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTQyLVxcdHRyaXN0YXRlIFxcXCJLU1ogc2VyaWVzIFNNSSBjb25uZWN0ZWQgc3dpdGNoIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6NDM6XFx0ZGVwZW5kcyBvbiBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTQ0LVxcdHNlbGVjdCBNRElPX0JJVEJBTkdcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX05FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT04pXFx0Kz0ga3N6X3N3aXRjaC5vXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZS0zLWtzel9zd2l0Y2gtb2JqcyA6PSBrc3pfY29tbW9uLm8ga3N6X2RjYi5vXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlPTY9a3N6X3N3aXRjaC1vYmpzICs9IGxhbjkzN3hfbWFpbi5vXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZS03LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGU6ODppZmRlZiBDT05GSUdfTkVUX0RTQV9NSUNST0NISVBfS1NaX1BUUFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGUtOS1rc3pfc3dpdGNoLW9ianMgKz0ga3N6X3B0cC5vXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZT0xMD1lbmRpZlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGUtMTEtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZToxMjpvYmotJChDT05GSUdfTkVUX0RTQV9NSUNST0NISVBfS1NaOTQ3N19JMkMpXFx0Kz0ga3N6OTQ3N19pMmMub1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX05FVF9EU0FfTUlDUk9DSElQX0tTWl9TUEkpXFx0XFx0Kz0ga3N6X3NwaS5vXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfTkVUX0RTQV9NSUNST0NISVBfS1NaODg2M19TTUkpXFx0Kz0ga3N6ODg2M19zbWkub1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg9MTY5PXN0cnVjdCBrc3pfcG9ydCB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC0xOTItXFx0c3RydWN0IHBoeWxpbmtfcGNzICpwY3M7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6MTkzOiNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfRFNBX01JQ1JPQ0hJUF9LU1pfUFRQKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTE5NC1cXHRzdHJ1Y3Qga2VybmVsX2h3dHN0YW1wX2NvbmZpZyB0c3RhbXBfY29uZmlnO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmgtMTAtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmg6MTE6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9EU0FfTUlDUk9DSElQX0tTWl9QVFApXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmgtMTItXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaD04Nz1zdGF0aWMgaW5saW5lIHZvaWQga3N6ODQ2M19wdHBfaXJxX2ZyZWUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKSB7fVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmgtMTAyLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oOjEwMzojZW5kaWZcXHQvKiBFbmQgb2YgQ09ORklHX05FVF9EU0FfTUlDUk9DSElQX0tTWl9QVFAgKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaC0xMDQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE0OjI5OjE3LjYzMTQ5OTk1NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0ODY0NDgxOTgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFjY2Vzc2luZyBEU0EgU3dpdGNoIEhhcmR3YXJlIFx1MDAyNiBJMkMgRGV2aWNlIEluc3RhbnRpYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIGFjY2VzcyBtZXRob2RzIGZvciBEU0Egc3dpdGNoIGhhcmR3YXJlLCBzcGVjaWZpY2FsbHkgaG93IHRvIGludGVyYWN0IHdpdGggaXQuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgSTJDIGRldmljZXMgYXJlIGFjY2Vzc2VkIHdpdGhpbiB0aGlzIGNvbnRleHQuIENhbiBJIHByb2JlIHRoZXNlIGRldmljZXMgdXNpbmcgdGhlIHN0YW5kYXJkIGAvc3lzL2J1cy9pMmMvZGV2aWNlcy9pMmMtWC9uZXdfZGV2aWNlYCBtZXRob2Q/IEFoLCB5ZXMsIGluIExpbnV4LCB0aGF0J3MgaXQhIFVzZXJzcGFjZSBjYW4gd3JpdGUgdG8gdGhhdCBwYXRoIHRvIGluc3RhbnRpYXRlIGFuIEkyQyBkZXZpY2UuIEZvciBleGFtcGxlLCB1c2luZyBgZWNobyBcImtzejk0NzcgMHg1ZlwiIFx1MDAzZSAvc3lzL2J1cy9pMmMvZGV2aWNlcy9pMmMtMC9uZXdfZGV2aWNlYC5cblxuQnV0IG5vdyBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nOiBkb2VzIHRoZSBga3N6OTQ3N2AgZHJpdmVyLCBvciB0aGUgYGtzel9jb21tb25gIGxpYnJhcnkgaXQgdXNlcywgKnJlcXVpcmUqIGFjdHVhbCBwaHlzaWNhbCBoYXJkd2FyZSB0byBzdWNjZXNzZnVsbHkgcmVhZCByZWdpc3RlcnM/IElmIEkgaW5zdGFudGlhdGUgaXQgb24sIHNheSwgaTJjLTAsIGV2ZW4gaWYgdGhlcmUncyBubyBwaHlzaWNhbCBjaGlwIHByZXNlbnQsIG9yIGV2ZW4gdXNpbmcgYSBkdW1teSBJMkMgYWRhcHRlciwgd2hhdCBleGFjdGx5ICpoYXBwZW5zKiB3aXRoaW4gYGtzel9zd2l0Y2hfcmVnaXN0ZXJgPyBUaGF0J3MgdGhlIGtleS4gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgY29kZS4gTGV0J3MgZXhhbWluZSBga3N6X3N3aXRjaF9yZWdpc3RlcmAgZnVuY3Rpb24sIGl0J3MgZGVmaW5lZCB3aXRoaW4gYGtzel9jb21tb24uY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMDkzLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE0OjI5OjIyLjQ5NTk4NDUyNloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzkxOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzkyNSxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzkyNTpcXHR7XFxuMzkyNjpcXHRcXHRyZXR1cm4gcGluY3RybF9zZWxlY3RfZGVmYXVsdF9zdGF0ZShkZXYtXFx1MDAzZWRldik7XFxuMzkyNzpcXHR9XFxuMzkyODpcXHRcXG4zOTI5OlxcdGludCBrc3pfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuMzkzMDpcXHR7XFxuMzkzMTpcXHRcXHRjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSAqaW5mbztcXG4zOTMyOlxcdFxcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqcG9ydHM7XFxuMzkzMzpcXHRcXHRwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlO1xcbjM5MzQ6XFx0XFx0dW5zaWduZWQgaW50IHBvcnRfbnVtO1xcbjM5MzU6XFx0XFx0dTMyIGxvb2t1cF9jaGlwX2lkO1xcbjM5MzY6XFx0XFx0aW50IHJldDtcXG4zOTM3OlxcdFxcdGludCBpO1xcbjM5Mzg6XFx0XFxuMzkzOTpcXHRcXHRkZXYtXFx1MDAzZXJlc2V0X2dwaW8gPSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbChkZXYtXFx1MDAzZWRldiwgXFxcInJlc2V0XFxcIixcXG4zOTQwOlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgR1BJT0RfT1VUX0xPVyk7XFxuMzk0MTpcXHRcXHRpZiAoSVNfRVJSKGRldi1cXHUwMDNlcmVzZXRfZ3BpbykpXFxuMzk0MjpcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihkZXYtXFx1MDAzZXJlc2V0X2dwaW8pO1xcbjM5NDM6XFx0XFxuMzk0NDpcXHRcXHRpZiAoZGV2LVxcdTAwM2VyZXNldF9ncGlvKSB7XFxuMzk0NTpcXHRcXHRcXHRpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUoZGV2LVxcdTAwM2VkZXYtXFx1MDAzZW9mX25vZGUsIFxcXCJtaWNyb2NoaXAsa3N6ODQ2M1xcXCIpKSB7XFxuMzk0NjpcXHRcXHRcXHRcXHRyZXQgPSBrc3o4NDYzX2NvbmZpZ3VyZV9zdHJhcHNfc3BpKGRldik7XFxuMzk0NzpcXHRcXHRcXHRcXHRpZiAocmV0KVxcbjM5NDg6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4zOTQ5OlxcdFxcdFxcdH1cXG4zOTUwOlxcdFxcbjM5NTE6XFx0XFx0XFx0Z3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKGRldi1cXHUwMDNlcmVzZXRfZ3BpbywgMSk7XFxuMzk1MjpcXHRcXHRcXHR1c2xlZXBfcmFuZ2UoMTAwMDAsIDEyMDAwKTtcXG4zOTUzOlxcdFxcdFxcdGdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChkZXYtXFx1MDAzZXJlc2V0X2dwaW8sIDApO1xcbjM5NTQ6XFx0XFx0XFx0bXNsZWVwKDEwMCk7XFxuMzk1NTpcXHRcXG4zOTU2OlxcdFxcdFxcdGlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShkZXYtXFx1MDAzZWRldi1cXHUwMDNlb2Zfbm9kZSwgXFxcIm1pY3JvY2hpcCxrc3o4NDYzXFxcIikpIHtcXG4zOTU3OlxcdFxcdFxcdFxcdHJldCA9IGtzejg0NjNfcmVsZWFzZV9zdHJhcHNfc3BpKGRldik7XFxuMzk1ODpcXHRcXHRcXHRcXHRpZiAocmV0KVxcbjM5NTk6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4zOTYwOlxcdFxcdFxcdH1cXG4zOTYxOlxcdFxcdH1cXG4zOTYyOlxcdFxcbjM5NjM6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2VkZXZfbXV0ZXgpO1xcbjM5NjQ6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2VyZWdtYXBfbXV0ZXgpO1xcbjM5NjU6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2VhbHVfbXV0ZXgpO1xcbjM5NjY6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2V2bGFuX211dGV4KTtcXG4zOTY3OlxcdFxcbjM5Njg6XFx0XFx0cmV0ID0ga3N6X3N3aXRjaF9kZXRlY3QoZGV2KTtcXG4zOTY5OlxcdFxcdGlmIChyZXQpXFxuMzk3MDpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjM5NzE6XFx0XFxuMzk3MjpcXHRcXHRsb29rdXBfY2hpcF9pZCA9IGRldi1cXHUwMDNlY2hpcF9pZDtcXG4zOTczOlxcdFxcbjM5NzQ6XFx0XFx0LyogVGhlIEtTWjk4OTdTIGFuZCB0aGUgS1NaOTg5N1IgcmVwb3J0IHRoZSBzYW1lIGNoaXAgSUQgYW5kIGRpZmZlclxcbjM5NzU6XFx0XFx0ICogb25seSBpbiBjaGlwX2RhdGE6IG9ubHkgdGhlIFMgaGFzIHRoZSBTR01JSSBwb3J0IDcsIHRoZSBSIGhhcyBhXFxuMzk3NjpcXHRcXHQgKiBzZWNvbmQgUkdNSUkgcG9ydCBpbnN0ZWFkLiBCaXQgNyBvZiB0aGUgcG9ydCA3IFhNSUkgY29udHJvbCAwXFxuMzk3NzpcXHRcXHQgKiByZWdpc3RlciBpcyByZWFkLW9ubHkgYW5kIHRlbGxzIHRoZW0gYXBhcnQ7IGl0IHJlYWRzIG9uZSBvbiB0aGUgUy5cXG4zOTc4OlxcdFxcdCAqIENvbXBhcmUgdGhlIEtTWjk4OTdTIGRhdGEgc2hlZXQgRFMwMDAwMjM5NEMgc2VjdGlvbiA1LjIuNC4xIHdpdGhcXG4zOTc5OlxcdFxcdCAqIHRoZSBLU1o5ODk3UiBkYXRhIHNoZWV0IERTMDAwMDIzMzBEIHNlY3Rpb24gNS4yLjMuMS5cXG4zOTgwOlxcdFxcdCAqXFxuMzk4MTpcXHRcXHQgKiBPbmx5IHRoZSBjaGlwX2RhdGEgZW50cnkgZGlmZmVycywgc28gZGV2LVxcdTAwM2VjaGlwX2lkIGtlZXBzIHRoZSBzaGFyZWRcXG4zOTgyOlxcdFxcdCAqIGNoaXAgSUQgYW5kIG5vdGhpbmcgZWxzZSBoYXMgdG8ga25vdyBhYm91dCB0aGUgdmFyaWFudC5cXG4zOTgzOlxcdFxcdCAqL1xcbjM5ODQ6XFx0XFx0aWYgKGRldi1cXHUwMDNlY2hpcF9pZCA9PSBLU1o5ODk3X0NISVBfSUQpIHtcXG4zOTg1OlxcdFxcdFxcdHU4IHZhbDtcXG4zOTg2OlxcdFxcbjM5ODc6XFx0XFx0XFx0cmV0ID0ga3N6X3JlYWQ4KGRldiwgS1NaOTg5N19SRUdfUE9SVDdfWE1JSV9DVFJMXzAsIFxcdTAwMjZ2YWwpO1xcbjM5ODg6XFx0XFx0XFx0aWYgKHJldClcXG4zOTg5OlxcdFxcdFxcdFxcdHJldHVybiByZXQ7XFxuMzk5MDpcXHRcXG4zOTkxOlxcdFxcdFxcdGlmICh2YWwgXFx1MDAyNiBLU1o5ODk3X1BPUlQ3X1NHTUlJX1NFTClcXG4zOTkyOlxcdFxcdFxcdFxcdGxvb2t1cF9jaGlwX2lkID0gS1NaOTg5N1NfQ0hJUF9JRDtcXG4zOTkzOlxcdFxcdH1cXG4zOTk0OlxcdFxcbjM5OTU6XFx0XFx0aW5mbyA9IGtzel9sb29rdXBfaW5mbyhsb29rdXBfY2hpcF9pZCk7XFxuMzk5NjpcXHRcXHRpZiAoIWluZm8pXFxuMzk5NzpcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4zOTk4OlxcdFxcbjM5OTk6XFx0XFx0LyogVXBkYXRlIHRoZSBjb21wYXRpYmxlIGluZm8gd2l0aCB0aGUgcHJvYmVkIG9uZSAqL1xcbjQwMDA6XFx0XFx0ZGV2LVxcdTAwM2VpbmZvID0gaW5mbztcXG40MDAxOlxcdFxcbjQwMDI6XFx0XFx0ZGV2X2luZm8oZGV2LVxcdTAwM2VkZXYsIFxcXCJmb3VuZCBzd2l0Y2g6ICVzLCByZXYgJWlcXFxcblxcXCIsXFxuNDAwMzpcXHRcXHRcXHQgZGV2LVxcdTAwM2VpbmZvLVxcdTAwM2VkZXZfbmFtZSwgZGV2LVxcdTAwM2VjaGlwX3Jldik7XFxuNDAwNDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTQ6Mjk6MjIuNDk2MTY2NTM2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM0ODE0Njk4NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBga3N6X3N3aXRjaF9kZXRlY3RgIEZ1bmN0aW9uKipcblxuQWxyaWdodCwgc28gdGhlIHRhc2sgYXQgaGFuZCBpcyB0byBhbmFseXplIHRoZSBga3N6X3N3aXRjaF9kZXRlY3QoZGV2KWAgZnVuY3Rpb24uIFRoZSBpbml0aWFsIGNsdWUgaXMgdGhhdCBpdCdzIGludGVyYWN0aW5nIGRpcmVjdGx5IHdpdGggdGhlIHBoeXNpY2FsIGNoaXAsIGxpa2VseSB0aHJvdWdoIHJlZ2lzdGVyIHJlYWRzLiBNeSBpbW1lZGlhdGUgbWVudGFsIHByb2Nlc3MgaXMgdG8gZHJpbGwgZG93biBpbnRvIHRoZSBkZXRhaWxzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQncyBpbnRlcmFjdGluZyB3aXRoIHRoZSBoYXJkd2FyZS4gV2hhdCByZWdpc3RlcnMgYXJlIHdlIHRhbGtpbmcgYWJvdXQ/IFdoYXQgYXJlIHRoZSBleHBlY3RlZCB2YWx1ZXM/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhvc2UgdmFsdWVzPyBUaGlzIGZ1bmN0aW9uIGlzIHByb2JhYmx5IHRoZSBoZWFydCBvZiB0aGUgc3dpdGNoJ3MgaW5pdGlhbCBpZGVudGlmaWNhdGlvbiBvciBicmluZy11cCBzZXF1ZW5jZS4gSSdsbCBuZWVkIHRvIGNvbmZpcm0sIGJ1dCBJJ20gZXhwZWN0aW5nIHRoaXMgaXMgd2hlcmUgd2UgY2hlY2sgZm9yIGNoaXAgcHJlc2VuY2UsIHZlcnNpb24sIGFuZCBwb3NzaWJseSBiYXNpYyBjb25maWd1cmF0aW9uLiBMZXQncyBnZXQgdG8gdGhlIHNvdXJjZSBjb2RlIGFuZCBmaWd1cmUgb3V0IHRoZSBleGFjdCByZWdpc3RlciBpbnRlcmFjdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0OTU5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNDoyOToyNS45Nzc2MzkyMVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgyNDA2NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3N6X3N3aXRjaF9kZXRlY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yOTI5PXZvaWQga3N6X3BoeWxpbmtfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI5NDAtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6Mjk0MTpzdGF0aWMgaW50IGtzel9zd2l0Y2hfZGV0ZWN0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjk0Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0zOTI5PWludCBrc3pfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zOTY3LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjM5Njg6XFx0cmV0ID0ga3N6X3N3aXRjaF9kZXRlY3QoZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zOTY5LVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE0OjI5OjI2LjAyNTg4MjMwOVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyOTM2MzM3MjIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRha2Ugb24gdGhhdCBmdW5jdGlvbiwgYGtzel9zd2l0Y2hfZGV0ZWN0YCwgbmVzdGxlZCB3aXRoaW4gYGRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jYC5cblxuKipEaXZpbmcgRGVlcCBpbnRvIEtTWiBTd2l0Y2ggRGV0ZWN0aW9uKipcblxuQWxyaWdodCwgdGltZSB0byBkaXNzZWN0IGBrc3pfc3dpdGNoX2RldGVjdGAgZnJvbSBga3N6X2NvbW1vbi5jYC4gSSdtIGdvaW5nIHRvIHdhbnQgdG8gdW5kZXJzdGFuZCB3aGF0IHRyaWdnZXJzIHRoaXMgcm91dGluZSwgdGhlIGtleSByZWdpc3RlcnMgaXQncyByZWFkaW5nIGFuZCB3cml0aW5nLCBhbmQgdGhlIGxvZ2ljIGJlaGluZCBob3cgaXQgZGV0ZXJtaW5lcyBpZiBhIE1pY3JvY2hpcCBLU1ogc3dpdGNoIGlzIHByZXNlbnQgYW5kIGZ1bmN0aW9uaW5nIGNvcnJlY3RseS4gSSdsbCBiZSBsb29raW5nIGZvciBhbnkgaGFyZHdhcmUtc3BlY2lmaWMgcXVpcmtzIG9yIHdvcmthcm91bmRzIGluIHRoaXMgbG93LWxldmVsIGRyaXZlci4gSSdsbCBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBwYXJ0IG9mIGEgbGFyZ2VyIERTQSAoRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSkgZnJhbWV3b3JrLCBzbyBJIHNob3VsZCBiZSBrZWVwaW5nIGFuIGV5ZSBvdXQgZm9yIGhvdyB0aGlzIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoIHRoZSBoaWdoZXItbGV2ZWwgRFNBIGNvbXBvbmVudHMuIEknbGwgYmUgcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gYW55IGVycm9yIGhhbmRsaW5nIGFuZCByZXRyeSBtZWNoYW5pc21zLiBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgc29tZSBwb3RlbnRpYWwgY2hhbGxlbmdlcyDigJMgdGhlIG5lZWQgdG8gaGFuZGxlIGRpZmZlcmVudCBLU1ogc3dpdGNoIHJldmlzaW9ucywgdmFyaWF0aW9ucyBpbiBQSFkgY29uZmlndXJhdGlvbnMsIGFuZCBtYXliZSBldmVuIHNvbWUgY2xldmVyIHJlZ2lzdGVyIHByb2JpbmcgdGVjaG5pcXVlcy4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucywgc28gbGV0J3Mgc2VlIHdoYXQgdGhleSd2ZSBjb21lIHVwIHdpdGguIExldCdzIHNlZSBpZiB0aGlzIGNvZGUgaXMgd2VsbC13cml0dGVuLCBlZmZpY2llbnQsIGFuZCByb2J1c3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NDczLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTQ6Mjk6MjguOTYyMjIxNzUyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5ODY4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyOTQxLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyOTQxOlxcdHN0YXRpYyBpbnQga3N6X3N3aXRjaF9kZXRlY3Qoc3RydWN0IGtzel9kZXZpY2UgKmRldilcXG4yOTQyOlxcdHtcXG4yOTQzOlxcdFxcdHU4IGlkMSwgaWQyLCBpZDQ7XFxuMjk0NDpcXHRcXHR1MTYgaWQxNjtcXG4yOTQ1OlxcdFxcdHUzMiBpZDMyO1xcbjI5NDY6XFx0XFx0aW50IHJldDtcXG4yOTQ3OlxcdFxcbjI5NDg6XFx0XFx0LyogcmVhZCBjaGlwIGlkICovXFxuMjk0OTpcXHRcXHRyZXQgPSBrc3pfcmVhZDE2KGRldiwgUkVHX0NISVBfSUQwLCBcXHUwMDI2aWQxNik7XFxuMjk1MDpcXHRcXHRpZiAocmV0KVxcbjI5NTE6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4yOTUyOlxcdFxcbjI5NTM6XFx0XFx0aWQxID0gRklFTERfR0VUKFNXX0ZBTUlMWV9JRF9NLCBpZDE2KTtcXG4yOTU0OlxcdFxcdGlkMiA9IEZJRUxEX0dFVChTV19DSElQX0lEX00sIGlkMTYpO1xcbjI5NTU6XFx0XFxuMjk1NjpcXHRcXHRzd2l0Y2ggKGlkMSkge1xcbjI5NTc6XFx0XFx0Y2FzZSBLU1o4NF9GQU1JTFlfSUQ6XFxuMjk1ODpcXHRcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBLU1o4NDYzX0NISVBfSUQ7XFxuMjk1OTpcXHRcXHRcXHRicmVhaztcXG4yOTYwOlxcdFxcdGNhc2UgS1NaODdfRkFNSUxZX0lEOlxcbjI5NjE6XFx0XFx0XFx0aWYgKGlkMiA9PSBLU1o4N19DSElQX0lEXzk1KSB7XFxuMjk2MjpcXHRcXHRcXHRcXHR1OCB2YWw7XFxuMjk2MzpcXHRcXG4yOTY0OlxcdFxcdFxcdFxcdGRldi1cXHUwMDNlY2hpcF9pZCA9IEtTWjg3OTVfQ0hJUF9JRDtcXG4yOTY1OlxcdFxcbjI5NjY6XFx0XFx0XFx0XFx0a3N6X3JlYWQ4KGRldiwgS1NaOF9QT1JUX1NUQVRVU18wLCBcXHUwMDI2dmFsKTtcXG4yOTY3OlxcdFxcdFxcdFxcdGlmICh2YWwgXFx1MDAyNiBLU1o4X1BPUlRfRklCRVJfTU9ERSlcXG4yOTY4OlxcdFxcdFxcdFxcdFxcdGRldi1cXHUwMDNlY2hpcF9pZCA9IEtTWjg3NjVfQ0hJUF9JRDtcXG4yOTY5OlxcdFxcdFxcdH0gZWxzZSBpZiAoaWQyID09IEtTWjg3X0NISVBfSURfOTQpIHtcXG4yOTcwOlxcdFxcdFxcdFxcdGRldi1cXHUwMDNlY2hpcF9pZCA9IEtTWjg3OTRfQ0hJUF9JRDtcXG4yOTcxOlxcdFxcdFxcdH0gZWxzZSB7XFxuMjk3MjpcXHRcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4yOTczOlxcdFxcdFxcdH1cXG4yOTc0OlxcdFxcdFxcdGJyZWFrO1xcbjI5NzU6XFx0XFx0Y2FzZSBLU1o4OF9GQU1JTFlfSUQ6XFxuMjk3NjpcXHRcXHRcXHRpZiAoaWQyID09IEtTWjg4X0NISVBfSURfNjMpXFxuMjk3NzpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBLU1o4OFgzX0NISVBfSUQ7XFxuMjk3ODpcXHRcXHRcXHRlbHNlXFxuMjk3OTpcXHRcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4yOTgwOlxcdFxcdFxcdGJyZWFrO1xcbjI5ODE6XFx0XFx0Y2FzZSBLU1o4ODk1X0ZBTUlMWV9JRDpcXG4yOTgyOlxcdFxcdFxcdGlmIChpZDIgPT0gS1NaODg5NV9DSElQX0lEXzk1IHx8XFxuMjk4MzpcXHRcXHRcXHQgICAgaWQyID09IEtTWjg4OTVfQ0hJUF9JRF85NVIpXFxuMjk4NDpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBLU1o4ODk1X0NISVBfSUQ7XFxuMjk4NTpcXHRcXHRcXHRlbHNlXFxuMjk4NjpcXHRcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4yOTg3OlxcdFxcdFxcdHJldCA9IGtzel9yZWFkOChkZXYsIFJFR19LU1o4ODY0X0NISVBfSUQsIFxcdTAwMjZpZDQpO1xcbjI5ODg6XFx0XFx0XFx0aWYgKHJldClcXG4yOTg5OlxcdFxcdFxcdFxcdHJldHVybiByZXQ7XFxuMjk5MDpcXHRcXHRcXHRpZiAoaWQ0IFxcdTAwMjYgU1dfS1NaODg2NClcXG4yOTkxOlxcdFxcdFxcdFxcdGRldi1cXHUwMDNlY2hpcF9pZCA9IEtTWjg4NjRfQ0hJUF9JRDtcXG4yOTkyOlxcdFxcdFxcdGJyZWFrO1xcbjI5OTM6XFx0XFx0ZGVmYXVsdDpcXG4yOTk0OlxcdFxcdFxcdHJldCA9IGtzel9yZWFkMzIoZGV2LCBSRUdfQ0hJUF9JRDAsIFxcdTAwMjZpZDMyKTtcXG4yOTk1OlxcdFxcdFxcdGlmIChyZXQpXFxuMjk5NjpcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjI5OTc6XFx0XFxuMjk5ODpcXHRcXHRcXHRkZXYtXFx1MDAzZWNoaXBfcmV2ID0gRklFTERfR0VUKFNXX1JFVl9JRF9NLCBpZDMyKTtcXG4yOTk5OlxcdFxcdFxcdGlkMzIgXFx1MDAyNj0gfjB4RkY7XFxuMzAwMDpcXHRcXG4zMDAxOlxcdFxcdFxcdHN3aXRjaCAoaWQzMikge1xcbjMwMDI6XFx0XFx0XFx0Y2FzZSBLU1o5NDc3X0NISVBfSUQ6XFxuMzAwMzpcXHRcXHRcXHRjYXNlIEtTWjk4OTZfQ0hJUF9JRDpcXG4zMDA0OlxcdFxcdFxcdGNhc2UgS1NaOTg5N19DSElQX0lEOlxcbjMwMDU6XFx0XFx0XFx0Y2FzZSBLU1o5NTY3X0NISVBfSUQ6XFxuMzAwNjpcXHRcXHRcXHRjYXNlIEtTWjg1NjdfQ0hJUF9JRDpcXG4zMDA3OlxcdFxcdFxcdGNhc2UgTEFOOTM3MF9DSElQX0lEOlxcbjMwMDg6XFx0XFx0XFx0Y2FzZSBMQU45MzcxX0NISVBfSUQ6XFxuMzAwOTpcXHRcXHRcXHRjYXNlIExBTjkzNzJfQ0hJUF9JRDpcXG4zMDEwOlxcdFxcdFxcdGNhc2UgTEFOOTM3M19DSElQX0lEOlxcbjMwMTE6XFx0XFx0XFx0Y2FzZSBMQU45Mzc0X0NISVBfSUQ6XFxuMzAxMjpcXHRcXG4zMDEzOlxcdFxcdFxcdFxcdC8qIExBTjk2NDYgZG9lcyBub3QgaGF2ZSBpdHMgb3duIGNoaXAgaWQuICovXFxuMzAxNDpcXHRcXHRcXHRcXHRpZiAoZGV2LVxcdTAwM2VjaGlwX2lkICE9IExBTjk2NDZfQ0hJUF9JRClcXG4zMDE1OlxcdFxcdFxcdFxcdFxcdGRldi1cXHUwMDNlY2hpcF9pZCA9IGlkMzI7XFxuMzAxNjpcXHRcXHRcXHRcXHRicmVhaztcXG4zMDE3OlxcdFxcdFxcdGNhc2UgS1NaOTg5M19DSElQX0lEOlxcbjMwMTg6XFx0XFx0XFx0XFx0cmV0ID0ga3N6X3JlYWQ4KGRldiwgUkVHX0NISVBfSUQ0LFxcbjMwMTk6XFx0XFx0XFx0XFx0XFx0XFx0XFx1MDAyNmlkNCk7XFxuMzAyMDpcXHRcXHRcXHRcXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNDoyOToyOC45NjI0MjE3MDJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODczMTU5ODgxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmc9ZmFsc2U6IE1pY3JvY2hpcCBLU1ogU3dpdGNoIERyaXZlciBVcGRhdGUqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgY29tbWl0IGRlYWxzIHdpdGggdGhlIGBkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2AgZGlyZWN0b3J5LCB3aGljaCBpbmRpY2F0ZXMgYSBkcml2ZXIgZm9yIE1pY3JvY2hpcCBLU1ogc2VyaWVzIEV0aGVybmV0IHN3aXRjaCBBU0lDcy4gVGhlc2UgYXJlIHBoeXNpY2FsIGhhcmR3YXJlIGNvbXBvbmVudHMgYWNjZXNzZWQgdmlhIFNQSSwgSTJDLCBvciBTTUkvTURJTy5cblxuTXkgbmV4dCB0aG91Z2h0IGlzIHRvIGRldGVybWluZSBpZiB0aGlzIGNvZGUgaXMgc3BlY2lmaWMgdG8gaGFyZHdhcmUgdGhhdCdzIGluYWNjZXNzaWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZSBndWlkZWxpbmVzIGV4cGxpY2l0bHkgc3RhdGUgdGhhdCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUsIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMgb3IsIGluIHRoaXMgY2FzZSwgcGh5c2ljYWwgc3dpdGNoIEFTSUNzLCBzaG91bGQgcmVzdWx0IGluIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5JJ3ZlIHZlcmlmaWVkIHRoYXQgdGhlIEtTWjk4OTcvUy9SLCBLU1o5NDc3LCBLU1o4Nzk1LCBhbmQgb3RoZXJzIGFyZSBpbmRlZWQgcGh5c2ljYWwgRXRoZXJuZXQgc3dpdGNoIElDcyBmcm9tIE1pY3JvY2hpcCAoZm9ybWVybHkgTWljcmVsKS4gVGhleSdyZSBkaXNjcmV0ZSBjaGlwcywgYW5kIHRoZSBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlbSBvdmVyIEkyQy9TUEkvU01JLiBJbiBhIHN0YW5kYXJkIFFFTVUgYW1kNjQgZW52aXJvbm1lbnQsIHdpdGhvdXQgY3VzdG9tIGRldmljZSB0cmVlcyBvciBhY3R1YWwgaGFyZHdhcmUsIHRoZXJlJ3Mgbm8gZW11bGF0ZWQgS1NaIHN3aXRjaCBkZXZpY2UuIEFueSBJMkMgcHJvYmluZyAoYGtzel9zd2l0Y2hfZGV0ZWN0YCkgd291bGQgZmFpbCBiZWNhdXNlIG5vIGRldmljZSB3b3VsZCByZXNwb25kIChFTlhJTy9FSU8pLCBvciBpZiBhIGR1bW15IHJlZ21hcCByZXR1cm5zIGFsbCB6ZXJvcyBvciBvbmVzLCBga3N6X3N3aXRjaF9kZXRlY3RgIHJldHVybnMgRU5PREVWIGJlY2F1c2UgdGhlIGNoaXAgSUQgcmVhZCBmcm9tIHRoZSByZWdpc3RlcnMgd291bGRuJ3QgbWF0Y2ggYW55IHZhbGlkIEtTWiBjaGlwIElELiBJJ20gdGhpbmtpbmcgaGVyZSBvZiByZWdpc3RlcnMgYW5kIHJlYWRpbmcgdGhlIGNoaXAgSUQ6IEtTWjg0X0ZBTUlMWV9JRCA9IDB4ODQsIEtTWjg3ID0gMHg4NywgS1NaODggPSAweDg4LCBLU1o5NDc3X0NISVBfSUQgPSAweDAwOTQ3NzAwLCBhbmQgc28gb24uXG5cblRoZSBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpIHN3aXRjaCBkcml2ZXJzIGFyZSBmb3IgKnBoeXNpY2FsKiBoYXJkd2FyZSwgbGlrZSBNaWNyb2NoaXAgS1NaLCBSZWFsdGVrLCBNYXJ2ZWxsLCBhbmQgU0pBMTEwNS4gU28sIHRoZSBib3R0b20gbGluZSBpcyB0aGF0IHRoZXNlIGRyaXZlcnMgcmVxdWlyZSB0aGUgYWN0dWFsIHN3aXRjaCBoYXJkd2FyZSAvIEFTSUNzLlxuXG5JJ3ZlIHRha2VuIGEgbG9vayBhdCB0aGUgbW9kaWZpZWQgZmlsZXM6IGBkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uY2AsIGBkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaGAsIGFuZCBgaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaGAuIFRoaXMgY29tbWl0J3MgYWRkaW5nIHN1cHBvcnQgZm9yIHRoZSBLU1o5ODk3UyB2YXJpYW50IGJ5IGNoZWNraW5nIGEgcGFydGljdWxhciBiaXQgKGJpdCA3IG9mIHRoZSBYTUlJIGNvbnRyb2wgMCByZWdpc3RlcikgdG8gZGlmZmVyZW50aWF0ZSBpdCBmcm9tIEtTWjk4OTdSLlxuXG5BbmFseXppbmcgdGhlIGRpZmYsIGBrc3pfY29tbW9uLmNgIG5vdyBpbmNsdWRlcyBhIGBbS1NaOTg5N1NdYCBlbnRyeSBpbiBga3N6X3N3aXRjaF9jaGlwc1tdYCBhbmQgYSByZWdpc3RlciBjaGVjay4gYGtzel9jb21tb24uaGAgaW50cm9kdWNlcyBgS1NaOTg5N1NgIHRvIHRoZSBgZW51bSBrc3pfbW9kZWxgIGFuZCBkZWZpbmVzIG5ldyBjb25zdGFudHMuIGBtaWNyb2NoaXAta3N6LmhgIGFkZHMgYEtTWjk4OTdTX0NISVBfSURgLlxuXG5BbGwgdGhlc2UgY2hhbmdlcyBhcmUgKmV4Y2x1c2l2ZWx5KiB3aXRoaW4gdGhlIE1pY3JvY2hpcCBLU1ogRXRoZXJuZXQgc3dpdGNoIGRyaXZlciwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIGRpc2NyZXRlIHBoeXNpY2FsIGhhcmR3YXJlIEFTSUNzLCBhbmQgaXQncyB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCBRRU1VL3N5emthbGxlci5cblxuVGhlcmVmb3JlLCBiZWNhdXNlIHRoZSBjb2RlIGV4Y2x1c2l2ZWx5IHRvdWNoZXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLCBteSBjb25jbHVzaW9uIGlzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDpcbjEuICBUaGUgcGF0Y2ggYWRkcyBLU1o5ODk3UyBzdXBwb3J0LlxuMi4gIFRoZSBkcml2ZXIgaW50ZXJhY3RzIHdpdGggcGh5c2ljYWwgTWljcm9jaGlwIHN3aXRjaCBBU0lDcy5cbjMuICBObyBlbXVsYXRpb24gaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxuNC4gIEhlbmNlLCBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuTm93LCB0aW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcxODEsIk91dHB1dFRva2VucyI6MTI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE2MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE0OjI5OjM3LjY5NDAyMzI3MVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgZGlzdGluZ3Vpc2hpbmcgdGhlIEtTWjk4OTdTIEV0aGVybmV0IHN3aXRjaCB2YXJpYW50IHdpdGhpbiB0aGUgTWljcm9jaGlwIEtTWiBzd2l0Y2ggRFNBIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC8pLiBUaGlzIGRyaXZlciBpbnRlcmFjdHMgd2l0aCBkaXNjcmV0ZSBwaHlzaWNhbCBNaWNyb2NoaXAgc3dpdGNoIEFTSUNzIG92ZXIgSTJDL1NQSS9TTUkgYnVzZXMuIEJlY2F1c2UgdGhlIHJlcXVpcmVkIHBoeXNpY2FsIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChlLmcuLCBRRU1VIGFtZDY0KSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBkaXN0aW5ndWlzaGluZyB0aGUgS1NaOTg5N1MgRXRoZXJuZXQgc3dpdGNoIHZhcmlhbnQgd2l0aGluIHRoZSBNaWNyb2NoaXAgS1NaIHN3aXRjaCBEU0EgZHJpdmVyIChkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwLykuIFRoaXMgZHJpdmVyIGludGVyYWN0cyB3aXRoIGRpc2NyZXRlIHBoeXNpY2FsIE1pY3JvY2hpcCBzd2l0Y2ggQVNJQ3Mgb3ZlciBJMkMvU1BJL1NNSSBidXNlcy4gQmVjYXVzZSB0aGUgcmVxdWlyZWQgcGh5c2ljYWwgaGFyZHdhcmUgaXMgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKGUuZy4sIFFFTVUgYW1kNjQpLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNDoyOTozNy42OTQwNDkzOFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzM2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowdjcs7[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-05 14:26:08 +0000 UTC FinishedAt: 2026-09-05 14:29:39 +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+CgkJCTx0ZD4yMDI2LzA5LzA1IDE0OjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBkaXN0aW5ndWlzaGluZyB0aGUgS1NaOTg5N1MgRXRoZXJuZXQgc3dpdGNoIHZhcmlhbnQgd2l0aGluIHRoZSBNaWNyb2NoaXAgS1NaIHN3aXRjaCBEU0EgZHJpdmVyIChkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwLykuIFRoaXMgZHJpdmVyIGludGVyYWN0cyB3aXRoIGRpc2NyZXRlIHBoeXNpY2FsIE1pY3JvY2hpcCBzd2l0Y2ggQVNJQ3Mgb3ZlciBJMkMvU1BJL1NNSSBidXNlcy4gQmVjYXVzZSB0aGUgcmVxdWlyZWQgcGh5c2ljYWwgaGFyZHdhcmUgaXMgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKGUuZy4sIFFFTVUgYW1kNjQpLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE0OjI4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMDZlZmM2MDY5NWQyODAzNDk3MzJiODliMmRjM2Q3YzIxYzgzYjU4MFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgU2VwIDUgMTQ6Mjg6NTIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uY1xuaW5kZXggMWE5ZDZmODNhMDIzMi4uODE3OThhOWZhNjcxZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uY1xuQEAgLTE0ODYsNiAmIzQzOzE0ODYsNDEgQEAgY29uc3Qgc3RydWN0IGtzel9jaGlwX2RhdGEga3N6X3N3aXRjaF9jaGlwc1tdID0ge1xuIFx0XHQuZ2JpdF9jYXBhYmxlXHQ9IHt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlfSxcbiBcdH0sXG4gXG4mIzQzO1x0W0tTWjk4OTdTXSA9IHtcbiYjNDM7XHRcdC5jaGlwX2lkID0gS1NaOTg5N1NfQ0hJUF9JRCxcbiYjNDM7XHRcdC5kZXZfbmFtZSA9IFwmIzM0O0tTWjk4OTdTXCYjMzQ7LFxuJiM0MztcdFx0Lm51bV92bGFucyA9IDQwOTYsXG4mIzQzO1x0XHQubnVtX2FsdXMgPSA0MDk2LFxuJiM0MztcdFx0Lm51bV9zdGF0aWNzID0gMTYsXG4mIzQzO1x0XHQuY3B1X3BvcnRzID0gMHg3RixcdC8qIGNhbiBiZSBjb25maWd1cmVkIGFzIGNwdSBwb3J0ICovXG4mIzQzO1x0XHQucG9ydF9jbnQgPSA3LFx0XHQvKiB0b3RhbCBwaHlzaWNhbCBwb3J0IGNvdW50ICovXG4mIzQzO1x0XHQucG9ydF9uaXJxcyA9IDIsXG4mIzQzO1x0XHQubnVtX3R4X3F1ZXVlcyA9IDQsXG4mIzQzO1x0XHQubnVtX2lwbXMgPSA4LFxuJiM0MztcdFx0Lm9wcyA9IFx1MDAyNmtzejk0NzdfZGV2X29wcyxcbiYjNDM7XHRcdC5zd2l0Y2hfb3BzID0gXHUwMDI2a3N6OTQ3N19zd2l0Y2hfb3BzLFxuJiM0MztcdFx0LnBoeWxpbmtfbWFjX29wcyA9IFx1MDAyNmtzejk0NzdfcGh5bGlua19tYWNfb3BzLFxuJiM0MztcdFx0LnBoeV9lcnJhdGFfOTQ3NyA9IHRydWUsXG4mIzQzO1x0XHQubWliX25hbWVzID0ga3N6OTQ3N19taWJfbmFtZXMsXG4mIzQzO1x0XHQubWliX2NudCA9IEFSUkFZX1NJWkUoa3N6OTQ3N19taWJfbmFtZXMpLFxuJiM0MztcdFx0LnJlZ19taWJfY250ID0gTUlCX0NPVU5URVJfTlVNLFxuJiM0MztcdFx0LnJlZ3MgPSBrc3o5NDc3X3JlZ3MsXG4mIzQzO1x0XHQubWFza3MgPSBrc3o5NDc3X21hc2tzLFxuJiM0MztcdFx0LnNoaWZ0cyA9IGtzejk0Nzdfc2hpZnRzLFxuJiM0MztcdFx0LnhtaWlfY3RybDAgPSBrc3o5NDc3X3htaWlfY3RybDAsXG4mIzQzO1x0XHQueG1paV9jdHJsMSA9IGtzejk0NzdfeG1paV9jdHJsMSxcbiYjNDM7XHRcdC5zdXBwb3J0c19taWlcdD0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLFxuJiM0MztcdFx0XHRcdCAgIGZhbHNlLCB0cnVlLCBmYWxzZX0sXG4mIzQzO1x0XHQuc3VwcG9ydHNfcm1paVx0PSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsXG4mIzQzO1x0XHRcdFx0ICAgZmFsc2UsIHRydWUsIGZhbHNlfSxcbiYjNDM7XHRcdC5zdXBwb3J0c19yZ21paSA9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxcbiYjNDM7XHRcdFx0XHQgICBmYWxzZSwgdHJ1ZSwgZmFsc2V9LFxuJiM0MztcdFx0LmludGVybmFsX3BoeVx0PSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSxcbiYjNDM7XHRcdFx0XHQgICB0cnVlLCBmYWxzZSwgZmFsc2V9LFxuJiM0MztcdFx0LmdiaXRfY2FwYWJsZVx0PSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZX0sXG4mIzQzO1x0XHQuc2dtaWlfcG9ydCA9IDcsXG4mIzQzO1x0fSxcbiYjNDM7XG4gXHRbS1NaOTg5M10gPSB7XG4gXHRcdC5jaGlwX2lkID0gS1NaOTg5M19DSElQX0lELFxuIFx0XHQuZGV2X25hbWUgPSBcJiMzNDtLU1o5ODkzXCYjMzQ7LFxuQEAgLTM4OTcsNiAmIzQzOzM5MzIsNyBAQCBpbnQga3N6X3N3aXRjaF9yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuIFx0c3RydWN0IGRldmljZV9ub2RlICpwb3J0cztcbiBcdHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2U7XG4gXHR1bnNpZ25lZCBpbnQgcG9ydF9udW07XG4mIzQzO1x0dTMyIGxvb2t1cF9jaGlwX2lkO1xuIFx0aW50IHJldDtcbiBcdGludCBpO1xuIFxuQEAgLTM5MzMsNyAmIzQzOzM5NjksMzAgQEAgaW50IGtzel9zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4tXHRpbmZvID0ga3N6X2xvb2t1cF9pbmZvKGRldi1cdTAwM2VjaGlwX2lkKTtcbiYjNDM7XHRsb29rdXBfY2hpcF9pZCA9IGRldi1cdTAwM2VjaGlwX2lkO1xuJiM0MztcbiYjNDM7XHQvKiBUaGUgS1NaOTg5N1MgYW5kIHRoZSBLU1o5ODk3UiByZXBvcnQgdGhlIHNhbWUgY2hpcCBJRCBhbmQgZGlmZmVyXG4mIzQzO1x0ICogb25seSBpbiBjaGlwX2RhdGE6IG9ubHkgdGhlIFMgaGFzIHRoZSBTR01JSSBwb3J0IDcsIHRoZSBSIGhhcyBhXG4mIzQzO1x0ICogc2Vjb25kIFJHTUlJIHBvcnQgaW5zdGVhZC4gQml0IDcgb2YgdGhlIHBvcnQgNyBYTUlJIGNvbnRyb2wgMFxuJiM0MztcdCAqIHJlZ2lzdGVyIGlzIHJlYWQtb25seSBhbmQgdGVsbHMgdGhlbSBhcGFydDsgaXQgcmVhZHMgb25lIG9uIHRoZSBTLlxuJiM0MztcdCAqIENvbXBhcmUgdGhlIEtTWjk4OTdTIGRhdGEgc2hlZXQgRFMwMDAwMjM5NEMgc2VjdGlvbiA1LjIuNC4xIHdpdGhcbiYjNDM7XHQgKiB0aGUgS1NaOTg5N1IgZGF0YSBzaGVldCBEUzAwMDAyMzMwRCBzZWN0aW9uIDUuMi4zLjEuXG4mIzQzO1x0ICpcbiYjNDM7XHQgKiBPbmx5IHRoZSBjaGlwX2RhdGEgZW50cnkgZGlmZmVycywgc28gZGV2LVx1MDAzZWNoaXBfaWQga2VlcHMgdGhlIHNoYXJlZFxuJiM0MztcdCAqIGNoaXAgSUQgYW5kIG5vdGhpbmcgZWxzZSBoYXMgdG8ga25vdyBhYm91dCB0aGUgdmFyaWFudC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoZGV2LVx1MDAzZWNoaXBfaWQgPT0gS1NaOTg5N19DSElQX0lEKSB7XG4mIzQzO1x0XHR1OCB2YWw7XG4mIzQzO1xuJiM0MztcdFx0cmV0ID0ga3N6X3JlYWQ4KGRldiwgS1NaOTg5N19SRUdfUE9SVDdfWE1JSV9DVFJMXzAsIFx1MDAyNnZhbCk7XG4mIzQzO1x0XHRpZiAocmV0KVxuJiM0MztcdFx0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHRcdGlmICh2YWwgXHUwMDI2IEtTWjk4OTdfUE9SVDdfU0dNSUlfU0VMKVxuJiM0MztcdFx0XHRsb29rdXBfY2hpcF9pZCA9IEtTWjk4OTdTX0NISVBfSUQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpbmZvID0ga3N6X2xvb2t1cF9pbmZvKGxvb2t1cF9jaGlwX2lkKTtcbiBcdGlmICghaW5mbylcbiBcdFx0cmV0dXJuIC1FTk9ERVY7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmggYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaFxuaW5kZXggY2JlOTg0OTQ1NzhjMy4uMGNmZjMzZGYwNmE0YiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaFxuQEAgLTI4NCw2ICYjNDM7Mjg0LDcgQEAgZW51bSBrc3pfbW9kZWwge1xuIFx0S1NaOTQ3NyxcbiBcdEtTWjk4OTYsXG4gXHRLU1o5ODk3LFxuJiM0MztcdEtTWjk4OTdTLFxuIFx0S1NaOTg5MyxcbiBcdEtTWjk1NjMsXG4gXHRLU1o5NTY3LFxuQEAgLTg3NCw2ICYjNDM7ODc1LDEwIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBrc3pfaXNfc2dtaWlfcG9ydChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydClcbiAjZGVmaW5lIFNLVV9JRF9LU1o4NTYzXHRcdFx0MHgzY1xuICNkZWZpbmUgU0tVX0lEX0tTWjk1NjNcdFx0XHQweDFjXG4gXG4mIzQzOy8qIEtTWjk4OTcgc3BlY2lmaWMgcmVnaXN0ZXI6IHBvcnQgNyBYTUlJIGNvbnRyb2wgMCAqL1xuJiM0MzsjZGVmaW5lIEtTWjk4OTdfUkVHX1BPUlQ3X1hNSUlfQ1RSTF8wXHQweDczMDBcbiYjNDM7I2RlZmluZSBLU1o5ODk3X1BPUlQ3X1NHTUlJX1NFTFx0XHRCSVQoNylcbiYjNDM7XG4gLyogRHJpdmVyIHNldCBzd2l0Y2ggYnJvYWRjYXN0IHN0b3JtIHByb3RlY3Rpb24gYXQgMTAlIHJhdGUuICovXG4gI2RlZmluZSBCUk9BRENBU1RfU1RPUk1fUFJPVF9SQVRFXHQxMFxuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9taWNyb2NoaXAta3N6LmggYi9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbWljcm9jaGlwLWtzei5oXG5pbmRleCAwMjg3ODFhZDQwNTkzLi5mZThkZjE3NzQyODljIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaFxuQEAgLTM0LDYgJiM0MzszNCw3IEBAIGVudW0ga3N6X2NoaXBfaWQge1xuIFx0S1NaOTQ3N19DSElQX0lEID0gMHgwMDk0NzcwMCxcbiBcdEtTWjk4OTZfQ0hJUF9JRCA9IDB4MDA5ODk2MDAsXG4gXHRLU1o5ODk3X0NISVBfSUQgPSAweDAwOTg5NzAwLFxuJiM0MztcdEtTWjk4OTdTX0NISVBfSUQgPSAweDAwOTg5NzAxLFxuIFx0S1NaOTg5M19DSElQX0lEID0gMHgwMDk4OTMwMCxcbiBcdEtTWjk1NjNfQ0hJUF9JRCA9IDB4MDA5NTYzMDAsXG4gXHRLU1o4NTY3X0NISVBfSUQgPSAweDAwODU2NzAwLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE0OjI4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgZGlzdGluZ3Vpc2hpbmcgdGhlIEtTWjk4OTdTIEV0aGVybmV0IHN3aXRjaCB2YXJpYW50IHdpdGhpbiB0aGUgTWljcm9jaGlwIEtTWiBzd2l0Y2ggRFNBIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC8pLiBUaGlzIGRyaXZlciBpbnRlcmFjdHMgd2l0aCBkaXNjcmV0ZSBwaHlzaWNhbCBNaWNyb2NoaXAgc3dpdGNoIEFTSUNzIG92ZXIgSTJDL1NQSS9TTUkgYnVzZXMuIEJlY2F1c2UgdGhlIHJlcXVpcmVkIHBoeXNpY2FsIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChlLmcuLCBRRU1VIGFtZDY0KSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDA2ZWZjNjA2OTVkMjgwMzQ5NzMyYjg5YjJkYzNkN2MyMWM4M2I1ODAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IFNlcCA1IDE0OjI4OjUyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYwppbmRleCAxYTlkNmY4M2EwMjMyLi44MTc5OGE5ZmE2NzFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYwpAQCAtMTQ4Niw2ICYjNDM7MTQ4Niw0MSBAQCBjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSBrc3pfc3dpdGNoX2NoaXBzW10gPSB7CiAJCS5nYml0X2NhcGFibGUJPSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZX0sCiAJfSwKIAomIzQzOwlbS1NaOTg5N1NdID0gewomIzQzOwkJLmNoaXBfaWQgPSBLU1o5ODk3U19DSElQX0lELAomIzQzOwkJLmRldl9uYW1lID0gJiMzNDtLU1o5ODk3UyYjMzQ7LAomIzQzOwkJLm51bV92bGFucyA9IDQwOTYsCiYjNDM7CQkubnVtX2FsdXMgPSA0MDk2LAomIzQzOwkJLm51bV9zdGF0aWNzID0gMTYsCiYjNDM7CQkuY3B1X3BvcnRzID0gMHg3RiwJLyogY2FuIGJlIGNvbmZpZ3VyZWQgYXMgY3B1IHBvcnQgKi8KJiM0MzsJCS5wb3J0X2NudCA9IDcsCQkvKiB0b3RhbCBwaHlzaWNhbCBwb3J0IGNvdW50ICovCiYjNDM7CQkucG9ydF9uaXJxcyA9IDIsCiYjNDM7CQkubnVtX3R4X3F1ZXVlcyA9IDQsCiYjNDM7CQkubnVtX2lwbXMgPSA4LAomIzQzOwkJLm9wcyA9ICZhbXA7a3N6OTQ3N19kZXZfb3BzLAomIzQzOwkJLnN3aXRjaF9vcHMgPSAmYW1wO2tzejk0Nzdfc3dpdGNoX29wcywKJiM0MzsJCS5waHlsaW5rX21hY19vcHMgPSAmYW1wO2tzejk0NzdfcGh5bGlua19tYWNfb3BzLAomIzQzOwkJLnBoeV9lcnJhdGFfOTQ3NyA9IHRydWUsCiYjNDM7CQkubWliX25hbWVzID0ga3N6OTQ3N19taWJfbmFtZXMsCiYjNDM7CQkubWliX2NudCA9IEFSUkFZX1NJWkUoa3N6OTQ3N19taWJfbmFtZXMpLAomIzQzOwkJLnJlZ19taWJfY250ID0gTUlCX0NPVU5URVJfTlVNLAomIzQzOwkJLnJlZ3MgPSBrc3o5NDc3X3JlZ3MsCiYjNDM7CQkubWFza3MgPSBrc3o5NDc3X21hc2tzLAomIzQzOwkJLnNoaWZ0cyA9IGtzejk0Nzdfc2hpZnRzLAomIzQzOwkJLnhtaWlfY3RybDAgPSBrc3o5NDc3X3htaWlfY3RybDAsCiYjNDM7CQkueG1paV9jdHJsMSA9IGtzejk0NzdfeG1paV9jdHJsMSwKJiM0MzsJCS5zdXBwb3J0c19taWkJPSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCiYjNDM7CQkJCSAgIGZhbHNlLCB0cnVlLCBmYWxzZX0sCiYjNDM7CQkuc3VwcG9ydHNfcm1paQk9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKJiM0MzsJCQkJICAgZmFsc2UsIHRydWUsIGZhbHNlfSwKJiM0MzsJCS5zdXBwb3J0c19yZ21paSA9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKJiM0MzsJCQkJICAgZmFsc2UsIHRydWUsIGZhbHNlfSwKJiM0MzsJCS5pbnRlcm5hbF9waHkJPSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwKJiM0MzsJCQkJICAgdHJ1ZSwgZmFsc2UsIGZhbHNlfSwKJiM0MzsJCS5nYml0X2NhcGFibGUJPSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZX0sCiYjNDM7CQkuc2dtaWlfcG9ydCA9IDcsCiYjNDM7CX0sCiYjNDM7CiAJW0tTWjk4OTNdID0gewogCQkuY2hpcF9pZCA9IEtTWjk4OTNfQ0hJUF9JRCwKIAkJLmRldl9uYW1lID0gJiMzNDtLU1o5ODkzJiMzNDssCkBAIC0zODk3LDYgJiM0MzszOTMyLDcgQEAgaW50IGtzel9zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldikKIAlzdHJ1Y3QgZGV2aWNlX25vZGUgKnBvcnRzOwogCXBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2U7CiAJdW5zaWduZWQgaW50IHBvcnRfbnVtOwomIzQzOwl1MzIgbG9va3VwX2NoaXBfaWQ7CiAJaW50IHJldDsKIAlpbnQgaTsKIApAQCAtMzkzMyw3ICYjNDM7Mzk2OSwzMCBAQCBpbnQga3N6X3N3aXRjaF9yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KQogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlpbmZvID0ga3N6X2xvb2t1cF9pbmZvKGRldi0mZ3Q7Y2hpcF9pZCk7CiYjNDM7CWxvb2t1cF9jaGlwX2lkID0gZGV2LSZndDtjaGlwX2lkOwomIzQzOwomIzQzOwkvKiBUaGUgS1NaOTg5N1MgYW5kIHRoZSBLU1o5ODk3UiByZXBvcnQgdGhlIHNhbWUgY2hpcCBJRCBhbmQgZGlmZmVyCiYjNDM7CSAqIG9ubHkgaW4gY2hpcF9kYXRhOiBvbmx5IHRoZSBTIGhhcyB0aGUgU0dNSUkgcG9ydCA3LCB0aGUgUiBoYXMgYQomIzQzOwkgKiBzZWNvbmQgUkdNSUkgcG9ydCBpbnN0ZWFkLiBCaXQgNyBvZiB0aGUgcG9ydCA3IFhNSUkgY29udHJvbCAwCiYjNDM7CSAqIHJlZ2lzdGVyIGlzIHJlYWQtb25seSBhbmQgdGVsbHMgdGhlbSBhcGFydDsgaXQgcmVhZHMgb25lIG9uIHRoZSBTLgomIzQzOwkgKiBDb21wYXJlIHRoZSBLU1o5ODk3UyBkYXRhIHNoZWV0IERTMDAwMDIzOTRDIHNlY3Rpb24gNS4yLjQuMSB3aXRoCiYjNDM7CSAqIHRoZSBLU1o5ODk3UiBkYXRhIHNoZWV0IERTMDAwMDIzMzBEIHNlY3Rpb24gNS4yLjMuMS4KJiM0MzsJICoKJiM0MzsJICogT25seSB0aGUgY2hpcF9kYXRhIGVudHJ5IGRpZmZlcnMsIHNvIGRldi0mZ3Q7Y2hpcF9pZCBrZWVwcyB0aGUgc2hhcmVkCiYjNDM7CSAqIGNoaXAgSUQgYW5kIG5vdGhpbmcgZWxzZSBoYXMgdG8ga25vdyBhYm91dCB0aGUgdmFyaWFudC4KJiM0MzsJICovCiYjNDM7CWlmIChkZXYtJmd0O2NoaXBfaWQgPT0gS1NaOTg5N19DSElQX0lEKSB7CiYjNDM7CQl1OCB2YWw7CiYjNDM7CiYjNDM7CQlyZXQgPSBrc3pfcmVhZDgoZGV2LCBLU1o5ODk3X1JFR19QT1JUN19YTUlJX0NUUkxfMCwgJmFtcDt2YWwpOwomIzQzOwkJaWYgKHJldCkKJiM0MzsJCQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwkJaWYgKHZhbCAmYW1wOyBLU1o5ODk3X1BPUlQ3X1NHTUlJX1NFTCkKJiM0MzsJCQlsb29rdXBfY2hpcF9pZCA9IEtTWjk4OTdTX0NISVBfSUQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJaW5mbyA9IGtzel9sb29rdXBfaW5mbyhsb29rdXBfY2hpcF9pZCk7CiAJaWYgKCFpbmZvKQogCQlyZXR1cm4gLUVOT0RFVjsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmggYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaAppbmRleCBjYmU5ODQ5NDU3OGMzLi4wY2ZmMzNkZjA2YTRiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaApAQCAtMjg0LDYgJiM0MzsyODQsNyBAQCBlbnVtIGtzel9tb2RlbCB7CiAJS1NaOTQ3NywKIAlLU1o5ODk2LAogCUtTWjk4OTcsCiYjNDM7CUtTWjk4OTdTLAogCUtTWjk4OTMsCiAJS1NaOTU2MywKIAlLU1o5NTY3LApAQCAtODc0LDYgJiM0Mzs4NzUsMTAgQEAgc3RhdGljIGlubGluZSBib29sIGtzel9pc19zZ21paV9wb3J0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0KQogI2RlZmluZSBTS1VfSURfS1NaODU2MwkJCTB4M2MKICNkZWZpbmUgU0tVX0lEX0tTWjk1NjMJCQkweDFjCiAKJiM0MzsvKiBLU1o5ODk3IHNwZWNpZmljIHJlZ2lzdGVyOiBwb3J0IDcgWE1JSSBjb250cm9sIDAgKi8KJiM0MzsjZGVmaW5lIEtTWjk4OTdfUkVHX1BPUlQ3X1hNSUlfQ1RSTF8wCTB4NzMwMAomIzQzOyNkZWZpbmUgS1NaOTg5N19QT1JUN19TR01JSV9TRUwJCUJJVCg3KQomIzQzOwogLyogRHJpdmVyIHNldCBzd2l0Y2ggYnJvYWRjYXN0IHN0b3JtIHByb3RlY3Rpb24gYXQgMTAlIHJhdGUuICovCiAjZGVmaW5lIEJST0FEQ0FTVF9TVE9STV9QUk9UX1JBVEUJMTAKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaCBiL2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9taWNyb2NoaXAta3N6LmgKaW5kZXggMDI4NzgxYWQ0MDU5My4uZmU4ZGYxNzc0Mjg5YyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbWljcm9jaGlwLWtzei5oCkBAIC0zNCw2ICYjNDM7MzQsNyBAQCBlbnVtIGtzel9jaGlwX2lkIHsKIAlLU1o5NDc3X0NISVBfSUQgPSAweDAwOTQ3NzAwLAogCUtTWjk4OTZfQ0hJUF9JRCA9IDB4MDA5ODk2MDAsCiAJS1NaOTg5N19DSElQX0lEID0gMHgwMDk4OTcwMCwKJiM0MzsJS1NaOTg5N1NfQ0hJUF9JRCA9IDB4MDA5ODk3MDEsCiAJS1NaOTg5M19DSElQX0lEID0gMHgwMDk4OTMwMCwKIAlLU1o5NTYzX0NISVBfSUQgPSAweDAwOTU2MzAwLAogCUtTWjg1NjdfQ0hJUF9JRCA9IDB4MDA4NTY3MDAsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE0OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3MDMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkFuYWx5emluZyBhIEtTWiBTd2l0Y2ggRHJpdmVyIFBhdGNoKioKCkFscmlnaHQsIHRoaXMgcGF0Y2ggYWZmZWN0cyBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNgLCB0aGUgaGVhZGVyLCBhbmQgYSBwbGF0Zm9ybSBkYXRhIGluY2x1ZGUuIEltbWVkaWF0ZWx5LCBJJiMzOTttIHRoaW5raW5nIE1pY3JvY2hpcCBLU1og4oCTIHRoYXQgbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBEU0Egc3dpdGNoZXMuIFNwZWNpZmljYWxseSwgdGhpbmdzIGxpa2UgdGhlIEtTWjk4OTcsIEtTWjk0NzcsIEtTWjg3OTUsIEtTWjg4NjMsIGFsbCBzb2xpZCBwbGF5ZXJzLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBzaXplIHVwIHRoZSByZWFjaCBvZiB0aGlzIGNvZGUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gQXJlIHRoZXJlIGV2ZW4gYW55IHZpcnR1YWwgZW52aXJvbm1lbnRzIHRoYXQgd291bGQgcmVhbGlzdGljYWxseSBoaXQgdGhpcz8gUHJvYmFibHkgbm90IGRpcmVjdGx5LCBidXQgaXTigJlzIHdvcnRoIGtlZXBpbmcgaW4gbWluZCBwb3RlbnRpYWwgaW1wbGljYXRpb25zLgoKTXkgbmV4dCBzdGVwIGlzIHRvIHF1aWNrbHkgcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGF0dGFjaG1lbnQgYW5kIHByb2JlIG1lY2hhbmlzbXMgZm9yIHRoZXNlIEtTWiBzd2l0Y2hlcy4gV2UmIzM5O3JlIG1vc3QgbGlrZWx5IGxvb2tpbmcgYXQgU1BJLCBJMkMsIG9yIE1ESU8gZm9yIGNvbW11bmljYXRpb24gd2l0aCB0aGUgbWFpbiBzeXN0ZW0uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIGludGVyZmFjZXMgd2l0aCB0aGUgaGFyZHdhcmUgYW5kIGhhbmRsZXMgdGhlIERTQSBhcmNoaXRlY3R1cmUuIEdyZXBwZXIgaXMgbXkgZnJpZW5kIGhlcmUuIFRpbWUgdG8gZGl2ZSBpbnRvIGBkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2AgYW5kIHNlZSB3aGF0IHRoZSBkcml2ZXIgaXMgZG9pbmcgYXQgaXRzIGNvcmUuIEnigJlsbCBiZSBsb29raW5nIGZvciBjbHVlcyBvbiBob3cgdGhlIGRyaXZlciBoYW5kbGVzIGRldmljZSBlbnVtZXJhdGlvbiwgaW5pdGlhbGl6YXRpb24sIGFuZCBkYXRhIHRyYW5zZmVyLiBHb3R0YSB1bmRlcnN0YW5kIHRoZSBsb3ctbGV2ZWwgaW50ZXJhY3Rpb25zIHRvIGdhdWdlIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTQ6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3N6XyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1NjkwIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX05FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT04pXHQmIzQzOz0ga3N6X3N3aXRjaC5vXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlOjM6a3N6X3N3aXRjaC1vYmpzIDo9IGtzel9jb21tb24ubyBrc3pfZGNiLm9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGU6NDprc3pfc3dpdGNoLW9ianMgJiM0Mzs9IGtzejk0NzcubyBrc3o5NDc3X2FjbC5vIGtzejk0NzdfdGNfZmxvd2VyLm9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGU6NTprc3pfc3dpdGNoLW9ianMgJiM0Mzs9IGtzejgub1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZTo2Omtzel9zd2l0Y2gtb2JqcyAmIzQzOz0gbGFuOTM3eF9tYWluLm9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGUtNy1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGU9OD1pZmRlZiBDT05GSUdfTkVUX0RTQV9NSUNST0NISVBfS1NaX1BUUFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZTo5Omtzel9zd2l0Y2gtb2JqcyAmIzQzOz0ga3N6X3B0cC5vXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlLTEwLWVuZGlmXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZT0xMj1vYmotJChDT05GSUdfTkVUX0RTQV9NSUNST0NISVBfS1NaOTQ3N19JMkMpXHQmIzQzOz0ga3N6OTQ3N19pMmMub1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfTkVUX0RTQV9NSUNST0NISVBfS1NaX1NQSSlcdFx0JiM0Mzs9IGtzel9zcGkub1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZS0xNC1vYmotJChDT05GSUdfTkVUX0RTQV9NSUNST0NISVBfS1NaODg2M19TTUkpXHQmIzQzOz0ga3N6ODg2M19zbWkub1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE4LSNpbmNsdWRlIFx1MDAzY2xpbnV4L2RlbGF5LmhcdTAwM2VcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjE5OiNpbmNsdWRlIFx1MDAzY2xpbnV4L2RzYS9rc3pfY29tbW9uLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTIwLSNpbmNsdWRlIFx1MDAzY2xpbnV4L2V4cG9ydC5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzMtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzozNDojaW5jbHVkZSBcJiMzNDtrc3pfY29tbW9uLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjM1OiNpbmNsdWRlIFwmIzM0O2tzel9kY2IuaFwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzYtI2luY2x1ZGUgXCYjMzQ7a3N6OF9yZWcuaFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQ5LSAqL1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTA6c3RhdGljIGNvbnN0IHN0cnVjdCBrc3pfZHJpdmVfc3RyZW5ndGgga3N6ODh4M19kcml2ZV9zdHJlbmd0aHNbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUxLVx0eyAwLCAgODAwMCB9LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jPTU1PXN0cnVjdCBrc3o4OHh4X3N0YXRzX3JhdyB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTEtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo5MjpzdGF0aWMgdm9pZCBrc3pfY2ZnKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUzMiBhZGRyLCB1OCBiaXRzLCBib29sIHNldClcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTkzLXtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjk0Olx0a3N6X3JtdzgoZGV2LCBhZGRyLCBiaXRzLCBzZXQgPyBiaXRzIDogMCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05NS19XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05Ni1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjk3OnN0YXRpYyB2b2lkIGtzel9wb3J0X2NmZyhzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydCwgaW50IG9mZnNldCwgdTggYml0cyxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTk4LVx0XHRcdCBib29sIHNldClcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTk5LXtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEwMDpcdGtzel9ybXc4KGRldiwgZGV2LVx1MDAzZWRldl9vcHMtXHUwMDNlZ2V0X3BvcnRfYWRkcihwb3J0LCBvZmZzZXQpLCBiaXRzLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTAxLVx0XHQgc2V0ID8gYml0cyA6IDApO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExMi0gKiBQTUUgc3dpdGNoIGZ1bmN0aW9uYWxpdGllcy4gQm90aCA4LWJpdCByZWdpc3RlcnMgMTEwIGFuZCAxMTEgYXJlXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMTM6ICogd3JpdHRlbiBhdCBvbmNlIHdpdGgga3N6X3dyaXRlMTYsIHVzaW5nIHRoZSBzZXJpYWwgbXVsdGlwbGUgd3JpdGVcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExNC0gKiBmdW5jdGlvbmFsaXR5LlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExNy0gKi9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjExODpzdGF0aWMgaW50IGtzejhfaW5kX3dyaXRlOChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1OCB0YWJsZSwgdTE2IGFkZHIsIHU4IGRhdGEpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTkte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEyOC1cdGN0cmxfYWRkciA9IElORF9BQ0NfVEFCTEUodGFibGUpIHwgYWRkcjtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEyOTpcdHJldCA9IGtzel93cml0ZTE2KGRldiwgcmVnc1tSRUdfSU5EX0NUUkxfMF0sIGN0cmxfYWRkcik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzAtXHRpZiAoIXJldClcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEzMTpcdFx0cmV0ID0ga3N6X3dyaXRlOChkZXYsIHJlZ3NbUkVHX0lORF9CWVRFXSwgZGF0YSk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzItXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQ2LSAqIFBNRSBzd2l0Y2ggZnVuY3Rpb25hbGl0aWVzLiBCb3RoIDgtYml0IHJlZ2lzdGVycyAxMTAgYW5kIDExMSBhcmVcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjE0NzogKiB3cml0dGVuIGF0IG9uY2Ugd2l0aCBrc3pfd3JpdGUxNiwgdXNpbmcgdGhlIHNlcmlhbCBtdWx0aXBsZSB3cml0ZVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQ4LSAqIGZ1bmN0aW9uYWxpdHkuXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTUxLSAqL1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTUyOnN0YXRpYyBpbnQga3N6OF9pbmRfcmVhZDgoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTggdGFibGUsIHUxNiBhZGRyLCB1OCAqdmFsKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTUzLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNjItXHRjdHJsX2FkZHIgPSBJTkRfQUNDX1RBQkxFKHRhYmxlIHwgVEFCTEVfUkVBRCkgfCBhZGRyO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTYzOlx0cmV0ID0ga3N6X3dyaXRlMTYoZGV2LCByZWdzW1JFR19JTkRfQ1RSTF8wXSwgY3RybF9hZGRyKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE2NC1cdGlmICghcmV0KVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTY1Olx0XHRyZXQgPSBrc3pfcmVhZDgoZGV2LCByZWdzW1JFR19JTkRfQllURV0sIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNjYtXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTcxLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTcyOnN0YXRpYyBpbnQga3N6OF9wbWVfd3JpdGU4KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUzMiByZWcsIHU4IHZhbHVlKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTczLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNzYtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNzc6c3RhdGljIGludCBrc3o4X3BtZV9wcmVhZDgoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIGludCBvZmZzZXQsIHU4ICpkYXRhKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTc4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xODMtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxODQ6c3RhdGljIGludCBrc3o4X3BtZV9wd3JpdGU4KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0LCBpbnQgb2Zmc2V0LCB1OCBkYXRhKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTg1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYz0xOTE9c3RhdGljIHZvaWQga3N6ODQ2M19pcnFfbWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmQpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xOTIte1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTkzOlx0c3RydWN0IGtzel9pcnEgKmtpcnEgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE5NC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYz0xOTg9c3RhdGljIHZvaWQga3N6ODQ2M19pcnFfdW5tYXNrKHN0cnVjdCBpcnFfZGF0YSAqZClcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE5OS17XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyMDA6XHRzdHJ1Y3Qga3N6X2lycSAqa2lycSA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjAxLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jPTIwNT1zdGF0aWMgY29uc3Qgc3RydWN0IGlycV9jaGlwIGtzejg0NjNfaXJxX2NoaXAgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjA4LVx0LmlycV91bm1hc2tcdFx0PSBrc3o4NDYzX2lycV91bm1hc2ssXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyMDk6XHQuaXJxX2J1c19sb2NrXHRcdD0ga3N6X2lycV9idXNfbG9jayxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjIxMDpcdC5pcnFfYnVzX3N5bmNfdW5sb2NrXHQ9IGtzel9pcnFfYnVzX3N5bmNfdW5sb2NrLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjExLX07XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MjIzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2RvbWFpbl9vcHMga3N6ODQ2M19pcnFfZG9tYWluX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yMjctXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyMjg6c3RhdGljIGludCBrc3o4NDYzX2dpcnFfc2V0dXAoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTIyOS17XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyMzA6XHRzdHJ1Y3Qga3N6X2lycSAqZ2lycSA9IFx1MDAyNmRldi1cdTAwM2VnaXJxO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjMxLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTIzOS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI0MDpcdHJldHVybiBrc3pfaXJxX2NvbW1vbl9zZXR1cChkZXYsIGdpcnEsIFx1MDAyNmtzejg0NjNfaXJxX2RvbWFpbl9vcHMpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjQxLX1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI0Mi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI0MzpzdGF0aWMgaW50IGtzejg0NjNfcmVzZXRfc3dpdGNoKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNDQte1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjQ1Olx0a3N6X2NmZyhkZXYsIEtTWjg0NjNfUkVHX1NXX1JFU0VULFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjQ2LVx0XHRLU1o4NDYzX0dMT0JBTF9TT0ZUV0FSRV9SRVNFVCB8IEtTWjg0NjNfUFRQX1NPRlRXQVJFX1JFU0VULFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjQ3LVx0XHR0cnVlKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI0ODpcdGtzel9jZmcoZGV2LCBLU1o4NDYzX1JFR19TV19SRVNFVCxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI0OS1cdFx0S1NaODQ2M19HTE9CQUxfU09GVFdBUkVfUkVTRVQgfCBLU1o4NDYzX1BUUF9TT0ZUV0FSRV9SRVNFVCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNTMtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNTQ6c3RhdGljIGludCBrc3o4X3Jlc2V0X3N3aXRjaChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjU1LXtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI1NjpcdGlmIChrc3pfaXNfa3N6ODh4MyhkZXYpKSB7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNTctXHRcdC8qIHJlc2V0IHN3aXRjaCAqL1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjU4Olx0XHRrc3pfY2ZnKGRldiwgS1NaODg2M19SRUdfU1dfUkVTRVQsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNTktXHRcdFx0S1NaODg2M19HTE9CQUxfU09GVFdBUkVfUkVTRVQgfCBLU1o4ODYzX1BDU19SRVNFVCwgdHJ1ZSk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNjA6XHRcdGtzel9jZmcoZGV2LCBLU1o4ODYzX1JFR19TV19SRVNFVCxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI2MS1cdFx0XHRLU1o4ODYzX0dMT0JBTF9TT0ZUV0FSRV9SRVNFVCB8IEtTWjg4NjNfUENTX1JFU0VULCBmYWxzZSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjYzLVx0XHQvKiByZXNldCBzd2l0Y2ggKi9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI2NDpcdFx0a3N6X3dyaXRlOChkZXYsIFJFR19QT1dFUl9NQU5BR0VNRU5UXzEsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNjUtXHRcdFx0ICAgU1dfU09GVFdBUkVfUE9XRVJfRE9XTiBcdTAwM2NcdTAwM2MgU1dfUE9XRVJfTUFOQUdFTUVOVF9NT0RFX1MpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjY2Olx0XHRrc3pfd3JpdGU4KGRldiwgUkVHX1BPV0VSX01BTkFHRU1FTlRfMSwgMCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNjctXHR9XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MjcyPXN0YXRpYyBpbnQga3N6ODh4eF9jaGFuZ2VfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCBtdHUpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNzMte1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6Mjc0Olx0c3RydWN0IGtzel9kZXZpY2UgKmRldiA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNzUtXHRpbnQgZnJhbWVfc2l6ZTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yODctXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyODg6XHRyZXR1cm4ga3N6X3JtdzgoZGV2LCBSRUdfU1dfQ1RSTF8yLCBLU1o4ODYzX0xFR0FMX1BBQ0tFVF9FTkFCTEUgfFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjg5LVx0XHRcdEtTWjg4NjNfSFVHRV9QQUNLRVRfRU5BQkxFLCBjdHJsMik7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MjkyPXN0YXRpYyBpbnQga3N6ODd4eF9jaGFuZ2VfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCBtdHUpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yOTMte1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6Mjk0Olx0c3RydWN0IGtzel9kZXZpY2UgKmRldiA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yOTUtXHR1OCBjdHJsMSA9IDAsIGN0cmwyID0gMDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zMDgtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzozMDk6XHRyZXQgPSBrc3pfcm13OChkZXYsIFJFR19TV19DVFJMXzEsIFNXX0hVR0VfUEFDS0VULCBjdHJsMSk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zMTAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTMxMi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjMxMzpcdHJldHVybiBrc3pfcm13OChkZXYsIFJFR19TV19DVFJMXzIsIFNXX0xFR0FMX1BBQ0tFVF9ESVNBQkxFLCBjdHJsMik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zMTQtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jPTMyMT1zdGF0aWMgaW50IGtzejg4eHhfbWF4X210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTMyNS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjMyNjpzdGF0aWMgaW50IGtzejhfcG9ydF9xdWV1ZV9zcGxpdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydCwgaW50IHF1ZXVlcylcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTMyNy17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzMzLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MzM0Olx0aWYgKGtzel9pc19rc3o4OHgzKGRldikpIHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTMzNS1cdFx0bWFza180cSA9IEtTWjg4NzNfUE9SVF80UVVFVUVfU1BMSVRfRU47XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzQ1LVx0XHQgKi9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjM0NjpcdFx0cmV0ID0ga3N6X3JtdzgoZGV2LCBSRUdfU1dfQ1RSTF8zLCBXRUlHSFRFRF9GQUlSX1FVRVVFX0VOQUJMRSxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM0Ny1cdFx0XHQgICAgICAgV0VJR0hURURfRkFJUl9RVUVVRV9FTkFCTEUpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM0OS1cdFx0XHRyZXR1cm4gcmV0O1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MzUwOlx0fSBlbHNlIGlmIChrc3pfaXNfa3N6ODQ2MyhkZXYpKSB7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zNTEtXHRcdG1hc2tfNHEgPSBLU1o4ODczX1BPUlRfNFFVRVVFX1NQTElUX0VOO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM2My1cdFx0ICovXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzozNjQ6XHRcdHJldCA9IGtzel9ybXc4KGRldiwgUkVHX1NXX0NUUkxfMTksXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zNjUtXHRcdFx0ICAgICAgIFNXX09VVF9SQVRFX0xJTUlUX1FVRVVFX0JBU0VELFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM3NS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjM3NjpcdHJldCA9IGtzel9wcm13OChkZXYsIHBvcnQsIHJlZ180cSwgbWFza180cSwgZGF0YV80cSk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zNzctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM3OS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjM4MDpcdHJldHVybiBrc3pfcHJtdzgoZGV2LCBwb3J0LCByZWdfMnEsIG1hc2tfMnEsIGRhdGFfMnEpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzgxLX1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM4Mi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjM4MzpzdGF0aWMgdm9pZCBrc3o4X3JfbWliX2NudChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydCwgdTE2IGFkZHIsIHU2NCAqY250KVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzg0LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zOTgtXHRtdXRleF9sb2NrKFx1MDAyNmRldi1cdTAwM2VhbHVfbXV0ZXgpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6Mzk5Olx0a3N6X3dyaXRlMTYoZGV2LCByZWdzW1JFR19JTkRfQ1RSTF8wXSwgY3RybF9hZGRyKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQwMC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00MDQtXHRmb3IgKGxvb3AgPSAyOyBsb29wIFx1MDAzZSAwOyBsb29wLS0pIHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjQwNTpcdFx0a3N6X3JlYWQ4KGRldiwgcmVnc1tSRUdfSU5EX01JQl9DSEVDS10sIFx1MDAyNmNoZWNrKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQwNi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQwNy1cdFx0aWYgKGNoZWNrIFx1MDAyNiBtYXNrc1tNSUJfQ09VTlRFUl9WQUxJRF0pIHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjQwODpcdFx0XHRrc3pfcmVhZDMyKGRldiwgcmVnc1tSRUdfSU5EX0RBVEFfTE9dLCBcdTAwMjZkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQwOS1cdFx0XHRpZiAoY2hlY2sgXHUwMDI2IG1hc2tzW01JQl9DT1VOVEVSX09WRVJGTE9XXSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00MTctXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo0MTg6c3RhdGljIHZvaWQga3N6ODc5NV9yX21pYl9wa3Qoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIHUxNiBhZGRyLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDE5LVx0XHRcdCAgICAgIHU2NCAqZHJvcHBlZCwgdTY0ICpjbnQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDM2LVx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNlYWx1X211dGV4KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjQzNzpcdGtzel93cml0ZTE2KGRldiwgcmVnc1tSRUdfSU5EX0NUUkxfMF0sIGN0cmxfYWRkcik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00MzgtXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDQyLVx0Zm9yIChsb29wID0gMjsgbG9vcCBcdTAwM2UgMDsgbG9vcC0tKSB7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo0NDM6XHRcdGtzel9yZWFkOChkZXYsIHJlZ3NbUkVHX0lORF9NSUJfQ0hFQ0tdLCBcdTAwMjZjaGVjayk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00NDQtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00NDUtXHRcdGlmIChjaGVjayBcdTAwMjYgbWFza3NbTUlCX0NPVU5URVJfVkFMSURdKSB7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo0NDY6XHRcdFx0a3N6X3JlYWQzMihkZXYsIHJlZ3NbUkVHX0lORF9EQVRBX0xPXSwgXHUwMDI2ZGF0YSk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00NDctXHRcdFx0aWYgKGFkZHIgXHUwMDNjIDIpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00NjktXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo0NzA6c3RhdGljIHZvaWQga3N6ODg2M19yX21pYl9wa3Qoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIHUxNiBhZGRyLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDcxLVx0XHRcdCAgICAgIHU2NCAqZHJvcHBlZCwgdTY0ICpjbnQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDgzLVx0XHRcdCAgIEtTWjg4NjNfTUlCX1BBQ0tFVF9EUk9QUEVEX1JYXzA7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo0ODQ6XHRpZiAoa3N6X2lzXzg4OTVfZmFtaWx5KGRldikgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00ODUtXHQgICAgY3RybF9hZGRyID09IEtTWjg4NjNfTUlCX1BBQ0tFVF9EUk9QUEVEX1JYXzApXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDkwLVx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNlYWx1X211dGV4KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjQ5MTpcdGtzel93cml0ZTE2KGRldiwgcmVnc1tSRUdfSU5EX0NUUkxfMF0sIGN0cmxfYWRkcik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo0OTI6XHRrc3pfcmVhZDMyKGRldiwgcmVnc1tSRUdfSU5EX0RBVEFfTE9dLCBcdTAwMjZkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQ5My1cdG11dGV4X3VubG9jayhcdTAwMjZkZXYtXHUwMDNlYWx1X211dGV4KTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MDUtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1MDY6c3RhdGljIHZvaWQga3N6OF9yX21pYl9wa3Qoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIHUxNiBhZGRyLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTA3LVx0XHRcdCAgIHU2NCAqZHJvcHBlZCwgdTY0ICpjbnQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTE0LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTE1OnN0YXRpYyB2b2lkIGtzejhfZnJlZXplX21pYihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydCwgYm9vbCBmcmVlemUpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MTYte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUyMS1cdGlmIChmcmVlemUpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1MjI6XHRcdGtzel9jZmcoZGV2LCBSRUdfU1dfQ1RSTF82LCBCSVQocG9ydCksIHRydWUpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTIzOlx0a3N6X2NmZyhkZXYsIFJFR19TV19DVFJMXzYsIFNXX01JQl9DT1VOVEVSX0ZSRUVaRSwgZnJlZXplKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUyNC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MjYtXHRpZiAoIWZyZWV6ZSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjUyNzpcdFx0a3N6X2NmZyhkZXYsIFJFR19TV19DVFJMXzYsIEJJVChwb3J0KSwgZmFsc2UpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTI4LX1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUyOS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjUzMDpzdGF0aWMgdm9pZCBrc3o4X3BvcnRfaW5pdF9jbnQoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MzEte1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTMyOlx0c3RydWN0IGtzel9wb3J0X21pYiAqbWliID0gXHUwMDI2ZGV2LVx1MDAzZXBvcnRzW3BvcnRdLm1pYjtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUzMy1cdHU2NCAqZHJvcHBlZDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MzUtXHQvKiBGb3IgS1NaODc5NSBmYW1pbHkuICovXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1MzY6XHRpZiAoa3N6X2lzX2tzejg3eHgoZGV2KSkge1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTM3LVx0XHQvKiBmbHVzaCBhbGwgZW5hYmxlZCBwb3J0IE1JQiBjb3VudGVycyAqL1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTM4Olx0XHRrc3pfY2ZnKGRldiwgUkVHX1NXX0NUUkxfNiwgQklUKHBvcnQpLCB0cnVlKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjUzOTpcdFx0a3N6X2NmZyhkZXYsIFJFR19TV19DVFJMXzYsIFNXX01JQl9DT1VOVEVSX0ZMVVNILCB0cnVlKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjU0MDpcdFx0a3N6X2NmZyhkZXYsIFJFR19TV19DVFJMXzYsIEJJVChwb3J0KSwgZmFsc2UpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTQxLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTU2Mi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjU2MzpzdGF0aWMgaW50IGtzejhfcl90YWJsZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgdGFibGUsIHUxNiBhZGRyLCB1NjQgKmRhdGEpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01NjQte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTU3My1cdG11dGV4X2xvY2soXHUwMDI2ZGV2LVx1MDAzZWFsdV9tdXRleCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1NzQ6XHRyZXQgPSBrc3pfd3JpdGUxNihkZXYsIHJlZ3NbUkVHX0lORF9DVFJMXzBdLCBjdHJsX2FkZHIpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTc1LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01NzctXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1Nzg6XHRyZXQgPSBrc3pfcmVhZDY0KGRldiwgcmVnc1tSRUdfSU5EX0RBVEFfSEldLCBkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTU3OS11bmxvY2tfYWx1OlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTU4NC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjU4NTpzdGF0aWMgaW50IGtzejhfd190YWJsZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgdGFibGUsIHUxNiBhZGRyLCB1NjQgZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTU4Ni17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTk1LVx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNlYWx1X211dGV4KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjU5NjpcdHJldCA9IGtzel93cml0ZTY0KGRldiwgcmVnc1tSRUdfSU5EX0RBVEFfSEldLCBkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTU5Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTk5LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NjAwOlx0cmV0ID0ga3N6X3dyaXRlMTYoZGV2LCByZWdzW1JFR19JTkRfQ1RSTF8wXSwgY3RybF9hZGRyKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTYwMS11bmxvY2tfYWx1OlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTYwNi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjYwNzpzdGF0aWMgaW50IGtzejhfdmFsaWRfZHluX2VudHJ5KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHU4ICpkYXRhKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNjA4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02MTctXHRkbyB7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo2MTg6XHRcdHJldCA9IGtzel9yZWFkOChkZXYsIHJlZ3NbUkVHX0lORF9EQVRBX0NIRUNLXSwgZGF0YSk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02MTktXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNjI5LVx0LyogRW50cnkgaXMgcmVhZHkgZm9yIGFjY2Vzc2luZy4gKi9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjYzMDpcdHJldHVybiBrc3pfcmVhZDgoZGV2LCByZWdzW1JFR19JTkRfREFUQV84XSwgZGF0YSk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02MzEtfVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNjMyLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NjMzOnN0YXRpYyBpbnQga3N6OF9yX2R5bl9tYWNfdGFibGUoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTE2IGFkZHIsIHU4ICptYWNfYWRkcixcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTYzNC1cdFx0XHRcdHU4ICpmaWQsIHU4ICpzcmNfcG9ydCwgdTE2ICplbnRyaWVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTY1Mi1cdG11dGV4X2xvY2soXHUwMDI2ZGV2LVx1MDAzZWFsdV9tdXRleCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo2NTM6XHRyZXQgPSBrc3pfd3JpdGUxNihkZXYsIHJlZ3NbUkVHX0lORF9DVFJMXzBdLCBjdHJsX2FkZHIpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNjU0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02NjUtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo2NjY6XHRyZXQgPSBrc3pfcmVhZDY0KGRldiwgcmVnc1tSRUdfSU5EX0RBVEFfSEldLCBcdTAwMjZidWYpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNjY3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02OTgtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo2OTk6c3RhdGljIGludCBrc3o4X3Jfc3RhX21hY190YWJsZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MTYgYWRkcixcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTcwMC1cdFx0XHRcdHN0cnVjdCBhbHVfc3RydWN0ICphbHUsIGJvb2wgKnZhbGlkKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTczOC1cdCAqL1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NzM5Olx0aWYgKGtzel9pc19rc3o4N3h4KGRldikgfHwga3N6X2lzXzg4OTVfZmFtaWx5KGRldikpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy03NDAtXHRcdGRhdGFfaGkgXHUwMDNlXHUwMDNlPSAxO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTc1MC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjc1MTpzdGF0aWMgaW50IGtzejhfd19zdGFfbWFjX3RhYmxlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUxNiBhZGRyLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNzUyLVx0XHRcdFx0c3RydWN0IGFsdV9zdHJ1Y3QgKmFsdSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy03ODMtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo3ODQ6c3RhdGljIHZvaWQga3N6OF9mcm9tX3ZsYW4oc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTMyIHZsYW4sIHU4ICpmaWQsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy03ODUtXHRcdFx0ICAgdTggKm1lbWJlciwgdTggKnZhbGlkKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTc5OC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjc5OTpzdGF0aWMgdm9pZCBrc3o4X3RvX3ZsYW4oc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTggZmlkLCB1OCBtZW1iZXIsIHU4IHZhbGlkLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtODAwLVx0XHRcdCB1MTYgKnZsYW4pXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtODEzLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6ODE0OnN0YXRpYyB2b2lkIGtzejhfcl92bGFuX2VudHJpZXMoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTE2IGFkZHIpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy04MTUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTgyOS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjgzMDpzdGF0aWMgdm9pZCBrc3o4X3Jfdmxhbl90YWJsZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MTYgdmlkLCB1MTYgKnZsYW4pXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy04MzEte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTg0My1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjg0NDpzdGF0aWMgdm9pZCBrc3o4X3dfdmxhbl90YWJsZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MTYgdmlkLCB1MTYgdmxhbilcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTg0NS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtODcxLSAqL1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6ODcyOnN0YXRpYyBpbnQga3N6ODc5eF9nZXRfbG9vcGJhY2soc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTE2IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy04NzMtXHRcdFx0XHR1MTYgKnZhbClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy04NzctXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo4Nzg6XHRyZXQgPSBrc3pfcHJlYWQ4KGRldiwgcG9ydCwgUkVHX1BPUlRfU1RBVFVTXzMsIFx1MDAyNnN0YXQzKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTg3OS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtODk5LSAqL1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6OTAwOnN0YXRpYyBpbnQga3N6ODc5eF9zZXRfbG9vcGJhY2soc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTE2IHBvcnQsIHUxNiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05MDEte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTkwNi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjkwNzpcdHJldHVybiBrc3pfcHJtdzgoZGV2LCBwb3J0LCBSRUdfUE9SVF9TVEFUVVNfMywgUE9SVF9QSFlfTE9PUEJBQ0ssXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05MDgtXHRcdFx0IHN0YXQzKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05MTAtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo5MTE6c3RhdGljIGludCBrc3o4N3h4X2FwcGx5X2xvd19sb3NzX3ByZXNldChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBib29sIGVuYWJsZSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTkxMi17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTIxLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6OTIyOlx0aWYgKCFrc3pfaXNfa3N6ODd4eChkZXYpKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTIzLVx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTU3LSAqL1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6OTU4OnN0YXRpYyBpbnQga3N6OF9yX3BoeV9jdHJsKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0LCB1MTYgKnZhbClcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTk1OS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTY1LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6OTY2Olx0cmV0ID0ga3N6X3ByZWFkOChkZXYsIHBvcnQsIHJlZ3NbUF9MSU5LX1NUQVRVU10sIFx1MDAyNnJlZ192YWwpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTY3LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05NzItXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo5NzM6XHRyZXQgPSBrc3pfcHJlYWQ4KGRldiwgcG9ydCwgUkVHX1BPUlRfTElOS19NRF9DVFJMLCBcdTAwMjZyZWdfdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTk3NC1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTAyMy0gKi9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEwMjQ6c3RhdGljIGludCBrc3o4X3JfcGh5X2JtY3Ioc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTE2IHBvcnQsIHUxNiAqdmFsKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTAyNS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTAzMS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEwMzI6XHRyZXQgPSBrc3pfcHJlYWQ4KGRldiwgcG9ydCwgcmVnc1tQX05FR19SRVNUQVJUX0NUUkxdLCBcdTAwMjZyZXN0YXJ0KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEwMzMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEwMzUtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMDM2Olx0cmV0ID0ga3N6X3ByZWFkOChkZXYsIHBvcnQsIHJlZ3NbUF9TUEVFRF9TVEFUVVNdLCBcdTAwMjZzcGVlZCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDM3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDM5LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTA0MDpcdHJldCA9IGtzel9wcmVhZDgoZGV2LCBwb3J0LCByZWdzW1BfRk9SQ0VfQ1RSTF0sIFx1MDAyNmN0cmwpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTA0MS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTA0Ni1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEwNDc6XHRpZiAoa3N6X2lzX2tzejg4eDMoZGV2KSkge1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTA0OC1cdFx0aWYgKHJlc3RhcnQgXHUwMDI2IEtTWjg4NzNfUE9SVF9QSFlfTE9PUEJBQ0spXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTA4OC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEwODk6c3RhdGljIGludCBrc3o4X3JfcGh5KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUxNiBwaHksIHUxNiByZWcsIHUxNiAqdmFsKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTA5MC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTEwNi1cdGNhc2UgTUlJX0JNU1I6XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMTA3Olx0XHRyZXQgPSBrc3pfcHJlYWQ4KGRldiwgcCwgcmVnc1tQX0xJTktfU1RBVFVTXSwgXHUwMDI2bGluayk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTA4LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExMjQtXHRjYXNlIE1JSV9QSFlTSUQyOlxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTEyNTpcdFx0aWYgKGtzel9pc19rc3o4OHgzKGRldikpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTI2LVx0XHRcdGRhdGEgPSBLU1o4ODYzX0lEX0xPO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExMzAtXHRjYXNlIE1JSV9BRFZFUlRJU0U6XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMTMxOlx0XHRyZXQgPSBrc3pfcHJlYWQ4KGRldiwgcCwgcmVnc1tQX0xPQ0FMX0NUUkxdLCBcdTAwMjZjdHJsKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExMzItXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTE0Ny1cdGNhc2UgTUlJX0xQQTpcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjExNDg6XHRcdHJldCA9IGtzel9wcmVhZDgoZGV2LCBwLCByZWdzW1BfUkVNT1RFX1NUQVRVU10sIFx1MDAyNmxpbmspO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTE0OS1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTY2LVx0Y2FzZSBQSFlfUkVHX0xJTktfTUQ6XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMTY3Olx0XHRyZXQgPSBrc3pfcHJlYWQ4KGRldiwgcCwgUkVHX1BPUlRfTElOS19NRF9DVFJMLCBcdTAwMjZ2YWwxKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExNjgtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTE3MC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjExNzE6XHRcdHJldCA9IGtzel9wcmVhZDgoZGV2LCBwLCBSRUdfUE9SVF9MSU5LX01EX1JFU1VMVCwgXHUwMDI2dmFsMik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTcyLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExOTQtXHRjYXNlIFBIWV9SRUdfS1NaODdYWF9TSE9SVF9DQUJMRTpcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjExOTU6XHRcdGlmICgha3N6X2lzX2tzejg3eHgoZGV2KSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExOTYtXHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEyMDAtXHRjYXNlIFBIWV9SRUdfS1NaODdYWF9MUEZfQlc6XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMjAxOlx0XHRpZiAoIWtzel9pc19rc3o4N3h4KGRldikpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMjAyLVx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMjA1LVx0Y2FzZSBQSFlfUkVHX0tTWjg3WFhfRVFfSU5JVDpcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEyMDY6XHRcdGlmICgha3N6X2lzX2tzejg3eHgoZGV2KSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEyMDctXHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jPTEyMjA9c3RhdGljIGludCBrc3o4X3BoeV9yZWFkMTYoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgYWRkciwgaW50IHJlZylcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEyMjEte1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTIyMjpcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTIyMy1cdHUxNiB2YWwgPSAweGZmZmY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTI0NS0gKi9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEyNDY6c3RhdGljIGludCBrc3o4X3dfcGh5X2N0cmwoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIHUxNiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMjQ3LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMjU5LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTI2MDpcdHJldCA9IGtzel9wcm13OChkZXYsIHBvcnQsIFJFR19QT1JUX0xJTktfTURfQ1RSTCwgUE9SVF9GT1JDRV9MSU5LIHxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEyNjEtXHRcdFx0UE9SVF9QT1dFUl9TQVZJTkcgfCBQT1JUX1BIWV9SRU1PVEVfTE9PUEJBQ0ssIHJlZ192YWwpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEyOTktICovXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMzAwOnN0YXRpYyBpbnQga3N6OF93X3BoeV9ibWNyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUxNiBwb3J0LCB1MTYgdmFsKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTMwMS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTMxMy1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEzMTQ6XHRyZXQgPSBrc3pfcHJtdzgoZGV2LCBwb3J0LCByZWdzW1BfU1BFRURfU1RBVFVTXSwgUE9SVF9IUF9NRElYLCBzcGVlZCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzE1LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzE4LVx0Y3RybCA9IDA7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMzE5Olx0aWYgKGtzel9pc19rc3o4OHgzKGRldikpIHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzMjAtXHRcdGlmICgodmFsIFx1MDAyNiBCTUNSX0FORU5BQkxFKSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzM2LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTMzNzpcdHJldCA9IGtzel9wcm13OChkZXYsIHBvcnQsIHJlZ3NbUF9GT1JDRV9DVFJMXSwgUE9SVF9GT1JDRV8xMDBfTUJJVCB8XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzM4LVx0XHQgLyogUE9SVF9BVVRPX05FR19FTkFCTEUgYW5kIFBPUlRfQVVUT19ORUdfRElTQUJMRSBhcmUgdGhlIHNhbWVcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzY2LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTM2NzpcdGlmIChrc3pfaXNfa3N6ODh4MyhkZXYpKSB7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzY4LVx0XHRyZXN0YXJ0X21hc2sgfD0gS1NaODg3M19QT1JUX1BIWV9MT09QQkFDSztcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzc3LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTM3ODpcdHJldHVybiBrc3pfcHJtdzgoZGV2LCBwb3J0LCByZWdzW1BfTkVHX1JFU1RBUlRfQ1RSTF0sIHJlc3RhcnRfbWFzayxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzNzktXHRcdFx0IHJlc3RhcnQpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzODEtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMzgyOnN0YXRpYyBpbnQga3N6OF93X3BoeShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MTYgcGh5LCB1MTYgcmVnLCB1MTYgdmFsKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTM4My17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTM5Ny1cdGNhc2UgTUlJX0FEVkVSVElTRTpcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEzOTg6XHRcdHJldCA9IGtzel9wcmVhZDgoZGV2LCBwLCByZWdzW1BfTE9DQUxfQ1RSTF0sIFx1MDAyNmN0cmwpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTM5OS1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNDE5LVx0XHRpZiAoZGF0YSAhPSBjdHJsKSB7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNDIwOlx0XHRcdHJldCA9IGtzel9wd3JpdGU4KGRldiwgcCwgcmVnc1tQX0xPQ0FMX0NUUkxdLCBkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE0MjEtXHRcdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNDI2LVx0XHRpZiAodmFsIFx1MDAyNiBQSFlfU1RBUlRfQ0FCTEVfRElBRylcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjE0Mjc6XHRcdFx0a3N6X3BvcnRfY2ZnKGRldiwgcCwgUkVHX1BPUlRfTElOS19NRF9DVFJMLCBQT1JUX1NUQVJUX0NBQkxFX0RJQUcsIHRydWUpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQyOC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQzNS1cdGNhc2UgUEhZX1JFR19LU1o4N1hYX1NIT1JUX0NBQkxFOlxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTQzNjpcdFx0aWYgKCFrc3pfaXNfa3N6ODd4eChkZXYpKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQzNy1cdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQ0NC1cdGNhc2UgUEhZX1JFR19LU1o4N1hYX0xQRl9CVzpcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjE0NDU6XHRcdGlmICgha3N6X2lzX2tzejg3eHgoZGV2KSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE0NDYtXHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE0NTctXHRjYXNlIFBIWV9SRUdfS1NaODdYWF9FUV9JTklUOlxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTQ1ODpcdFx0aWYgKCFrc3pfaXNfa3N6ODd4eChkZXYpKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQ1OS1cdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MTQ3Nz1zdGF0aWMgaW50IGtzejhfcGh5X3dyaXRlMTYoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgYWRkciwgaW50IHJlZywgdTE2IHZhbClcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE0OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MjExCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdyBhcm91bmQgYGtzel9zd2l0Y2hfcmVnaXN0ZXJgLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gaG93IGl0JiMzOTtzIGludm9rZWQgYW5kLCBjcml0aWNhbGx5LCB3aGF0IGJ1c2VzIGl0JiMzOTtzIHByb2Jpbmcgb3Zlci4gVGhpcyBpcyBsaWtlbHkgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBkZXZpY2UgZGlzY292ZXJ5IG1lY2hhbmlzbS4KClJpZ2h0LCB0aW1lIHRvIGV4ZWN1dGUgYSBjb2RlIHNlYXJjaCBmb3IgYGtzel9zd2l0Y2hfcmVnaXN0ZXJgIHdpdGhpbiB0aGUgY29kZWJhc2UuIEhvcGVmdWxseSwgSSYjMzk7bGwgZmluZCBhbGwgdGhlIGNhbGwgc2l0ZXMgYW5kIHVuZGVyc3RhbmQgdGhlIGVudHJ5IHBvaW50cyBmb3IgdGhpcyBmdW5jdGlvbi4gS25vd2luZyB3aGljaCBidXMgZHJpdmVycyBtaWdodCBiZSBjYWxsaW5nIGludG8gdGhpcyBpcyB3aGVyZSB0byBmb2N1cyB0aGUgaW52ZXN0aWdhdGlvbi4gVGhpcyB3aWxsIGdpdmUgYSBnb29kIG92ZXJ2aWV3IG9mIHRoZSBkZXNpZ24hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTQ6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3N6X3N3aXRjaF9yZWdpc3RlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmM9MTMzPXN0YXRpYyBpbnQga3N6ODg2M19zbWlfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYy0xNjgtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmM6MTY5Olx0cmV0ID0ga3N6X3N3aXRjaF9yZWdpc3RlcihkZXYpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jLTE3MC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmM9MTc9c3RhdGljIGludCBrc3o5NDc3X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy01MC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzo1MTpcdHJldCA9IGtzel9zd2l0Y2hfcmVnaXN0ZXIoZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy01Mi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0zOTI0PXN0YXRpYyBpbnQga3N6ODQ2M19yZWxlYXNlX3N0cmFwc19zcGkoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zOTI4LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MzkyOTppbnQga3N6X3N3aXRjaF9yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzkzMC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtNDA5OC19XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzo0MDk5OkVYUE9SVF9TWU1CT0woa3N6X3N3aXRjaF9yZWdpc3Rlcik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy00MTAwLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oPTQyOD1zdHJ1Y3Qga3N6X2RldmljZSAqa3N6X3N3aXRjaF9hbGxvYyhzdHJ1Y3QgZGV2aWNlICpiYXNlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTQzMC1cdFx0XHRcdCAgICB2b2lkICpwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oOjQzMTppbnQga3N6X3N3aXRjaF9yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTQzMi12b2lkIGtzel9zd2l0Y2hfcmVtb3ZlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jPTEzNz1zdGF0aWMgaW50IGtzel9zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYy0xOTQtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoxOTU6XHRyZXQgPSBrc3pfc3dpdGNoX3JlZ2lzdGVyKGRldik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYy0xOTYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTQ6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkxNjIKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiA0MDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBSZWFjaGFiaWxpdHkgaW4gUUVNVS9TeXprYWxsZXIgZm9yIE1pY3JvY2hpcCBTd2l0Y2ggRHJpdmVycyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJIHNlZSB3ZSYjMzk7cmUgbG9va2luZyBhdCBga3N6OTQ3N19pMmMuY2AsIGBrc3pfc3BpLmNgLCBhbmQgcG90ZW50aWFsbHkgYGtzejg4NjNfc21pLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIHRoZXNlIGJlIGluc3RhbnRpYXRlZCwgcHJvYmVkLCBhbmQgdWx0aW1hdGVseSBmdXp6ZWQgZWZmZWN0aXZlbHkgd2l0aGluIFFFTVUgb3IgU3l6a2FsbGVyPyBPciBhcmUgd2UgZGVhbGluZyB3aXRoIGEgc2l0dWF0aW9uIHJlcXVpcmluZyBhY3R1YWwgaGFyZHdhcmUsIHNwZWNpZmljYWxseSBEU0Egc3dpdGNoIGhhcmR3YXJlPwoKVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGhlcmUgaXMgd2hldGhlciBJMkMvU1BJIERTQSBzd2l0Y2hlcyBjYW4gYmUgaW5zdGFudGlhdGVkIG9yIGV2ZW4gZW11bGF0ZWQgc29tZWhvdywgcGVyaGFwcyBmcm9tIHVzZXJzcGFjZSwgd2hpY2ggd291bGQgYmUgaWRlYWwuIEkgbmVlZCB0byByZWNhbGwgaG93IHN5emthbGxlciBoYW5kbGVzIEkyQyBkZXZpY2VzLiBEb2VzIGl0IHVzZSBgc3l6X21vdW50X2ltYWdlYCwgdGhlIGBuZXdfZGV2aWNlYCBzeXNmcyBpbnRlcmZhY2UsIG9yIHBlcmhhcHMgbGV2ZXJhZ2UgZGV2aWNlIHRyZWVzIG9yIEFDUEk/IEkgbmVlZCB0byBjbGFyaWZ5IHdoYXQgc3l6a2FsbGVyICphY3R1YWxseSogZnV6emVzLgoKUmlnaHQsIHRpbWUgdG8gY29uc3VsdCBvdXIgZ3VpZGVsaW5lcy4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgY29yZSB0cmlhZ2UgcGhpbG9zb3BoeSBzdGF0ZXMgZnV6emluZyBpcyBvbmx5IHZhbGlkIGZvciBjb2RlIHRoYXQgKmV4ZWN1dGVzKiBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIE5vIHN0cnVjdHVyYWwgdW5yZWFjaGFibGUgY29kZSBzaG91bGQgYmUgZnV6emVkLCByZWdhcmRsZXNzIG9mIGhvdyBjb21wbGV4IHRoZSBjb2RlLiBJIHJlbWVtYmVyIHRoZSBzZWN0aW9uIG9uIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSB3ZWxsLiBUaGlzIHBvaW50cyBkaXJlY3RseSB0byB0aGUgcHJvYmxlbTogdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgR1BVIGRyaXZlcnMg4oCTIHRoZXNlIGFsbCByZXF1aXJlIHBoeXNpY2FsIEFTSUNzIG9yIFBDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCgpOb3csIHdoYXQgYWJvdXQgRFNBIHN3aXRjaGVzPyBBcmUgdGhlc2UgZ2VuZXJhbGx5IGltcGxlbWVudGVkIGFzIGhhcmR3YXJlIEFTSUMgc3dpdGNoZXMgdGhhdCBhcmUgY29ubmVjdGVkIHZpYSBTUEkvSTJDL01ESU8gb3IgbWVtb3J5LW1hcHBlZCBidXNlcz8gVGhpcyBpcyBhIGtleSBwb2ludC4gQ2FuIERTQSBtaWNyb2NoaXAgc3dpdGNoIGRyaXZlcnMsIGxpa2UgdGhlIG9uZXMgaW4gdGhlc2UgZmlsZXMsIGFjdHVhbGx5IGJlIGluc3RhbnRpYXRlZCBvciByZWFjaGVkIHdpdGhpbiBzdGFuZGFyZCBRRU1VL3N5emthbGxlciBzZXR1cHM/CgpNeSBuZXh0IHN0ZXAgaXMgY2xlYXIuIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIGNvZGUgaXRzZWxmLiBJJiMzOTtsbCByZWFkIGBrc3o5NDc3X2kyYy5jYCBhbmQgYGtzel9zcGkuY2AgY2xvc2VseSB0byB1bmRlcnN0YW5kIGhvdyBga3N6OTQ3N2AgYW5kIGBrc3pfY29tbW9uYCBhcmUgZGVzaWduZWQgYW5kIGhvdyB0aGV5IGludGVyYWN0IHdpdGggdGhlIGhhcmR3YXJlLiBUaGlzIHdpbGwgZGV0ZXJtaW5lIGlmIHRoZXJlJiMzOTtzIGFueSBwYXRod2F5IGZvciB0aGVtIHRvIGJlIGZ1enplZCwgb3IgaWYgdGhleSBhcmUgZG9vbWVkIHRvIGJlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0LypcbiAgIDM6XHQgKiBNaWNyb2NoaXAgS1NaOTQ3NyBzZXJpZXMgcmVnaXN0ZXIgYWNjZXNzIHRocm91Z2ggSTJDXG4gICA0Olx0ICpcbiAgIDU6XHQgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyNCBNaWNyb2NoaXAgVGVjaG5vbG9neSBJbmMuXG4gICA2Olx0ICovXG4gICA3Olx0XG4gICA4Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvaTJjLmhcdTAwM2VcbiAgIDk6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9rZXJuZWwuaFx1MDAzZVxuICAxMDpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4gIDExOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvcmVnbWFwLmhcdTAwM2VcbiAgMTI6XHRcbiAgMTM6XHQjaW5jbHVkZSBcJiMzNDtrc3pfY29tbW9uLmhcJiMzNDtcbiAgMTQ6XHRcbiAgMTU6XHRLU1pfUkVHTUFQX1RBQkxFKGtzejk0NzcsIG5vdF91c2VkLCAxNiwgMCwgMCk7XG4gIDE2Olx0XG4gIDE3Olx0c3RhdGljIGludCBrc3o5NDc3X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKVxuICAxODpcdHtcbiAgMTk6XHRcdGNvbnN0IHN0cnVjdCBrc3pfY2hpcF9kYXRhICpjaGlwO1xuICAyMDpcdFx0c3RydWN0IGRldmljZSAqZGRldiA9IFx1MDAyNmkyYy1cdTAwM2VkZXY7XG4gIDIxOlx0XHRzdHJ1Y3QgcmVnbWFwX2NvbmZpZyByYztcbiAgMjI6XHRcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXY7XG4gIDIzOlx0XHRpbnQgaSwgcmV0O1xuICAyNDpcdFxuICAyNTpcdFx0Y2hpcCA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZGV2KTtcbiAgMjY6XHRcdGlmICghY2hpcClcbiAgMjc6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gIDI4Olx0XG4gIDI5Olx0XHRkZXYgPSBrc3pfc3dpdGNoX2FsbG9jKFx1MDAyNmkyYy1cdTAwM2VkZXYsIGNoaXAsIGkyYyk7XG4gIDMwOlx0XHRpZiAoIWRldilcbiAgMzE6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gIDMyOlx0XG4gIDMzOlx0XHQvKiBTYXZlIGNoaXAgaWQgdG8gZG8gc3BlY2lhbCBpbml0aWFsaXphdGlvbiB3aGVuIHByb2JpbmcuICovXG4gIDM0Olx0XHRkZXYtXHUwMDNlY2hpcF9pZCA9IGNoaXAtXHUwMDNlY2hpcF9pZDtcbiAgMzU6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIF9fS1NaX05VTV9SRUdNQVBTOyBpJiM0MzsmIzQzOykge1xuICAzNjpcdFx0XHRyYyA9IGtzejk0NzdfcmVnbWFwX2NvbmZpZ1tpXTtcbiAgMzc6XHRcdFx0cmMubG9ja19hcmcgPSBcdTAwMjZkZXYtXHUwMDNlcmVnbWFwX211dGV4O1xuICAzODpcdFx0XHRkZXYtXHUwMDNlcmVnbWFwW2ldID0gZGV2bV9yZWdtYXBfaW5pdF9pMmMoaTJjLCBcdTAwMjZyYyk7XG4gIDM5Olx0XHRcdGlmIChJU19FUlIoZGV2LVx1MDAzZXJlZ21hcFtpXSkpIHtcbiAgNDA6XHRcdFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShcdTAwMjZpMmMtXHUwMDNlZGV2LCBQVFJfRVJSKGRldi1cdTAwM2VyZWdtYXBbaV0pLFxuICA0MTpcdFx0XHRcdFx0XHQgICAgIFwmIzM0O0ZhaWxlZCB0byBpbml0aWFsaXplIHJlZ21hcCVpXFxuXCYjMzQ7LFxuICA0MjpcdFx0XHRcdFx0XHQgICAgIGtzejk0NzdfcmVnbWFwX2NvbmZpZ1tpXS52YWxfYml0cyk7XG4gIDQzOlx0XHRcdH1cbiAgNDQ6XHRcdH1cbiAgNDU6XHRcbiAgNDY6XHRcdGlmIChpMmMtXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGEpXG4gIDQ3Olx0XHRcdGRldi1cdTAwM2VwZGF0YSA9IGkyYy1cdTAwM2VkZXYucGxhdGZvcm1fZGF0YTtcbiAgNDg6XHRcbiAgNDk6XHRcdGRldi1cdTAwM2VpcnEgPSBpMmMtXHUwMDNlaXJxO1xuICA1MDpcdFxuICA1MTpcdFx0cmV0ID0ga3N6X3N3aXRjaF9yZWdpc3RlcihkZXYpO1xuICA1MjpcdFxuICA1MzpcdFx0LyogTWFpbiBEU0EgZHJpdmVyIG1heSBub3QgYmUgc3RhcnRlZCB5ZXQuICovXG4gIDU0Olx0XHRpZiAocmV0KVxuICA1NTpcdFx0XHRyZXR1cm4gcmV0O1xuICA1NjpcdFxuICA1NzpcdFx0aTJjX3NldF9jbGllbnRkYXRhKGkyYywgZGV2KTtcbiAgNTg6XHRcbiAgNTk6XHRcdHJldHVybiAwO1xuICA2MDpcdH1cbiAgNjE6XHRcbiAgNjI6XHRzdGF0aWMgdm9pZCBrc3o5NDc3X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmkyYylcbiAgNjM6XHR7XG4gIDY0Olx0XHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2ID0gaTJjX2dldF9jbGllbnRkYXRhKGkyYyk7XG4gIDY1Olx0XG4gIDY2Olx0XHRpZiAoZGV2KVxuICA2NzpcdFx0XHRrc3pfc3dpdGNoX3JlbW92ZShkZXYpO1xuICA2ODpcdH1cbiAgNjk6XHRcbiAgNzA6XHRzdGF0aWMgdm9pZCBrc3o5NDc3X2kyY19zaHV0ZG93bihzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKVxuICA3MTpcdHtcbiAgNzI6XHRcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoaTJjKTtcbiAgNzM6XHRcbiAgNzQ6XHRcdGlmICghZGV2KVxuICA3NTpcdFx0XHRyZXR1cm47XG4gIDc2Olx0XG4gIDc3Olx0XHRrc3pfc3dpdGNoX3NodXRkb3duKGRldik7XG4gIDc4Olx0XG4gIDc5Olx0XHRpMmNfc2V0X2NsaWVudGRhdGEoaTJjLCBOVUxMKTtcbiAgODA6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTQ6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEyMjYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGFuIGV4cGVydCBpbiB0aGlzIGFyZWE6CgoqKkFuYWx5emluZyB0aGUgSTJDIFByb2JlIEZ1bmN0aW9uIGFuZCBSZWxldmFudCBLY29uZmlnIE9wdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBrc3o5NDc3X2kyY19wcm9iZWAuIFRoZSBuYW1lIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgZGVhbGluZyB3aXRoIGFuIEkyQyBjbGllbnQsIHdoaWNoIGlzIHdoYXQgSSBzdXNwZWN0ZWQuIE15IGZpcnN0IHRob3VnaHQgaXMgd2hldGhlciB0aGlzIGRyaXZlciBvciB0aGUgSTJDIGNsaWVudCBpdCYjMzk7cyBtZWFudCB0byBpbnRlcmZhY2Ugd2l0aCBpcyBzb21ldGhpbmcgdGhhdCBjYW4gYmUgdGFyZ2V0ZWQgZWZmZWN0aXZlbHkgaW4gZnV6emluZyBjYW1wYWlnbnMuIEkgaGF2ZSB0byB0aGluayBhYm91dCB3aGV0aGVyIGBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OYCBvciBgTkVUX0RTQWAgYXJlIGV2ZW4gcmVhY2hhYmxlIGluIGEgcHVyZSBzb2Z0d2FyZSBjb250ZXh0LCBvciBpZiB0aGV5JiMzOTtyZSB0aWVkIHRvIGEgaGFyZHdhcmUgc3dpdGNoIEFTSUMuIFRoZSBsYXR0ZXIgd291bGQgbWFrZSBmdXp6aW5nIGRpcmVjdGx5IGxlc3MgZWZmaWNpZW50LCBpZiBub3QgaW1wb3NzaWJsZS4KClRvIGZpZ3VyZSBvdXQgdGhlIHBvdGVudGlhbCBmdXp6aW5nIHN1cmZhY2UgYW5kIGhvdyB0byByZWFjaCB0aGUgZnVuY3Rpb25hbGl0eSB0aGF0IHRoZSBwcm9iZSBmdW5jdGlvbiBjb3ZlcnMsIEkmIzM5O20gZ29pbmcgdG8gZGlnIGludG8gdGhlIEtjb25maWcgZm9yIGBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OYCBhbmQgYW55IHJlbGF0ZWQgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGJ1aWxkIG9wdGlvbnMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgSSBjYW4gdHJpZ2dlciB0aGlzIGNvZGUgcGF0aCBmcm9tIGEgdGVzdCBlbnZpcm9ubWVudCBvciBpZiBpdCByZXF1aXJlcyBhIHNwZWNpZmljIGhhcmR3YXJlIHNldHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORVRfRFNBX01JQ1JPQ0hJUCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6MjptZW51Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT05cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TWljcm9jaGlwIEtTWjhYWFgvS1NaOVhYWC9MQU45MzdYIHNlcmllcyBzd2l0Y2ggc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0xNi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZzoxNzpjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaOTQ3N19JMkNcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O0tTWiBzZXJpZXMgSTJDIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6MTk6XHRkZXBlbmRzIG9uIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT04gXHUwMDI2XHUwMDI2IEkyQ1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTIwLVx0c2VsZWN0IFJFR01BUF9JMkNcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMjMtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6MjQ6Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9TUElcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0yNS1cdHRyaXN0YXRlIFwmIzM0O0tTWiBzZXJpZXMgU1BJIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6MjY6XHRkZXBlbmRzIG9uIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT04gXHUwMDI2XHUwMDI2IFNQSVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTI3LVx0c2VsZWN0IFJFR01BUF9TUElcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMzAtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6MzE6Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9QVFBcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0zMi1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgdGhlIFBUUCBjbG9jayBvbiB0aGUgS1NaOTU2My9MQU45Mzd4IEV0aGVybmV0IFN3aXRjaFwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnOjMzOlx0ZGVwZW5kcyBvbiBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OIFx1MDAyNlx1MDAyNiBQVFBfMTU4OF9DTE9DS1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnOjM0Olx0ZGVwZW5kcyBvbiBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OPW0gfHwgUFRQXzE1ODhfQ0xPQ0s9eVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTM1LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy00MC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZzo0MTpjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaODg2M19TTUlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy00Mi1cdHRyaXN0YXRlIFwmIzM0O0tTWiBzZXJpZXMgU01JIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6NDM6XHRkZXBlbmRzIG9uIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT05cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy00NC1cdHNlbGVjdCBNRElPX0JJVEJBTkdcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX05FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT04pXHQmIzQzOz0ga3N6X3N3aXRjaC5vXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlLTMta3N6X3N3aXRjaC1vYmpzIDo9IGtzel9jb21tb24ubyBrc3pfZGNiLm9cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlPTY9a3N6X3N3aXRjaC1vYmpzICYjNDM7PSBsYW45Mzd4X21haW4ub1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZS03LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZTo4OmlmZGVmIENPTkZJR19ORVRfRFNBX01JQ1JPQ0hJUF9LU1pfUFRQXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlLTkta3N6X3N3aXRjaC1vYmpzICYjNDM7PSBrc3pfcHRwLm9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGU9MTA9ZW5kaWZcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGUtMTEtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19ORVRfRFNBX01JQ1JPQ0hJUF9LU1o5NDc3X0kyQylcdCYjNDM7PSBrc3o5NDc3X2kyYy5vXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlOjEzOm9iai0kKENPTkZJR19ORVRfRFNBX01JQ1JPQ0hJUF9LU1pfU1BJKVx0XHQmIzQzOz0ga3N6X3NwaS5vXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlOjE0Om9iai0kKENPTkZJR19ORVRfRFNBX01JQ1JPQ0hJUF9LU1o4ODYzX1NNSSlcdCYjNDM7PSBrc3o4ODYzX3NtaS5vXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg9MTY5PXN0cnVjdCBrc3pfcG9ydCB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtMTkyLVx0c3RydWN0IHBoeWxpbmtfcGNzICpwY3M7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaDoxOTM6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9EU0FfTUlDUk9DSElQX0tTWl9QVFApXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC0xOTQtXHRzdHJ1Y3Qga2VybmVsX2h3dHN0YW1wX2NvbmZpZyB0c3RhbXBfY29uZmlnO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTEwLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmg6MTE6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9EU0FfTUlDUk9DSElQX0tTWl9QVFApXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaC0xMi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaD04Nz1zdGF0aWMgaW5saW5lIHZvaWQga3N6ODQ2M19wdHBfaXJxX2ZyZWUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKSB7fVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oLTEwMi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oOjEwMzojZW5kaWZcdC8qIEVuZCBvZiBDT05GSUdfTkVUX0RTQV9NSUNST0NISVBfS1NaX1BUUCAqL1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmgtMTA0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNDoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzA5MwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDIwOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBY2Nlc3NpbmcgRFNBIFN3aXRjaCBIYXJkd2FyZSAmYW1wOyBJMkMgRGV2aWNlIEluc3RhbnRpYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgYWNjZXNzIG1ldGhvZHMgZm9yIERTQSBzd2l0Y2ggaGFyZHdhcmUsIHNwZWNpZmljYWxseSBob3cgdG8gaW50ZXJhY3Qgd2l0aCBpdC4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBJMkMgZGV2aWNlcyBhcmUgYWNjZXNzZWQgd2l0aGluIHRoaXMgY29udGV4dC4gQ2FuIEkgcHJvYmUgdGhlc2UgZGV2aWNlcyB1c2luZyB0aGUgc3RhbmRhcmQgYC9zeXMvYnVzL2kyYy9kZXZpY2VzL2kyYy1YL25ld19kZXZpY2VgIG1ldGhvZD8gQWgsIHllcywgaW4gTGludXgsIHRoYXQmIzM5O3MgaXQhIFVzZXJzcGFjZSBjYW4gd3JpdGUgdG8gdGhhdCBwYXRoIHRvIGluc3RhbnRpYXRlIGFuIEkyQyBkZXZpY2UuIEZvciBleGFtcGxlLCB1c2luZyBgZWNobyAmIzM0O2tzejk0NzcgMHg1ZiYjMzQ7ICZndDsgL3N5cy9idXMvaTJjL2RldmljZXMvaTJjLTAvbmV3X2RldmljZWAuCgpCdXQgbm93IEkgbmVlZCB0byBjaGVjayBzb21ldGhpbmc6IGRvZXMgdGhlIGBrc3o5NDc3YCBkcml2ZXIsIG9yIHRoZSBga3N6X2NvbW1vbmAgbGlicmFyeSBpdCB1c2VzLCAqcmVxdWlyZSogYWN0dWFsIHBoeXNpY2FsIGhhcmR3YXJlIHRvIHN1Y2Nlc3NmdWxseSByZWFkIHJlZ2lzdGVycz8gSWYgSSBpbnN0YW50aWF0ZSBpdCBvbiwgc2F5LCBpMmMtMCwgZXZlbiBpZiB0aGVyZSYjMzk7cyBubyBwaHlzaWNhbCBjaGlwIHByZXNlbnQsIG9yIGV2ZW4gdXNpbmcgYSBkdW1teSBJMkMgYWRhcHRlciwgd2hhdCBleGFjdGx5ICpoYXBwZW5zKiB3aXRoaW4gYGtzel9zd2l0Y2hfcmVnaXN0ZXJgPyBUaGF0JiMzOTtzIHRoZSBrZXkuIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIGNvZGUuIExldCYjMzk7cyBleGFtaW5lIGBrc3pfc3dpdGNoX3JlZ2lzdGVyYCBmdW5jdGlvbiwgaXQmIzM5O3MgZGVmaW5lZCB3aXRoaW4gYGtzel9jb21tb24uY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE0OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzOTI1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzM5MjU6XHR7XG4zOTI2Olx0XHRyZXR1cm4gcGluY3RybF9zZWxlY3RfZGVmYXVsdF9zdGF0ZShkZXYtXHUwMDNlZGV2KTtcbjM5Mjc6XHR9XG4zOTI4Olx0XG4zOTI5Olx0aW50IGtzel9zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbjM5MzA6XHR7XG4zOTMxOlx0XHRjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSAqaW5mbztcbjM5MzI6XHRcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqcG9ydHM7XG4zOTMzOlx0XHRwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlO1xuMzkzNDpcdFx0dW5zaWduZWQgaW50IHBvcnRfbnVtO1xuMzkzNTpcdFx0dTMyIGxvb2t1cF9jaGlwX2lkO1xuMzkzNjpcdFx0aW50IHJldDtcbjM5Mzc6XHRcdGludCBpO1xuMzkzODpcdFxuMzkzOTpcdFx0ZGV2LVx1MDAzZXJlc2V0X2dwaW8gPSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbChkZXYtXHUwMDNlZGV2LCBcJiMzNDtyZXNldFwmIzM0OyxcbjM5NDA6XHRcdFx0XHRcdFx0XHQgIEdQSU9EX09VVF9MT1cpO1xuMzk0MTpcdFx0aWYgKElTX0VSUihkZXYtXHUwMDNlcmVzZXRfZ3BpbykpXG4zOTQyOlx0XHRcdHJldHVybiBQVFJfRVJSKGRldi1cdTAwM2VyZXNldF9ncGlvKTtcbjM5NDM6XHRcbjM5NDQ6XHRcdGlmIChkZXYtXHUwMDNlcmVzZXRfZ3Bpbykge1xuMzk0NTpcdFx0XHRpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUoZGV2LVx1MDAzZWRldi1cdTAwM2VvZl9ub2RlLCBcJiMzNDttaWNyb2NoaXAsa3N6ODQ2M1wmIzM0OykpIHtcbjM5NDY6XHRcdFx0XHRyZXQgPSBrc3o4NDYzX2NvbmZpZ3VyZV9zdHJhcHNfc3BpKGRldik7XG4zOTQ3Olx0XHRcdFx0aWYgKHJldClcbjM5NDg6XHRcdFx0XHRcdHJldHVybiByZXQ7XG4zOTQ5Olx0XHRcdH1cbjM5NTA6XHRcbjM5NTE6XHRcdFx0Z3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKGRldi1cdTAwM2VyZXNldF9ncGlvLCAxKTtcbjM5NTI6XHRcdFx0dXNsZWVwX3JhbmdlKDEwMDAwLCAxMjAwMCk7XG4zOTUzOlx0XHRcdGdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChkZXYtXHUwMDNlcmVzZXRfZ3BpbywgMCk7XG4zOTU0Olx0XHRcdG1zbGVlcCgxMDApO1xuMzk1NTpcdFxuMzk1NjpcdFx0XHRpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUoZGV2LVx1MDAzZWRldi1cdTAwM2VvZl9ub2RlLCBcJiMzNDttaWNyb2NoaXAsa3N6ODQ2M1wmIzM0OykpIHtcbjM5NTc6XHRcdFx0XHRyZXQgPSBrc3o4NDYzX3JlbGVhc2Vfc3RyYXBzX3NwaShkZXYpO1xuMzk1ODpcdFx0XHRcdGlmIChyZXQpXG4zOTU5Olx0XHRcdFx0XHRyZXR1cm4gcmV0O1xuMzk2MDpcdFx0XHR9XG4zOTYxOlx0XHR9XG4zOTYyOlx0XG4zOTYzOlx0XHRtdXRleF9pbml0KFx1MDAyNmRldi1cdTAwM2VkZXZfbXV0ZXgpO1xuMzk2NDpcdFx0bXV0ZXhfaW5pdChcdTAwMjZkZXYtXHUwMDNlcmVnbWFwX211dGV4KTtcbjM5NjU6XHRcdG11dGV4X2luaXQoXHUwMDI2ZGV2LVx1MDAzZWFsdV9tdXRleCk7XG4zOTY2Olx0XHRtdXRleF9pbml0KFx1MDAyNmRldi1cdTAwM2V2bGFuX211dGV4KTtcbjM5Njc6XHRcbjM5Njg6XHRcdHJldCA9IGtzel9zd2l0Y2hfZGV0ZWN0KGRldik7XG4zOTY5Olx0XHRpZiAocmV0KVxuMzk3MDpcdFx0XHRyZXR1cm4gcmV0O1xuMzk3MTpcdFxuMzk3MjpcdFx0bG9va3VwX2NoaXBfaWQgPSBkZXYtXHUwMDNlY2hpcF9pZDtcbjM5NzM6XHRcbjM5NzQ6XHRcdC8qIFRoZSBLU1o5ODk3UyBhbmQgdGhlIEtTWjk4OTdSIHJlcG9ydCB0aGUgc2FtZSBjaGlwIElEIGFuZCBkaWZmZXJcbjM5NzU6XHRcdCAqIG9ubHkgaW4gY2hpcF9kYXRhOiBvbmx5IHRoZSBTIGhhcyB0aGUgU0dNSUkgcG9ydCA3LCB0aGUgUiBoYXMgYVxuMzk3NjpcdFx0ICogc2Vjb25kIFJHTUlJIHBvcnQgaW5zdGVhZC4gQml0IDcgb2YgdGhlIHBvcnQgNyBYTUlJIGNvbnRyb2wgMFxuMzk3NzpcdFx0ICogcmVnaXN0ZXIgaXMgcmVhZC1vbmx5IGFuZCB0ZWxscyB0aGVtIGFwYXJ0OyBpdCByZWFkcyBvbmUgb24gdGhlIFMuXG4zOTc4Olx0XHQgKiBDb21wYXJlIHRoZSBLU1o5ODk3UyBkYXRhIHNoZWV0IERTMDAwMDIzOTRDIHNlY3Rpb24gNS4yLjQuMSB3aXRoXG4zOTc5Olx0XHQgKiB0aGUgS1NaOTg5N1IgZGF0YSBzaGVldCBEUzAwMDAyMzMwRCBzZWN0aW9uIDUuMi4zLjEuXG4zOTgwOlx0XHQgKlxuMzk4MTpcdFx0ICogT25seSB0aGUgY2hpcF9kYXRhIGVudHJ5IGRpZmZlcnMsIHNvIGRldi1cdTAwM2VjaGlwX2lkIGtlZXBzIHRoZSBzaGFyZWRcbjM5ODI6XHRcdCAqIGNoaXAgSUQgYW5kIG5vdGhpbmcgZWxzZSBoYXMgdG8ga25vdyBhYm91dCB0aGUgdmFyaWFudC5cbjM5ODM6XHRcdCAqL1xuMzk4NDpcdFx0aWYgKGRldi1cdTAwM2VjaGlwX2lkID09IEtTWjk4OTdfQ0hJUF9JRCkge1xuMzk4NTpcdFx0XHR1OCB2YWw7XG4zOTg2Olx0XG4zOTg3Olx0XHRcdHJldCA9IGtzel9yZWFkOChkZXYsIEtTWjk4OTdfUkVHX1BPUlQ3X1hNSUlfQ1RSTF8wLCBcdTAwMjZ2YWwpO1xuMzk4ODpcdFx0XHRpZiAocmV0KVxuMzk4OTpcdFx0XHRcdHJldHVybiByZXQ7XG4zOTkwOlx0XG4zOTkxOlx0XHRcdGlmICh2YWwgXHUwMDI2IEtTWjk4OTdfUE9SVDdfU0dNSUlfU0VMKVxuMzk5MjpcdFx0XHRcdGxvb2t1cF9jaGlwX2lkID0gS1NaOTg5N1NfQ0hJUF9JRDtcbjM5OTM6XHRcdH1cbjM5OTQ6XHRcbjM5OTU6XHRcdGluZm8gPSBrc3pfbG9va3VwX2luZm8obG9va3VwX2NoaXBfaWQpO1xuMzk5NjpcdFx0aWYgKCFpbmZvKVxuMzk5NzpcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbjM5OTg6XHRcbjM5OTk6XHRcdC8qIFVwZGF0ZSB0aGUgY29tcGF0aWJsZSBpbmZvIHdpdGggdGhlIHByb2JlZCBvbmUgKi9cbjQwMDA6XHRcdGRldi1cdTAwM2VpbmZvID0gaW5mbztcbjQwMDE6XHRcbjQwMDI6XHRcdGRldl9pbmZvKGRldi1cdTAwM2VkZXYsIFwmIzM0O2ZvdW5kIHN3aXRjaDogJXMsIHJldiAlaVxcblwmIzM0OyxcbjQwMDM6XHRcdFx0IGRldi1cdTAwM2VpbmZvLVx1MDAzZWRldl9uYW1lLCBkZXYtXHUwMDNlY2hpcF9yZXYpO1xuNDAwNDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNDoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDk1OQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipEaXZpbmcgaW50byB0aGUgYGtzel9zd2l0Y2hfZGV0ZWN0YCBGdW5jdGlvbioqCgpBbHJpZ2h0LCBzbyB0aGUgdGFzayBhdCBoYW5kIGlzIHRvIGFuYWx5emUgdGhlIGBrc3pfc3dpdGNoX2RldGVjdChkZXYpYCBmdW5jdGlvbi4gVGhlIGluaXRpYWwgY2x1ZSBpcyB0aGF0IGl0JiMzOTtzIGludGVyYWN0aW5nIGRpcmVjdGx5IHdpdGggdGhlIHBoeXNpY2FsIGNoaXAsIGxpa2VseSB0aHJvdWdoIHJlZ2lzdGVyIHJlYWRzLiBNeSBpbW1lZGlhdGUgbWVudGFsIHByb2Nlc3MgaXMgdG8gZHJpbGwgZG93biBpbnRvIHRoZSBkZXRhaWxzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQmIzM5O3MgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgaGFyZHdhcmUuIFdoYXQgcmVnaXN0ZXJzIGFyZSB3ZSB0YWxraW5nIGFib3V0PyBXaGF0IGFyZSB0aGUgZXhwZWN0ZWQgdmFsdWVzPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIHRob3NlIHZhbHVlcz8gVGhpcyBmdW5jdGlvbiBpcyBwcm9iYWJseSB0aGUgaGVhcnQgb2YgdGhlIHN3aXRjaCYjMzk7cyBpbml0aWFsIGlkZW50aWZpY2F0aW9uIG9yIGJyaW5nLXVwIHNlcXVlbmNlLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0sIGJ1dCBJJiMzOTttIGV4cGVjdGluZyB0aGlzIGlzIHdoZXJlIHdlIGNoZWNrIGZvciBjaGlwIHByZXNlbmNlLCB2ZXJzaW9uLCBhbmQgcG9zc2libHkgYmFzaWMgY29uZmlndXJhdGlvbi4gTGV0JiMzOTtzIGdldCB0byB0aGUgc291cmNlIGNvZGUgYW5kIGZpZ3VyZSBvdXQgdGhlIGV4YWN0IHJlZ2lzdGVyIGludGVyYWN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTQ6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3N6X3N3aXRjaF9kZXRlY3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTI5Mjk9dm9pZCBrc3pfcGh5bGlua19tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI5NDAtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyOTQxOnN0YXRpYyBpbnQga3N6X3N3aXRjaF9kZXRlY3Qoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI5NDIte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTM5Mjk9aW50IGtzel9zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zOTY3LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6Mzk2ODpcdHJldCA9IGtzel9zd2l0Y2hfZGV0ZWN0KGRldik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zOTY5LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTQ6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU0NzMKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhhdCBmdW5jdGlvbiwgYGtzel9zd2l0Y2hfZGV0ZWN0YCwgbmVzdGxlZCB3aXRoaW4gYGRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jYC4KCioqRGl2aW5nIERlZXAgaW50byBLU1ogU3dpdGNoIERldGVjdGlvbioqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpc3NlY3QgYGtzel9zd2l0Y2hfZGV0ZWN0YCBmcm9tIGBrc3pfY29tbW9uLmNgLiBJJiMzOTttIGdvaW5nIHRvIHdhbnQgdG8gdW5kZXJzdGFuZCB3aGF0IHRyaWdnZXJzIHRoaXMgcm91dGluZSwgdGhlIGtleSByZWdpc3RlcnMgaXQmIzM5O3MgcmVhZGluZyBhbmQgd3JpdGluZywgYW5kIHRoZSBsb2dpYyBiZWhpbmQgaG93IGl0IGRldGVybWluZXMgaWYgYSBNaWNyb2NoaXAgS1NaIHN3aXRjaCBpcyBwcmVzZW50IGFuZCBmdW5jdGlvbmluZyBjb3JyZWN0bHkuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBoYXJkd2FyZS1zcGVjaWZpYyBxdWlya3Mgb3Igd29ya2Fyb3VuZHMgaW4gdGhpcyBsb3ctbGV2ZWwgZHJpdmVyLiBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBwYXJ0IG9mIGEgbGFyZ2VyIERTQSAoRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSkgZnJhbWV3b3JrLCBzbyBJIHNob3VsZCBiZSBrZWVwaW5nIGFuIGV5ZSBvdXQgZm9yIGhvdyB0aGlzIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoIHRoZSBoaWdoZXItbGV2ZWwgRFNBIGNvbXBvbmVudHMuIEkmIzM5O2xsIGJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGFueSBlcnJvciBoYW5kbGluZyBhbmQgcmV0cnkgbWVjaGFuaXNtcy4gSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyBzb21lIHBvdGVudGlhbCBjaGFsbGVuZ2VzIOKAkyB0aGUgbmVlZCB0byBoYW5kbGUgZGlmZmVyZW50IEtTWiBzd2l0Y2ggcmV2aXNpb25zLCB2YXJpYXRpb25zIGluIFBIWSBjb25maWd1cmF0aW9ucywgYW5kIG1heWJlIGV2ZW4gc29tZSBjbGV2ZXIgcmVnaXN0ZXIgcHJvYmluZyB0ZWNobmlxdWVzLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBzbyBsZXQmIzM5O3Mgc2VlIHdoYXQgdGhleSYjMzk7dmUgY29tZSB1cCB3aXRoLiBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMgY29kZSBpcyB3ZWxsLXdyaXR0ZW4sIGVmZmljaWVudCwgYW5kIHJvYnVzdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTQ6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI5NDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7Mjk0MTpcdHN0YXRpYyBpbnQga3N6X3N3aXRjaF9kZXRlY3Qoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbjI5NDI6XHR7XG4yOTQzOlx0XHR1OCBpZDEsIGlkMiwgaWQ0O1xuMjk0NDpcdFx0dTE2IGlkMTY7XG4yOTQ1Olx0XHR1MzIgaWQzMjtcbjI5NDY6XHRcdGludCByZXQ7XG4yOTQ3Olx0XG4yOTQ4Olx0XHQvKiByZWFkIGNoaXAgaWQgKi9cbjI5NDk6XHRcdHJldCA9IGtzel9yZWFkMTYoZGV2LCBSRUdfQ0hJUF9JRDAsIFx1MDAyNmlkMTYpO1xuMjk1MDpcdFx0aWYgKHJldClcbjI5NTE6XHRcdFx0cmV0dXJuIHJldDtcbjI5NTI6XHRcbjI5NTM6XHRcdGlkMSA9IEZJRUxEX0dFVChTV19GQU1JTFlfSURfTSwgaWQxNik7XG4yOTU0Olx0XHRpZDIgPSBGSUVMRF9HRVQoU1dfQ0hJUF9JRF9NLCBpZDE2KTtcbjI5NTU6XHRcbjI5NTY6XHRcdHN3aXRjaCAoaWQxKSB7XG4yOTU3Olx0XHRjYXNlIEtTWjg0X0ZBTUlMWV9JRDpcbjI5NTg6XHRcdFx0ZGV2LVx1MDAzZWNoaXBfaWQgPSBLU1o4NDYzX0NISVBfSUQ7XG4yOTU5Olx0XHRcdGJyZWFrO1xuMjk2MDpcdFx0Y2FzZSBLU1o4N19GQU1JTFlfSUQ6XG4yOTYxOlx0XHRcdGlmIChpZDIgPT0gS1NaODdfQ0hJUF9JRF85NSkge1xuMjk2MjpcdFx0XHRcdHU4IHZhbDtcbjI5NjM6XHRcbjI5NjQ6XHRcdFx0XHRkZXYtXHUwMDNlY2hpcF9pZCA9IEtTWjg3OTVfQ0hJUF9JRDtcbjI5NjU6XHRcbjI5NjY6XHRcdFx0XHRrc3pfcmVhZDgoZGV2LCBLU1o4X1BPUlRfU1RBVFVTXzAsIFx1MDAyNnZhbCk7XG4yOTY3Olx0XHRcdFx0aWYgKHZhbCBcdTAwMjYgS1NaOF9QT1JUX0ZJQkVSX01PREUpXG4yOTY4Olx0XHRcdFx0XHRkZXYtXHUwMDNlY2hpcF9pZCA9IEtTWjg3NjVfQ0hJUF9JRDtcbjI5Njk6XHRcdFx0fSBlbHNlIGlmIChpZDIgPT0gS1NaODdfQ0hJUF9JRF85NCkge1xuMjk3MDpcdFx0XHRcdGRldi1cdTAwM2VjaGlwX2lkID0gS1NaODc5NF9DSElQX0lEO1xuMjk3MTpcdFx0XHR9IGVsc2Uge1xuMjk3MjpcdFx0XHRcdHJldHVybiAtRU5PREVWO1xuMjk3MzpcdFx0XHR9XG4yOTc0Olx0XHRcdGJyZWFrO1xuMjk3NTpcdFx0Y2FzZSBLU1o4OF9GQU1JTFlfSUQ6XG4yOTc2Olx0XHRcdGlmIChpZDIgPT0gS1NaODhfQ0hJUF9JRF82MylcbjI5Nzc6XHRcdFx0XHRkZXYtXHUwMDNlY2hpcF9pZCA9IEtTWjg4WDNfQ0hJUF9JRDtcbjI5Nzg6XHRcdFx0ZWxzZVxuMjk3OTpcdFx0XHRcdHJldHVybiAtRU5PREVWO1xuMjk4MDpcdFx0XHRicmVhaztcbjI5ODE6XHRcdGNhc2UgS1NaODg5NV9GQU1JTFlfSUQ6XG4yOTgyOlx0XHRcdGlmIChpZDIgPT0gS1NaODg5NV9DSElQX0lEXzk1IHx8XG4yOTgzOlx0XHRcdCAgICBpZDIgPT0gS1NaODg5NV9DSElQX0lEXzk1UilcbjI5ODQ6XHRcdFx0XHRkZXYtXHUwMDNlY2hpcF9pZCA9IEtTWjg4OTVfQ0hJUF9JRDtcbjI5ODU6XHRcdFx0ZWxzZVxuMjk4NjpcdFx0XHRcdHJldHVybiAtRU5PREVWO1xuMjk4NzpcdFx0XHRyZXQgPSBrc3pfcmVhZDgoZGV2LCBSRUdfS1NaODg2NF9DSElQX0lELCBcdTAwMjZpZDQpO1xuMjk4ODpcdFx0XHRpZiAocmV0KVxuMjk4OTpcdFx0XHRcdHJldHVybiByZXQ7XG4yOTkwOlx0XHRcdGlmIChpZDQgXHUwMDI2IFNXX0tTWjg4NjQpXG4yOTkxOlx0XHRcdFx0ZGV2LVx1MDAzZWNoaXBfaWQgPSBLU1o4ODY0X0NISVBfSUQ7XG4yOTkyOlx0XHRcdGJyZWFrO1xuMjk5MzpcdFx0ZGVmYXVsdDpcbjI5OTQ6XHRcdFx0cmV0ID0ga3N6X3JlYWQzMihkZXYsIFJFR19DSElQX0lEMCwgXHUwMDI2aWQzMik7XG4yOTk1Olx0XHRcdGlmIChyZXQpXG4yOTk2Olx0XHRcdFx0cmV0dXJuIHJldDtcbjI5OTc6XHRcbjI5OTg6XHRcdFx0ZGV2LVx1MDAzZWNoaXBfcmV2ID0gRklFTERfR0VUKFNXX1JFVl9JRF9NLCBpZDMyKTtcbjI5OTk6XHRcdFx0aWQzMiBcdTAwMjY9IH4weEZGO1xuMzAwMDpcdFxuMzAwMTpcdFx0XHRzd2l0Y2ggKGlkMzIpIHtcbjMwMDI6XHRcdFx0Y2FzZSBLU1o5NDc3X0NISVBfSUQ6XG4zMDAzOlx0XHRcdGNhc2UgS1NaOTg5Nl9DSElQX0lEOlxuMzAwNDpcdFx0XHRjYXNlIEtTWjk4OTdfQ0hJUF9JRDpcbjMwMDU6XHRcdFx0Y2FzZSBLU1o5NTY3X0NISVBfSUQ6XG4zMDA2Olx0XHRcdGNhc2UgS1NaODU2N19DSElQX0lEOlxuMzAwNzpcdFx0XHRjYXNlIExBTjkzNzBfQ0hJUF9JRDpcbjMwMDg6XHRcdFx0Y2FzZSBMQU45MzcxX0NISVBfSUQ6XG4zMDA5Olx0XHRcdGNhc2UgTEFOOTM3Ml9DSElQX0lEOlxuMzAxMDpcdFx0XHRjYXNlIExBTjkzNzNfQ0hJUF9JRDpcbjMwMTE6XHRcdFx0Y2FzZSBMQU45Mzc0X0NISVBfSUQ6XG4zMDEyOlx0XG4zMDEzOlx0XHRcdFx0LyogTEFOOTY0NiBkb2VzIG5vdCBoYXZlIGl0cyBvd24gY2hpcCBpZC4gKi9cbjMwMTQ6XHRcdFx0XHRpZiAoZGV2LVx1MDAzZWNoaXBfaWQgIT0gTEFOOTY0Nl9DSElQX0lEKVxuMzAxNTpcdFx0XHRcdFx0ZGV2LVx1MDAzZWNoaXBfaWQgPSBpZDMyO1xuMzAxNjpcdFx0XHRcdGJyZWFrO1xuMzAxNzpcdFx0XHRjYXNlIEtTWjk4OTNfQ0hJUF9JRDpcbjMwMTg6XHRcdFx0XHRyZXQgPSBrc3pfcmVhZDgoZGV2LCBSRUdfQ0hJUF9JRDQsXG4zMDE5Olx0XHRcdFx0XHRcdFx1MDAyNmlkNCk7XG4zMDIwOlx0XHRcdFx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTQ6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcxODEKCQkJCQkJCW91dHB1dDogMTI3CgkJCQkJCQl0aG91Z2h0czogMTE2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmc9ZmFsc2U6IE1pY3JvY2hpcCBLU1ogU3dpdGNoIERyaXZlciBVcGRhdGUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBjb21taXQgZGVhbHMgd2l0aCB0aGUgYGRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvYCBkaXJlY3RvcnksIHdoaWNoIGluZGljYXRlcyBhIGRyaXZlciBmb3IgTWljcm9jaGlwIEtTWiBzZXJpZXMgRXRoZXJuZXQgc3dpdGNoIEFTSUNzLiBUaGVzZSBhcmUgcGh5c2ljYWwgaGFyZHdhcmUgY29tcG9uZW50cyBhY2Nlc3NlZCB2aWEgU1BJLCBJMkMsIG9yIFNNSS9NRElPLgoKTXkgbmV4dCB0aG91Z2h0IGlzIHRvIGRldGVybWluZSBpZiB0aGlzIGNvZGUgaXMgc3BlY2lmaWMgdG8gaGFyZHdhcmUgdGhhdCYjMzk7cyBpbmFjY2Vzc2libGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgZ3VpZGVsaW5lcyBleHBsaWNpdGx5IHN0YXRlIHRoYXQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLCBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzIG9yLCBpbiB0aGlzIGNhc2UsIHBoeXNpY2FsIHN3aXRjaCBBU0lDcywgc2hvdWxkIHJlc3VsdCBpbiBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCkkmIzM5O3ZlIHZlcmlmaWVkIHRoYXQgdGhlIEtTWjk4OTcvUy9SLCBLU1o5NDc3LCBLU1o4Nzk1LCBhbmQgb3RoZXJzIGFyZSBpbmRlZWQgcGh5c2ljYWwgRXRoZXJuZXQgc3dpdGNoIElDcyBmcm9tIE1pY3JvY2hpcCAoZm9ybWVybHkgTWljcmVsKS4gVGhleSYjMzk7cmUgZGlzY3JldGUgY2hpcHMsIGFuZCB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZW0gb3ZlciBJMkMvU1BJL1NNSS4gSW4gYSBzdGFuZGFyZCBRRU1VIGFtZDY0IGVudmlyb25tZW50LCB3aXRob3V0IGN1c3RvbSBkZXZpY2UgdHJlZXMgb3IgYWN0dWFsIGhhcmR3YXJlLCB0aGVyZSYjMzk7cyBubyBlbXVsYXRlZCBLU1ogc3dpdGNoIGRldmljZS4gQW55IEkyQyBwcm9iaW5nIChga3N6X3N3aXRjaF9kZXRlY3RgKSB3b3VsZCBmYWlsIGJlY2F1c2Ugbm8gZGV2aWNlIHdvdWxkIHJlc3BvbmQgKEVOWElPL0VJTyksIG9yIGlmIGEgZHVtbXkgcmVnbWFwIHJldHVybnMgYWxsIHplcm9zIG9yIG9uZXMsIGBrc3pfc3dpdGNoX2RldGVjdGAgcmV0dXJucyBFTk9ERVYgYmVjYXVzZSB0aGUgY2hpcCBJRCByZWFkIGZyb20gdGhlIHJlZ2lzdGVycyB3b3VsZG4mIzM5O3QgbWF0Y2ggYW55IHZhbGlkIEtTWiBjaGlwIElELiBJJiMzOTttIHRoaW5raW5nIGhlcmUgb2YgcmVnaXN0ZXJzIGFuZCByZWFkaW5nIHRoZSBjaGlwIElEOiBLU1o4NF9GQU1JTFlfSUQgPSAweDg0LCBLU1o4NyA9IDB4ODcsIEtTWjg4ID0gMHg4OCwgS1NaOTQ3N19DSElQX0lEID0gMHgwMDk0NzcwMCwgYW5kIHNvIG9uLgoKVGhlIERTQSAoRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSkgc3dpdGNoIGRyaXZlcnMgYXJlIGZvciAqcGh5c2ljYWwqIGhhcmR3YXJlLCBsaWtlIE1pY3JvY2hpcCBLU1osIFJlYWx0ZWssIE1hcnZlbGwsIGFuZCBTSkExMTA1LiBTbywgdGhlIGJvdHRvbSBsaW5lIGlzIHRoYXQgdGhlc2UgZHJpdmVycyByZXF1aXJlIHRoZSBhY3R1YWwgc3dpdGNoIGhhcmR3YXJlIC8gQVNJQ3MuCgpJJiMzOTt2ZSB0YWtlbiBhIGxvb2sgYXQgdGhlIG1vZGlmaWVkIGZpbGVzOiBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNgLCBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmhgLCBhbmQgYGluY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9taWNyb2NoaXAta3N6LmhgLiBUaGlzIGNvbW1pdCYjMzk7cyBhZGRpbmcgc3VwcG9ydCBmb3IgdGhlIEtTWjk4OTdTIHZhcmlhbnQgYnkgY2hlY2tpbmcgYSBwYXJ0aWN1bGFyIGJpdCAoYml0IDcgb2YgdGhlIFhNSUkgY29udHJvbCAwIHJlZ2lzdGVyKSB0byBkaWZmZXJlbnRpYXRlIGl0IGZyb20gS1NaOTg5N1IuCgpBbmFseXppbmcgdGhlIGRpZmYsIGBrc3pfY29tbW9uLmNgIG5vdyBpbmNsdWRlcyBhIGBbS1NaOTg5N1NdYCBlbnRyeSBpbiBga3N6X3N3aXRjaF9jaGlwc1tdYCBhbmQgYSByZWdpc3RlciBjaGVjay4gYGtzel9jb21tb24uaGAgaW50cm9kdWNlcyBgS1NaOTg5N1NgIHRvIHRoZSBgZW51bSBrc3pfbW9kZWxgIGFuZCBkZWZpbmVzIG5ldyBjb25zdGFudHMuIGBtaWNyb2NoaXAta3N6LmhgIGFkZHMgYEtTWjk4OTdTX0NISVBfSURgLgoKQWxsIHRoZXNlIGNoYW5nZXMgYXJlICpleGNsdXNpdmVseSogd2l0aGluIHRoZSBNaWNyb2NoaXAgS1NaIEV0aGVybmV0IHN3aXRjaCBkcml2ZXIsIHdoaWNoIGlzIGEgZHJpdmVyIGZvciBkaXNjcmV0ZSBwaHlzaWNhbCBoYXJkd2FyZSBBU0lDcywgYW5kIGl0JiMzOTtzIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIFFFTVUvc3l6a2FsbGVyLgoKVGhlcmVmb3JlLCBiZWNhdXNlIHRoZSBjb2RlIGV4Y2x1c2l2ZWx5IHRvdWNoZXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLCBteSBjb25jbHVzaW9uIGlzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDoKMS4gIFRoZSBwYXRjaCBhZGRzIEtTWjk4OTdTIHN1cHBvcnQuCjIuICBUaGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHBoeXNpY2FsIE1pY3JvY2hpcCBzd2l0Y2ggQVNJQ3MuCjMuICBObyBlbXVsYXRpb24gaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLgo0LiAgSGVuY2UsIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKTm93LCB0aW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTQ6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGRpc3Rpbmd1aXNoaW5nIHRoZSBLU1o5ODk3UyBFdGhlcm5ldCBzd2l0Y2ggdmFyaWFudCB3aXRoaW4gdGhlIE1pY3JvY2hpcCBLU1ogc3dpdGNoIERTQSBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvKS4gVGhpcyBkcml2ZXIgaW50ZXJhY3RzIHdpdGggZGlzY3JldGUgcGh5c2ljYWwgTWljcm9jaGlwIHN3aXRjaCBBU0lDcyBvdmVyIEkyQy9TUEkvU01JIGJ1c2VzLiBCZWNhdXNlIHRoZSByZXF1aXJlZCBwaHlzaWNhbCBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoZS5nLiwgUUVNVSBhbWQ2NCksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgZGlzdGluZ3Vpc2hpbmcgdGhlIEtTWjk4OTdTIEV0aGVybmV0IHN3aXRjaCB2YXJpYW50IHdpdGhpbiB0aGUgTWljcm9jaGlwIEtTWiBzd2l0Y2ggRFNBIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC8pLiBUaGlzIGRyaXZlciBpbnRlcmFjdHMgd2l0aCBkaXNjcmV0ZSBwaHlzaWNhbCBNaWNyb2NoaXAgc3dpdGNoIEFTSUNzIG92ZXIgSTJDL1NQSS9TTUkgYnVzZXMuIEJlY2F1c2UgdGhlIHJlcXVpcmVkIHBoeXNpY2FsIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChlLmcuLCBRRU1VIGFtZDY0KSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTQ6Mjk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE0OjI4OjUzLjczMTIwNjc5MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzOTYyODU0ODYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBkaXN0aW5ndWlzaGluZyB0aGUgS1NaOTg5N1MgRXRoZXJuZXQgc3dpdGNoIHZhcmlhbnQgd2l0aGluIHRoZSBNaWNyb2NoaXAgS1NaIHN3aXRjaCBEU0EgZHJpdmVyIChkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwLykuIFRoaXMgZHJpdmVyIGludGVyYWN0cyB3aXRoIGRpc2NyZXRlIHBoeXNpY2FsIE1pY3JvY2hpcCBzd2l0Y2ggQVNJQ3Mgb3ZlciBJMkMvU1BJL1NNSSBidXNlcy4gQmVjYXVzZSB0aGUgcmVxdWlyZWQgcGh5c2ljYWwgaGFyZHdhcmUgaXMgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKGUuZy4sIFFFTVUgYW1kNjQpLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNDoyODo1My43MzEyMTA3MjFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NDA4NjQ2NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAwNmVmYzYwNjk1ZDI4MDM0OTczMmI4OWIyZGMzZDdjMjFjODNiNTgwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgU2VwIDUgMTQ6Mjg6NTIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uY1xcbmluZGV4IDFhOWQ2ZjgzYTAyMzIuLjgxNzk4YTlmYTY3MWQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uY1xcbkBAIC0xNDg2LDYgKzE0ODYsNDEgQEAgY29uc3Qgc3RydWN0IGtzel9jaGlwX2RhdGEga3N6X3N3aXRjaF9jaGlwc1tdID0ge1xcbiBcXHRcXHQuZ2JpdF9jYXBhYmxlXFx0PSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZX0sXFxuIFxcdH0sXFxuIFxcbitcXHRbS1NaOTg5N1NdID0ge1xcbitcXHRcXHQuY2hpcF9pZCA9IEtTWjk4OTdTX0NISVBfSUQsXFxuK1xcdFxcdC5kZXZfbmFtZSA9IFxcXCJLU1o5ODk3U1xcXCIsXFxuK1xcdFxcdC5udW1fdmxhbnMgPSA0MDk2LFxcbitcXHRcXHQubnVtX2FsdXMgPSA0MDk2LFxcbitcXHRcXHQubnVtX3N0YXRpY3MgPSAxNixcXG4rXFx0XFx0LmNwdV9wb3J0cyA9IDB4N0YsXFx0LyogY2FuIGJlIGNvbmZpZ3VyZWQgYXMgY3B1IHBvcnQgKi9cXG4rXFx0XFx0LnBvcnRfY250ID0gNyxcXHRcXHQvKiB0b3RhbCBwaHlzaWNhbCBwb3J0IGNvdW50ICovXFxuK1xcdFxcdC5wb3J0X25pcnFzID0gMixcXG4rXFx0XFx0Lm51bV90eF9xdWV1ZXMgPSA0LFxcbitcXHRcXHQubnVtX2lwbXMgPSA4LFxcbitcXHRcXHQub3BzID0gXFx1MDAyNmtzejk0NzdfZGV2X29wcyxcXG4rXFx0XFx0LnN3aXRjaF9vcHMgPSBcXHUwMDI2a3N6OTQ3N19zd2l0Y2hfb3BzLFxcbitcXHRcXHQucGh5bGlua19tYWNfb3BzID0gXFx1MDAyNmtzejk0NzdfcGh5bGlua19tYWNfb3BzLFxcbitcXHRcXHQucGh5X2VycmF0YV85NDc3ID0gdHJ1ZSxcXG4rXFx0XFx0Lm1pYl9uYW1lcyA9IGtzejk0NzdfbWliX25hbWVzLFxcbitcXHRcXHQubWliX2NudCA9IEFSUkFZX1NJWkUoa3N6OTQ3N19taWJfbmFtZXMpLFxcbitcXHRcXHQucmVnX21pYl9jbnQgPSBNSUJfQ09VTlRFUl9OVU0sXFxuK1xcdFxcdC5yZWdzID0ga3N6OTQ3N19yZWdzLFxcbitcXHRcXHQubWFza3MgPSBrc3o5NDc3X21hc2tzLFxcbitcXHRcXHQuc2hpZnRzID0ga3N6OTQ3N19zaGlmdHMsXFxuK1xcdFxcdC54bWlpX2N0cmwwID0ga3N6OTQ3N194bWlpX2N0cmwwLFxcbitcXHRcXHQueG1paV9jdHJsMSA9IGtzejk0NzdfeG1paV9jdHJsMSxcXG4rXFx0XFx0LnN1cHBvcnRzX21paVxcdD0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLFxcbitcXHRcXHRcXHRcXHQgICBmYWxzZSwgdHJ1ZSwgZmFsc2V9LFxcbitcXHRcXHQuc3VwcG9ydHNfcm1paVxcdD0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLFxcbitcXHRcXHRcXHRcXHQgICBmYWxzZSwgdHJ1ZSwgZmFsc2V9LFxcbitcXHRcXHQuc3VwcG9ydHNfcmdtaWkgPSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsXFxuK1xcdFxcdFxcdFxcdCAgIGZhbHNlLCB0cnVlLCBmYWxzZX0sXFxuK1xcdFxcdC5pbnRlcm5hbF9waHlcXHQ9IHt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLFxcbitcXHRcXHRcXHRcXHQgICB0cnVlLCBmYWxzZSwgZmFsc2V9LFxcbitcXHRcXHQuZ2JpdF9jYXBhYmxlXFx0PSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZX0sXFxuK1xcdFxcdC5zZ21paV9wb3J0ID0gNyxcXG4rXFx0fSxcXG4rXFxuIFxcdFtLU1o5ODkzXSA9IHtcXG4gXFx0XFx0LmNoaXBfaWQgPSBLU1o5ODkzX0NISVBfSUQsXFxuIFxcdFxcdC5kZXZfbmFtZSA9IFxcXCJLU1o5ODkzXFxcIixcXG5AQCAtMzg5Nyw2ICszOTMyLDcgQEAgaW50IGtzel9zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcXG4gXFx0c3RydWN0IGRldmljZV9ub2RlICpwb3J0cztcXG4gXFx0cGh5X2ludGVyZmFjZV90IGludGVyZmFjZTtcXG4gXFx0dW5zaWduZWQgaW50IHBvcnRfbnVtO1xcbitcXHR1MzIgbG9va3VwX2NoaXBfaWQ7XFxuIFxcdGludCByZXQ7XFxuIFxcdGludCBpO1xcbiBcXG5AQCAtMzkzMyw3ICszOTY5LDMwIEBAIGludCBrc3pfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbi1cXHRpbmZvID0ga3N6X2xvb2t1cF9pbmZvKGRldi1cXHUwMDNlY2hpcF9pZCk7XFxuK1xcdGxvb2t1cF9jaGlwX2lkID0gZGV2LVxcdTAwM2VjaGlwX2lkO1xcbitcXG4rXFx0LyogVGhlIEtTWjk4OTdTIGFuZCB0aGUgS1NaOTg5N1IgcmVwb3J0IHRoZSBzYW1lIGNoaXAgSUQgYW5kIGRpZmZlclxcbitcXHQgKiBvbmx5IGluIGNoaXBfZGF0YTogb25seSB0aGUgUyBoYXMgdGhlIFNHTUlJIHBvcnQgNywgdGhlIFIgaGFzIGFcXG4rXFx0ICogc2Vjb25kIFJHTUlJIHBvcnQgaW5zdGVhZC4gQml0IDcgb2YgdGhlIHBvcnQgNyBYTUlJIGNvbnRyb2wgMFxcbitcXHQgKiByZWdpc3RlciBpcyByZWFkLW9ubHkgYW5kIHRlbGxzIHRoZW0gYXBhcnQ7IGl0IHJlYWRzIG9uZSBvbiB0aGUgUy5cXG4rXFx0ICogQ29tcGFyZSB0aGUgS1NaOTg5N1MgZGF0YSBzaGVldCBEUzAwMDAyMzk0QyBzZWN0aW9uIDUuMi40LjEgd2l0aFxcbitcXHQgKiB0aGUgS1NaOTg5N1IgZGF0YSBzaGVldCBEUzAwMDAyMzMwRCBzZWN0aW9uIDUuMi4zLjEuXFxuK1xcdCAqXFxuK1xcdCAqIE9ubHkgdGhlIGNoaXBfZGF0YSBlbnRyeSBkaWZmZXJzLCBzbyBkZXYtXFx1MDAzZWNoaXBfaWQga2VlcHMgdGhlIHNoYXJlZFxcbitcXHQgKiBjaGlwIElEIGFuZCBub3RoaW5nIGVsc2UgaGFzIHRvIGtub3cgYWJvdXQgdGhlIHZhcmlhbnQuXFxuK1xcdCAqL1xcbitcXHRpZiAoZGV2LVxcdTAwM2VjaGlwX2lkID09IEtTWjk4OTdfQ0hJUF9JRCkge1xcbitcXHRcXHR1OCB2YWw7XFxuK1xcbitcXHRcXHRyZXQgPSBrc3pfcmVhZDgoZGV2LCBLU1o5ODk3X1JFR19QT1JUN19YTUlJX0NUUkxfMCwgXFx1MDAyNnZhbCk7XFxuK1xcdFxcdGlmIChyZXQpXFxuK1xcdFxcdFxcdHJldHVybiByZXQ7XFxuK1xcbitcXHRcXHRpZiAodmFsIFxcdTAwMjYgS1NaOTg5N19QT1JUN19TR01JSV9TRUwpXFxuK1xcdFxcdFxcdGxvb2t1cF9jaGlwX2lkID0gS1NaOTg5N1NfQ0hJUF9JRDtcXG4rXFx0fVxcbitcXG4rXFx0aW5mbyA9IGtzel9sb29rdXBfaW5mbyhsb29rdXBfY2hpcF9pZCk7XFxuIFxcdGlmICghaW5mbylcXG4gXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaCBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oXFxuaW5kZXggY2JlOTg0OTQ1NzhjMy4uMGNmZjMzZGYwNmE0YiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaFxcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oXFxuQEAgLTI4NCw2ICsyODQsNyBAQCBlbnVtIGtzel9tb2RlbCB7XFxuIFxcdEtTWjk0NzcsXFxuIFxcdEtTWjk4OTYsXFxuIFxcdEtTWjk4OTcsXFxuK1xcdEtTWjk4OTdTLFxcbiBcXHRLU1o5ODkzLFxcbiBcXHRLU1o5NTYzLFxcbiBcXHRLU1o5NTY3LFxcbkBAIC04NzQsNiArODc1LDEwIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBrc3pfaXNfc2dtaWlfcG9ydChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydClcXG4gI2RlZmluZSBTS1VfSURfS1NaODU2M1xcdFxcdFxcdDB4M2NcXG4gI2RlZmluZSBTS1VfSURfS1NaOTU2M1xcdFxcdFxcdDB4MWNcXG4gXFxuKy8qIEtTWjk4OTcgc3BlY2lmaWMgcmVnaXN0ZXI6IHBvcnQgNyBYTUlJIGNvbnRyb2wgMCAqL1xcbisjZGVmaW5lIEtTWjk4OTdfUkVHX1BPUlQ3X1hNSUlfQ1RSTF8wXFx0MHg3MzAwXFxuKyNkZWZpbmUgS1NaOTg5N19QT1JUN19TR01JSV9TRUxcXHRcXHRCSVQoNylcXG4rXFxuIC8qIERyaXZlciBzZXQgc3dpdGNoIGJyb2FkY2FzdCBzdG9ybSBwcm90ZWN0aW9uIGF0IDEwJSByYXRlLiAqL1xcbiAjZGVmaW5lIEJST0FEQ0FTVF9TVE9STV9QUk9UX1JBVEVcXHQxMFxcbiBcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaCBiL2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9taWNyb2NoaXAta3N6LmhcXG5pbmRleCAwMjg3ODFhZDQwNTkzLi5mZThkZjE3NzQyODljIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9taWNyb2NoaXAta3N6LmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbWljcm9jaGlwLWtzei5oXFxuQEAgLTM0LDYgKzM0LDcgQEAgZW51bSBrc3pfY2hpcF9pZCB7XFxuIFxcdEtTWjk0NzdfQ0hJUF9JRCA9IDB4MDA5NDc3MDAsXFxuIFxcdEtTWjk4OTZfQ0hJUF9JRCA9IDB4MDA5ODk2MDAsXFxuIFxcdEtTWjk4OTdfQ0hJUF9JRCA9IDB4MDA5ODk3MDAsXFxuK1xcdEtTWjk4OTdTX0NISVBfSUQgPSAweDAwOTg5NzAxLFxcbiBcXHRLU1o5ODkzX0NISVBfSUQgPSAweDAwOTg5MzAwLFxcbiBcXHRLU1o5NTYzX0NISVBfSUQgPSAweDAwOTU2MzAwLFxcbiBcXHRLU1o4NTY3X0NISVBfSUQgPSAweDAwODU2NzAwLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNDoyODo1NS4xNzI4OTEzODhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjQyNTIxMTU2MTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGRpc3Rpbmd1aXNoaW5nIHRoZSBLU1o5ODk3UyBFdGhlcm5ldCBzd2l0Y2ggdmFyaWFudCB3aXRoaW4gdGhlIE1pY3JvY2hpcCBLU1ogc3dpdGNoIERTQSBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvKS4gVGhpcyBkcml2ZXIgaW50ZXJhY3RzIHdpdGggZGlzY3JldGUgcGh5c2ljYWwgTWljcm9jaGlwIHN3aXRjaCBBU0lDcyBvdmVyIEkyQy9TUEkvU01JIGJ1c2VzLiBCZWNhdXNlIHRoZSByZXF1aXJlZCBwaHlzaWNhbCBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoZS5nLiwgUUVNVSBhbWQ2NCksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMDZlZmM2MDY5NWQyODAzNDk3MzJiODliMmRjM2Q3YzIxYzgzYjU4MFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgU2VwIDUgMTQ6Mjg6NTIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jXG5pbmRleCAxYTlkNmY4M2EwMjMyLi44MTc5OGE5ZmE2NzFkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jXG5AQCAtMTQ4Niw2ICsxNDg2LDQxIEBAIGNvbnN0IHN0cnVjdCBrc3pfY2hpcF9kYXRhIGtzel9zd2l0Y2hfY2hpcHNbXSA9IHtcbiBcdFx0LmdiaXRfY2FwYWJsZVx0PSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZX0sXG4gXHR9LFxuIFxuK1x0W0tTWjk4OTdTXSA9IHtcbitcdFx0LmNoaXBfaWQgPSBLU1o5ODk3U19DSElQX0lELFxuK1x0XHQuZGV2X25hbWUgPSBcIktTWjk4OTdTXCIsXG4rXHRcdC5udW1fdmxhbnMgPSA0MDk2LFxuK1x0XHQubnVtX2FsdXMgPSA0MDk2LFxuK1x0XHQubnVtX3N0YXRpY3MgPSAxNixcbitcdFx0LmNwdV9wb3J0cyA9IDB4N0YsXHQvKiBjYW4gYmUgY29uZmlndXJlZCBhcyBjcHUgcG9ydCAqL1xuK1x0XHQucG9ydF9jbnQgPSA3LFx0XHQvKiB0b3RhbCBwaHlzaWNhbCBwb3J0IGNvdW50ICovXG4rXHRcdC5wb3J0X25pcnFzID0gMixcbitcdFx0Lm51bV90eF9xdWV1ZXMgPSA0LFxuK1x0XHQubnVtX2lwbXMgPSA4LFxuK1x0XHQub3BzID0gXHUwMDI2a3N6OTQ3N19kZXZfb3BzLFxuK1x0XHQuc3dpdGNoX29wcyA9IFx1MDAyNmtzejk0Nzdfc3dpdGNoX29wcyxcbitcdFx0LnBoeWxpbmtfbWFjX29wcyA9IFx1MDAyNmtzejk0NzdfcGh5bGlua19tYWNfb3BzLFxuK1x0XHQucGh5X2VycmF0YV85NDc3ID0gdHJ1ZSxcbitcdFx0Lm1pYl9uYW1lcyA9IGtzejk0NzdfbWliX25hbWVzLFxuK1x0XHQubWliX2NudCA9IEFSUkFZX1NJWkUoa3N6OTQ3N19taWJfbmFtZXMpLFxuK1x0XHQucmVnX21pYl9jbnQgPSBNSUJfQ09VTlRFUl9OVU0sXG4rXHRcdC5yZWdzID0ga3N6OTQ3N19yZWdzLFxuK1x0XHQubWFza3MgPSBrc3o5NDc3X21hc2tzLFxuK1x0XHQuc2hpZnRzID0ga3N6OTQ3N19zaGlmdHMsXG4rXHRcdC54bWlpX2N0cmwwID0ga3N6OTQ3N194bWlpX2N0cmwwLFxuK1x0XHQueG1paV9jdHJsMSA9IGtzejk0NzdfeG1paV9jdHJsMSxcbitcdFx0LnN1cHBvcnRzX21paVx0PSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsXG4rXHRcdFx0XHQgICBmYWxzZSwgdHJ1ZSwgZmFsc2V9LFxuK1x0XHQuc3VwcG9ydHNfcm1paVx0PSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsXG4rXHRcdFx0XHQgICBmYWxzZSwgdHJ1ZSwgZmFsc2V9LFxuK1x0XHQuc3VwcG9ydHNfcmdtaWkgPSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsXG4rXHRcdFx0XHQgICBmYWxzZSwgdHJ1ZSwgZmFsc2V9LFxuK1x0XHQuaW50ZXJuYWxfcGh5XHQ9IHt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLFxuK1x0XHRcdFx0ICAgdHJ1ZSwgZmFsc2UsIGZhbHNlfSxcbitcdFx0LmdiaXRfY2FwYWJsZVx0PSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZX0sXG4rXHRcdC5zZ21paV9wb3J0ID0gNyxcbitcdH0sXG4rXG4gXHRbS1NaOTg5M10gPSB7XG4gXHRcdC5jaGlwX2lkID0gS1NaOTg5M19DSElQX0lELFxuIFx0XHQuZGV2X25hbWUgPSBcIktTWjk4OTNcIixcbkBAIC0zODk3LDYgKzM5MzIsNyBAQCBpbnQga3N6X3N3aXRjaF9yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuIFx0c3RydWN0IGRldmljZV9ub2RlICpwb3J0cztcbiBcdHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2U7XG4gXHR1bnNpZ25lZCBpbnQgcG9ydF9udW07XG4rXHR1MzIgbG9va3VwX2NoaXBfaWQ7XG4gXHRpbnQgcmV0O1xuIFx0aW50IGk7XG4gXG5AQCAtMzkzMyw3ICszOTY5LDMwIEBAIGludCBrc3pfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0aW5mbyA9IGtzel9sb29rdXBfaW5mbyhkZXYtXHUwMDNlY2hpcF9pZCk7XG4rXHRsb29rdXBfY2hpcF9pZCA9IGRldi1cdTAwM2VjaGlwX2lkO1xuK1xuK1x0LyogVGhlIEtTWjk4OTdTIGFuZCB0aGUgS1NaOTg5N1IgcmVwb3J0IHRoZSBzYW1lIGNoaXAgSUQgYW5kIGRpZmZlclxuK1x0ICogb25seSBpbiBjaGlwX2RhdGE6IG9ubHkgdGhlIFMgaGFzIHRoZSBTR01JSSBwb3J0IDcsIHRoZSBSIGhhcyBhXG4rXHQgKiBzZWNvbmQgUkdNSUkgcG9ydCBpbnN0ZWFkLiBCaXQgNyBvZiB0aGUgcG9ydCA3IFhNSUkgY29udHJvbCAwXG4rXHQgKiByZWdpc3RlciBpcyByZWFkLW9ubHkgYW5kIHRlbGxzIHRoZW0gYXBhcnQ7IGl0IHJlYWRzIG9uZSBvbiB0aGUgUy5cbitcdCAqIENvbXBhcmUgdGhlIEtTWjk4OTdTIGRhdGEgc2hlZXQgRFMwMDAwMjM5NEMgc2VjdGlvbiA1LjIuNC4xIHdpdGhcbitcdCAqIHRoZSBLU1o5ODk3UiBkYXRhIHNoZWV0IERTMDAwMDIzMzBEIHNlY3Rpb24gNS4yLjMuMS5cbitcdCAqXG4rXHQgKiBPbmx5IHRoZSBjaGlwX2RhdGEgZW50cnkgZGlmZmVycywgc28gZGV2LVx1MDAzZWNoaXBfaWQga2VlcHMgdGhlIHNoYXJlZFxuK1x0ICogY2hpcCBJRCBhbmQgbm90aGluZyBlbHNlIGhhcyB0byBrbm93IGFib3V0IHRoZSB2YXJpYW50LlxuK1x0ICovXG4rXHRpZiAoZGV2LVx1MDAzZWNoaXBfaWQgPT0gS1NaOTg5N19DSElQX0lEKSB7XG4rXHRcdHU4IHZhbDtcbitcbitcdFx0cmV0ID0ga3N6X3JlYWQ4KGRldiwgS1NaOTg5N19SRUdfUE9SVDdfWE1JSV9DVFJMXzAsIFx1MDAyNnZhbCk7XG4rXHRcdGlmIChyZXQpXG4rXHRcdFx0cmV0dXJuIHJldDtcbitcbitcdFx0aWYgKHZhbCBcdTAwMjYgS1NaOTg5N19QT1JUN19TR01JSV9TRUwpXG4rXHRcdFx0bG9va3VwX2NoaXBfaWQgPSBLU1o5ODk3U19DSElQX0lEO1xuK1x0fVxuK1xuK1x0aW5mbyA9IGtzel9sb29rdXBfaW5mbyhsb29rdXBfY2hpcF9pZCk7XG4gXHRpZiAoIWluZm8pXG4gXHRcdHJldHVybiAtRU5PREVWO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oIGIvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmhcbmluZGV4IGNiZTk4NDk0NTc4YzMuLjBjZmYzM2RmMDZhNGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmhcbkBAIC0yODQsNiArMjg0LDcgQEAgZW51bSBrc3pfbW9kZWwge1xuIFx0S1NaOTQ3NyxcbiBcdEtTWjk4OTYsXG4gXHRLU1o5ODk3LFxuK1x0S1NaOTg5N1MsXG4gXHRLU1o5ODkzLFxuIFx0S1NaOTU2MyxcbiBcdEtTWjk1NjcsXG5AQCAtODc0LDYgKzg3NSwxMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wga3N6X2lzX3NnbWlpX3BvcnQoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQpXG4gI2RlZmluZSBTS1VfSURfS1NaODU2M1x0XHRcdDB4M2NcbiAjZGVmaW5lIFNLVV9JRF9LU1o5NTYzXHRcdFx0MHgxY1xuIFxuKy8qIEtTWjk4OTcgc3BlY2lmaWMgcmVnaXN0ZXI6IHBvcnQgNyBYTUlJIGNvbnRyb2wgMCAqL1xuKyNkZWZpbmUgS1NaOTg5N19SRUdfUE9SVDdfWE1JSV9DVFJMXzBcdDB4NzMwMFxuKyNkZWZpbmUgS1NaOTg5N19QT1JUN19TR01JSV9TRUxcdFx0QklUKDcpXG4rXG4gLyogRHJpdmVyIHNldCBzd2l0Y2ggYnJvYWRjYXN0IHN0b3JtIHByb3RlY3Rpb24gYXQgMTAlIHJhdGUuICovXG4gI2RlZmluZSBCUk9BRENBU1RfU1RPUk1fUFJPVF9SQVRFXHQxMFxuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9taWNyb2NoaXAta3N6LmggYi9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbWljcm9jaGlwLWtzei5oXG5pbmRleCAwMjg3ODFhZDQwNTkzLi5mZThkZjE3NzQyODljIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaFxuKysrIGIvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaFxuQEAgLTM0LDYgKzM0LDcgQEAgZW51bSBrc3pfY2hpcF9pZCB7XG4gXHRLU1o5NDc3X0NISVBfSUQgPSAweDAwOTQ3NzAwLFxuIFx0S1NaOTg5Nl9DSElQX0lEID0gMHgwMDk4OTYwMCxcbiBcdEtTWjk4OTdfQ0hJUF9JRCA9IDB4MDA5ODk3MDAsXG4rXHRLU1o5ODk3U19DSElQX0lEID0gMHgwMDk4OTcwMSxcbiBcdEtTWjk4OTNfQ0hJUF9JRCA9IDB4MDA5ODkzMDAsXG4gXHRLU1o5NTYzX0NISVBfSUQgPSAweDAwOTU2MzAwLFxuIFx0S1NaODU2N19DSElQX0lEID0gMHgwMDg1NjcwMCxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE0OjI4OjU1LjE3Mjg5MjY2OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEwOTA1NTQ2OTczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipBbmFseXppbmcgYSBLU1ogU3dpdGNoIERyaXZlciBQYXRjaCoqXG5cbkFscmlnaHQsIHRoaXMgcGF0Y2ggYWZmZWN0cyBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNgLCB0aGUgaGVhZGVyLCBhbmQgYSBwbGF0Zm9ybSBkYXRhIGluY2x1ZGUuIEltbWVkaWF0ZWx5LCBJJ20gdGhpbmtpbmcgTWljcm9jaGlwIEtTWiDigJMgdGhhdCBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggRFNBIHN3aXRjaGVzLiBTcGVjaWZpY2FsbHksIHRoaW5ncyBsaWtlIHRoZSBLU1o5ODk3LCBLU1o5NDc3LCBLU1o4Nzk1LCBLU1o4ODYzLCBhbGwgc29saWQgcGxheWVycy4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gc2l6ZSB1cCB0aGUgcmVhY2ggb2YgdGhpcyBjb2RlIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIEFyZSB0aGVyZSBldmVuIGFueSB2aXJ0dWFsIGVudmlyb25tZW50cyB0aGF0IHdvdWxkIHJlYWxpc3RpY2FsbHkgaGl0IHRoaXM/IFByb2JhYmx5IG5vdCBkaXJlY3RseSwgYnV0IGl04oCZcyB3b3J0aCBrZWVwaW5nIGluIG1pbmQgcG90ZW50aWFsIGltcGxpY2F0aW9ucy5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIHF1aWNrbHkgcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGF0dGFjaG1lbnQgYW5kIHByb2JlIG1lY2hhbmlzbXMgZm9yIHRoZXNlIEtTWiBzd2l0Y2hlcy4gV2UncmUgbW9zdCBsaWtlbHkgbG9va2luZyBhdCBTUEksIEkyQywgb3IgTURJTyBmb3IgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBtYWluIHN5c3RlbS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgaW50ZXJmYWNlcyB3aXRoIHRoZSBoYXJkd2FyZSBhbmQgaGFuZGxlcyB0aGUgRFNBIGFyY2hpdGVjdHVyZS4gR3JlcHBlciBpcyBteSBmcmllbmQgaGVyZS4gVGltZSB0byBkaXZlIGludG8gYGRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvYCBhbmQgc2VlIHdoYXQgdGhlIGRyaXZlciBpcyBkb2luZyBhdCBpdHMgY29yZS4gSeKAmWxsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIG9uIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgZGV2aWNlIGVudW1lcmF0aW9uLCBpbml0aWFsaXphdGlvbiwgYW5kIGRhdGEgdHJhbnNmZXIuIEdvdHRhIHVuZGVyc3RhbmQgdGhlIGxvdy1sZXZlbCBpbnRlcmFjdGlvbnMgdG8gZ2F1Z2UgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDcwMywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE0OjI5OjA2LjA3ODQ0MTk1MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Njc1MDA5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrc3pfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTY5MCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfTkVUX0RTQV9NSUNST0NISVBfS1NaX0NPTU1PTilcXHQrPSBrc3pfc3dpdGNoLm9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlOjM6a3N6X3N3aXRjaC1vYmpzIDo9IGtzel9jb21tb24ubyBrc3pfZGNiLm9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlOjQ6a3N6X3N3aXRjaC1vYmpzICs9IGtzejk0NzcubyBrc3o5NDc3X2FjbC5vIGtzejk0NzdfdGNfZmxvd2VyLm9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlOjU6a3N6X3N3aXRjaC1vYmpzICs9IGtzejgub1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGU6Njprc3pfc3dpdGNoLW9ianMgKz0gbGFuOTM3eF9tYWluLm9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlLTctXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZT04PWlmZGVmIENPTkZJR19ORVRfRFNBX01JQ1JPQ0hJUF9LU1pfUFRQXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZTo5Omtzel9zd2l0Y2gtb2JqcyArPSBrc3pfcHRwLm9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlLTEwLWVuZGlmXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlPTEyPW9iai0kKENPTkZJR19ORVRfRFNBX01JQ1JPQ0hJUF9LU1o5NDc3X0kyQylcXHQrPSBrc3o5NDc3X2kyYy5vXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfTkVUX0RTQV9NSUNST0NISVBfS1NaX1NQSSlcXHRcXHQrPSBrc3pfc3BpLm9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlLTE0LW9iai0kKENPTkZJR19ORVRfRFNBX01JQ1JPQ0hJUF9LU1o4ODYzX1NNSSlcXHQrPSBrc3o4ODYzX3NtaS5vXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xOC0jaW5jbHVkZSBcXHUwMDNjbGludXgvZGVsYXkuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxOTojaW5jbHVkZSBcXHUwMDNjbGludXgvZHNhL2tzel9jb21tb24uaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yMC0jaW5jbHVkZSBcXHUwMDNjbGludXgvZXhwb3J0LmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zMy1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzozNDojaW5jbHVkZSBcXFwia3N6X2NvbW1vbi5oXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjM1OiNpbmNsdWRlIFxcXCJrc3pfZGNiLmhcXFwiXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzYtI2luY2x1ZGUgXFxcImtzejhfcmVnLmhcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00OS0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1MDpzdGF0aWMgY29uc3Qgc3RydWN0IGtzel9kcml2ZV9zdHJlbmd0aCBrc3o4OHgzX2RyaXZlX3N0cmVuZ3Roc1tdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUxLVxcdHsgMCwgIDgwMDAgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jPTU1PXN0cnVjdCBrc3o4OHh4X3N0YXRzX3JhdyB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05MS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo5MjpzdGF0aWMgdm9pZCBrc3pfY2ZnKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUzMiBhZGRyLCB1OCBiaXRzLCBib29sIHNldClcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05My17XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6OTQ6XFx0a3N6X3JtdzgoZGV2LCBhZGRyLCBiaXRzLCBzZXQgPyBiaXRzIDogMCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTUtfVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTk2LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjk3OnN0YXRpYyB2b2lkIGtzel9wb3J0X2NmZyhzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydCwgaW50IG9mZnNldCwgdTggYml0cyxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05OC1cXHRcXHRcXHQgYm9vbCBzZXQpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTkte1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEwMDpcXHRrc3pfcm13OChkZXYsIGRldi1cXHUwMDNlZGV2X29wcy1cXHUwMDNlZ2V0X3BvcnRfYWRkcihwb3J0LCBvZmZzZXQpLCBiaXRzLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEwMS1cXHRcXHQgc2V0ID8gYml0cyA6IDApO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTEyLSAqIFBNRSBzd2l0Y2ggZnVuY3Rpb25hbGl0aWVzLiBCb3RoIDgtYml0IHJlZ2lzdGVycyAxMTAgYW5kIDExMSBhcmVcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMTM6ICogd3JpdHRlbiBhdCBvbmNlIHdpdGgga3N6X3dyaXRlMTYsIHVzaW5nIHRoZSBzZXJpYWwgbXVsdGlwbGUgd3JpdGVcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTQtICogZnVuY3Rpb25hbGl0eS5cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExNy0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMTg6c3RhdGljIGludCBrc3o4X2luZF93cml0ZTgoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTggdGFibGUsIHUxNiBhZGRyLCB1OCBkYXRhKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExOS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMjgtXFx0Y3RybF9hZGRyID0gSU5EX0FDQ19UQUJMRSh0YWJsZSkgfCBhZGRyO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEyOTpcXHRyZXQgPSBrc3pfd3JpdGUxNihkZXYsIHJlZ3NbUkVHX0lORF9DVFJMXzBdLCBjdHJsX2FkZHIpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzMC1cXHRpZiAoIXJldClcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMzE6XFx0XFx0cmV0ID0ga3N6X3dyaXRlOChkZXYsIHJlZ3NbUkVHX0lORF9CWVRFXSwgZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTMyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQ2LSAqIFBNRSBzd2l0Y2ggZnVuY3Rpb25hbGl0aWVzLiBCb3RoIDgtYml0IHJlZ2lzdGVycyAxMTAgYW5kIDExMSBhcmVcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNDc6ICogd3JpdHRlbiBhdCBvbmNlIHdpdGgga3N6X3dyaXRlMTYsIHVzaW5nIHRoZSBzZXJpYWwgbXVsdGlwbGUgd3JpdGVcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNDgtICogZnVuY3Rpb25hbGl0eS5cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE1MS0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNTI6c3RhdGljIGludCBrc3o4X2luZF9yZWFkOChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1OCB0YWJsZSwgdTE2IGFkZHIsIHU4ICp2YWwpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTUzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE2Mi1cXHRjdHJsX2FkZHIgPSBJTkRfQUNDX1RBQkxFKHRhYmxlIHwgVEFCTEVfUkVBRCkgfCBhZGRyO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjE2MzpcXHRyZXQgPSBrc3pfd3JpdGUxNihkZXYsIHJlZ3NbUkVHX0lORF9DVFJMXzBdLCBjdHJsX2FkZHIpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE2NC1cXHRpZiAoIXJldClcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNjU6XFx0XFx0cmV0ID0ga3N6X3JlYWQ4KGRldiwgcmVnc1tSRUdfSU5EX0JZVEVdLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE2Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE3MS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNzI6c3RhdGljIGludCBrc3o4X3BtZV93cml0ZTgoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTMyIHJlZywgdTggdmFsdWUpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTczLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE3Ni1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNzc6c3RhdGljIGludCBrc3o4X3BtZV9wcmVhZDgoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIGludCBvZmZzZXQsIHU4ICpkYXRhKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE3OC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xODMtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTg0OnN0YXRpYyBpbnQga3N6OF9wbWVfcHdyaXRlOChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydCwgaW50IG9mZnNldCwgdTggZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xODUte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MTkxPXN0YXRpYyB2b2lkIGtzejg0NjNfaXJxX21hc2soc3RydWN0IGlycV9kYXRhICpkKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE5Mi17XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTkzOlxcdHN0cnVjdCBrc3pfaXJxICpraXJxID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTk0LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MTk4PXN0YXRpYyB2b2lkIGtzejg0NjNfaXJxX3VubWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmQpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTk5LXtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyMDA6XFx0c3RydWN0IGtzel9pcnEgKmtpcnEgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yMDEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYz0yMDU9c3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfY2hpcCBrc3o4NDYzX2lycV9jaGlwID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjA4LVxcdC5pcnFfdW5tYXNrXFx0XFx0PSBrc3o4NDYzX2lycV91bm1hc2ssXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjA5OlxcdC5pcnFfYnVzX2xvY2tcXHRcXHQ9IGtzel9pcnFfYnVzX2xvY2ssXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjEwOlxcdC5pcnFfYnVzX3N5bmNfdW5sb2NrXFx0PSBrc3pfaXJxX2J1c19zeW5jX3VubG9jayxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yMTEtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jPTIyMz1zdGF0aWMgY29uc3Qgc3RydWN0IGlycV9kb21haW5fb3BzIGtzejg0NjNfaXJxX2RvbWFpbl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yMjctXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjI4OnN0YXRpYyBpbnQga3N6ODQ2M19naXJxX3NldHVwKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjI5LXtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyMzA6XFx0c3RydWN0IGtzel9pcnEgKmdpcnEgPSBcXHUwMDI2ZGV2LVxcdTAwM2VnaXJxO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTIzMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTIzOS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNDA6XFx0cmV0dXJuIGtzel9pcnFfY29tbW9uX3NldHVwKGRldiwgZ2lycSwgXFx1MDAyNmtzejg0NjNfaXJxX2RvbWFpbl9vcHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI0MS19XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjQyLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI0MzpzdGF0aWMgaW50IGtzejg0NjNfcmVzZXRfc3dpdGNoKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjQ0LXtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNDU6XFx0a3N6X2NmZyhkZXYsIEtTWjg0NjNfUkVHX1NXX1JFU0VULFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI0Ni1cXHRcXHRLU1o4NDYzX0dMT0JBTF9TT0ZUV0FSRV9SRVNFVCB8IEtTWjg0NjNfUFRQX1NPRlRXQVJFX1JFU0VULFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI0Ny1cXHRcXHR0cnVlKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNDg6XFx0a3N6X2NmZyhkZXYsIEtTWjg0NjNfUkVHX1NXX1JFU0VULFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI0OS1cXHRcXHRLU1o4NDYzX0dMT0JBTF9TT0ZUV0FSRV9SRVNFVCB8IEtTWjg0NjNfUFRQX1NPRlRXQVJFX1JFU0VULFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjUzLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI1NDpzdGF0aWMgaW50IGtzejhfcmVzZXRfc3dpdGNoKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjU1LXtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNTY6XFx0aWYgKGtzel9pc19rc3o4OHgzKGRldikpIHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNTctXFx0XFx0LyogcmVzZXQgc3dpdGNoICovXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjU4OlxcdFxcdGtzel9jZmcoZGV2LCBLU1o4ODYzX1JFR19TV19SRVNFVCxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNTktXFx0XFx0XFx0S1NaODg2M19HTE9CQUxfU09GVFdBUkVfUkVTRVQgfCBLU1o4ODYzX1BDU19SRVNFVCwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjYwOlxcdFxcdGtzel9jZmcoZGV2LCBLU1o4ODYzX1JFR19TV19SRVNFVCxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNjEtXFx0XFx0XFx0S1NaODg2M19HTE9CQUxfU09GVFdBUkVfUkVTRVQgfCBLU1o4ODYzX1BDU19SRVNFVCwgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjYzLVxcdFxcdC8qIHJlc2V0IHN3aXRjaCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI2NDpcXHRcXHRrc3pfd3JpdGU4KGRldiwgUkVHX1BPV0VSX01BTkFHRU1FTlRfMSxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNjUtXFx0XFx0XFx0ICAgU1dfU09GVFdBUkVfUE9XRVJfRE9XTiBcXHUwMDNjXFx1MDAzYyBTV19QT1dFUl9NQU5BR0VNRU5UX01PREVfUyk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjY2OlxcdFxcdGtzel93cml0ZTgoZGV2LCBSRUdfUE9XRVJfTUFOQUdFTUVOVF8xLCAwKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNjctXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MjcyPXN0YXRpYyBpbnQga3N6ODh4eF9jaGFuZ2VfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCBtdHUpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjczLXtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNzQ6XFx0c3RydWN0IGtzel9kZXZpY2UgKmRldiA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI3NS1cXHRpbnQgZnJhbWVfc2l6ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI4Ny1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyODg6XFx0cmV0dXJuIGtzel9ybXc4KGRldiwgUkVHX1NXX0NUUkxfMiwgS1NaODg2M19MRUdBTF9QQUNLRVRfRU5BQkxFIHxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yODktXFx0XFx0XFx0S1NaODg2M19IVUdFX1BBQ0tFVF9FTkFCTEUsIGN0cmwyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jPTI5Mj1zdGF0aWMgaW50IGtzejg3eHhfY2hhbmdlX210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgbXR1KVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI5My17XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6Mjk0OlxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yOTUtXFx0dTggY3RybDEgPSAwLCBjdHJsMiA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zMDgtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MzA5OlxcdHJldCA9IGtzel9ybXc4KGRldiwgUkVHX1NXX0NUUkxfMSwgU1dfSFVHRV9QQUNLRVQsIGN0cmwxKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zMTAtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTMxMi1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzozMTM6XFx0cmV0dXJuIGtzel9ybXc4KGRldiwgUkVHX1NXX0NUUkxfMiwgU1dfTEVHQUxfUEFDS0VUX0RJU0FCTEUsIGN0cmwyKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zMTQtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MzIxPXN0YXRpYyBpbnQga3N6ODh4eF9tYXhfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zMjUtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MzI2OnN0YXRpYyBpbnQga3N6OF9wb3J0X3F1ZXVlX3NwbGl0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0LCBpbnQgcXVldWVzKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTMyNy17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zMzMtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MzM0OlxcdGlmIChrc3pfaXNfa3N6ODh4MyhkZXYpKSB7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzM1LVxcdFxcdG1hc2tfNHEgPSBLU1o4ODczX1BPUlRfNFFVRVVFX1NQTElUX0VOO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzQ1LVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjM0NjpcXHRcXHRyZXQgPSBrc3pfcm13OChkZXYsIFJFR19TV19DVFJMXzMsIFdFSUdIVEVEX0ZBSVJfUVVFVUVfRU5BQkxFLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM0Ny1cXHRcXHRcXHQgICAgICAgV0VJR0hURURfRkFJUl9RVUVVRV9FTkFCTEUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzQ5LVxcdFxcdFxcdHJldHVybiByZXQ7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MzUwOlxcdH0gZWxzZSBpZiAoa3N6X2lzX2tzejg0NjMoZGV2KSkge1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM1MS1cXHRcXHRtYXNrXzRxID0gS1NaODg3M19QT1JUXzRRVUVVRV9TUExJVF9FTjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM2My1cXHRcXHQgKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzozNjQ6XFx0XFx0cmV0ID0ga3N6X3JtdzgoZGV2LCBSRUdfU1dfQ1RSTF8xOSxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zNjUtXFx0XFx0XFx0ICAgICAgIFNXX09VVF9SQVRFX0xJTUlUX1FVRVVFX0JBU0VELFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzc1LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjM3NjpcXHRyZXQgPSBrc3pfcHJtdzgoZGV2LCBwb3J0LCByZWdfNHEsIG1hc2tfNHEsIGRhdGFfNHEpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM3Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzc5LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjM4MDpcXHRyZXR1cm4ga3N6X3BybXc4KGRldiwgcG9ydCwgcmVnXzJxLCBtYXNrXzJxLCBkYXRhXzJxKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zODEtfVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM4Mi1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzozODM6c3RhdGljIHZvaWQga3N6OF9yX21pYl9jbnQoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIHUxNiBhZGRyLCB1NjQgKmNudClcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zODQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzk4LVxcdG11dGV4X2xvY2soXFx1MDAyNmRldi1cXHUwMDNlYWx1X211dGV4KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzozOTk6XFx0a3N6X3dyaXRlMTYoZGV2LCByZWdzW1JFR19JTkRfQ1RSTF8wXSwgY3RybF9hZGRyKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00MDAtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00MDQtXFx0Zm9yIChsb29wID0gMjsgbG9vcCBcXHUwMDNlIDA7IGxvb3AtLSkge1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjQwNTpcXHRcXHRrc3pfcmVhZDgoZGV2LCByZWdzW1JFR19JTkRfTUlCX0NIRUNLXSwgXFx1MDAyNmNoZWNrKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00MDYtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDA3LVxcdFxcdGlmIChjaGVjayBcXHUwMDI2IG1hc2tzW01JQl9DT1VOVEVSX1ZBTElEXSkge1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjQwODpcXHRcXHRcXHRrc3pfcmVhZDMyKGRldiwgcmVnc1tSRUdfSU5EX0RBVEFfTE9dLCBcXHUwMDI2ZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDA5LVxcdFxcdFxcdGlmIChjaGVjayBcXHUwMDI2IG1hc2tzW01JQl9DT1VOVEVSX09WRVJGTE9XXSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQxNy1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo0MTg6c3RhdGljIHZvaWQga3N6ODc5NV9yX21pYl9wa3Qoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIHUxNiBhZGRyLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQxOS1cXHRcXHRcXHQgICAgICB1NjQgKmRyb3BwZWQsIHU2NCAqY250KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDM2LVxcdG11dGV4X2xvY2soXFx1MDAyNmRldi1cXHUwMDNlYWx1X211dGV4KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo0Mzc6XFx0a3N6X3dyaXRlMTYoZGV2LCByZWdzW1JFR19JTkRfQ1RSTF8wXSwgY3RybF9hZGRyKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00MzgtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00NDItXFx0Zm9yIChsb29wID0gMjsgbG9vcCBcXHUwMDNlIDA7IGxvb3AtLSkge1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjQ0MzpcXHRcXHRrc3pfcmVhZDgoZGV2LCByZWdzW1JFR19JTkRfTUlCX0NIRUNLXSwgXFx1MDAyNmNoZWNrKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00NDQtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDQ1LVxcdFxcdGlmIChjaGVjayBcXHUwMDI2IG1hc2tzW01JQl9DT1VOVEVSX1ZBTElEXSkge1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjQ0NjpcXHRcXHRcXHRrc3pfcmVhZDMyKGRldiwgcmVnc1tSRUdfSU5EX0RBVEFfTE9dLCBcXHUwMDI2ZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDQ3LVxcdFxcdFxcdGlmIChhZGRyIFxcdTAwM2MgMikge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDY5LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjQ3MDpzdGF0aWMgdm9pZCBrc3o4ODYzX3JfbWliX3BrdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydCwgdTE2IGFkZHIsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDcxLVxcdFxcdFxcdCAgICAgIHU2NCAqZHJvcHBlZCwgdTY0ICpjbnQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00ODMtXFx0XFx0XFx0ICAgS1NaODg2M19NSUJfUEFDS0VUX0RST1BQRURfUlhfMDtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo0ODQ6XFx0aWYgKGtzel9pc184ODk1X2ZhbWlseShkZXYpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDg1LVxcdCAgICBjdHJsX2FkZHIgPT0gS1NaODg2M19NSUJfUEFDS0VUX0RST1BQRURfUlhfMClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQ5MC1cXHRtdXRleF9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZWFsdV9tdXRleCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NDkxOlxcdGtzel93cml0ZTE2KGRldiwgcmVnc1tSRUdfSU5EX0NUUkxfMF0sIGN0cmxfYWRkcik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NDkyOlxcdGtzel9yZWFkMzIoZGV2LCByZWdzW1JFR19JTkRfREFUQV9MT10sIFxcdTAwMjZkYXRhKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00OTMtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZWFsdV9tdXRleCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MDUtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTA2OnN0YXRpYyB2b2lkIGtzejhfcl9taWJfcGt0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0LCB1MTYgYWRkcixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MDctXFx0XFx0XFx0ICAgdTY0ICpkcm9wcGVkLCB1NjQgKmNudClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUxNC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1MTU6c3RhdGljIHZvaWQga3N6OF9mcmVlemVfbWliKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0LCBib29sIGZyZWV6ZSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MTYte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTIxLVxcdGlmIChmcmVlemUpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTIyOlxcdFxcdGtzel9jZmcoZGV2LCBSRUdfU1dfQ1RSTF82LCBCSVQocG9ydCksIHRydWUpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjUyMzpcXHRrc3pfY2ZnKGRldiwgUkVHX1NXX0NUUkxfNiwgU1dfTUlCX0NPVU5URVJfRlJFRVpFLCBmcmVlemUpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUyNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUyNi1cXHRpZiAoIWZyZWV6ZSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1Mjc6XFx0XFx0a3N6X2NmZyhkZXYsIFJFR19TV19DVFJMXzYsIEJJVChwb3J0KSwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUyOC19XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTI5LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjUzMDpzdGF0aWMgdm9pZCBrc3o4X3BvcnRfaW5pdF9jbnQoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTMxLXtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1MzI6XFx0c3RydWN0IGtzel9wb3J0X21pYiAqbWliID0gXFx1MDAyNmRldi1cXHUwMDNlcG9ydHNbcG9ydF0ubWliO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUzMy1cXHR1NjQgKmRyb3BwZWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MzUtXFx0LyogRm9yIEtTWjg3OTUgZmFtaWx5LiAqL1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjUzNjpcXHRpZiAoa3N6X2lzX2tzejg3eHgoZGV2KSkge1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUzNy1cXHRcXHQvKiBmbHVzaCBhbGwgZW5hYmxlZCBwb3J0IE1JQiBjb3VudGVycyAqL1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjUzODpcXHRcXHRrc3pfY2ZnKGRldiwgUkVHX1NXX0NUUkxfNiwgQklUKHBvcnQpLCB0cnVlKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1Mzk6XFx0XFx0a3N6X2NmZyhkZXYsIFJFR19TV19DVFJMXzYsIFNXX01JQl9DT1VOVEVSX0ZMVVNILCB0cnVlKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1NDA6XFx0XFx0a3N6X2NmZyhkZXYsIFJFR19TV19DVFJMXzYsIEJJVChwb3J0KSwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTU0MS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01NjItXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTYzOnN0YXRpYyBpbnQga3N6OF9yX3RhYmxlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCB0YWJsZSwgdTE2IGFkZHIsIHU2NCAqZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01NjQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTczLVxcdG11dGV4X2xvY2soXFx1MDAyNmRldi1cXHUwMDNlYWx1X211dGV4KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1NzQ6XFx0cmV0ID0ga3N6X3dyaXRlMTYoZGV2LCByZWdzW1JFR19JTkRfQ1RSTF8wXSwgY3RybF9hZGRyKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01NzUtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTU3Ny1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1Nzg6XFx0cmV0ID0ga3N6X3JlYWQ2NChkZXYsIHJlZ3NbUkVHX0lORF9EQVRBX0hJXSwgZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTc5LXVubG9ja19hbHU6XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01ODQtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTg1OnN0YXRpYyBpbnQga3N6OF93X3RhYmxlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCB0YWJsZSwgdTE2IGFkZHIsIHU2NCBkYXRhKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTU4Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01OTUtXFx0bXV0ZXhfbG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VhbHVfbXV0ZXgpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjU5NjpcXHRyZXQgPSBrc3pfd3JpdGU2NChkZXYsIHJlZ3NbUkVHX0lORF9EQVRBX0hJXSwgZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTk3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01OTktXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NjAwOlxcdHJldCA9IGtzel93cml0ZTE2KGRldiwgcmVnc1tSRUdfSU5EX0NUUkxfMF0sIGN0cmxfYWRkcik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNjAxLXVubG9ja19hbHU6XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02MDYtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NjA3OnN0YXRpYyBpbnQga3N6OF92YWxpZF9keW5fZW50cnkoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTggKmRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNjA4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTYxNy1cXHRkbyB7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NjE4OlxcdFxcdHJldCA9IGtzel9yZWFkOChkZXYsIHJlZ3NbUkVHX0lORF9EQVRBX0NIRUNLXSwgZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNjE5LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02MjktXFx0LyogRW50cnkgaXMgcmVhZHkgZm9yIGFjY2Vzc2luZy4gKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo2MzA6XFx0cmV0dXJuIGtzel9yZWFkOChkZXYsIHJlZ3NbUkVHX0lORF9EQVRBXzhdLCBkYXRhKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02MzEtfVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTYzMi1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo2MzM6c3RhdGljIGludCBrc3o4X3JfZHluX21hY190YWJsZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MTYgYWRkciwgdTggKm1hY19hZGRyLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTYzNC1cXHRcXHRcXHRcXHR1OCAqZmlkLCB1OCAqc3JjX3BvcnQsIHUxNiAqZW50cmllcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTY1Mi1cXHRtdXRleF9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZWFsdV9tdXRleCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NjUzOlxcdHJldCA9IGtzel93cml0ZTE2KGRldiwgcmVnc1tSRUdfSU5EX0NUUkxfMF0sIGN0cmxfYWRkcik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNjU0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02NjUtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NjY2OlxcdHJldCA9IGtzel9yZWFkNjQoZGV2LCByZWdzW1JFR19JTkRfREFUQV9ISV0sIFxcdTAwMjZidWYpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTY2Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNjk4LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjY5OTpzdGF0aWMgaW50IGtzejhfcl9zdGFfbWFjX3RhYmxlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUxNiBhZGRyLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTcwMC1cXHRcXHRcXHRcXHRzdHJ1Y3QgYWx1X3N0cnVjdCAqYWx1LCBib29sICp2YWxpZClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTczOC1cXHQgKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo3Mzk6XFx0aWYgKGtzel9pc19rc3o4N3h4KGRldikgfHwga3N6X2lzXzg4OTVfZmFtaWx5KGRldikpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNzQwLVxcdFxcdGRhdGFfaGkgXFx1MDAzZVxcdTAwM2U9IDE7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy03NTAtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NzUxOnN0YXRpYyBpbnQga3N6OF93X3N0YV9tYWNfdGFibGUoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTE2IGFkZHIsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNzUyLVxcdFxcdFxcdFxcdHN0cnVjdCBhbHVfc3RydWN0ICphbHUpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy03ODMtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6Nzg0OnN0YXRpYyB2b2lkIGtzejhfZnJvbV92bGFuKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUzMiB2bGFuLCB1OCAqZmlkLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTc4NS1cXHRcXHRcXHQgICB1OCAqbWVtYmVyLCB1OCAqdmFsaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy03OTgtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6Nzk5OnN0YXRpYyB2b2lkIGtzejhfdG9fdmxhbihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1OCBmaWQsIHU4IG1lbWJlciwgdTggdmFsaWQsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtODAwLVxcdFxcdFxcdCB1MTYgKnZsYW4pXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy04MTMtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6ODE0OnN0YXRpYyB2b2lkIGtzejhfcl92bGFuX2VudHJpZXMoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTE2IGFkZHIpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtODE1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTgyOS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo4MzA6c3RhdGljIHZvaWQga3N6OF9yX3ZsYW5fdGFibGUoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTE2IHZpZCwgdTE2ICp2bGFuKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTgzMS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy04NDMtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6ODQ0OnN0YXRpYyB2b2lkIGtzejhfd192bGFuX3RhYmxlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUxNiB2aWQsIHUxNiB2bGFuKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTg0NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy04NzEtICovXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6ODcyOnN0YXRpYyBpbnQga3N6ODc5eF9nZXRfbG9vcGJhY2soc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTE2IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtODczLVxcdFxcdFxcdFxcdHUxNiAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtODc3LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjg3ODpcXHRyZXQgPSBrc3pfcHJlYWQ4KGRldiwgcG9ydCwgUkVHX1BPUlRfU1RBVFVTXzMsIFxcdTAwMjZzdGF0Myk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtODc5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy04OTktICovXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6OTAwOnN0YXRpYyBpbnQga3N6ODc5eF9zZXRfbG9vcGJhY2soc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTE2IHBvcnQsIHUxNiB2YWwpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTAxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTkwNi1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo5MDc6XFx0cmV0dXJuIGtzel9wcm13OChkZXYsIHBvcnQsIFJFR19QT1JUX1NUQVRVU18zLCBQT1JUX1BIWV9MT09QQkFDSyxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05MDgtXFx0XFx0XFx0IHN0YXQzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTkxMC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo5MTE6c3RhdGljIGludCBrc3o4N3h4X2FwcGx5X2xvd19sb3NzX3ByZXNldChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBib29sIGVuYWJsZSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05MTIte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTIxLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjkyMjpcXHRpZiAoIWtzel9pc19rc3o4N3h4KGRldikpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTIzLVxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTk1Ny0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo5NTg6c3RhdGljIGludCBrc3o4X3JfcGh5X2N0cmwoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIHUxNiAqdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTk1OS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05NjUtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6OTY2OlxcdHJldCA9IGtzel9wcmVhZDgoZGV2LCBwb3J0LCByZWdzW1BfTElOS19TVEFUVVNdLCBcXHUwMDI2cmVnX3ZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTY3LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTcyLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjk3MzpcXHRyZXQgPSBrc3pfcHJlYWQ4KGRldiwgcG9ydCwgUkVHX1BPUlRfTElOS19NRF9DVFJMLCBcXHUwMDI2cmVnX3ZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTc0LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTAyMy0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMDI0OnN0YXRpYyBpbnQga3N6OF9yX3BoeV9ibWNyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUxNiBwb3J0LCB1MTYgKnZhbClcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDI1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEwMzEtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTAzMjpcXHRyZXQgPSBrc3pfcHJlYWQ4KGRldiwgcG9ydCwgcmVnc1tQX05FR19SRVNUQVJUX0NUUkxdLCBcXHUwMDI2cmVzdGFydCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTAzMy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTAzNS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMDM2OlxcdHJldCA9IGtzel9wcmVhZDgoZGV2LCBwb3J0LCByZWdzW1BfU1BFRURfU1RBVFVTXSwgXFx1MDAyNnNwZWVkKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDM3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDM5LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEwNDA6XFx0cmV0ID0ga3N6X3ByZWFkOChkZXYsIHBvcnQsIHJlZ3NbUF9GT1JDRV9DVFJMXSwgXFx1MDAyNmN0cmwpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEwNDEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEwNDYtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTA0NzpcXHRpZiAoa3N6X2lzX2tzejg4eDMoZGV2KSkge1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEwNDgtXFx0XFx0aWYgKHJlc3RhcnQgXFx1MDAyNiBLU1o4ODczX1BPUlRfUEhZX0xPT1BCQUNLKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTA4OC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMDg5OnN0YXRpYyBpbnQga3N6OF9yX3BoeShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MTYgcGh5LCB1MTYgcmVnLCB1MTYgKnZhbClcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExMDYtXFx0Y2FzZSBNSUlfQk1TUjpcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMTA3OlxcdFxcdHJldCA9IGtzel9wcmVhZDgoZGV2LCBwLCByZWdzW1BfTElOS19TVEFUVVNdLCBcXHUwMDI2bGluayk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTEwOC1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTEyNC1cXHRjYXNlIE1JSV9QSFlTSUQyOlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjExMjU6XFx0XFx0aWYgKGtzel9pc19rc3o4OHgzKGRldikpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTEyNi1cXHRcXHRcXHRkYXRhID0gS1NaODg2M19JRF9MTztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExMzAtXFx0Y2FzZSBNSUlfQURWRVJUSVNFOlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjExMzE6XFx0XFx0cmV0ID0ga3N6X3ByZWFkOChkZXYsIHAsIHJlZ3NbUF9MT0NBTF9DVFJMXSwgXFx1MDAyNmN0cmwpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExMzItXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExNDctXFx0Y2FzZSBNSUlfTFBBOlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjExNDg6XFx0XFx0cmV0ID0ga3N6X3ByZWFkOChkZXYsIHAsIHJlZ3NbUF9SRU1PVEVfU1RBVFVTXSwgXFx1MDAyNmxpbmspO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExNDktXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExNjYtXFx0Y2FzZSBQSFlfUkVHX0xJTktfTUQ6XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTE2NzpcXHRcXHRyZXQgPSBrc3pfcHJlYWQ4KGRldiwgcCwgUkVHX1BPUlRfTElOS19NRF9DVFJMLCBcXHUwMDI2dmFsMSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTE2OC1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTE3MC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMTcxOlxcdFxcdHJldCA9IGtzel9wcmVhZDgoZGV2LCBwLCBSRUdfUE9SVF9MSU5LX01EX1JFU1VMVCwgXFx1MDAyNnZhbDIpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExNzItXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExOTQtXFx0Y2FzZSBQSFlfUkVHX0tTWjg3WFhfU0hPUlRfQ0FCTEU6XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTE5NTpcXHRcXHRpZiAoIWtzel9pc19rc3o4N3h4KGRldikpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTE5Ni1cXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMjAwLVxcdGNhc2UgUEhZX1JFR19LU1o4N1hYX0xQRl9CVzpcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMjAxOlxcdFxcdGlmICgha3N6X2lzX2tzejg3eHgoZGV2KSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMjAyLVxcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEyMDUtXFx0Y2FzZSBQSFlfUkVHX0tTWjg3WFhfRVFfSU5JVDpcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMjA2OlxcdFxcdGlmICgha3N6X2lzX2tzejg3eHgoZGV2KSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMjA3LVxcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jPTEyMjA9c3RhdGljIGludCBrc3o4X3BoeV9yZWFkMTYoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgYWRkciwgaW50IHJlZylcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMjIxLXtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMjIyOlxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMjIzLVxcdHUxNiB2YWwgPSAweGZmZmY7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMjQ1LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEyNDY6c3RhdGljIGludCBrc3o4X3dfcGh5X2N0cmwoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIHUxNiB2YWwpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTI0Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMjU5LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEyNjA6XFx0cmV0ID0ga3N6X3BybXc4KGRldiwgcG9ydCwgUkVHX1BPUlRfTElOS19NRF9DVFJMLCBQT1JUX0ZPUkNFX0xJTksgfFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEyNjEtXFx0XFx0XFx0UE9SVF9QT1dFUl9TQVZJTkcgfCBQT1JUX1BIWV9SRU1PVEVfTE9PUEJBQ0ssIHJlZ192YWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTI5OS0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMzAwOnN0YXRpYyBpbnQga3N6OF93X3BoeV9ibWNyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUxNiBwb3J0LCB1MTYgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzMDEte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTMxMy1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMzE0OlxcdHJldCA9IGtzel9wcm13OChkZXYsIHBvcnQsIHJlZ3NbUF9TUEVFRF9TVEFUVVNdLCBQT1JUX0hQX01ESVgsIHNwZWVkKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzE1LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzE4LVxcdGN0cmwgPSAwO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEzMTk6XFx0aWYgKGtzel9pc19rc3o4OHgzKGRldikpIHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzIwLVxcdFxcdGlmICgodmFsIFxcdTAwMjYgQk1DUl9BTkVOQUJMRSkpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzM2LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEzMzc6XFx0cmV0ID0ga3N6X3BybXc4KGRldiwgcG9ydCwgcmVnc1tQX0ZPUkNFX0NUUkxdLCBQT1JUX0ZPUkNFXzEwMF9NQklUIHxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzM4LVxcdFxcdCAvKiBQT1JUX0FVVE9fTkVHX0VOQUJMRSBhbmQgUE9SVF9BVVRPX05FR19ESVNBQkxFIGFyZSB0aGUgc2FtZVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTM2Ni1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMzY3OlxcdGlmIChrc3pfaXNfa3N6ODh4MyhkZXYpKSB7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTM2OC1cXHRcXHRyZXN0YXJ0X21hc2sgfD0gS1NaODg3M19QT1JUX1BIWV9MT09QQkFDSztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzNzctXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTM3ODpcXHRyZXR1cm4ga3N6X3BybXc4KGRldiwgcG9ydCwgcmVnc1tQX05FR19SRVNUQVJUX0NUUkxdLCByZXN0YXJ0X21hc2ssXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTM3OS1cXHRcXHRcXHQgcmVzdGFydCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzgxLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEzODI6c3RhdGljIGludCBrc3o4X3dfcGh5KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUxNiBwaHksIHUxNiByZWcsIHUxNiB2YWwpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTM4My17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzk3LVxcdGNhc2UgTUlJX0FEVkVSVElTRTpcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMzk4OlxcdFxcdHJldCA9IGtzel9wcmVhZDgoZGV2LCBwLCByZWdzW1BfTE9DQUxfQ1RSTF0sIFxcdTAwMjZjdHJsKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzk5LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNDE5LVxcdFxcdGlmIChkYXRhICE9IGN0cmwpIHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNDIwOlxcdFxcdFxcdHJldCA9IGtzel9wd3JpdGU4KGRldiwgcCwgcmVnc1tQX0xPQ0FMX0NUUkxdLCBkYXRhKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNDIxLVxcdFxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNDI2LVxcdFxcdGlmICh2YWwgXFx1MDAyNiBQSFlfU1RBUlRfQ0FCTEVfRElBRylcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNDI3OlxcdFxcdFxcdGtzel9wb3J0X2NmZyhkZXYsIHAsIFJFR19QT1JUX0xJTktfTURfQ1RSTCwgUE9SVF9TVEFSVF9DQUJMRV9ESUFHLCB0cnVlKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNDI4LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQzNS1cXHRjYXNlIFBIWV9SRUdfS1NaODdYWF9TSE9SVF9DQUJMRTpcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNDM2OlxcdFxcdGlmICgha3N6X2lzX2tzejg3eHgoZGV2KSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNDM3LVxcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE0NDQtXFx0Y2FzZSBQSFlfUkVHX0tTWjg3WFhfTFBGX0JXOlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjE0NDU6XFx0XFx0aWYgKCFrc3pfaXNfa3N6ODd4eChkZXYpKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE0NDYtXFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQ1Ny1cXHRjYXNlIFBIWV9SRUdfS1NaODdYWF9FUV9JTklUOlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjE0NTg6XFx0XFx0aWYgKCFrc3pfaXNfa3N6ODd4eChkZXYpKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE0NTktXFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MTQ3Nz1zdGF0aWMgaW50IGtzejhfcGh5X3dyaXRlMTYoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgYWRkciwgaW50IHJlZywgdTE2IHZhbClcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTQ6Mjk6MDYuMTI1MTk0NDUxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjA0ODk0NDg0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cgYXJvdW5kIGBrc3pfc3dpdGNoX3JlZ2lzdGVyYC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGhvdyBpdCdzIGludm9rZWQgYW5kLCBjcml0aWNhbGx5LCB3aGF0IGJ1c2VzIGl0J3MgcHJvYmluZyBvdmVyLiBUaGlzIGlzIGxpa2VseSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaXRzIGRldmljZSBkaXNjb3ZlcnkgbWVjaGFuaXNtLlxuXG5SaWdodCwgdGltZSB0byBleGVjdXRlIGEgY29kZSBzZWFyY2ggZm9yIGBrc3pfc3dpdGNoX3JlZ2lzdGVyYCB3aXRoaW4gdGhlIGNvZGViYXNlLiBIb3BlZnVsbHksIEknbGwgZmluZCBhbGwgdGhlIGNhbGwgc2l0ZXMgYW5kIHVuZGVyc3RhbmQgdGhlIGVudHJ5IHBvaW50cyBmb3IgdGhpcyBmdW5jdGlvbi4gS25vd2luZyB3aGljaCBidXMgZHJpdmVycyBtaWdodCBiZSBjYWxsaW5nIGludG8gdGhpcyBpcyB3aGVyZSB0byBmb2N1cyB0aGUgaW52ZXN0aWdhdGlvbi4gVGhpcyB3aWxsIGdpdmUgYSBnb29kIG92ZXJ2aWV3IG9mIHRoZSBkZXNpZ24hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MjExLCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTQ6Mjk6MDguMTc0MTQyNjQ4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1Mzk3NjczOTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3N6X3N3aXRjaF9yZWdpc3RlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmM9MTMzPXN0YXRpYyBpbnQga3N6ODg2M19zbWlfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jLTE2OC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmM6MTY5OlxcdHJldCA9IGtzel9zd2l0Y2hfcmVnaXN0ZXIoZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmMtMTcwLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jPTE3PXN0YXRpYyBpbnQga3N6OTQ3N19pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmkyYylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy01MC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmM6NTE6XFx0cmV0ID0ga3N6X3N3aXRjaF9yZWdpc3RlcihkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy01Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTM5MjQ9c3RhdGljIGludCBrc3o4NDYzX3JlbGVhc2Vfc3RyYXBzX3NwaShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzkyOC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzozOTI5OmludCBrc3pfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzkzMC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy00MDk4LX1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzo0MDk5OkVYUE9SVF9TWU1CT0woa3N6X3N3aXRjaF9yZWdpc3Rlcik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtNDEwMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oPTQyOD1zdHJ1Y3Qga3N6X2RldmljZSAqa3N6X3N3aXRjaF9hbGxvYyhzdHJ1Y3QgZGV2aWNlICpiYXNlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtNDMwLVxcdFxcdFxcdFxcdCAgICB2b2lkICpwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaDo0MzE6aW50IGtzel9zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtNDMyLXZvaWQga3N6X3N3aXRjaF9yZW1vdmUoc3RydWN0IGtzel9kZXZpY2UgKmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYz0xMzc9c3RhdGljIGludCBrc3pfc3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYy0xOTQtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MTk1OlxcdHJldCA9IGtzel9zd2l0Y2hfcmVnaXN0ZXIoZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYy0xOTYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE0OjI5OjA5LjcxMzkxNDYzM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ2NzY1NjY5MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBSZWFjaGFiaWxpdHkgaW4gUUVNVS9TeXprYWxsZXIgZm9yIE1pY3JvY2hpcCBTd2l0Y2ggRHJpdmVycyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSSBzZWUgd2UncmUgbG9va2luZyBhdCBga3N6OTQ3N19pMmMuY2AsIGBrc3pfc3BpLmNgLCBhbmQgcG90ZW50aWFsbHkgYGtzejg4NjNfc21pLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIHRoZXNlIGJlIGluc3RhbnRpYXRlZCwgcHJvYmVkLCBhbmQgdWx0aW1hdGVseSBmdXp6ZWQgZWZmZWN0aXZlbHkgd2l0aGluIFFFTVUgb3IgU3l6a2FsbGVyPyBPciBhcmUgd2UgZGVhbGluZyB3aXRoIGEgc2l0dWF0aW9uIHJlcXVpcmluZyBhY3R1YWwgaGFyZHdhcmUsIHNwZWNpZmljYWxseSBEU0Egc3dpdGNoIGhhcmR3YXJlP1xuXG5UaGUgY3JpdGljYWwgcXVlc3Rpb24gaGVyZSBpcyB3aGV0aGVyIEkyQy9TUEkgRFNBIHN3aXRjaGVzIGNhbiBiZSBpbnN0YW50aWF0ZWQgb3IgZXZlbiBlbXVsYXRlZCBzb21laG93LCBwZXJoYXBzIGZyb20gdXNlcnNwYWNlLCB3aGljaCB3b3VsZCBiZSBpZGVhbC4gSSBuZWVkIHRvIHJlY2FsbCBob3cgc3l6a2FsbGVyIGhhbmRsZXMgSTJDIGRldmljZXMuIERvZXMgaXQgdXNlIGBzeXpfbW91bnRfaW1hZ2VgLCB0aGUgYG5ld19kZXZpY2VgIHN5c2ZzIGludGVyZmFjZSwgb3IgcGVyaGFwcyBsZXZlcmFnZSBkZXZpY2UgdHJlZXMgb3IgQUNQST8gSSBuZWVkIHRvIGNsYXJpZnkgd2hhdCBzeXprYWxsZXIgKmFjdHVhbGx5KiBmdXp6ZXMuXG5cblJpZ2h0LCB0aW1lIHRvIGNvbnN1bHQgb3VyIGd1aWRlbGluZXMuIExldCdzIHNlZS4uLiB0aGUgY29yZSB0cmlhZ2UgcGhpbG9zb3BoeSBzdGF0ZXMgZnV6emluZyBpcyBvbmx5IHZhbGlkIGZvciBjb2RlIHRoYXQgKmV4ZWN1dGVzKiBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIE5vIHN0cnVjdHVyYWwgdW5yZWFjaGFibGUgY29kZSBzaG91bGQgYmUgZnV6emVkLCByZWdhcmRsZXNzIG9mIGhvdyBjb21wbGV4IHRoZSBjb2RlLiBJIHJlbWVtYmVyIHRoZSBzZWN0aW9uIG9uIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSB3ZWxsLiBUaGlzIHBvaW50cyBkaXJlY3RseSB0byB0aGUgcHJvYmxlbTogdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgR1BVIGRyaXZlcnMg4oCTIHRoZXNlIGFsbCByZXF1aXJlIHBoeXNpY2FsIEFTSUNzIG9yIFBDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG5cbk5vdywgd2hhdCBhYm91dCBEU0Egc3dpdGNoZXM/IEFyZSB0aGVzZSBnZW5lcmFsbHkgaW1wbGVtZW50ZWQgYXMgaGFyZHdhcmUgQVNJQyBzd2l0Y2hlcyB0aGF0IGFyZSBjb25uZWN0ZWQgdmlhIFNQSS9JMkMvTURJTyBvciBtZW1vcnktbWFwcGVkIGJ1c2VzPyBUaGlzIGlzIGEga2V5IHBvaW50LiBDYW4gRFNBIG1pY3JvY2hpcCBzd2l0Y2ggZHJpdmVycywgbGlrZSB0aGUgb25lcyBpbiB0aGVzZSBmaWxlcywgYWN0dWFsbHkgYmUgaW5zdGFudGlhdGVkIG9yIHJlYWNoZWQgd2l0aGluIHN0YW5kYXJkIFFFTVUvc3l6a2FsbGVyIHNldHVwcz9cblxuTXkgbmV4dCBzdGVwIGlzIGNsZWFyLiBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGl0c2VsZi4gSSdsbCByZWFkIGBrc3o5NDc3X2kyYy5jYCBhbmQgYGtzel9zcGkuY2AgY2xvc2VseSB0byB1bmRlcnN0YW5kIGhvdyBga3N6OTQ3N2AgYW5kIGBrc3pfY29tbW9uYCBhcmUgZGVzaWduZWQgYW5kIGhvdyB0aGV5IGludGVyYWN0IHdpdGggdGhlIGhhcmR3YXJlLiBUaGlzIHdpbGwgZGV0ZXJtaW5lIGlmIHRoZXJlJ3MgYW55IHBhdGh3YXkgZm9yIHRoZW0gdG8gYmUgZnV6emVkLCBvciBpZiB0aGV5IGFyZSBkb29tZWQgdG8gYmUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTE2MiwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNDoyOToxNC4zOTA0ODM3OTdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTAwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0LypcXG4gICAzOlxcdCAqIE1pY3JvY2hpcCBLU1o5NDc3IHNlcmllcyByZWdpc3RlciBhY2Nlc3MgdGhyb3VnaCBJMkNcXG4gICA0OlxcdCAqXFxuICAgNTpcXHQgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyNCBNaWNyb2NoaXAgVGVjaG5vbG9neSBJbmMuXFxuICAgNjpcXHQgKi9cXG4gICA3OlxcdFxcbiAgIDg6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2kyYy5oXFx1MDAzZVxcbiAgIDk6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2tlcm5lbC5oXFx1MDAzZVxcbiAgMTA6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbiAgMTE6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JlZ21hcC5oXFx1MDAzZVxcbiAgMTI6XFx0XFxuICAxMzpcXHQjaW5jbHVkZSBcXFwia3N6X2NvbW1vbi5oXFxcIlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRLU1pfUkVHTUFQX1RBQkxFKGtzejk0NzcsIG5vdF91c2VkLCAxNiwgMCwgMCk7XFxuICAxNjpcXHRcXG4gIDE3OlxcdHN0YXRpYyBpbnQga3N6OTQ3N19pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmkyYylcXG4gIDE4OlxcdHtcXG4gIDE5OlxcdFxcdGNvbnN0IHN0cnVjdCBrc3pfY2hpcF9kYXRhICpjaGlwO1xcbiAgMjA6XFx0XFx0c3RydWN0IGRldmljZSAqZGRldiA9IFxcdTAwMjZpMmMtXFx1MDAzZWRldjtcXG4gIDIxOlxcdFxcdHN0cnVjdCByZWdtYXBfY29uZmlnIHJjO1xcbiAgMjI6XFx0XFx0c3RydWN0IGtzel9kZXZpY2UgKmRldjtcXG4gIDIzOlxcdFxcdGludCBpLCByZXQ7XFxuICAyNDpcXHRcXG4gIDI1OlxcdFxcdGNoaXAgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGRldik7XFxuICAyNjpcXHRcXHRpZiAoIWNoaXApXFxuICAyNzpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gIDI4OlxcdFxcbiAgMjk6XFx0XFx0ZGV2ID0ga3N6X3N3aXRjaF9hbGxvYyhcXHUwMDI2aTJjLVxcdTAwM2VkZXYsIGNoaXAsIGkyYyk7XFxuICAzMDpcXHRcXHRpZiAoIWRldilcXG4gIDMxOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAgMzI6XFx0XFxuICAzMzpcXHRcXHQvKiBTYXZlIGNoaXAgaWQgdG8gZG8gc3BlY2lhbCBpbml0aWFsaXphdGlvbiB3aGVuIHByb2JpbmcuICovXFxuICAzNDpcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBjaGlwLVxcdTAwM2VjaGlwX2lkO1xcbiAgMzU6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIF9fS1NaX05VTV9SRUdNQVBTOyBpKyspIHtcXG4gIDM2OlxcdFxcdFxcdHJjID0ga3N6OTQ3N19yZWdtYXBfY29uZmlnW2ldO1xcbiAgMzc6XFx0XFx0XFx0cmMubG9ja19hcmcgPSBcXHUwMDI2ZGV2LVxcdTAwM2VyZWdtYXBfbXV0ZXg7XFxuICAzODpcXHRcXHRcXHRkZXYtXFx1MDAzZXJlZ21hcFtpXSA9IGRldm1fcmVnbWFwX2luaXRfaTJjKGkyYywgXFx1MDAyNnJjKTtcXG4gIDM5OlxcdFxcdFxcdGlmIChJU19FUlIoZGV2LVxcdTAwM2VyZWdtYXBbaV0pKSB7XFxuICA0MDpcXHRcXHRcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShcXHUwMDI2aTJjLVxcdTAwM2VkZXYsIFBUUl9FUlIoZGV2LVxcdTAwM2VyZWdtYXBbaV0pLFxcbiAgNDE6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBcXFwiRmFpbGVkIHRvIGluaXRpYWxpemUgcmVnbWFwJWlcXFxcblxcXCIsXFxuICA0MjpcXHRcXHRcXHRcXHRcXHRcXHQgICAgIGtzejk0NzdfcmVnbWFwX2NvbmZpZ1tpXS52YWxfYml0cyk7XFxuICA0MzpcXHRcXHRcXHR9XFxuICA0NDpcXHRcXHR9XFxuICA0NTpcXHRcXG4gIDQ2OlxcdFxcdGlmIChpMmMtXFx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhKVxcbiAgNDc6XFx0XFx0XFx0ZGV2LVxcdTAwM2VwZGF0YSA9IGkyYy1cXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGE7XFxuICA0ODpcXHRcXG4gIDQ5OlxcdFxcdGRldi1cXHUwMDNlaXJxID0gaTJjLVxcdTAwM2VpcnE7XFxuICA1MDpcXHRcXG4gIDUxOlxcdFxcdHJldCA9IGtzel9zd2l0Y2hfcmVnaXN0ZXIoZGV2KTtcXG4gIDUyOlxcdFxcbiAgNTM6XFx0XFx0LyogTWFpbiBEU0EgZHJpdmVyIG1heSBub3QgYmUgc3RhcnRlZCB5ZXQuICovXFxuICA1NDpcXHRcXHRpZiAocmV0KVxcbiAgNTU6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gIDU2OlxcdFxcbiAgNTc6XFx0XFx0aTJjX3NldF9jbGllbnRkYXRhKGkyYywgZGV2KTtcXG4gIDU4OlxcdFxcbiAgNTk6XFx0XFx0cmV0dXJuIDA7XFxuICA2MDpcXHR9XFxuICA2MTpcXHRcXG4gIDYyOlxcdHN0YXRpYyB2b2lkIGtzejk0NzdfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKVxcbiAgNjM6XFx0e1xcbiAgNjQ6XFx0XFx0c3RydWN0IGtzel9kZXZpY2UgKmRldiA9IGkyY19nZXRfY2xpZW50ZGF0YShpMmMpO1xcbiAgNjU6XFx0XFxuICA2NjpcXHRcXHRpZiAoZGV2KVxcbiAgNjc6XFx0XFx0XFx0a3N6X3N3aXRjaF9yZW1vdmUoZGV2KTtcXG4gIDY4OlxcdH1cXG4gIDY5OlxcdFxcbiAgNzA6XFx0c3RhdGljIHZvaWQga3N6OTQ3N19pMmNfc2h1dGRvd24oc3RydWN0IGkyY19jbGllbnQgKmkyYylcXG4gIDcxOlxcdHtcXG4gIDcyOlxcdFxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoaTJjKTtcXG4gIDczOlxcdFxcbiAgNzQ6XFx0XFx0aWYgKCFkZXYpXFxuICA3NTpcXHRcXHRcXHRyZXR1cm47XFxuICA3NjpcXHRcXG4gIDc3OlxcdFxcdGtzel9zd2l0Y2hfc2h1dGRvd24oZGV2KTtcXG4gIDc4OlxcdFxcbiAgNzk6XFx0XFx0aTJjX3NldF9jbGllbnRkYXRhKGkyYywgTlVMTCk7XFxuICA4MDpcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE0OjI5OjE0LjM5MDU1NDQwN1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMxNjkyMzgzMDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGFuIGV4cGVydCBpbiB0aGlzIGFyZWE6XG5cbioqQW5hbHl6aW5nIHRoZSBJMkMgUHJvYmUgRnVuY3Rpb24gYW5kIFJlbGV2YW50IEtjb25maWcgT3B0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBrc3o5NDc3X2kyY19wcm9iZWAuIFRoZSBuYW1lIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgZGVhbGluZyB3aXRoIGFuIEkyQyBjbGllbnQsIHdoaWNoIGlzIHdoYXQgSSBzdXNwZWN0ZWQuIE15IGZpcnN0IHRob3VnaHQgaXMgd2hldGhlciB0aGlzIGRyaXZlciBvciB0aGUgSTJDIGNsaWVudCBpdCdzIG1lYW50IHRvIGludGVyZmFjZSB3aXRoIGlzIHNvbWV0aGluZyB0aGF0IGNhbiBiZSB0YXJnZXRlZCBlZmZlY3RpdmVseSBpbiBmdXp6aW5nIGNhbXBhaWducy4gSSBoYXZlIHRvIHRoaW5rIGFib3V0IHdoZXRoZXIgYE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT05gIG9yIGBORVRfRFNBYCBhcmUgZXZlbiByZWFjaGFibGUgaW4gYSBwdXJlIHNvZnR3YXJlIGNvbnRleHQsIG9yIGlmIHRoZXkncmUgdGllZCB0byBhIGhhcmR3YXJlIHN3aXRjaCBBU0lDLiBUaGUgbGF0dGVyIHdvdWxkIG1ha2UgZnV6emluZyBkaXJlY3RseSBsZXNzIGVmZmljaWVudCwgaWYgbm90IGltcG9zc2libGUuXG5cblRvIGZpZ3VyZSBvdXQgdGhlIHBvdGVudGlhbCBmdXp6aW5nIHN1cmZhY2UgYW5kIGhvdyB0byByZWFjaCB0aGUgZnVuY3Rpb25hbGl0eSB0aGF0IHRoZSBwcm9iZSBmdW5jdGlvbiBjb3ZlcnMsIEknbSBnb2luZyB0byBkaWcgaW50byB0aGUgS2NvbmZpZyBmb3IgYE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT05gIGFuZCBhbnkgcmVsYXRlZCBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgYnVpbGQgb3B0aW9ucyB0byBkZXRlcm1pbmUgd2hldGhlciBJIGNhbiB0cmlnZ2VyIHRoaXMgY29kZSBwYXRoIGZyb20gYSB0ZXN0IGVudmlyb25tZW50IG9yIGlmIGl0IHJlcXVpcmVzIGEgc3BlY2lmaWMgaGFyZHdhcmUgc2V0dXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMjI2LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNDoyOToxNy41NTk3OTU1NjZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxNjk5MzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5FVF9EU0FfTUlDUk9DSElQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnOjI6bWVudWNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk1pY3JvY2hpcCBLU1o4WFhYL0tTWjlYWFgvTEFOOTM3WCBzZXJpZXMgc3dpdGNoIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMTYtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnOjE3OmNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1o5NDc3X0kyQ1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0xOC1cXHR0cmlzdGF0ZSBcXFwiS1NaIHNlcmllcyBJMkMgY29ubmVjdGVkIHN3aXRjaCBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnOjE5OlxcdGRlcGVuZHMgb24gTkVUX0RTQV9NSUNST0NISVBfS1NaX0NPTU1PTiBcXHUwMDI2XFx1MDAyNiBJMkNcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMjAtXFx0c2VsZWN0IFJFR01BUF9JMkNcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0yMy1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6MjQ6Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9TUElcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMjUtXFx0dHJpc3RhdGUgXFxcIktTWiBzZXJpZXMgU1BJIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZzoyNjpcXHRkZXBlbmRzIG9uIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT04gXFx1MDAyNlxcdTAwMjYgU1BJXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTI3LVxcdHNlbGVjdCBSRUdNQVBfU1BJXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMzAtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnOjMxOmNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfUFRQXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIHRoZSBQVFAgY2xvY2sgb24gdGhlIEtTWjk1NjMvTEFOOTM3eCBFdGhlcm5ldCBTd2l0Y2hcXFwiXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnOjMzOlxcdGRlcGVuZHMgb24gTkVUX0RTQV9NSUNST0NISVBfS1NaX0NPTU1PTiBcXHUwMDI2XFx1MDAyNiBQVFBfMTU4OF9DTE9DS1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZzozNDpcXHRkZXBlbmRzIG9uIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT049bSB8fCBQVFBfMTU4OF9DTE9DSz15XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTM1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy00MC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6NDE6Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWjg4NjNfU01JXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTQyLVxcdHRyaXN0YXRlIFxcXCJLU1ogc2VyaWVzIFNNSSBjb25uZWN0ZWQgc3dpdGNoIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6NDM6XFx0ZGVwZW5kcyBvbiBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTQ0LVxcdHNlbGVjdCBNRElPX0JJVEJBTkdcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX05FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT04pXFx0Kz0ga3N6X3N3aXRjaC5vXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZS0zLWtzel9zd2l0Y2gtb2JqcyA6PSBrc3pfY29tbW9uLm8ga3N6X2RjYi5vXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlPTY9a3N6X3N3aXRjaC1vYmpzICs9IGxhbjkzN3hfbWFpbi5vXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZS03LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGU6ODppZmRlZiBDT05GSUdfTkVUX0RTQV9NSUNST0NISVBfS1NaX1BUUFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGUtOS1rc3pfc3dpdGNoLW9ianMgKz0ga3N6X3B0cC5vXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZT0xMD1lbmRpZlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGUtMTEtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZToxMjpvYmotJChDT05GSUdfTkVUX0RTQV9NSUNST0NISVBfS1NaOTQ3N19JMkMpXFx0Kz0ga3N6OTQ3N19pMmMub1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX05FVF9EU0FfTUlDUk9DSElQX0tTWl9TUEkpXFx0XFx0Kz0ga3N6X3NwaS5vXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfTkVUX0RTQV9NSUNST0NISVBfS1NaODg2M19TTUkpXFx0Kz0ga3N6ODg2M19zbWkub1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg9MTY5PXN0cnVjdCBrc3pfcG9ydCB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC0xOTItXFx0c3RydWN0IHBoeWxpbmtfcGNzICpwY3M7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6MTkzOiNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfRFNBX01JQ1JPQ0hJUF9LU1pfUFRQKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTE5NC1cXHRzdHJ1Y3Qga2VybmVsX2h3dHN0YW1wX2NvbmZpZyB0c3RhbXBfY29uZmlnO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmgtMTAtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmg6MTE6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9EU0FfTUlDUk9DSElQX0tTWl9QVFApXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmgtMTItXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaD04Nz1zdGF0aWMgaW5saW5lIHZvaWQga3N6ODQ2M19wdHBfaXJxX2ZyZWUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKSB7fVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmgtMTAyLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5oOjEwMzojZW5kaWZcXHQvKiBFbmQgb2YgQ09ORklHX05FVF9EU0FfTUlDUk9DSElQX0tTWl9QVFAgKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuaC0xMDQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE0OjI5OjE3LjYzMTQ5OTk1NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0ODY0NDgxOTgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFjY2Vzc2luZyBEU0EgU3dpdGNoIEhhcmR3YXJlIFx1MDAyNiBJMkMgRGV2aWNlIEluc3RhbnRpYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIGFjY2VzcyBtZXRob2RzIGZvciBEU0Egc3dpdGNoIGhhcmR3YXJlLCBzcGVjaWZpY2FsbHkgaG93IHRvIGludGVyYWN0IHdpdGggaXQuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgSTJDIGRldmljZXMgYXJlIGFjY2Vzc2VkIHdpdGhpbiB0aGlzIGNvbnRleHQuIENhbiBJIHByb2JlIHRoZXNlIGRldmljZXMgdXNpbmcgdGhlIHN0YW5kYXJkIGAvc3lzL2J1cy9pMmMvZGV2aWNlcy9pMmMtWC9uZXdfZGV2aWNlYCBtZXRob2Q/IEFoLCB5ZXMsIGluIExpbnV4LCB0aGF0J3MgaXQhIFVzZXJzcGFjZSBjYW4gd3JpdGUgdG8gdGhhdCBwYXRoIHRvIGluc3RhbnRpYXRlIGFuIEkyQyBkZXZpY2UuIEZvciBleGFtcGxlLCB1c2luZyBgZWNobyBcImtzejk0NzcgMHg1ZlwiIFx1MDAzZSAvc3lzL2J1cy9pMmMvZGV2aWNlcy9pMmMtMC9uZXdfZGV2aWNlYC5cblxuQnV0IG5vdyBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nOiBkb2VzIHRoZSBga3N6OTQ3N2AgZHJpdmVyLCBvciB0aGUgYGtzel9jb21tb25gIGxpYnJhcnkgaXQgdXNlcywgKnJlcXVpcmUqIGFjdHVhbCBwaHlzaWNhbCBoYXJkd2FyZSB0byBzdWNjZXNzZnVsbHkgcmVhZCByZWdpc3RlcnM/IElmIEkgaW5zdGFudGlhdGUgaXQgb24sIHNheSwgaTJjLTAsIGV2ZW4gaWYgdGhlcmUncyBubyBwaHlzaWNhbCBjaGlwIHByZXNlbnQsIG9yIGV2ZW4gdXNpbmcgYSBkdW1teSBJMkMgYWRhcHRlciwgd2hhdCBleGFjdGx5ICpoYXBwZW5zKiB3aXRoaW4gYGtzel9zd2l0Y2hfcmVnaXN0ZXJgPyBUaGF0J3MgdGhlIGtleS4gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgY29kZS4gTGV0J3MgZXhhbWluZSBga3N6X3N3aXRjaF9yZWdpc3RlcmAgZnVuY3Rpb24sIGl0J3MgZGVmaW5lZCB3aXRoaW4gYGtzel9jb21tb24uY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMDkzLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE0OjI5OjIyLjQ5NTk4NDUyNloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzkxOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzkyNSxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzkyNTpcXHR7XFxuMzkyNjpcXHRcXHRyZXR1cm4gcGluY3RybF9zZWxlY3RfZGVmYXVsdF9zdGF0ZShkZXYtXFx1MDAzZWRldik7XFxuMzkyNzpcXHR9XFxuMzkyODpcXHRcXG4zOTI5OlxcdGludCBrc3pfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuMzkzMDpcXHR7XFxuMzkzMTpcXHRcXHRjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSAqaW5mbztcXG4zOTMyOlxcdFxcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqcG9ydHM7XFxuMzkzMzpcXHRcXHRwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlO1xcbjM5MzQ6XFx0XFx0dW5zaWduZWQgaW50IHBvcnRfbnVtO1xcbjM5MzU6XFx0XFx0dTMyIGxvb2t1cF9jaGlwX2lkO1xcbjM5MzY6XFx0XFx0aW50IHJldDtcXG4zOTM3OlxcdFxcdGludCBpO1xcbjM5Mzg6XFx0XFxuMzkzOTpcXHRcXHRkZXYtXFx1MDAzZXJlc2V0X2dwaW8gPSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbChkZXYtXFx1MDAzZWRldiwgXFxcInJlc2V0XFxcIixcXG4zOTQwOlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgR1BJT0RfT1VUX0xPVyk7XFxuMzk0MTpcXHRcXHRpZiAoSVNfRVJSKGRldi1cXHUwMDNlcmVzZXRfZ3BpbykpXFxuMzk0MjpcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihkZXYtXFx1MDAzZXJlc2V0X2dwaW8pO1xcbjM5NDM6XFx0XFxuMzk0NDpcXHRcXHRpZiAoZGV2LVxcdTAwM2VyZXNldF9ncGlvKSB7XFxuMzk0NTpcXHRcXHRcXHRpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUoZGV2LVxcdTAwM2VkZXYtXFx1MDAzZW9mX25vZGUsIFxcXCJtaWNyb2NoaXAsa3N6ODQ2M1xcXCIpKSB7XFxuMzk0NjpcXHRcXHRcXHRcXHRyZXQgPSBrc3o4NDYzX2NvbmZpZ3VyZV9zdHJhcHNfc3BpKGRldik7XFxuMzk0NzpcXHRcXHRcXHRcXHRpZiAocmV0KVxcbjM5NDg6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4zOTQ5OlxcdFxcdFxcdH1cXG4zOTUwOlxcdFxcbjM5NTE6XFx0XFx0XFx0Z3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKGRldi1cXHUwMDNlcmVzZXRfZ3BpbywgMSk7XFxuMzk1MjpcXHRcXHRcXHR1c2xlZXBfcmFuZ2UoMTAwMDAsIDEyMDAwKTtcXG4zOTUzOlxcdFxcdFxcdGdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChkZXYtXFx1MDAzZXJlc2V0X2dwaW8sIDApO1xcbjM5NTQ6XFx0XFx0XFx0bXNsZWVwKDEwMCk7XFxuMzk1NTpcXHRcXG4zOTU2OlxcdFxcdFxcdGlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShkZXYtXFx1MDAzZWRldi1cXHUwMDNlb2Zfbm9kZSwgXFxcIm1pY3JvY2hpcCxrc3o4NDYzXFxcIikpIHtcXG4zOTU3OlxcdFxcdFxcdFxcdHJldCA9IGtzejg0NjNfcmVsZWFzZV9zdHJhcHNfc3BpKGRldik7XFxuMzk1ODpcXHRcXHRcXHRcXHRpZiAocmV0KVxcbjM5NTk6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4zOTYwOlxcdFxcdFxcdH1cXG4zOTYxOlxcdFxcdH1cXG4zOTYyOlxcdFxcbjM5NjM6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2VkZXZfbXV0ZXgpO1xcbjM5NjQ6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2VyZWdtYXBfbXV0ZXgpO1xcbjM5NjU6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2VhbHVfbXV0ZXgpO1xcbjM5NjY6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2V2bGFuX211dGV4KTtcXG4zOTY3OlxcdFxcbjM5Njg6XFx0XFx0cmV0ID0ga3N6X3N3aXRjaF9kZXRlY3QoZGV2KTtcXG4zOTY5OlxcdFxcdGlmIChyZXQpXFxuMzk3MDpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjM5NzE6XFx0XFxuMzk3MjpcXHRcXHRsb29rdXBfY2hpcF9pZCA9IGRldi1cXHUwMDNlY2hpcF9pZDtcXG4zOTczOlxcdFxcbjM5NzQ6XFx0XFx0LyogVGhlIEtTWjk4OTdTIGFuZCB0aGUgS1NaOTg5N1IgcmVwb3J0IHRoZSBzYW1lIGNoaXAgSUQgYW5kIGRpZmZlclxcbjM5NzU6XFx0XFx0ICogb25seSBpbiBjaGlwX2RhdGE6IG9ubHkgdGhlIFMgaGFzIHRoZSBTR01JSSBwb3J0IDcsIHRoZSBSIGhhcyBhXFxuMzk3NjpcXHRcXHQgKiBzZWNvbmQgUkdNSUkgcG9ydCBpbnN0ZWFkLiBCaXQgNyBvZiB0aGUgcG9ydCA3IFhNSUkgY29udHJvbCAwXFxuMzk3NzpcXHRcXHQgKiByZWdpc3RlciBpcyByZWFkLW9ubHkgYW5kIHRlbGxzIHRoZW0gYXBhcnQ7IGl0IHJlYWRzIG9uZSBvbiB0aGUgUy5cXG4zOTc4OlxcdFxcdCAqIENvbXBhcmUgdGhlIEtTWjk4OTdTIGRhdGEgc2hlZXQgRFMwMDAwMjM5NEMgc2VjdGlvbiA1LjIuNC4xIHdpdGhcXG4zOTc5OlxcdFxcdCAqIHRoZSBLU1o5ODk3UiBkYXRhIHNoZWV0IERTMDAwMDIzMzBEIHNlY3Rpb24gNS4yLjMuMS5cXG4zOTgwOlxcdFxcdCAqXFxuMzk4MTpcXHRcXHQgKiBPbmx5IHRoZSBjaGlwX2RhdGEgZW50cnkgZGlmZmVycywgc28gZGV2LVxcdTAwM2VjaGlwX2lkIGtlZXBzIHRoZSBzaGFyZWRcXG4zOTgyOlxcdFxcdCAqIGNoaXAgSUQgYW5kIG5vdGhpbmcgZWxzZSBoYXMgdG8ga25vdyBhYm91dCB0aGUgdmFyaWFudC5cXG4zOTgzOlxcdFxcdCAqL1xcbjM5ODQ6XFx0XFx0aWYgKGRldi1cXHUwMDNlY2hpcF9pZCA9PSBLU1o5ODk3X0NISVBfSUQpIHtcXG4zOTg1OlxcdFxcdFxcdHU4IHZhbDtcXG4zOTg2OlxcdFxcbjM5ODc6XFx0XFx0XFx0cmV0ID0ga3N6X3JlYWQ4KGRldiwgS1NaOTg5N19SRUdfUE9SVDdfWE1JSV9DVFJMXzAsIFxcdTAwMjZ2YWwpO1xcbjM5ODg6XFx0XFx0XFx0aWYgKHJldClcXG4zOTg5OlxcdFxcdFxcdFxcdHJldHVybiByZXQ7XFxuMzk5MDpcXHRcXG4zOTkxOlxcdFxcdFxcdGlmICh2YWwgXFx1MDAyNiBLU1o5ODk3X1BPUlQ3X1NHTUlJX1NFTClcXG4zOTkyOlxcdFxcdFxcdFxcdGxvb2t1cF9jaGlwX2lkID0gS1NaOTg5N1NfQ0hJUF9JRDtcXG4zOTkzOlxcdFxcdH1cXG4zOTk0OlxcdFxcbjM5OTU6XFx0XFx0aW5mbyA9IGtzel9sb29rdXBfaW5mbyhsb29rdXBfY2hpcF9pZCk7XFxuMzk5NjpcXHRcXHRpZiAoIWluZm8pXFxuMzk5NzpcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4zOTk4OlxcdFxcbjM5OTk6XFx0XFx0LyogVXBkYXRlIHRoZSBjb21wYXRpYmxlIGluZm8gd2l0aCB0aGUgcHJvYmVkIG9uZSAqL1xcbjQwMDA6XFx0XFx0ZGV2LVxcdTAwM2VpbmZvID0gaW5mbztcXG40MDAxOlxcdFxcbjQwMDI6XFx0XFx0ZGV2X2luZm8oZGV2LVxcdTAwM2VkZXYsIFxcXCJmb3VuZCBzd2l0Y2g6ICVzLCByZXYgJWlcXFxcblxcXCIsXFxuNDAwMzpcXHRcXHRcXHQgZGV2LVxcdTAwM2VpbmZvLVxcdTAwM2VkZXZfbmFtZSwgZGV2LVxcdTAwM2VjaGlwX3Jldik7XFxuNDAwNDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTQ6Mjk6MjIuNDk2MTY2NTM2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM0ODE0Njk4NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBga3N6X3N3aXRjaF9kZXRlY3RgIEZ1bmN0aW9uKipcblxuQWxyaWdodCwgc28gdGhlIHRhc2sgYXQgaGFuZCBpcyB0byBhbmFseXplIHRoZSBga3N6X3N3aXRjaF9kZXRlY3QoZGV2KWAgZnVuY3Rpb24uIFRoZSBpbml0aWFsIGNsdWUgaXMgdGhhdCBpdCdzIGludGVyYWN0aW5nIGRpcmVjdGx5IHdpdGggdGhlIHBoeXNpY2FsIGNoaXAsIGxpa2VseSB0aHJvdWdoIHJlZ2lzdGVyIHJlYWRzLiBNeSBpbW1lZGlhdGUgbWVudGFsIHByb2Nlc3MgaXMgdG8gZHJpbGwgZG93biBpbnRvIHRoZSBkZXRhaWxzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQncyBpbnRlcmFjdGluZyB3aXRoIHRoZSBoYXJkd2FyZS4gV2hhdCByZWdpc3RlcnMgYXJlIHdlIHRhbGtpbmcgYWJvdXQ/IFdoYXQgYXJlIHRoZSBleHBlY3RlZCB2YWx1ZXM/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhvc2UgdmFsdWVzPyBUaGlzIGZ1bmN0aW9uIGlzIHByb2JhYmx5IHRoZSBoZWFydCBvZiB0aGUgc3dpdGNoJ3MgaW5pdGlhbCBpZGVudGlmaWNhdGlvbiBvciBicmluZy11cCBzZXF1ZW5jZS4gSSdsbCBuZWVkIHRvIGNvbmZpcm0sIGJ1dCBJJ20gZXhwZWN0aW5nIHRoaXMgaXMgd2hlcmUgd2UgY2hlY2sgZm9yIGNoaXAgcHJlc2VuY2UsIHZlcnNpb24sIGFuZCBwb3NzaWJseSBiYXNpYyBjb25maWd1cmF0aW9uLiBMZXQncyBnZXQgdG8gdGhlIHNvdXJjZSBjb2RlIGFuZCBmaWd1cmUgb3V0IHRoZSBleGFjdCByZWdpc3RlciBpbnRlcmFjdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0OTU5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNDoyOToyNS45Nzc2MzkyMVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgyNDA2NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3N6X3N3aXRjaF9kZXRlY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yOTI5PXZvaWQga3N6X3BoeWxpbmtfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI5NDAtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6Mjk0MTpzdGF0aWMgaW50IGtzel9zd2l0Y2hfZGV0ZWN0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjk0Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0zOTI5PWludCBrc3pfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zOTY3LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjM5Njg6XFx0cmV0ID0ga3N6X3N3aXRjaF9kZXRlY3QoZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zOTY5LVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE0OjI5OjI2LjAyNTg4MjMwOVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyOTM2MzM3MjIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRha2Ugb24gdGhhdCBmdW5jdGlvbiwgYGtzel9zd2l0Y2hfZGV0ZWN0YCwgbmVzdGxlZCB3aXRoaW4gYGRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jYC5cblxuKipEaXZpbmcgRGVlcCBpbnRvIEtTWiBTd2l0Y2ggRGV0ZWN0aW9uKipcblxuQWxyaWdodCwgdGltZSB0byBkaXNzZWN0IGBrc3pfc3dpdGNoX2RldGVjdGAgZnJvbSBga3N6X2NvbW1vbi5jYC4gSSdtIGdvaW5nIHRvIHdhbnQgdG8gdW5kZXJzdGFuZCB3aGF0IHRyaWdnZXJzIHRoaXMgcm91dGluZSwgdGhlIGtleSByZWdpc3RlcnMgaXQncyByZWFkaW5nIGFuZCB3cml0aW5nLCBhbmQgdGhlIGxvZ2ljIGJlaGluZCBob3cgaXQgZGV0ZXJtaW5lcyBpZiBhIE1pY3JvY2hpcCBLU1ogc3dpdGNoIGlzIHByZXNlbnQgYW5kIGZ1bmN0aW9uaW5nIGNvcnJlY3RseS4gSSdsbCBiZSBsb29raW5nIGZvciBhbnkgaGFyZHdhcmUtc3BlY2lmaWMgcXVpcmtzIG9yIHdvcmthcm91bmRzIGluIHRoaXMgbG93LWxldmVsIGRyaXZlci4gSSdsbCBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBwYXJ0IG9mIGEgbGFyZ2VyIERTQSAoRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSkgZnJhbWV3b3JrLCBzbyBJIHNob3VsZCBiZSBrZWVwaW5nIGFuIGV5ZSBvdXQgZm9yIGhvdyB0aGlzIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoIHRoZSBoaWdoZXItbGV2ZWwgRFNBIGNvbXBvbmVudHMuIEknbGwgYmUgcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gYW55IGVycm9yIGhhbmRsaW5nIGFuZCByZXRyeSBtZWNoYW5pc21zLiBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgc29tZSBwb3RlbnRpYWwgY2hhbGxlbmdlcyDigJMgdGhlIG5lZWQgdG8gaGFuZGxlIGRpZmZlcmVudCBLU1ogc3dpdGNoIHJldmlzaW9ucywgdmFyaWF0aW9ucyBpbiBQSFkgY29uZmlndXJhdGlvbnMsIGFuZCBtYXliZSBldmVuIHNvbWUgY2xldmVyIHJlZ2lzdGVyIHByb2JpbmcgdGVjaG5pcXVlcy4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucywgc28gbGV0J3Mgc2VlIHdoYXQgdGhleSd2ZSBjb21lIHVwIHdpdGguIExldCdzIHNlZSBpZiB0aGlzIGNvZGUgaXMgd2VsbC13cml0dGVuLCBlZmZpY2llbnQsIGFuZCByb2J1c3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NDczLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTQ6Mjk6MjguOTYyMjIxNzUyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5ODY4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyOTQxLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyOTQxOlxcdHN0YXRpYyBpbnQga3N6X3N3aXRjaF9kZXRlY3Qoc3RydWN0IGtzel9kZXZpY2UgKmRldilcXG4yOTQyOlxcdHtcXG4yOTQzOlxcdFxcdHU4IGlkMSwgaWQyLCBpZDQ7XFxuMjk0NDpcXHRcXHR1MTYgaWQxNjtcXG4yOTQ1OlxcdFxcdHUzMiBpZDMyO1xcbjI5NDY6XFx0XFx0aW50IHJldDtcXG4yOTQ3OlxcdFxcbjI5NDg6XFx0XFx0LyogcmVhZCBjaGlwIGlkICovXFxuMjk0OTpcXHRcXHRyZXQgPSBrc3pfcmVhZDE2KGRldiwgUkVHX0NISVBfSUQwLCBcXHUwMDI2aWQxNik7XFxuMjk1MDpcXHRcXHRpZiAocmV0KVxcbjI5NTE6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4yOTUyOlxcdFxcbjI5NTM6XFx0XFx0aWQxID0gRklFTERfR0VUKFNXX0ZBTUlMWV9JRF9NLCBpZDE2KTtcXG4yOTU0OlxcdFxcdGlkMiA9IEZJRUxEX0dFVChTV19DSElQX0lEX00sIGlkMTYpO1xcbjI5NTU6XFx0XFxuMjk1NjpcXHRcXHRzd2l0Y2ggKGlkMSkge1xcbjI5NTc6XFx0XFx0Y2FzZSBLU1o4NF9GQU1JTFlfSUQ6XFxuMjk1ODpcXHRcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBLU1o4NDYzX0NISVBfSUQ7XFxuMjk1OTpcXHRcXHRcXHRicmVhaztcXG4yOTYwOlxcdFxcdGNhc2UgS1NaODdfRkFNSUxZX0lEOlxcbjI5NjE6XFx0XFx0XFx0aWYgKGlkMiA9PSBLU1o4N19DSElQX0lEXzk1KSB7XFxuMjk2MjpcXHRcXHRcXHRcXHR1OCB2YWw7XFxuMjk2MzpcXHRcXG4yOTY0OlxcdFxcdFxcdFxcdGRldi1cXHUwMDNlY2hpcF9pZCA9IEtTWjg3OTVfQ0hJUF9JRDtcXG4yOTY1OlxcdFxcbjI5NjY6XFx0XFx0XFx0XFx0a3N6X3JlYWQ4KGRldiwgS1NaOF9QT1JUX1NUQVRVU18wLCBcXHUwMDI2dmFsKTtcXG4yOTY3OlxcdFxcdFxcdFxcdGlmICh2YWwgXFx1MDAyNiBLU1o4X1BPUlRfRklCRVJfTU9ERSlcXG4yOTY4OlxcdFxcdFxcdFxcdFxcdGRldi1cXHUwMDNlY2hpcF9pZCA9IEtTWjg3NjVfQ0hJUF9JRDtcXG4yOTY5OlxcdFxcdFxcdH0gZWxzZSBpZiAoaWQyID09IEtTWjg3X0NISVBfSURfOTQpIHtcXG4yOTcwOlxcdFxcdFxcdFxcdGRldi1cXHUwMDNlY2hpcF9pZCA9IEtTWjg3OTRfQ0hJUF9JRDtcXG4yOTcxOlxcdFxcdFxcdH0gZWxzZSB7XFxuMjk3MjpcXHRcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4yOTczOlxcdFxcdFxcdH1cXG4yOTc0OlxcdFxcdFxcdGJyZWFrO1xcbjI5NzU6XFx0XFx0Y2FzZSBLU1o4OF9GQU1JTFlfSUQ6XFxuMjk3NjpcXHRcXHRcXHRpZiAoaWQyID09IEtTWjg4X0NISVBfSURfNjMpXFxuMjk3NzpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBLU1o4OFgzX0NISVBfSUQ7XFxuMjk3ODpcXHRcXHRcXHRlbHNlXFxuMjk3OTpcXHRcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4yOTgwOlxcdFxcdFxcdGJyZWFrO1xcbjI5ODE6XFx0XFx0Y2FzZSBLU1o4ODk1X0ZBTUlMWV9JRDpcXG4yOTgyOlxcdFxcdFxcdGlmIChpZDIgPT0gS1NaODg5NV9DSElQX0lEXzk1IHx8XFxuMjk4MzpcXHRcXHRcXHQgICAgaWQyID09IEtTWjg4OTVfQ0hJUF9JRF85NVIpXFxuMjk4NDpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBLU1o4ODk1X0NISVBfSUQ7XFxuMjk4NTpcXHRcXHRcXHRlbHNlXFxuMjk4NjpcXHRcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4yOTg3OlxcdFxcdFxcdHJldCA9IGtzel9yZWFkOChkZXYsIFJFR19LU1o4ODY0X0NISVBfSUQsIFxcdTAwMjZpZDQpO1xcbjI5ODg6XFx0XFx0XFx0aWYgKHJldClcXG4yOTg5OlxcdFxcdFxcdFxcdHJldHVybiByZXQ7XFxuMjk5MDpcXHRcXHRcXHRpZiAoaWQ0IFxcdTAwMjYgU1dfS1NaODg2NClcXG4yOTkxOlxcdFxcdFxcdFxcdGRldi1cXHUwMDNlY2hpcF9pZCA9IEtTWjg4NjRfQ0hJUF9JRDtcXG4yOTkyOlxcdFxcdFxcdGJyZWFrO1xcbjI5OTM6XFx0XFx0ZGVmYXVsdDpcXG4yOTk0OlxcdFxcdFxcdHJldCA9IGtzel9yZWFkMzIoZGV2LCBSRUdfQ0hJUF9JRDAsIFxcdTAwMjZpZDMyKTtcXG4yOTk1OlxcdFxcdFxcdGlmIChyZXQpXFxuMjk5NjpcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjI5OTc6XFx0XFxuMjk5ODpcXHRcXHRcXHRkZXYtXFx1MDAzZWNoaXBfcmV2ID0gRklFTERfR0VUKFNXX1JFVl9JRF9NLCBpZDMyKTtcXG4yOTk5OlxcdFxcdFxcdGlkMzIgXFx1MDAyNj0gfjB4RkY7XFxuMzAwMDpcXHRcXG4zMDAxOlxcdFxcdFxcdHN3aXRjaCAoaWQzMikge1xcbjMwMDI6XFx0XFx0XFx0Y2FzZSBLU1o5NDc3X0NISVBfSUQ6XFxuMzAwMzpcXHRcXHRcXHRjYXNlIEtTWjk4OTZfQ0hJUF9JRDpcXG4zMDA0OlxcdFxcdFxcdGNhc2UgS1NaOTg5N19DSElQX0lEOlxcbjMwMDU6XFx0XFx0XFx0Y2FzZSBLU1o5NTY3X0NISVBfSUQ6XFxuMzAwNjpcXHRcXHRcXHRjYXNlIEtTWjg1NjdfQ0hJUF9JRDpcXG4zMDA3OlxcdFxcdFxcdGNhc2UgTEFOOTM3MF9DSElQX0lEOlxcbjMwMDg6XFx0XFx0XFx0Y2FzZSBMQU45MzcxX0NISVBfSUQ6XFxuMzAwOTpcXHRcXHRcXHRjYXNlIExBTjkzNzJfQ0hJUF9JRDpcXG4zMDEwOlxcdFxcdFxcdGNhc2UgTEFOOTM3M19DSElQX0lEOlxcbjMwMTE6XFx0XFx0XFx0Y2FzZSBMQU45Mzc0X0NISVBfSUQ6XFxuMzAxMjpcXHRcXG4zMDEzOlxcdFxcdFxcdFxcdC8qIExBTjk2NDYgZG9lcyBub3QgaGF2ZSBpdHMgb3duIGNoaXAgaWQuICovXFxuMzAxNDpcXHRcXHRcXHRcXHRpZiAoZGV2LVxcdTAwM2VjaGlwX2lkICE9IExBTjk2NDZfQ0hJUF9JRClcXG4zMDE1OlxcdFxcdFxcdFxcdFxcdGRldi1cXHUwMDNlY2hpcF9pZCA9IGlkMzI7XFxuMzAxNjpcXHRcXHRcXHRcXHRicmVhaztcXG4zMDE3OlxcdFxcdFxcdGNhc2UgS1NaOTg5M19DSElQX0lEOlxcbjMwMTg6XFx0XFx0XFx0XFx0cmV0ID0ga3N6X3JlYWQ4KGRldiwgUkVHX0NISVBfSUQ0LFxcbjMwMTk6XFx0XFx0XFx0XFx0XFx0XFx0XFx1MDAyNmlkNCk7XFxuMzAyMDpcXHRcXHRcXHRcXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNDoyOToyOC45NjI0MjE3MDJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODczMTU5ODgxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmc9ZmFsc2U6IE1pY3JvY2hpcCBLU1ogU3dpdGNoIERyaXZlciBVcGRhdGUqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgY29tbWl0IGRlYWxzIHdpdGggdGhlIGBkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2AgZGlyZWN0b3J5LCB3aGljaCBpbmRpY2F0ZXMgYSBkcml2ZXIgZm9yIE1pY3JvY2hpcCBLU1ogc2VyaWVzIEV0aGVybmV0IHN3aXRjaCBBU0lDcy4gVGhlc2UgYXJlIHBoeXNpY2FsIGhhcmR3YXJlIGNvbXBvbmVudHMgYWNjZXNzZWQgdmlhIFNQSSwgSTJDLCBvciBTTUkvTURJTy5cblxuTXkgbmV4dCB0aG91Z2h0IGlzIHRvIGRldGVybWluZSBpZiB0aGlzIGNvZGUgaXMgc3BlY2lmaWMgdG8gaGFyZHdhcmUgdGhhdCdzIGluYWNjZXNzaWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZSBndWlkZWxpbmVzIGV4cGxpY2l0bHkgc3RhdGUgdGhhdCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUsIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMgb3IsIGluIHRoaXMgY2FzZSwgcGh5c2ljYWwgc3dpdGNoIEFTSUNzLCBzaG91bGQgcmVzdWx0IGluIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5JJ3ZlIHZlcmlmaWVkIHRoYXQgdGhlIEtTWjk4OTcvUy9SLCBLU1o5NDc3LCBLU1o4Nzk1LCBhbmQgb3RoZXJzIGFyZSBpbmRlZWQgcGh5c2ljYWwgRXRoZXJuZXQgc3dpdGNoIElDcyBmcm9tIE1pY3JvY2hpcCAoZm9ybWVybHkgTWljcmVsKS4gVGhleSdyZSBkaXNjcmV0ZSBjaGlwcywgYW5kIHRoZSBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlbSBvdmVyIEkyQy9TUEkvU01JLiBJbiBhIHN0YW5kYXJkIFFFTVUgYW1kNjQgZW52aXJvbm1lbnQsIHdpdGhvdXQgY3VzdG9tIGRldmljZSB0cmVlcyBvciBhY3R1YWwgaGFyZHdhcmUsIHRoZXJlJ3Mgbm8gZW11bGF0ZWQgS1NaIHN3aXRjaCBkZXZpY2UuIEFueSBJMkMgcHJvYmluZyAoYGtzel9zd2l0Y2hfZGV0ZWN0YCkgd291bGQgZmFpbCBiZWNhdXNlIG5vIGRldmljZSB3b3VsZCByZXNwb25kIChFTlhJTy9FSU8pLCBvciBpZiBhIGR1bW15IHJlZ21hcCByZXR1cm5zIGFsbCB6ZXJvcyBvciBvbmVzLCBga3N6X3N3aXRjaF9kZXRlY3RgIHJldHVybnMgRU5PREVWIGJlY2F1c2UgdGhlIGNoaXAgSUQgcmVhZCBmcm9tIHRoZSByZWdpc3RlcnMgd291bGRuJ3QgbWF0Y2ggYW55IHZhbGlkIEtTWiBjaGlwIElELiBJJ20gdGhpbmtpbmcgaGVyZSBvZiByZWdpc3RlcnMgYW5kIHJlYWRpbmcgdGhlIGNoaXAgSUQ6IEtTWjg0X0ZBTUlMWV9JRCA9IDB4ODQsIEtTWjg3ID0gMHg4NywgS1NaODggPSAweDg4LCBLU1o5NDc3X0NISVBfSUQgPSAweDAwOTQ3NzAwLCBhbmQgc28gb24uXG5cblRoZSBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpIHN3aXRjaCBkcml2ZXJzIGFyZSBmb3IgKnBoeXNpY2FsKiBoYXJkd2FyZSwgbGlrZSBNaWNyb2NoaXAgS1NaLCBSZWFsdGVrLCBNYXJ2ZWxsLCBhbmQgU0pBMTEwNS4gU28sIHRoZSBib3R0b20gbGluZSBpcyB0aGF0IHRoZXNlIGRyaXZlcnMgcmVxdWlyZSB0aGUgYWN0dWFsIHN3aXRjaCBoYXJkd2FyZSAvIEFTSUNzLlxuXG5JJ3ZlIHRha2VuIGEgbG9vayBhdCB0aGUgbW9kaWZpZWQgZmlsZXM6IGBkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uY2AsIGBkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaGAsIGFuZCBgaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaGAuIFRoaXMgY29tbWl0J3MgYWRkaW5nIHN1cHBvcnQgZm9yIHRoZSBLU1o5ODk3UyB2YXJpYW50IGJ5IGNoZWNraW5nIGEgcGFydGljdWxhciBiaXQgKGJpdCA3IG9mIHRoZSBYTUlJIGNvbnRyb2wgMCByZWdpc3RlcikgdG8gZGlmZmVyZW50aWF0ZSBpdCBmcm9tIEtTWjk4OTdSLlxuXG5BbmFseXppbmcgdGhlIGRpZmYsIGBrc3pfY29tbW9uLmNgIG5vdyBpbmNsdWRlcyBhIGBbS1NaOTg5N1NdYCBlbnRyeSBpbiBga3N6X3N3aXRjaF9jaGlwc1tdYCBhbmQgYSByZWdpc3RlciBjaGVjay4gYGtzel9jb21tb24uaGAgaW50cm9kdWNlcyBgS1NaOTg5N1NgIHRvIHRoZSBgZW51bSBrc3pfbW9kZWxgIGFuZCBkZWZpbmVzIG5ldyBjb25zdGFudHMuIGBtaWNyb2NoaXAta3N6LmhgIGFkZHMgYEtTWjk4OTdTX0NISVBfSURgLlxuXG5BbGwgdGhlc2UgY2hhbmdlcyBhcmUgKmV4Y2x1c2l2ZWx5KiB3aXRoaW4gdGhlIE1pY3JvY2hpcCBLU1ogRXRoZXJuZXQgc3dpdGNoIGRyaXZlciwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIGRpc2NyZXRlIHBoeXNpY2FsIGhhcmR3YXJlIEFTSUNzLCBhbmQgaXQncyB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCBRRU1VL3N5emthbGxlci5cblxuVGhlcmVmb3JlLCBiZWNhdXNlIHRoZSBjb2RlIGV4Y2x1c2l2ZWx5IHRvdWNoZXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLCBteSBjb25jbHVzaW9uIGlzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDpcbjEuICBUaGUgcGF0Y2ggYWRkcyBLU1o5ODk3UyBzdXBwb3J0LlxuMi4gIFRoZSBkcml2ZXIgaW50ZXJhY3RzIHdpdGggcGh5c2ljYWwgTWljcm9jaGlwIHN3aXRjaCBBU0lDcy5cbjMuICBObyBlbXVsYXRpb24gaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxuNC4gIEhlbmNlLCBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuTm93LCB0aW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcxODEsIk91dHB1dFRva2VucyI6MTI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE2MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE0OjI5OjM3LjY5NDAyMzI3MVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgZGlzdGluZ3Vpc2hpbmcgdGhlIEtTWjk4OTdTIEV0aGVybmV0IHN3aXRjaCB2YXJpYW50IHdpdGhpbiB0aGUgTWljcm9jaGlwIEtTWiBzd2l0Y2ggRFNBIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC8pLiBUaGlzIGRyaXZlciBpbnRlcmFjdHMgd2l0aCBkaXNjcmV0ZSBwaHlzaWNhbCBNaWNyb2NoaXAgc3dpdGNoIEFTSUNzIG92ZXIgSTJDL1NQSS9TTUkgYnVzZXMuIEJlY2F1c2UgdGhlIHJlcXVpcmVkIHBoeXNpY2FsIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChlLmcuLCBRRU1VIGFtZDY0KSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBkaXN0aW5ndWlzaGluZyB0aGUgS1NaOTg5N1MgRXRoZXJuZXQgc3dpdGNoIHZhcmlhbnQgd2l0aGluIHRoZSBNaWNyb2NoaXAgS1NaIHN3aXRjaCBEU0EgZHJpdmVyIChkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwLykuIFRoaXMgZHJpdmVyIGludGVyYWN0cyB3aXRoIGRpc2NyZXRlIHBoeXNpY2FsIE1pY3JvY2hpcCBzd2l0Y2ggQVNJQ3Mgb3ZlciBJMkMvU1BJL1NNSSBidXNlcy4gQmVjYXVzZSB0aGUgcmVxdWlyZWQgcGh5c2ljYWwgaGFyZHdhcmUgaXMgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKGUuZy4sIFFFTVUgYW1kNjQpLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNDoyOTozNy42OTQwNDkzOFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzM2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowdjcs7[1] Phase: Running StartedAt: 2026-09-05 14:29:49 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdjcs7[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-05 14:29:49 +0000 UTC FinishedAt: 2026-09-05 14:29:52 +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,}