Name: series-workflowfpcx5 Phase: Failed StartedAt: 2026-09-04 05:18:35 +0000 UTC FinishedAt: 2026-09-04 05:21:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfpcx5[0] Phase: Succeeded StartedAt: 2026-09-04 05:18:35 +0000 UTC FinishedAt: 2026-09-04 05:21:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfpcx5[0].run-triage Phase: Succeeded StartedAt: 2026-09-04 05:18:35 +0000 UTC FinishedAt: 2026-09-04 05:21:35 +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+CgkJCTx0ZD4yMDI2LzA5LzA0IDA1OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT04mIzM0OywKICAgICYjMzQ7TkVUX0RTQV9NSUNST0NISVBfS1NaOTQ3N19JMkMmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9NSUNST0NISVBfS1NaX1NQSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7JiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIE1pY3JvY2hpcCBLU1o5ODk3UyBzd2l0Y2ggdmFyaWFudCB0byB0aGUgTWljcm9jaGlwIEtTWiBEU0Egc3dpdGNoIGRyaXZlciAoa3N6X2NvbW1vbi5jKS4gVGhpcyBkcml2ZXIgY29udHJvbHMgcGh5c2ljYWwgRXRoZXJuZXQgc3dpdGNoIElDcyBpbnRlcmZhY2VkIHZpYSBTUEkgb3IgSTJDLiBCZWNhdXNlIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpIGxhY2sgZW11bGF0aW9uIGZvciB0aGVzZSBwaHlzaWNhbCBzd2l0Y2ggY2hpcHMsIHRoZSBtb2RpZmllZCBoYXJkd2FyZS1zcGVjaWZpYyBkZXRlY3Rpb24gYW5kIGNoaXAgZGF0YSBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDU6MTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyMWUzNmEzYmQyODFkYmIwNGMzODlmZTQ4MjczODJjZTFjMzIxZWIzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgNCAwNToxOTo0NyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jXG5pbmRleCAxYTlkNmY4M2EwMjMyLi4wYmM4MDlmNTgyYmVkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jXG5AQCAtMTQ4Niw2ICYjNDM7MTQ4Niw0MSBAQCBjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSBrc3pfc3dpdGNoX2NoaXBzW10gPSB7XG4gXHRcdC5nYml0X2NhcGFibGVcdD0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWV9LFxuIFx0fSxcbiBcbiYjNDM7XHRbS1NaOTg5N1NdID0ge1xuJiM0MztcdFx0LmNoaXBfaWQgPSBLU1o5ODk3U19DSElQX0lELFxuJiM0MztcdFx0LmRldl9uYW1lID0gXCYjMzQ7S1NaOTg5N1NcJiMzNDssXG4mIzQzO1x0XHQubnVtX3ZsYW5zID0gNDA5NixcbiYjNDM7XHRcdC5udW1fYWx1cyA9IDQwOTYsXG4mIzQzO1x0XHQubnVtX3N0YXRpY3MgPSAxNixcbiYjNDM7XHRcdC5jcHVfcG9ydHMgPSAweDdGLFx0LyogY2FuIGJlIGNvbmZpZ3VyZWQgYXMgY3B1IHBvcnQgKi9cbiYjNDM7XHRcdC5wb3J0X2NudCA9IDcsXHRcdC8qIHRvdGFsIHBoeXNpY2FsIHBvcnQgY291bnQgKi9cbiYjNDM7XHRcdC5wb3J0X25pcnFzID0gMixcbiYjNDM7XHRcdC5udW1fdHhfcXVldWVzID0gNCxcbiYjNDM7XHRcdC5udW1faXBtcyA9IDgsXG4mIzQzO1x0XHQub3BzID0gXHUwMDI2a3N6OTQ3N19kZXZfb3BzLFxuJiM0MztcdFx0LnN3aXRjaF9vcHMgPSBcdTAwMjZrc3o5NDc3X3N3aXRjaF9vcHMsXG4mIzQzO1x0XHQucGh5bGlua19tYWNfb3BzID0gXHUwMDI2a3N6OTQ3N19waHlsaW5rX21hY19vcHMsXG4mIzQzO1x0XHQucGh5X2VycmF0YV85NDc3ID0gdHJ1ZSxcbiYjNDM7XHRcdC5taWJfbmFtZXMgPSBrc3o5NDc3X21pYl9uYW1lcyxcbiYjNDM7XHRcdC5taWJfY250ID0gQVJSQVlfU0laRShrc3o5NDc3X21pYl9uYW1lcyksXG4mIzQzO1x0XHQucmVnX21pYl9jbnQgPSBNSUJfQ09VTlRFUl9OVU0sXG4mIzQzO1x0XHQucmVncyA9IGtzejk0NzdfcmVncyxcbiYjNDM7XHRcdC5tYXNrcyA9IGtzejk0NzdfbWFza3MsXG4mIzQzO1x0XHQuc2hpZnRzID0ga3N6OTQ3N19zaGlmdHMsXG4mIzQzO1x0XHQueG1paV9jdHJsMCA9IGtzejk0NzdfeG1paV9jdHJsMCxcbiYjNDM7XHRcdC54bWlpX2N0cmwxID0ga3N6OTQ3N194bWlpX2N0cmwxLFxuJiM0MztcdFx0LnN1cHBvcnRzX21paVx0PSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsXG4mIzQzO1x0XHRcdFx0ICAgZmFsc2UsIHRydWUsIGZhbHNlfSxcbiYjNDM7XHRcdC5zdXBwb3J0c19ybWlpXHQ9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxcbiYjNDM7XHRcdFx0XHQgICBmYWxzZSwgdHJ1ZSwgZmFsc2V9LFxuJiM0MztcdFx0LnN1cHBvcnRzX3JnbWlpID0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLFxuJiM0MztcdFx0XHRcdCAgIGZhbHNlLCB0cnVlLCBmYWxzZX0sXG4mIzQzO1x0XHQuaW50ZXJuYWxfcGh5XHQ9IHt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLFxuJiM0MztcdFx0XHRcdCAgIHRydWUsIGZhbHNlLCBmYWxzZX0sXG4mIzQzO1x0XHQuZ2JpdF9jYXBhYmxlXHQ9IHt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlfSxcbiYjNDM7XHRcdC5zZ21paV9wb3J0ID0gNyxcbiYjNDM7XHR9LFxuJiM0MztcbiBcdFtLU1o5ODkzXSA9IHtcbiBcdFx0LmNoaXBfaWQgPSBLU1o5ODkzX0NISVBfSUQsXG4gXHRcdC5kZXZfbmFtZSA9IFwmIzM0O0tTWjk4OTNcJiMzNDssXG5AQCAtMTg1Miw2ICYjNDM7MTg4NywxMyBAQCBzdGF0aWMgaW50IGtzel9jaGVja19kZXZpY2VfaWQoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbiBcdFx0ZXhwZWN0ZWRfY2hpcF9pZCA9IGV4cGVjdGVkX2NoaXBfZGF0YS1cdTAwM2VjaGlwX2lkO1xuIFx0fVxuIFxuJiM0MztcdC8qIFRoZSBLU1o5ODk3UyBpcyBvbmx5IHRvbGQgYXBhcnQgZnJvbSB0aGUgS1NaOTg5N1IgYXQgcnVuIHRpbWUsIHNvIGFcbiYjNDM7XHQgKiBkZXZpY2UgdHJlZSBuYW1pbmcgdGhlIEtTWjk4OTcgbWF0Y2hlcyBpdCBhcyB3ZWxsLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChleHBlY3RlZF9jaGlwX2lkID09IEtTWjk4OTdfQ0hJUF9JRCBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgZGV2LVx1MDAzZWNoaXBfaWQgPT0gS1NaOTg5N1NfQ0hJUF9JRClcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiBcdGlmIChleHBlY3RlZF9jaGlwX2lkICE9IGRldi1cdTAwM2VjaGlwX2lkKSB7XG4gXHRcdGRldl9lcnIoZGV2LVx1MDAzZWRldixcbiBcdFx0XHRcJiMzNDtEZXZpY2UgdHJlZSBzcGVjaWZpZXMgY2hpcCAlcyBidXQgZm91bmQgJXMsIHBsZWFzZSBmaXggaXQhXFxuXCYjMzQ7LFxuQEAgLTI5NjYsNyAmIzQzOzMwMDgsNiBAQCBzdGF0aWMgaW50IGtzel9zd2l0Y2hfZGV0ZWN0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG4gXHRcdHN3aXRjaCAoaWQzMikge1xuIFx0XHRjYXNlIEtTWjk0NzdfQ0hJUF9JRDpcbiBcdFx0Y2FzZSBLU1o5ODk2X0NISVBfSUQ6XG4tXHRcdGNhc2UgS1NaOTg5N19DSElQX0lEOlxuIFx0XHRjYXNlIEtTWjk1NjdfQ0hJUF9JRDpcbiBcdFx0Y2FzZSBLU1o4NTY3X0NISVBfSUQ6XG4gXHRcdGNhc2UgTEFOOTM3MF9DSElQX0lEOlxuQEAgLTI5NzksNiAmIzQzOzMwMjAsMjMgQEAgc3RhdGljIGludCBrc3pfc3dpdGNoX2RldGVjdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuIFx0XHRcdGlmIChkZXYtXHUwMDNlY2hpcF9pZCAhPSBMQU45NjQ2X0NISVBfSUQpXG4gXHRcdFx0XHRkZXYtXHUwMDNlY2hpcF9pZCA9IGlkMzI7XG4gXHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRjYXNlIEtTWjk4OTdfQ0hJUF9JRDpcbiYjNDM7XHRcdFx0LyogT25seSB0aGUgS1NaOTg5N1MgaGFzIGFuIFNHTUlJIHBvcnQgNzsgdGhlIEtTWjk4OTdSXG4mIzQzO1x0XHRcdCAqIGhhcyBhIHNlY29uZCBSR01JSSBwb3J0IGluc3RlYWQuIFNlZSB0aGUgS1NaOTg5N1NcbiYjNDM7XHRcdFx0ICogZGF0YSBzaGVldCBEUzAwMDAyMzk0QyBzZWN0aW9uIDUuMi40LjEgYW5kIHRoZVxuJiM0MztcdFx0XHQgKiBLU1o5ODk3UiBkYXRhIHNoZWV0IERTMDAwMDIzMzBEIHNlY3Rpb24gNS4yLjMuMS5cbiYjNDM7XHRcdFx0ICovXG4mIzQzO1x0XHRcdHJldCA9IGtzel9yZWFkOChkZXYsIEtTWjk4OTdfUkVHX1BPUlQ3X1hNSUlfQ1RSTF8wLFxuJiM0MztcdFx0XHRcdFx0XHUwMDI2aWQ0KTtcbiYjNDM7XHRcdFx0aWYgKHJldClcbiYjNDM7XHRcdFx0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHRcdFx0aWYgKGlkNCBcdTAwMjYgS1NaOTg5N19QT1JUN19TR01JSV9TRUwpXG4mIzQzO1x0XHRcdFx0ZGV2LVx1MDAzZWNoaXBfaWQgPSBLU1o5ODk3U19DSElQX0lEO1xuJiM0MztcdFx0XHRlbHNlXG4mIzQzO1x0XHRcdFx0ZGV2LVx1MDAzZWNoaXBfaWQgPSBLU1o5ODk3X0NISVBfSUQ7XG4mIzQzO1xuJiM0MztcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBLU1o5ODkzX0NISVBfSUQ6XG4gXHRcdFx0cmV0ID0ga3N6X3JlYWQ4KGRldiwgUkVHX0NISVBfSUQ0LFxuIFx0XHRcdFx0XHRcdTAwMjZpZDQpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oIGIvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmhcbmluZGV4IGNiZTk4NDk0NTc4YzMuLjBjZmYzM2RmMDZhNGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmhcbkBAIC0yODQsNiAmIzQzOzI4NCw3IEBAIGVudW0ga3N6X21vZGVsIHtcbiBcdEtTWjk0NzcsXG4gXHRLU1o5ODk2LFxuIFx0S1NaOTg5NyxcbiYjNDM7XHRLU1o5ODk3UyxcbiBcdEtTWjk4OTMsXG4gXHRLU1o5NTYzLFxuIFx0S1NaOTU2NyxcbkBAIC04NzQsNiAmIzQzOzg3NSwxMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wga3N6X2lzX3NnbWlpX3BvcnQoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQpXG4gI2RlZmluZSBTS1VfSURfS1NaODU2M1x0XHRcdDB4M2NcbiAjZGVmaW5lIFNLVV9JRF9LU1o5NTYzXHRcdFx0MHgxY1xuIFxuJiM0MzsvKiBLU1o5ODk3IHNwZWNpZmljIHJlZ2lzdGVyOiBwb3J0IDcgWE1JSSBjb250cm9sIDAgKi9cbiYjNDM7I2RlZmluZSBLU1o5ODk3X1JFR19QT1JUN19YTUlJX0NUUkxfMFx0MHg3MzAwXG4mIzQzOyNkZWZpbmUgS1NaOTg5N19QT1JUN19TR01JSV9TRUxcdFx0QklUKDcpXG4mIzQzO1xuIC8qIERyaXZlciBzZXQgc3dpdGNoIGJyb2FkY2FzdCBzdG9ybSBwcm90ZWN0aW9uIGF0IDEwJSByYXRlLiAqL1xuICNkZWZpbmUgQlJPQURDQVNUX1NUT1JNX1BST1RfUkFURVx0MTBcbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbWljcm9jaGlwLWtzei5oIGIvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaFxuaW5kZXggMDI4NzgxYWQ0MDU5My4uZmU4ZGYxNzc0Mjg5YyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9taWNyb2NoaXAta3N6LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9taWNyb2NoaXAta3N6LmhcbkBAIC0zNCw2ICYjNDM7MzQsNyBAQCBlbnVtIGtzel9jaGlwX2lkIHtcbiBcdEtTWjk0NzdfQ0hJUF9JRCA9IDB4MDA5NDc3MDAsXG4gXHRLU1o5ODk2X0NISVBfSUQgPSAweDAwOTg5NjAwLFxuIFx0S1NaOTg5N19DSElQX0lEID0gMHgwMDk4OTcwMCxcbiYjNDM7XHRLU1o5ODk3U19DSElQX0lEID0gMHgwMDk4OTcwMSxcbiBcdEtTWjk4OTNfQ0hJUF9JRCA9IDB4MDA5ODkzMDAsXG4gXHRLU1o5NTYzX0NISVBfSUQgPSAweDAwOTU2MzAwLFxuIFx0S1NaODU2N19DSElQX0lEID0gMHgwMDg1NjcwMCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwNToxOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OJiMzNDssCiAgICAmIzM0O05FVF9EU0FfTUlDUk9DSElQX0tTWjk0NzdfSTJDJiMzNDssCiAgICAmIzM0O05FVF9EU0FfTUlDUk9DSElQX0tTWl9TUEkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgTWljcm9jaGlwIEtTWjk4OTdTIHN3aXRjaCB2YXJpYW50IHRvIHRoZSBNaWNyb2NoaXAgS1NaIERTQSBzd2l0Y2ggZHJpdmVyIChrc3pfY29tbW9uLmMpLiBUaGlzIGRyaXZlciBjb250cm9scyBwaHlzaWNhbCBFdGhlcm5ldCBzd2l0Y2ggSUNzIGludGVyZmFjZWQgdmlhIFNQSSBvciBJMkMuIEJlY2F1c2Ugc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgbGFjayBlbXVsYXRpb24gZm9yIHRoZXNlIHBoeXNpY2FsIHN3aXRjaCBjaGlwcywgdGhlIG1vZGlmaWVkIGhhcmR3YXJlLXNwZWNpZmljIGRldGVjdGlvbiBhbmQgY2hpcCBkYXRhIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDIxZTM2YTNiZDI4MWRiYjA0YzM4OWZlNDgyNzM4MmNlMWMzMjFlYjMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIFNlcCA0IDA1OjE5OjQ3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYwppbmRleCAxYTlkNmY4M2EwMjMyLi4wYmM4MDlmNTgyYmVkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYwpAQCAtMTQ4Niw2ICYjNDM7MTQ4Niw0MSBAQCBjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSBrc3pfc3dpdGNoX2NoaXBzW10gPSB7CiAJCS5nYml0X2NhcGFibGUJPSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZX0sCiAJfSwKIAomIzQzOwlbS1NaOTg5N1NdID0gewomIzQzOwkJLmNoaXBfaWQgPSBLU1o5ODk3U19DSElQX0lELAomIzQzOwkJLmRldl9uYW1lID0gJiMzNDtLU1o5ODk3UyYjMzQ7LAomIzQzOwkJLm51bV92bGFucyA9IDQwOTYsCiYjNDM7CQkubnVtX2FsdXMgPSA0MDk2LAomIzQzOwkJLm51bV9zdGF0aWNzID0gMTYsCiYjNDM7CQkuY3B1X3BvcnRzID0gMHg3RiwJLyogY2FuIGJlIGNvbmZpZ3VyZWQgYXMgY3B1IHBvcnQgKi8KJiM0MzsJCS5wb3J0X2NudCA9IDcsCQkvKiB0b3RhbCBwaHlzaWNhbCBwb3J0IGNvdW50ICovCiYjNDM7CQkucG9ydF9uaXJxcyA9IDIsCiYjNDM7CQkubnVtX3R4X3F1ZXVlcyA9IDQsCiYjNDM7CQkubnVtX2lwbXMgPSA4LAomIzQzOwkJLm9wcyA9ICZhbXA7a3N6OTQ3N19kZXZfb3BzLAomIzQzOwkJLnN3aXRjaF9vcHMgPSAmYW1wO2tzejk0Nzdfc3dpdGNoX29wcywKJiM0MzsJCS5waHlsaW5rX21hY19vcHMgPSAmYW1wO2tzejk0NzdfcGh5bGlua19tYWNfb3BzLAomIzQzOwkJLnBoeV9lcnJhdGFfOTQ3NyA9IHRydWUsCiYjNDM7CQkubWliX25hbWVzID0ga3N6OTQ3N19taWJfbmFtZXMsCiYjNDM7CQkubWliX2NudCA9IEFSUkFZX1NJWkUoa3N6OTQ3N19taWJfbmFtZXMpLAomIzQzOwkJLnJlZ19taWJfY250ID0gTUlCX0NPVU5URVJfTlVNLAomIzQzOwkJLnJlZ3MgPSBrc3o5NDc3X3JlZ3MsCiYjNDM7CQkubWFza3MgPSBrc3o5NDc3X21hc2tzLAomIzQzOwkJLnNoaWZ0cyA9IGtzejk0Nzdfc2hpZnRzLAomIzQzOwkJLnhtaWlfY3RybDAgPSBrc3o5NDc3X3htaWlfY3RybDAsCiYjNDM7CQkueG1paV9jdHJsMSA9IGtzejk0NzdfeG1paV9jdHJsMSwKJiM0MzsJCS5zdXBwb3J0c19taWkJPSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCiYjNDM7CQkJCSAgIGZhbHNlLCB0cnVlLCBmYWxzZX0sCiYjNDM7CQkuc3VwcG9ydHNfcm1paQk9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKJiM0MzsJCQkJICAgZmFsc2UsIHRydWUsIGZhbHNlfSwKJiM0MzsJCS5zdXBwb3J0c19yZ21paSA9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKJiM0MzsJCQkJICAgZmFsc2UsIHRydWUsIGZhbHNlfSwKJiM0MzsJCS5pbnRlcm5hbF9waHkJPSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwKJiM0MzsJCQkJICAgdHJ1ZSwgZmFsc2UsIGZhbHNlfSwKJiM0MzsJCS5nYml0X2NhcGFibGUJPSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZX0sCiYjNDM7CQkuc2dtaWlfcG9ydCA9IDcsCiYjNDM7CX0sCiYjNDM7CiAJW0tTWjk4OTNdID0gewogCQkuY2hpcF9pZCA9IEtTWjk4OTNfQ0hJUF9JRCwKIAkJLmRldl9uYW1lID0gJiMzNDtLU1o5ODkzJiMzNDssCkBAIC0xODUyLDYgJiM0MzsxODg3LDEzIEBAIHN0YXRpYyBpbnQga3N6X2NoZWNrX2RldmljZV9pZChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KQogCQlleHBlY3RlZF9jaGlwX2lkID0gZXhwZWN0ZWRfY2hpcF9kYXRhLSZndDtjaGlwX2lkOwogCX0KIAomIzQzOwkvKiBUaGUgS1NaOTg5N1MgaXMgb25seSB0b2xkIGFwYXJ0IGZyb20gdGhlIEtTWjk4OTdSIGF0IHJ1biB0aW1lLCBzbyBhCiYjNDM7CSAqIGRldmljZSB0cmVlIG5hbWluZyB0aGUgS1NaOTg5NyBtYXRjaGVzIGl0IGFzIHdlbGwuCiYjNDM7CSAqLwomIzQzOwlpZiAoZXhwZWN0ZWRfY2hpcF9pZCA9PSBLU1o5ODk3X0NISVBfSUQgJmFtcDsmYW1wOwomIzQzOwkgICAgZGV2LSZndDtjaGlwX2lkID09IEtTWjk4OTdTX0NISVBfSUQpCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKIAlpZiAoZXhwZWN0ZWRfY2hpcF9pZCAhPSBkZXYtJmd0O2NoaXBfaWQpIHsKIAkJZGV2X2VycihkZXYtJmd0O2RldiwKIAkJCSYjMzQ7RGV2aWNlIHRyZWUgc3BlY2lmaWVzIGNoaXAgJXMgYnV0IGZvdW5kICVzLCBwbGVhc2UgZml4IGl0IVxuJiMzNDssCkBAIC0yOTY2LDcgJiM0MzszMDA4LDYgQEAgc3RhdGljIGludCBrc3pfc3dpdGNoX2RldGVjdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KQogCQlzd2l0Y2ggKGlkMzIpIHsKIAkJY2FzZSBLU1o5NDc3X0NISVBfSUQ6CiAJCWNhc2UgS1NaOTg5Nl9DSElQX0lEOgotCQljYXNlIEtTWjk4OTdfQ0hJUF9JRDoKIAkJY2FzZSBLU1o5NTY3X0NISVBfSUQ6CiAJCWNhc2UgS1NaODU2N19DSElQX0lEOgogCQljYXNlIExBTjkzNzBfQ0hJUF9JRDoKQEAgLTI5NzksNiAmIzQzOzMwMjAsMjMgQEAgc3RhdGljIGludCBrc3pfc3dpdGNoX2RldGVjdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KQogCQkJaWYgKGRldi0mZ3Q7Y2hpcF9pZCAhPSBMQU45NjQ2X0NISVBfSUQpCiAJCQkJZGV2LSZndDtjaGlwX2lkID0gaWQzMjsKIAkJCWJyZWFrOwomIzQzOwkJY2FzZSBLU1o5ODk3X0NISVBfSUQ6CiYjNDM7CQkJLyogT25seSB0aGUgS1NaOTg5N1MgaGFzIGFuIFNHTUlJIHBvcnQgNzsgdGhlIEtTWjk4OTdSCiYjNDM7CQkJICogaGFzIGEgc2Vjb25kIFJHTUlJIHBvcnQgaW5zdGVhZC4gU2VlIHRoZSBLU1o5ODk3UwomIzQzOwkJCSAqIGRhdGEgc2hlZXQgRFMwMDAwMjM5NEMgc2VjdGlvbiA1LjIuNC4xIGFuZCB0aGUKJiM0MzsJCQkgKiBLU1o5ODk3UiBkYXRhIHNoZWV0IERTMDAwMDIzMzBEIHNlY3Rpb24gNS4yLjMuMS4KJiM0MzsJCQkgKi8KJiM0MzsJCQlyZXQgPSBrc3pfcmVhZDgoZGV2LCBLU1o5ODk3X1JFR19QT1JUN19YTUlJX0NUUkxfMCwKJiM0MzsJCQkJCSZhbXA7aWQ0KTsKJiM0MzsJCQlpZiAocmV0KQomIzQzOwkJCQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwkJCWlmIChpZDQgJmFtcDsgS1NaOTg5N19QT1JUN19TR01JSV9TRUwpCiYjNDM7CQkJCWRldi0mZ3Q7Y2hpcF9pZCA9IEtTWjk4OTdTX0NISVBfSUQ7CiYjNDM7CQkJZWxzZQomIzQzOwkJCQlkZXYtJmd0O2NoaXBfaWQgPSBLU1o5ODk3X0NISVBfSUQ7CiYjNDM7CiYjNDM7CQkJYnJlYWs7CiAJCWNhc2UgS1NaOTg5M19DSElQX0lEOgogCQkJcmV0ID0ga3N6X3JlYWQ4KGRldiwgUkVHX0NISVBfSUQ0LAogCQkJCQkmYW1wO2lkNCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaCBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oCmluZGV4IGNiZTk4NDk0NTc4YzMuLjBjZmYzM2RmMDZhNGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oCkBAIC0yODQsNiAmIzQzOzI4NCw3IEBAIGVudW0ga3N6X21vZGVsIHsKIAlLU1o5NDc3LAogCUtTWjk4OTYsCiAJS1NaOTg5NywKJiM0MzsJS1NaOTg5N1MsCiAJS1NaOTg5MywKIAlLU1o5NTYzLAogCUtTWjk1NjcsCkBAIC04NzQsNiAmIzQzOzg3NSwxMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wga3N6X2lzX3NnbWlpX3BvcnQoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQpCiAjZGVmaW5lIFNLVV9JRF9LU1o4NTYzCQkJMHgzYwogI2RlZmluZSBTS1VfSURfS1NaOTU2MwkJCTB4MWMKIAomIzQzOy8qIEtTWjk4OTcgc3BlY2lmaWMgcmVnaXN0ZXI6IHBvcnQgNyBYTUlJIGNvbnRyb2wgMCAqLwomIzQzOyNkZWZpbmUgS1NaOTg5N19SRUdfUE9SVDdfWE1JSV9DVFJMXzAJMHg3MzAwCiYjNDM7I2RlZmluZSBLU1o5ODk3X1BPUlQ3X1NHTUlJX1NFTAkJQklUKDcpCiYjNDM7CiAvKiBEcml2ZXIgc2V0IHN3aXRjaCBicm9hZGNhc3Qgc3Rvcm0gcHJvdGVjdGlvbiBhdCAxMCUgcmF0ZS4gKi8KICNkZWZpbmUgQlJPQURDQVNUX1NUT1JNX1BST1RfUkFURQkxMAogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbWljcm9jaGlwLWtzei5oIGIvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaAppbmRleCAwMjg3ODFhZDQwNTkzLi5mZThkZjE3NzQyODljIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbWljcm9jaGlwLWtzei5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9taWNyb2NoaXAta3N6LmgKQEAgLTM0LDYgJiM0MzszNCw3IEBAIGVudW0ga3N6X2NoaXBfaWQgewogCUtTWjk0NzdfQ0hJUF9JRCA9IDB4MDA5NDc3MDAsCiAJS1NaOTg5Nl9DSElQX0lEID0gMHgwMDk4OTYwMCwKIAlLU1o5ODk3X0NISVBfSUQgPSAweDAwOTg5NzAwLAomIzQzOwlLU1o5ODk3U19DSElQX0lEID0gMHgwMDk4OTcwMSwKIAlLU1o5ODkzX0NISVBfSUQgPSAweDAwOTg5MzAwLAogCUtTWjk1NjNfQ0hJUF9JRCA9IDB4MDA5NTYzMDAsCiAJS1NaODU2N19DSElQX0lEID0gMHgwMDg1NjcwMCwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDU6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg4NgoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDE4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBc3Nlc3NpbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIFRoaXMgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGhpbmdlcyBvbiB3aGV0aGVyIHRoaXMgcGF0Y2ggd2FycmFudHMgdGhlIGZ1bGwgc3l6a2FsbGVyIHRyZWF0bWVudC4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGUgY2hhbmdlLiBJdCBsb29rcyBsaWtlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBwYXRjaCB0aGF0IGFkZHMgc3VwcG9ydCBmb3IgdGhlIEtTWjk4OTdTIHN3aXRjaCBjaGlwIHRvIHRoZSBNaWNyb2NoaXAgS1NaIERTQSBzd2l0Y2ggZHJpdmVyLiBJdCB0b3VjaGVzIGBrc3pfY29tbW9uLmNgLCBga3N6X2NvbW1vbi5oYCwgYW5kIGEgaGVhZGVyIGZpbGUuIE5vIHN1cnByaXNlcyB0aGVyZS4KCk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IGhvdyBpcyB0aGlzIGRyaXZlciBpbnN0YW50aWF0ZWQ/IElzIHRoaXMgYW4gU1BJLCBJMkMsIE1NSU8sIG9yIGEgRFNBIGRyaXZlcj8gQ2FuIEkgcmVsaWFibHkgcmVwcm9kdWNlIHRoaXMgaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50IGxpa2UgUUVNVSwgb3IgYXJlIHdlIGxvb2tpbmcgYXQgYSBoYXJkd2FyZSBkZXBlbmRlbmN5PyBUaGF0JiMzOTtzIGdvaW5nIHRvIGJlIHRoZSBkZWNpZGluZyBmYWN0b3IgaW4gd2hldGhlciB0aGlzIGlzIHByYWN0aWNhbGx5IGZ1enphYmxlLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9gIGZpbGVzIHRvIHVuZGVyc3RhbmQgdGhlIGRyaXZlciYjMzk7cyBhdHRhY2htZW50IG1lY2hhbmlzbS4gVGhpcyB3aWxsIHRlbGwgbWUgaWYgSSBjYW4gZ2V0IGF0IHRoaXMgZnVuY3Rpb25hbGl0eSB3aXRob3V0IG5lZWRpbmcgdG8gc291cmNlIGJlc3Bva2UgaGFyZHdhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDU6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3NwaV9kcml2ZXJ8bW9kdWxlX2kyY19kcml2ZXJ8a3N6XyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDU2OTQgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfTkVUX0RTQV9NSUNST0NISVBfS1NaX0NPTU1PTilcdCYjNDM7PSBrc3pfc3dpdGNoLm9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGU6Mzprc3pfc3dpdGNoLW9ianMgOj0ga3N6X2NvbW1vbi5vIGtzel9kY2Iub1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZTo0Omtzel9zd2l0Y2gtb2JqcyAmIzQzOz0ga3N6OTQ3Ny5vIGtzejk0NzdfYWNsLm8ga3N6OTQ3N190Y19mbG93ZXIub1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZTo1Omtzel9zd2l0Y2gtb2JqcyAmIzQzOz0ga3N6OC5vXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlOjY6a3N6X3N3aXRjaC1vYmpzICYjNDM7PSBsYW45Mzd4X21haW4ub1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZS03LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZT04PWlmZGVmIENPTkZJR19ORVRfRFNBX01JQ1JPQ0hJUF9LU1pfUFRQXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlOjk6a3N6X3N3aXRjaC1vYmpzICYjNDM7PSBrc3pfcHRwLm9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGUtMTAtZW5kaWZcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlPTEyPW9iai0kKENPTkZJR19ORVRfRFNBX01JQ1JPQ0hJUF9LU1o5NDc3X0kyQylcdCYjNDM7PSBrc3o5NDc3X2kyYy5vXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlOjEzOm9iai0kKENPTkZJR19ORVRfRFNBX01JQ1JPQ0hJUF9LU1pfU1BJKVx0XHQmIzQzOz0ga3N6X3NwaS5vXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlLTE0LW9iai0kKENPTkZJR19ORVRfRFNBX01JQ1JPQ0hJUF9LU1o4ODYzX1NNSSlcdCYjNDM7PSBrc3o4ODYzX3NtaS5vXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTgtI2luY2x1ZGUgXHUwMDNjbGludXgvZGVsYXkuaFx1MDAzZVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTk6I2luY2x1ZGUgXHUwMDNjbGludXgvZHNhL2tzel9jb21tb24uaFx1MDAzZVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjAtI2luY2x1ZGUgXHUwMDNjbGludXgvZXhwb3J0LmhcdTAwM2Vcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zMy1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjM0OiNpbmNsdWRlIFwmIzM0O2tzel9jb21tb24uaFwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MzU6I2luY2x1ZGUgXCYjMzQ7a3N6X2RjYi5oXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zNi0jaW5jbHVkZSBcJiMzNDtrc3o4X3JlZy5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDktICovXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1MDpzdGF0aWMgY29uc3Qgc3RydWN0IGtzel9kcml2ZV9zdHJlbmd0aCBrc3o4OHgzX2RyaXZlX3N0cmVuZ3Roc1tdID0ge1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTEtXHR7IDAsICA4MDAwIH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9NTU9c3RydWN0IGtzejg4eHhfc3RhdHNfcmF3IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05MS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjkyOnN0YXRpYyB2b2lkIGtzel9jZmcoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTMyIGFkZHIsIHU4IGJpdHMsIGJvb2wgc2V0KVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTMte1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6OTQ6XHRrc3pfcm13OChkZXYsIGFkZHIsIGJpdHMsIHNldCA/IGJpdHMgOiAwKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTk1LX1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTk2LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6OTc6c3RhdGljIHZvaWQga3N6X3BvcnRfY2ZnKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0LCBpbnQgb2Zmc2V0LCB1OCBiaXRzLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTgtXHRcdFx0IGJvb2wgc2V0KVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTkte1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTAwOlx0a3N6X3JtdzgoZGV2LCBkZXYtXHUwMDNlZGV2X29wcy1cdTAwM2VnZXRfcG9ydF9hZGRyKHBvcnQsIG9mZnNldCksIGJpdHMsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDEtXHRcdCBzZXQgPyBiaXRzIDogMCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTEyLSAqIFBNRSBzd2l0Y2ggZnVuY3Rpb25hbGl0aWVzLiBCb3RoIDgtYml0IHJlZ2lzdGVycyAxMTAgYW5kIDExMSBhcmVcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjExMzogKiB3cml0dGVuIGF0IG9uY2Ugd2l0aCBrc3pfd3JpdGUxNiwgdXNpbmcgdGhlIHNlcmlhbCBtdWx0aXBsZSB3cml0ZVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTE0LSAqIGZ1bmN0aW9uYWxpdHkuXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTE3LSAqL1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTE4OnN0YXRpYyBpbnQga3N6OF9pbmRfd3JpdGU4KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHU4IHRhYmxlLCB1MTYgYWRkciwgdTggZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExOS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTI4LVx0Y3RybF9hZGRyID0gSU5EX0FDQ19UQUJMRSh0YWJsZSkgfCBhZGRyO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTI5Olx0cmV0ID0ga3N6X3dyaXRlMTYoZGV2LCByZWdzW1JFR19JTkRfQ1RSTF8wXSwgY3RybF9hZGRyKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzMC1cdGlmICghcmV0KVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTMxOlx0XHRyZXQgPSBrc3pfd3JpdGU4KGRldiwgcmVnc1tSRUdfSU5EX0JZVEVdLCBkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzMi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNDYtICogUE1FIHN3aXRjaCBmdW5jdGlvbmFsaXRpZXMuIEJvdGggOC1iaXQgcmVnaXN0ZXJzIDExMCBhbmQgMTExIGFyZVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTQ3OiAqIHdyaXR0ZW4gYXQgb25jZSB3aXRoIGtzel93cml0ZTE2LCB1c2luZyB0aGUgc2VyaWFsIG11bHRpcGxlIHdyaXRlXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNDgtICogZnVuY3Rpb25hbGl0eS5cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNTEtICovXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNTI6c3RhdGljIGludCBrc3o4X2luZF9yZWFkOChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1OCB0YWJsZSwgdTE2IGFkZHIsIHU4ICp2YWwpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNTMte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE2Mi1cdGN0cmxfYWRkciA9IElORF9BQ0NfVEFCTEUodGFibGUgfCBUQUJMRV9SRUFEKSB8IGFkZHI7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNjM6XHRyZXQgPSBrc3pfd3JpdGUxNihkZXYsIHJlZ3NbUkVHX0lORF9DVFJMXzBdLCBjdHJsX2FkZHIpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTY0LVx0aWYgKCFyZXQpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNjU6XHRcdHJldCA9IGtzel9yZWFkOChkZXYsIHJlZ3NbUkVHX0lORF9CWVRFXSwgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE2Ni1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNzEtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNzI6c3RhdGljIGludCBrc3o4X3BtZV93cml0ZTgoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTMyIHJlZywgdTggdmFsdWUpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNzMte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE3Ni1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjE3NzpzdGF0aWMgaW50IGtzejhfcG1lX3ByZWFkOChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydCwgaW50IG9mZnNldCwgdTggKmRhdGEpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNzgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE4My1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjE4NDpzdGF0aWMgaW50IGtzejhfcG1lX3B3cml0ZTgoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIGludCBvZmZzZXQsIHU4IGRhdGEpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xODUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jPTE5MT1zdGF0aWMgdm9pZCBrc3o4NDYzX2lycV9tYXNrKHN0cnVjdCBpcnFfZGF0YSAqZClcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE5Mi17XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxOTM6XHRzdHJ1Y3Qga3N6X2lycSAqa2lycSA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTk0LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jPTE5OD1zdGF0aWMgdm9pZCBrc3o4NDYzX2lycV91bm1hc2soc3RydWN0IGlycV9kYXRhICpkKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTk5LXtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjIwMDpcdHN0cnVjdCBrc3pfaXJxICpraXJxID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yMDEtXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MjA1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2NoaXAga3N6ODQ2M19pcnFfY2hpcCA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yMDgtXHQuaXJxX3VubWFza1x0XHQ9IGtzejg0NjNfaXJxX3VubWFzayxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjIwOTpcdC5pcnFfYnVzX2xvY2tcdFx0PSBrc3pfaXJxX2J1c19sb2NrLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjEwOlx0LmlycV9idXNfc3luY191bmxvY2tcdD0ga3N6X2lycV9idXNfc3luY191bmxvY2ssXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yMTEtfTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYz0yMjM9c3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfZG9tYWluX29wcyBrc3o4NDYzX2lycV9kb21haW5fb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTIyNy1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjIyODpzdGF0aWMgaW50IGtzejg0NjNfZ2lycV9zZXR1cChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjI5LXtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjIzMDpcdHN0cnVjdCBrc3pfaXJxICpnaXJxID0gXHUwMDI2ZGV2LVx1MDAzZWdpcnE7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yMzEtXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjM5LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjQwOlx0cmV0dXJuIGtzel9pcnFfY29tbW9uX3NldHVwKGRldiwgZ2lycSwgXHUwMDI2a3N6ODQ2M19pcnFfZG9tYWluX29wcyk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNDEtfVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjQyLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjQzOnN0YXRpYyBpbnQga3N6ODQ2M19yZXNldF9zd2l0Y2goc3RydWN0IGtzel9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI0NC17XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNDU6XHRrc3pfY2ZnKGRldiwgS1NaODQ2M19SRUdfU1dfUkVTRVQsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNDYtXHRcdEtTWjg0NjNfR0xPQkFMX1NPRlRXQVJFX1JFU0VUIHwgS1NaODQ2M19QVFBfU09GVFdBUkVfUkVTRVQsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNDctXHRcdHRydWUpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjQ4Olx0a3N6X2NmZyhkZXYsIEtTWjg0NjNfUkVHX1NXX1JFU0VULFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjQ5LVx0XHRLU1o4NDYzX0dMT0JBTF9TT0ZUV0FSRV9SRVNFVCB8IEtTWjg0NjNfUFRQX1NPRlRXQVJFX1JFU0VULFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI1My1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI1NDpzdGF0aWMgaW50IGtzejhfcmVzZXRfc3dpdGNoKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNTUte1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjU2Olx0aWYgKGtzel9pc19rc3o4OHgzKGRldikpIHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI1Ny1cdFx0LyogcmVzZXQgc3dpdGNoICovXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNTg6XHRcdGtzel9jZmcoZGV2LCBLU1o4ODYzX1JFR19TV19SRVNFVCxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI1OS1cdFx0XHRLU1o4ODYzX0dMT0JBTF9TT0ZUV0FSRV9SRVNFVCB8IEtTWjg4NjNfUENTX1JFU0VULCB0cnVlKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI2MDpcdFx0a3N6X2NmZyhkZXYsIEtTWjg4NjNfUkVHX1NXX1JFU0VULFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjYxLVx0XHRcdEtTWjg4NjNfR0xPQkFMX1NPRlRXQVJFX1JFU0VUIHwgS1NaODg2M19QQ1NfUkVTRVQsIGZhbHNlKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNjMtXHRcdC8qIHJlc2V0IHN3aXRjaCAqL1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjY0Olx0XHRrc3pfd3JpdGU4KGRldiwgUkVHX1BPV0VSX01BTkFHRU1FTlRfMSxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI2NS1cdFx0XHQgICBTV19TT0ZUV0FSRV9QT1dFUl9ET1dOIFx1MDAzY1x1MDAzYyBTV19QT1dFUl9NQU5BR0VNRU5UX01PREVfUyk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNjY6XHRcdGtzel93cml0ZTgoZGV2LCBSRUdfUE9XRVJfTUFOQUdFTUVOVF8xLCAwKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI2Ny1cdH1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYz0yNzI9c3RhdGljIGludCBrc3o4OHh4X2NoYW5nZV9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IG10dSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI3My17XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNzQ6XHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2ID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI3NS1cdGludCBmcmFtZV9zaXplO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI4Ny1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI4ODpcdHJldHVybiBrc3pfcm13OChkZXYsIFJFR19TV19DVFJMXzIsIEtTWjg4NjNfTEVHQUxfUEFDS0VUX0VOQUJMRSB8XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yODktXHRcdFx0S1NaODg2M19IVUdFX1BBQ0tFVF9FTkFCTEUsIGN0cmwyKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYz0yOTI9c3RhdGljIGludCBrc3o4N3h4X2NoYW5nZV9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IG10dSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI5My17XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyOTQ6XHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2ID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI5NS1cdHU4IGN0cmwxID0gMCwgY3RybDIgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTMwOC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjMwOTpcdHJldCA9IGtzel9ybXc4KGRldiwgUkVHX1NXX0NUUkxfMSwgU1dfSFVHRV9QQUNLRVQsIGN0cmwxKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTMxMC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzEyLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MzEzOlx0cmV0dXJuIGtzel9ybXc4KGRldiwgUkVHX1NXX0NUUkxfMiwgU1dfTEVHQUxfUEFDS0VUX0RJU0FCTEUsIGN0cmwyKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTMxNC19XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MzIxPXN0YXRpYyBpbnQga3N6ODh4eF9tYXhfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzI1LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MzI2OnN0YXRpYyBpbnQga3N6OF9wb3J0X3F1ZXVlX3NwbGl0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0LCBpbnQgcXVldWVzKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzI3LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zMzMtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzozMzQ6XHRpZiAoa3N6X2lzX2tzejg4eDMoZGV2KSkge1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzM1LVx0XHRtYXNrXzRxID0gS1NaODg3M19QT1JUXzRRVUVVRV9TUExJVF9FTjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zNDUtXHRcdCAqL1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MzQ2Olx0XHRyZXQgPSBrc3pfcm13OChkZXYsIFJFR19TV19DVFJMXzMsIFdFSUdIVEVEX0ZBSVJfUVVFVUVfRU5BQkxFLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzQ3LVx0XHRcdCAgICAgICBXRUlHSFRFRF9GQUlSX1FVRVVFX0VOQUJMRSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzQ5LVx0XHRcdHJldHVybiByZXQ7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzozNTA6XHR9IGVsc2UgaWYgKGtzel9pc19rc3o4NDYzKGRldikpIHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM1MS1cdFx0bWFza180cSA9IEtTWjg4NzNfUE9SVF80UVVFVUVfU1BMSVRfRU47XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzYzLVx0XHQgKi9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjM2NDpcdFx0cmV0ID0ga3N6X3JtdzgoZGV2LCBSRUdfU1dfQ1RSTF8xOSxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM2NS1cdFx0XHQgICAgICAgU1dfT1VUX1JBVEVfTElNSVRfUVVFVUVfQkFTRUQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzc1LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6Mzc2Olx0cmV0ID0ga3N6X3BybXc4KGRldiwgcG9ydCwgcmVnXzRxLCBtYXNrXzRxLCBkYXRhXzRxKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM3Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzc5LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MzgwOlx0cmV0dXJuIGtzel9wcm13OChkZXYsIHBvcnQsIHJlZ18ycSwgbWFza18ycSwgZGF0YV8ycSk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zODEtfVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzgyLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MzgzOnN0YXRpYyB2b2lkIGtzejhfcl9taWJfY250KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0LCB1MTYgYWRkciwgdTY0ICpjbnQpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zODQte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM5OC1cdG11dGV4X2xvY2soXHUwMDI2ZGV2LVx1MDAzZWFsdV9tdXRleCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzozOTk6XHRrc3pfd3JpdGUxNihkZXYsIHJlZ3NbUkVHX0lORF9DVFJMXzBdLCBjdHJsX2FkZHIpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDAwLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQwNC1cdGZvciAobG9vcCA9IDI7IGxvb3AgXHUwMDNlIDA7IGxvb3AtLSkge1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NDA1Olx0XHRrc3pfcmVhZDgoZGV2LCByZWdzW1JFR19JTkRfTUlCX0NIRUNLXSwgXHUwMDI2Y2hlY2spO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDA2LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDA3LVx0XHRpZiAoY2hlY2sgXHUwMDI2IG1hc2tzW01JQl9DT1VOVEVSX1ZBTElEXSkge1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NDA4Olx0XHRcdGtzel9yZWFkMzIoZGV2LCByZWdzW1JFR19JTkRfREFUQV9MT10sIFx1MDAyNmRhdGEpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDA5LVx0XHRcdGlmIChjaGVjayBcdTAwMjYgbWFza3NbTUlCX0NPVU5URVJfT1ZFUkZMT1ddKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQxNy1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjQxODpzdGF0aWMgdm9pZCBrc3o4Nzk1X3JfbWliX3BrdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydCwgdTE2IGFkZHIsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00MTktXHRcdFx0ICAgICAgdTY0ICpkcm9wcGVkLCB1NjQgKmNudClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00MzYtXHRtdXRleF9sb2NrKFx1MDAyNmRldi1cdTAwM2VhbHVfbXV0ZXgpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NDM3Olx0a3N6X3dyaXRlMTYoZGV2LCByZWdzW1JFR19JTkRfQ1RSTF8wXSwgY3RybF9hZGRyKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQzOC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00NDItXHRmb3IgKGxvb3AgPSAyOyBsb29wIFx1MDAzZSAwOyBsb29wLS0pIHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjQ0MzpcdFx0a3N6X3JlYWQ4KGRldiwgcmVnc1tSRUdfSU5EX01JQl9DSEVDS10sIFx1MDAyNmNoZWNrKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQ0NC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQ0NS1cdFx0aWYgKGNoZWNrIFx1MDAyNiBtYXNrc1tNSUJfQ09VTlRFUl9WQUxJRF0pIHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjQ0NjpcdFx0XHRrc3pfcmVhZDMyKGRldiwgcmVnc1tSRUdfSU5EX0RBVEFfTE9dLCBcdTAwMjZkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQ0Ny1cdFx0XHRpZiAoYWRkciBcdTAwM2MgMikge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQ2OS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjQ3MDpzdGF0aWMgdm9pZCBrc3o4ODYzX3JfbWliX3BrdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydCwgdTE2IGFkZHIsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00NzEtXHRcdFx0ICAgICAgdTY0ICpkcm9wcGVkLCB1NjQgKmNudClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00ODMtXHRcdFx0ICAgS1NaODg2M19NSUJfUEFDS0VUX0RST1BQRURfUlhfMDtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjQ4NDpcdGlmIChrc3pfaXNfODg5NV9mYW1pbHkoZGV2KSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQ4NS1cdCAgICBjdHJsX2FkZHIgPT0gS1NaODg2M19NSUJfUEFDS0VUX0RST1BQRURfUlhfMClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00OTAtXHRtdXRleF9sb2NrKFx1MDAyNmRldi1cdTAwM2VhbHVfbXV0ZXgpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NDkxOlx0a3N6X3dyaXRlMTYoZGV2LCByZWdzW1JFR19JTkRfQ1RSTF8wXSwgY3RybF9hZGRyKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjQ5MjpcdGtzel9yZWFkMzIoZGV2LCByZWdzW1JFR19JTkRfREFUQV9MT10sIFx1MDAyNmRhdGEpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDkzLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRldi1cdTAwM2VhbHVfbXV0ZXgpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUwNS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjUwNjpzdGF0aWMgdm9pZCBrc3o4X3JfbWliX3BrdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydCwgdTE2IGFkZHIsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MDctXHRcdFx0ICAgdTY0ICpkcm9wcGVkLCB1NjQgKmNudClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MTQtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1MTU6c3RhdGljIHZvaWQga3N6OF9mcmVlemVfbWliKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0LCBib29sIGZyZWV6ZSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUxNi17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTIxLVx0aWYgKGZyZWV6ZSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjUyMjpcdFx0a3N6X2NmZyhkZXYsIFJFR19TV19DVFJMXzYsIEJJVChwb3J0KSwgdHJ1ZSk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1MjM6XHRrc3pfY2ZnKGRldiwgUkVHX1NXX0NUUkxfNiwgU1dfTUlCX0NPVU5URVJfRlJFRVpFLCBmcmVlemUpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTI0LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUyNi1cdGlmICghZnJlZXplKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTI3Olx0XHRrc3pfY2ZnKGRldiwgUkVHX1NXX0NUUkxfNiwgQklUKHBvcnQpLCBmYWxzZSk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MjgtfVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTI5LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTMwOnN0YXRpYyB2b2lkIGtzejhfcG9ydF9pbml0X2NudChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydClcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUzMS17XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1MzI6XHRzdHJ1Y3Qga3N6X3BvcnRfbWliICptaWIgPSBcdTAwMjZkZXYtXHUwMDNlcG9ydHNbcG9ydF0ubWliO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTMzLVx0dTY0ICpkcm9wcGVkO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUzNS1cdC8qIEZvciBLU1o4Nzk1IGZhbWlseS4gKi9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjUzNjpcdGlmIChrc3pfaXNfa3N6ODd4eChkZXYpKSB7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MzctXHRcdC8qIGZsdXNoIGFsbCBlbmFibGVkIHBvcnQgTUlCIGNvdW50ZXJzICovXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1Mzg6XHRcdGtzel9jZmcoZGV2LCBSRUdfU1dfQ1RSTF82LCBCSVQocG9ydCksIHRydWUpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTM5Olx0XHRrc3pfY2ZnKGRldiwgUkVHX1NXX0NUUkxfNiwgU1dfTUlCX0NPVU5URVJfRkxVU0gsIHRydWUpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTQwOlx0XHRrc3pfY2ZnKGRldiwgUkVHX1NXX0NUUkxfNiwgQklUKHBvcnQpLCBmYWxzZSk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01NDEtXHR9XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTYyLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTYzOnN0YXRpYyBpbnQga3N6OF9yX3RhYmxlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCB0YWJsZSwgdTE2IGFkZHIsIHU2NCAqZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTU2NC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTczLVx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNlYWx1X211dGV4KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjU3NDpcdHJldCA9IGtzel93cml0ZTE2KGRldiwgcmVnc1tSRUdfSU5EX0NUUkxfMF0sIGN0cmxfYWRkcik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01NzUtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTU3Ny1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjU3ODpcdHJldCA9IGtzel9yZWFkNjQoZGV2LCByZWdzW1JFR19JTkRfREFUQV9ISV0sIGRhdGEpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTc5LXVubG9ja19hbHU6XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTg0LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTg1OnN0YXRpYyBpbnQga3N6OF93X3RhYmxlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCB0YWJsZSwgdTE2IGFkZHIsIHU2NCBkYXRhKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTg2LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01OTUtXHRtdXRleF9sb2NrKFx1MDAyNmRldi1cdTAwM2VhbHVfbXV0ZXgpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTk2Olx0cmV0ID0ga3N6X3dyaXRlNjQoZGV2LCByZWdzW1JFR19JTkRfREFUQV9ISV0sIGRhdGEpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTk3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01OTktXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo2MDA6XHRyZXQgPSBrc3pfd3JpdGUxNihkZXYsIHJlZ3NbUkVHX0lORF9DVFJMXzBdLCBjdHJsX2FkZHIpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNjAxLXVubG9ja19hbHU6XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNjA2LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NjA3OnN0YXRpYyBpbnQga3N6OF92YWxpZF9keW5fZW50cnkoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTggKmRhdGEpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02MDgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTYxNy1cdGRvIHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjYxODpcdFx0cmV0ID0ga3N6X3JlYWQ4KGRldiwgcmVnc1tSRUdfSU5EX0RBVEFfQ0hFQ0tdLCBkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTYxOS1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02MjktXHQvKiBFbnRyeSBpcyByZWFkeSBmb3IgYWNjZXNzaW5nLiAqL1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NjMwOlx0cmV0dXJuIGtzel9yZWFkOChkZXYsIHJlZ3NbUkVHX0lORF9EQVRBXzhdLCBkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTYzMS19XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02MzItXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo2MzM6c3RhdGljIGludCBrc3o4X3JfZHluX21hY190YWJsZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MTYgYWRkciwgdTggKm1hY19hZGRyLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNjM0LVx0XHRcdFx0dTggKmZpZCwgdTggKnNyY19wb3J0LCB1MTYgKmVudHJpZXMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNjUyLVx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNlYWx1X211dGV4KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjY1MzpcdHJldCA9IGtzel93cml0ZTE2KGRldiwgcmVnc1tSRUdfSU5EX0NUUkxfMF0sIGN0cmxfYWRkcik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02NTQtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTY2NS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjY2NjpcdHJldCA9IGtzel9yZWFkNjQoZGV2LCByZWdzW1JFR19JTkRfREFUQV9ISV0sIFx1MDAyNmJ1Zik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02NjctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTY5OC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjY5OTpzdGF0aWMgaW50IGtzejhfcl9zdGFfbWFjX3RhYmxlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUxNiBhZGRyLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNzAwLVx0XHRcdFx0c3RydWN0IGFsdV9zdHJ1Y3QgKmFsdSwgYm9vbCAqdmFsaWQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNzM4LVx0ICovXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo3Mzk6XHRpZiAoa3N6X2lzX2tzejg3eHgoZGV2KSB8fCBrc3pfaXNfODg5NV9mYW1pbHkoZGV2KSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTc0MC1cdFx0ZGF0YV9oaSBcdTAwM2VcdTAwM2U9IDE7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNzUwLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NzUxOnN0YXRpYyBpbnQga3N6OF93X3N0YV9tYWNfdGFibGUoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTE2IGFkZHIsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy03NTItXHRcdFx0XHRzdHJ1Y3QgYWx1X3N0cnVjdCAqYWx1KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTc4My1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjc4NDpzdGF0aWMgdm9pZCBrc3o4X2Zyb21fdmxhbihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MzIgdmxhbiwgdTggKmZpZCxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTc4NS1cdFx0XHQgICB1OCAqbWVtYmVyLCB1OCAqdmFsaWQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNzk4LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6Nzk5OnN0YXRpYyB2b2lkIGtzejhfdG9fdmxhbihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1OCBmaWQsIHU4IG1lbWJlciwgdTggdmFsaWQsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy04MDAtXHRcdFx0IHUxNiAqdmxhbilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy04MTMtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo4MTQ6c3RhdGljIHZvaWQga3N6OF9yX3ZsYW5fZW50cmllcyhzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MTYgYWRkcilcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTgxNS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtODI5LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6ODMwOnN0YXRpYyB2b2lkIGtzejhfcl92bGFuX3RhYmxlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUxNiB2aWQsIHUxNiAqdmxhbilcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTgzMS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtODQzLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6ODQ0OnN0YXRpYyB2b2lkIGtzejhfd192bGFuX3RhYmxlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUxNiB2aWQsIHUxNiB2bGFuKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtODQ1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy04NzEtICovXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo4NzI6c3RhdGljIGludCBrc3o4Nzl4X2dldF9sb29wYmFjayhzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MTYgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTg3My1cdFx0XHRcdHUxNiAqdmFsKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTg3Ny1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjg3ODpcdHJldCA9IGtzel9wcmVhZDgoZGV2LCBwb3J0LCBSRUdfUE9SVF9TVEFUVVNfMywgXHUwMDI2c3RhdDMpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtODc5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy04OTktICovXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo5MDA6c3RhdGljIGludCBrc3o4Nzl4X3NldF9sb29wYmFjayhzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MTYgcG9ydCwgdTE2IHZhbClcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTkwMS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTA2LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6OTA3Olx0cmV0dXJuIGtzel9wcm13OChkZXYsIHBvcnQsIFJFR19QT1JUX1NUQVRVU18zLCBQT1JUX1BIWV9MT09QQkFDSyxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTkwOC1cdFx0XHQgc3RhdDMpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTkxMC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjkxMTpzdGF0aWMgaW50IGtzejg3eHhfYXBwbHlfbG93X2xvc3NfcHJlc2V0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGJvb2wgZW5hYmxlKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTEyLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05MjEtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo5MjI6XHRpZiAoIWtzel9pc19rc3o4N3h4KGRldikpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05MjMtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05NTctICovXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo5NTg6c3RhdGljIGludCBrc3o4X3JfcGh5X2N0cmwoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIHUxNiAqdmFsKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTU5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05NjUtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo5NjY6XHRyZXQgPSBrc3pfcHJlYWQ4KGRldiwgcG9ydCwgcmVnc1tQX0xJTktfU1RBVFVTXSwgXHUwMDI2cmVnX3ZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05NjctXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTk3Mi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjk3MzpcdHJldCA9IGtzel9wcmVhZDgoZGV2LCBwb3J0LCBSRUdfUE9SVF9MSU5LX01EX0NUUkwsIFx1MDAyNnJlZ192YWwpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTc0LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDIzLSAqL1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTAyNDpzdGF0aWMgaW50IGtzejhfcl9waHlfYm1jcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MTYgcG9ydCwgdTE2ICp2YWwpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDI1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDMxLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTAzMjpcdHJldCA9IGtzel9wcmVhZDgoZGV2LCBwb3J0LCByZWdzW1BfTkVHX1JFU1RBUlRfQ1RSTF0sIFx1MDAyNnJlc3RhcnQpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTAzMy1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTAzNS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEwMzY6XHRyZXQgPSBrc3pfcHJlYWQ4KGRldiwgcG9ydCwgcmVnc1tQX1NQRUVEX1NUQVRVU10sIFx1MDAyNnNwZWVkKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEwMzctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEwMzktXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMDQwOlx0cmV0ID0ga3N6X3ByZWFkOChkZXYsIHBvcnQsIHJlZ3NbUF9GT1JDRV9DVFJMXSwgXHUwMDI2Y3RybCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDQxLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDQ2LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTA0NzpcdGlmIChrc3pfaXNfa3N6ODh4MyhkZXYpKSB7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDQ4LVx0XHRpZiAocmVzdGFydCBcdTAwMjYgS1NaODg3M19QT1JUX1BIWV9MT09QQkFDSylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDg4LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTA4OTpzdGF0aWMgaW50IGtzejhfcl9waHkoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTE2IHBoeSwgdTE2IHJlZywgdTE2ICp2YWwpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDkwLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTA2LVx0Y2FzZSBNSUlfQk1TUjpcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjExMDc6XHRcdHJldCA9IGtzel9wcmVhZDgoZGV2LCBwLCByZWdzW1BfTElOS19TVEFUVVNdLCBcdTAwMjZsaW5rKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExMDgtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTEyNC1cdGNhc2UgTUlJX1BIWVNJRDI6XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMTI1Olx0XHRpZiAoa3N6X2lzX2tzejg4eDMoZGV2KSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExMjYtXHRcdFx0ZGF0YSA9IEtTWjg4NjNfSURfTE87XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTEzMC1cdGNhc2UgTUlJX0FEVkVSVElTRTpcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjExMzE6XHRcdHJldCA9IGtzel9wcmVhZDgoZGV2LCBwLCByZWdzW1BfTE9DQUxfQ1RSTF0sIFx1MDAyNmN0cmwpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTEzMi1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTQ3LVx0Y2FzZSBNSUlfTFBBOlxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTE0ODpcdFx0cmV0ID0ga3N6X3ByZWFkOChkZXYsIHAsIHJlZ3NbUF9SRU1PVEVfU1RBVFVTXSwgXHUwMDI2bGluayk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTQ5LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExNjYtXHRjYXNlIFBIWV9SRUdfTElOS19NRDpcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjExNjc6XHRcdHJldCA9IGtzel9wcmVhZDgoZGV2LCBwLCBSRUdfUE9SVF9MSU5LX01EX0NUUkwsIFx1MDAyNnZhbDEpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTE2OC1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTcwLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTE3MTpcdFx0cmV0ID0ga3N6X3ByZWFkOChkZXYsIHAsIFJFR19QT1JUX0xJTktfTURfUkVTVUxULCBcdTAwMjZ2YWwyKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExNzItXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTE5NC1cdGNhc2UgUEhZX1JFR19LU1o4N1hYX1NIT1JUX0NBQkxFOlxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTE5NTpcdFx0aWYgKCFrc3pfaXNfa3N6ODd4eChkZXYpKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTE5Ni1cdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTIwMC1cdGNhc2UgUEhZX1JFR19LU1o4N1hYX0xQRl9CVzpcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEyMDE6XHRcdGlmICgha3N6X2lzX2tzejg3eHgoZGV2KSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEyMDItXHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEyMDUtXHRjYXNlIFBIWV9SRUdfS1NaODdYWF9FUV9JTklUOlxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTIwNjpcdFx0aWYgKCFrc3pfaXNfa3N6ODd4eChkZXYpKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTIwNy1cdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MTIyMD1zdGF0aWMgaW50IGtzejhfcGh5X3JlYWQxNihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBhZGRyLCBpbnQgcmVnKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTIyMS17XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMjIyOlx0c3RydWN0IGtzel9kZXZpY2UgKmRldiA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMjIzLVx0dTE2IHZhbCA9IDB4ZmZmZjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMjQ1LSAqL1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTI0NjpzdGF0aWMgaW50IGtzejhfd19waHlfY3RybChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydCwgdTE2IHZhbClcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEyNDcte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEyNTktXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMjYwOlx0cmV0ID0ga3N6X3BybXc4KGRldiwgcG9ydCwgUkVHX1BPUlRfTElOS19NRF9DVFJMLCBQT1JUX0ZPUkNFX0xJTksgfFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTI2MS1cdFx0XHRQT1JUX1BPV0VSX1NBVklORyB8IFBPUlRfUEhZX1JFTU9URV9MT09QQkFDSywgcmVnX3ZhbCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTI5OS0gKi9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEzMDA6c3RhdGljIGludCBrc3o4X3dfcGh5X2JtY3Ioc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTE2IHBvcnQsIHUxNiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzAxLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzEzLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTMxNDpcdHJldCA9IGtzel9wcm13OChkZXYsIHBvcnQsIHJlZ3NbUF9TUEVFRF9TVEFUVVNdLCBQT1JUX0hQX01ESVgsIHNwZWVkKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzMTUtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzMTgtXHRjdHJsID0gMDtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEzMTk6XHRpZiAoa3N6X2lzX2tzejg4eDMoZGV2KSkge1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTMyMC1cdFx0aWYgKCh2YWwgXHUwMDI2IEJNQ1JfQU5FTkFCTEUpKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzMzYtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMzM3Olx0cmV0ID0ga3N6X3BybXc4KGRldiwgcG9ydCwgcmVnc1tQX0ZPUkNFX0NUUkxdLCBQT1JUX0ZPUkNFXzEwMF9NQklUIHxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzMzgtXHRcdCAvKiBQT1JUX0FVVE9fTkVHX0VOQUJMRSBhbmQgUE9SVF9BVVRPX05FR19ESVNBQkxFIGFyZSB0aGUgc2FtZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzNjYtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMzY3Olx0aWYgKGtzel9pc19rc3o4OHgzKGRldikpIHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzNjgtXHRcdHJlc3RhcnRfbWFzayB8PSBLU1o4ODczX1BPUlRfUEhZX0xPT1BCQUNLO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzNzctXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMzc4Olx0cmV0dXJuIGtzel9wcm13OChkZXYsIHBvcnQsIHJlZ3NbUF9ORUdfUkVTVEFSVF9DVFJMXSwgcmVzdGFydF9tYXNrLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTM3OS1cdFx0XHQgcmVzdGFydCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTM4MS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEzODI6c3RhdGljIGludCBrc3o4X3dfcGh5KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUxNiBwaHksIHUxNiByZWcsIHUxNiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzgzLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzk3LVx0Y2FzZSBNSUlfQURWRVJUSVNFOlxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTM5ODpcdFx0cmV0ID0ga3N6X3ByZWFkOChkZXYsIHAsIHJlZ3NbUF9MT0NBTF9DVFJMXSwgXHUwMDI2Y3RybCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzk5LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE0MTktXHRcdGlmIChkYXRhICE9IGN0cmwpIHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjE0MjA6XHRcdFx0cmV0ID0ga3N6X3B3cml0ZTgoZGV2LCBwLCByZWdzW1BfTE9DQUxfQ1RSTF0sIGRhdGEpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQyMS1cdFx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE0MjYtXHRcdGlmICh2YWwgXHUwMDI2IFBIWV9TVEFSVF9DQUJMRV9ESUFHKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTQyNzpcdFx0XHRrc3pfcG9ydF9jZmcoZGV2LCBwLCBSRUdfUE9SVF9MSU5LX01EX0NUUkwsIFBPUlRfU1RBUlRfQ0FCTEVfRElBRywgdHJ1ZSk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNDI4LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNDM1LVx0Y2FzZSBQSFlfUkVHX0tTWjg3WFhfU0hPUlRfQ0FCTEU6XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNDM2Olx0XHRpZiAoIWtzel9pc19rc3o4N3h4KGRldikpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNDM3LVx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNDQ0LVx0Y2FzZSBQSFlfUkVHX0tTWjg3WFhfTFBGX0JXOlxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTQ0NTpcdFx0aWYgKCFrc3pfaXNfa3N6ODd4eChkZXYpKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQ0Ni1cdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQ1Ny1cdGNhc2UgUEhZX1JFR19LU1o4N1hYX0VRX0lOSVQ6XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNDU4Olx0XHRpZiAoIWtzel9pc19rc3o4N3h4KGRldikpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNDU5LVx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYz0xNDc3PXN0YXRpYyBpbnQga3N6OF9waHlfd3JpdGUxNihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBhZGRyLCBpbnQgcmVnLCB1MTYgdmFsKVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDU6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgzMzYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIGtzel9zd2l0Y2gva3N6X2NvbW1vbiBEcml2ZXIgTGFuZHNjYXBlKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgZHJpdmVycyB0aGF0IGFyZSBob29rZWQgaW50byB0aGUgYGtzel9zd2l0Y2hgIG9yIGBrc3pfY29tbW9uYCBtb2R1bGVzLiBGcm9tIHdoYXQgSSBjYW4gc2VlLCB3ZSBoYXZlIGBrc3pfc3BpLmNgLCBga3N6OTQ3N19pMmMuY2AsIGFuZCBga3N6ODg2M19zbWkuY2AgbGlzdGVkIGFzIHRoZSBrZXkgcGxheWVycy4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcm9sbCB1cCBteSBzbGVldmVzIGFuZCBwZXJmb3JtIGEgZGVlcCBkaXZlIGludG8gZWFjaCBvZiB0aG9zZSBmaWxlczogYGtzel9zcGkuY2AsIGBrc3o5NDc3X2kyYy5jYCwgYW5kIGBrc3o4ODYzX3NtaS5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgc3BlY2lmaWMgcm9sZXMgYW5kIGhvdyB0aGV5IGNvbnRyaWJ1dGUgdG8gdGhlIG92ZXJhbGwgc3dpdGNoIGZ1bmN0aW9uYWxpdHkuIEFuZCBJIGNhbiYjMzk7dCBmb3JnZXQgYEtjb25maWdgLCB3aGljaCBpcyBlc3NlbnRpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZXNlIGRyaXZlcnMgYXJlIGNvbmZpZ3VyZWQgYW5kIGludGVncmF0ZWQgaW50byB0aGUgYnJvYWRlciBrZXJuZWwgYnVpbGQgcHJvY2Vzcy4gVGltZSB0byBnZXQgdG8gd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwNToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRtZW51Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT05cbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O01pY3JvY2hpcCBLU1o4WFhYL0tTWjlYWFgvTEFOOTM3WCBzZXJpZXMgc3dpdGNoIHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gTkVUX0RTQVxuICAgNTpcdFx0c2VsZWN0IE5FVF9EU0FfVEFHX0tTWlxuICAgNjpcdFx0c2VsZWN0IE5FVF9EU0FfVEFHX05PTkVcbiAgIDc6XHRcdHNlbGVjdCBORVRfSUVFRTgwMjFRX0hFTFBFUlNcbiAgIDg6XHRcdHNlbGVjdCBEQ0JcbiAgIDk6XHRcdHNlbGVjdCBQQ1NfWFBDU1xuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBUaGlzIGRyaXZlciBhZGRzIHN1cHBvcnQgZm9yIE1pY3JvY2hpcCBLU1o4LCBLU1o5IGFuZFxuICAxMjpcdFx0ICBMQU45MzdYIHNlcmllcyBzd2l0Y2ggY2hpcHMsIGJlaW5nIEtTWjg4NjMvODg3MyxcbiAgMTM6XHRcdCAgS1NaODg5NS84ODY0LCBLU1o4Nzk0Lzg3OTUvODc2NSxcbiAgMTQ6XHRcdCAgS1NaOTQ3Ny85ODk3Lzk4OTYvOTU2Ny84NTY3LCBLU1o5ODkzLzk1NjMvODU2MyBhbmRcbiAgMTU6XHRcdCAgTEFOOTM3MC85MzcxLzkzNzIvOTM3My85Mzc0LlxuICAxNjpcdFxuICAxNzpcdGNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1o5NDc3X0kyQ1xuICAxODpcdFx0dHJpc3RhdGUgXCYjMzQ7S1NaIHNlcmllcyBJMkMgY29ubmVjdGVkIHN3aXRjaCBkcml2ZXJcJiMzNDtcbiAgMTk6XHRcdGRlcGVuZHMgb24gTkVUX0RTQV9NSUNST0NISVBfS1NaX0NPTU1PTiBcdTAwMjZcdTAwMjYgSTJDXG4gIDIwOlx0XHRzZWxlY3QgUkVHTUFQX0kyQ1xuICAyMTpcdFx0aGVscFxuICAyMjpcdFx0ICBTZWxlY3QgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHJlZ2lzdGVyaW5nIHN3aXRjaGVzIGNvbmZpZ3VyZWQgdGhyb3VnaCBJMkMuXG4gIDIzOlx0XG4gIDI0Olx0Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9TUElcbiAgMjU6XHRcdHRyaXN0YXRlIFwmIzM0O0tTWiBzZXJpZXMgU1BJIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4gIDI2Olx0XHRkZXBlbmRzIG9uIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT04gXHUwMDI2XHUwMDI2IFNQSVxuICAyNzpcdFx0c2VsZWN0IFJFR01BUF9TUElcbiAgMjg6XHRcdGhlbHBcbiAgMjk6XHRcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciByZWdpc3RlcmluZyBzd2l0Y2hlcyBjb25maWd1cmVkIHRocm91Z2ggU1BJLlxuICAzMDpcdFxuICAzMTpcdGNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfUFRQXG4gIDMyOlx0XHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIHRoZSBQVFAgY2xvY2sgb24gdGhlIEtTWjk1NjMvTEFOOTM3eCBFdGhlcm5ldCBTd2l0Y2hcJiMzNDtcbiAgMzM6XHRcdGRlcGVuZHMgb24gTkVUX0RTQV9NSUNST0NISVBfS1NaX0NPTU1PTiBcdTAwMjZcdTAwMjYgUFRQXzE1ODhfQ0xPQ0tcbiAgMzQ6XHRcdGRlcGVuZHMgb24gTkVUX0RTQV9NSUNST0NISVBfS1NaX0NPTU1PTj1tIHx8IFBUUF8xNTg4X0NMT0NLPXlcbiAgMzU6XHRcdGhlbHBcbiAgMzY6XHRcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciB0aW1lc3RhbXBpbmcgXHUwMDI2IFBUUCBjbG9jayBtYW5pcHVsYXRpb24gaW5cbiAgMzc6XHRcdCAgS1NaODU2My9LU1o5NTYzL0xBTjkzN3ggc2VyaWVzIG9mIHN3aXRjaGVzLiBLU1o5NTYzL0tTWjg1NjMgc3VwcG9ydHNcbiAgMzg6XHRcdCAgb25seSBvbmUgc3RlcCB0aW1lc3RhbXBpbmcuIExBTjkzN3ggc3dpdGNoIHN1cHBvcnRzIGJvdGggb25lIHN0ZXAgYW5kXG4gIDM5Olx0XHQgIHR3byBzdGVwIHRpbWVzdGFtcGluZy5cbiAgNDA6XHRcbiAgNDE6XHRjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaODg2M19TTUlcbiAgNDI6XHRcdHRyaXN0YXRlIFwmIzM0O0tTWiBzZXJpZXMgU01JIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4gIDQzOlx0XHRkZXBlbmRzIG9uIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT05cbiAgNDQ6XHRcdHNlbGVjdCBNRElPX0JJVEJBTkdcbiAgNDU6XHRcdGhlbHBcbiAgNDY6XHRcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciByZWdpc3RlcmluZyBzd2l0Y2hlcyBjb25maWd1cmVkIHRocm91Z2hcbiAgNDc6XHRcdCAgTWljcm9jaGlwIFNNSS4gSXQgc3VwcG9ydHMgdGhlIEtTWjg4NjMgYW5kIEtTWjg4NzMgc3dpdGNoLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA1OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NTgzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgRFNBIFN3aXRjaCBGdXp6aW5nIEZlYXNpYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE1pY3JvY2hpcCBLU1ogRFNBIHN3aXRjaGVzIGFyZSBFdGhlcm5ldCBzd2l0Y2hlcyBtYW5hZ2VkIHRocm91Z2ggaW50ZXJmYWNlcyBsaWtlIEkyQywgU1BJLCBvciBTTUksIGFuZCB0aGV5IGNvbm5lY3QgdG8gcGh5c2ljYWwgRXRoZXJuZXQgb3IgYXJlIGRlc2NyaWJlZCBpbiBkZXZpY2UgdHJlZXMsIG9mdGVuIHVzZWQgaW4gZW1iZWRkZWQgc3lzdGVtcy4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBjYW4gdGhlc2UgRFNBIHN3aXRjaGVzLCBhbmQgc3BlY2lmaWNhbGx5IHRoZWlyIEkyQy9TUEkgaW50ZXJmYWNlcywgYmUgcHJvYmVkIGFuZCBmdXp6ZWQgZWZmZWN0aXZlbHkgd2l0aGluIGEgc3RhbmRhcmQgc3l6a2FsbGVyIHNldHVwPyBUaGF0JiMzOTtzIHRoZSBjb3JlIG9mIHRoZSBwcm9ibGVtLgoKQWxyaWdodCwgdGltZSB0byBjaGVjayB0aGUgc3l6a2FsbGVyIGd1aWRlbGluZXMsIHNwZWNpZmljYWxseSBzZWN0aW9ucyAyIGFuZCAzLiBTZWN0aW9uIDIgaGlnaGxpZ2h0cyB3aGF0JiMzOTtzIHR5cGljYWxseSAqbm90KiBmdXp6ZWQgd2VsbC4gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlIGlzIHRoZSByZWQgZmxhZyBoZXJlOiB0aGluZ3MgbGlrZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgc3BlY2lhbGl6ZWQgTklDcyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgb3IgY29tcGxleCBlbXVsYXRpb24gdGhhdCBpc24mIzM5O3Qgc3RhbmRhcmQgaW4gUUVNVSwgb3IgZHJpdmVycyB3aG9zZSBleGVjdXRpb24gcGF0aHMgYXJlIG9ubHkgaGl0IGR1cmluZyBob3QtdW5wbHVnIGV2ZW50cy4KClNlY3Rpb24gMyBnaXZlcyB1cyBzb21lIGhvcGUsIHRob3VnaC4gSXQgZm9jdXNlcyBvbiAmIzM0O1JlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHMsJiMzNDsgbWVhbmluZyBkcml2ZXJzIGFjY2Vzc2libGUgdGhyb3VnaCB2aXJ0dWFsIGJ1c2VzIHN1Y2ggYXMgdmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjayBpbnRlcmZhY2VzLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFNvLCB0aGUga2V5IHF1ZXN0aW9uIGlzOiBkb2VzIHRoZSBNaWNyb2NoaXAgS1NaIHN3aXRjaCBkcml2ZXIgZml0IHRoaXMgJiMzNDtyZWFjaGFibGUmIzM0OyBjYXRlZ29yeSwgb3IgaXMgaXQgZnVuZGFtZW50YWxseSB0aWVkIHRvIHNvbWUgZm9ybSBvZiAmIzM0O3N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7PwoKTm93IEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGUgcHJvYmluZyBwcm9jZXNzLiBDYW4gdGhpcyBkcml2ZXIgYmUgdHJpZ2dlcmVkIHRocm91Z2ggc29tZXRoaW5nIGxpa2UgYSB2aXJ0dWFsIGJ1cywgYSBkZXZpY2UgdHJlZSBlbnRyeSB0aGF04oCZcyBlbXVsYXRlZCBieSBRRU1VLCBvciB0aHJvdWdoIHN5c2ZzPyBJIG5lZWQgdG8gYW5hbHl6ZSBob3cgdGhlIGBkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2AgZGlyZWN0b3J5IGlzIGFjdHVhbGx5IGluaXRpYWxpemVkIGFuZCBwcm9iZWQuIFRoYXQmIzM5O3MgdGhlIGNydWNpYWwgZGF0YSBwb2ludCB0aGF0IHdpbGwgZGV0ZXJtaW5lIGlmIGl0JiMzOTtzIGZlYXNpYmxlIHRvIGZ1enogdGhpcyBjb2RlIGluIGEgc3RhbmRhcmQgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDU6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlXy4qZHJpdmVyXFwofHByb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYz0yMTM9c3RhdGljIGludCBrc3o4NDYzX2lycV9kb21haW5fbWFwKHN0cnVjdCBpcnFfZG9tYWluICpkLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTIxNy1cdGlycV9zZXRfY2hpcF9hbmRfaGFuZGxlcihpcnEsIFx1MDAyNmtzejg0NjNfaXJxX2NoaXAsIGhhbmRsZV9sZXZlbF9pcnEpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjE4Olx0aXJxX3NldF9ub3Byb2JlKGlycSk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yMTktXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jPTEwMD1zdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9jb25maWcga3N6ODg2M19yZWdtYXBfY29uZmlnW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jLTEzMi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYzoxMzM6c3RhdGljIGludCBrc3o4ODYzX3NtaV9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmMtMTM0LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmMtMTU4LVx0XHRpZiAoSVNfRVJSKGRldi1cdTAwM2VyZWdtYXBbaV0pKSB7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmM6MTU5Olx0XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jLTE2MC1cdFx0XHRcdFx0ICAgICBQVFJfRVJSKGRldi1cdTAwM2VyZWdtYXBbaV0pLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYz0yMTE9c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBrc3o4ODYzX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYzoyMTI6XHQucHJvYmVcdD0ga3N6ODg2M19zbWlfcHJvYmUsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmMtMjEzLVx0LnJlbW92ZVx0PSBrc3o4ODYzX3NtaV9yZW1vdmUsXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jLTIyMC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYzoyMjE6bWRpb19tb2R1bGVfZHJpdmVyKGtzejg4NjNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYy0yMjItXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jPTE1PUtTWl9SRUdNQVBfVEFCTEUoa3N6OTQ3Nywgbm90X3VzZWQsIDE2LCAwLCAwKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xNi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzoxNzpzdGF0aWMgaW50IGtzejk0NzdfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtMTgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0zOS1cdFx0aWYgKElTX0VSUihkZXYtXHUwMDNlcmVnbWFwW2ldKSkge1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jOjQwOlx0XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKFx1MDAyNmkyYy1cdTAwM2VkZXYsIFBUUl9FUlIoZGV2LVx1MDAzZXJlZ21hcFtpXSksXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtNDEtXHRcdFx0XHRcdCAgICAgXCYjMzQ7RmFpbGVkIHRvIGluaXRpYWxpemUgcmVnbWFwJWlcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jPTEzMz1zdGF0aWMgc3RydWN0IGkyY19kcml2ZXIga3N6OTQ3N19pMmNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xMzgtXHR9LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jOjEzOTpcdC5wcm9iZSA9IGtzejk0NzdfaTJjX3Byb2JlLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTE0MC1cdC5yZW1vdmVcdD0ga3N6OTQ3N19pMmNfcmVtb3ZlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xNDQtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmM6MTQ1Om1vZHVsZV9pMmNfZHJpdmVyKGtzejk0NzdfaTJjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtMTQ2LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTI0OTI9c3RhdGljIGludCBrc3pfaXJxX2RvbWFpbl9tYXAoc3RydWN0IGlycV9kb21haW4gKmQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjQ5Ni1cdGlycV9zZXRfY2hpcF9hbmRfaGFuZGxlcihpcnEsIFx1MDAyNmtzel9pcnFfY2hpcCwgaGFuZGxlX2xldmVsX2lycSk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyNDk3Olx0aXJxX3NldF9ub3Byb2JlKGlycSk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yNDk4LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTM5NTI9aW50IGtzel9zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zOTk3LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6Mzk5ODpcdC8qIFVwZGF0ZSB0aGUgY29tcGF0aWJsZSBpbmZvIHdpdGggdGhlIHByb2JlZCBvbmUgKi9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTM5OTktXHRkZXYtXHUwMDNlaW5mbyA9IGluZm87XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM9MTIyMD1zdGF0aWMgaW50IGtzel9wdHBfaXJxX2RvbWFpbl9tYXAoc3RydWN0IGlycV9kb21haW4gKmQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTIyNC1cdGlycV9zZXRfY2hpcF9hbmRfaGFuZGxlcihpcnEsIFx1MDAyNmtzel9wdHBfaXJxX2NoaXAsIGhhbmRsZV9sZXZlbF9pcnEpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTIyNTpcdGlycV9zZXRfbm9wcm9iZShpcnEpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTIyNi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYz0xMzQ9S1NaODQ2M19SRUdNQVBfVEFCTEUoa3N6ODQ2MywgS1NaODQ2M19TUElfQUREUl9TSElGVCwgMCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYy0xMzYtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoxMzc6c3RhdGljIGludCBrc3pfc3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYy0xMzgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTE3Ny1cdFx0aWYgKElTX0VSUihkZXYtXHUwMDNlcmVnbWFwW2ldKSkge1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MTc4Olx0XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKFx1MDAyNnNwaS1cdTAwM2VkZXYsIFBUUl9FUlIoZGV2LVx1MDAzZXJlZ21hcFtpXSksXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYy0xNzktXHRcdFx0XHRcdCAgICAgXCYjMzQ7RmFpbGVkIHRvIGluaXRpYWxpemUgcmVnbWFwJWlcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM9MzQ5PXN0YXRpYyBzdHJ1Y3Qgc3BpX2RyaXZlciBrc3pfc3BpX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYy0zNTUtXHQuaWRfdGFibGUgPSBrc3pfc3BpX2lkcyxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jOjM1NjpcdC5wcm9iZVx0PSBrc3pfc3BpX3Byb2JlLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMzU3LVx0LnJlbW92ZVx0PSBrc3pfc3BpX3JlbW92ZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYy0zNjAtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzozNjE6bW9kdWxlX3NwaV9kcml2ZXIoa3N6X3NwaV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMzYyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA1OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNDc5CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMTY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgS1NaIERyaXZlciBMYW5kc2NhcGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIEtTWiBkcml2ZXJzOiBga3N6OTQ3N19pMmNfZHJpdmVyYCwgYGtzel9zcGlfZHJpdmVyYCwgYW5kIGBrc3o4ODYzX2RyaXZlcmAuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogY2FuIHRoZXNlIEkyQyBvciBTUEkgZGV2aWNlcyBiZSBlZmZlY3RpdmVseSBwcm9iZWQgYW5kIHRlc3RlZCB1c2luZyB0b29scyBsaWtlIHN5emthbGxlciwgb3IgZXZlbiBmcm9tIHVzZXJzcGFjZSBkaXJlY3RseT8gVGhhdCYjMzk7cyBhIGNyaXRpY2FsIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZWlyIHJvYnVzdG5lc3MuIEFuZCB0aGVuIGl0IGhpdHMgbWUg4oCTIGNhbiBJIGluc3RhbnRpYXRlIGFuIEkyQyBkZXZpY2UsIHNwZWNpZmljYWxseSwgYnkgbGV2ZXJhZ2luZyB0aGF0IGAvc3lzL2J1cy9pMmMvZGV2aWNlcy9pMmMtKi9uZXdfZGV2aWNlYCBzeXNmcyBpbnRlcmZhY2U/IFRoaXMgd291bGQgYmUgaW5jcmVkaWJseSB2YWx1YWJsZSBmb3Igc3RyZWFtbGluZWQgdGVzdGluZyBhbmQgZGVidWdnaW5nLCBpZiBwb3NzaWJsZS4KCk15IG5leHQgc3RlcCBpcyBjbGVhci4gSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGUgYGtzejk0NzdfaTJjYCBkZXZpY2UsIGZvciBpbnN0YW5jZSwgaXMgYW1lbmFibGUgdG8gaW5zdGFudGlhdGlvbiB2aWEgdGhlIGBuZXdfZGV2aWNlYCBzeXNmcyBpbnRlcmZhY2UsIG9yIGlmIGl0IGhhcyB2ZXJ5IHNwZWNpZmljIGRlcGVuZGVuY2llcyBvbiBEZXZpY2UgVHJlZSAoRFQpIG9yIHBsYXRmb3JtLWxldmVsIHNldHVwIHRoYXQgd291bGQgY29tcGxpY2F0ZSBkaXJlY3QgbWFuaXB1bGF0aW9uLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZS4gSSYjMzk7bGwgc3RhcnQgYnkgZXhhbWluaW5nIHRoZSBga3N6OTQ3N19pMmNfcHJvYmVgIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgaW4gYGRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuY2AsIHRvIHVuZGVyc3RhbmQgdGhlIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBhbmQgcHJvYmUgYmVoYXZpb3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA1OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQvKlxuICAgMzpcdCAqIE1pY3JvY2hpcCBLU1o5NDc3IHNlcmllcyByZWdpc3RlciBhY2Nlc3MgdGhyb3VnaCBJMkNcbiAgIDQ6XHQgKlxuICAgNTpcdCAqIENvcHlyaWdodCAoQykgMjAxOC0yMDI0IE1pY3JvY2hpcCBUZWNobm9sb2d5IEluYy5cbiAgIDY6XHQgKi9cbiAgIDc6XHRcbiAgIDg6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9pMmMuaFx1MDAzZVxuICAgOTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4gIDEwOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAgMTE6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWdtYXAuaFx1MDAzZVxuICAxMjpcdFxuICAxMzpcdCNpbmNsdWRlIFwmIzM0O2tzel9jb21tb24uaFwmIzM0O1xuICAxNDpcdFxuICAxNTpcdEtTWl9SRUdNQVBfVEFCTEUoa3N6OTQ3Nywgbm90X3VzZWQsIDE2LCAwLCAwKTtcbiAgMTY6XHRcbiAgMTc6XHRzdGF0aWMgaW50IGtzejk0NzdfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpXG4gIDE4Olx0e1xuICAxOTpcdFx0Y29uc3Qgc3RydWN0IGtzel9jaGlwX2RhdGEgKmNoaXA7XG4gIDIwOlx0XHRzdHJ1Y3QgZGV2aWNlICpkZGV2ID0gXHUwMDI2aTJjLVx1MDAzZWRldjtcbiAgMjE6XHRcdHN0cnVjdCByZWdtYXBfY29uZmlnIHJjO1xuICAyMjpcdFx0c3RydWN0IGtzel9kZXZpY2UgKmRldjtcbiAgMjM6XHRcdGludCBpLCByZXQ7XG4gIDI0Olx0XG4gIDI1Olx0XHRjaGlwID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRkZXYpO1xuICAyNjpcdFx0aWYgKCFjaGlwKVxuICAyNzpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAgMjg6XHRcbiAgMjk6XHRcdGRldiA9IGtzel9zd2l0Y2hfYWxsb2MoXHUwMDI2aTJjLVx1MDAzZWRldiwgY2hpcCwgaTJjKTtcbiAgMzA6XHRcdGlmICghZGV2KVxuICAzMTpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAgMzI6XHRcbiAgMzM6XHRcdC8qIFNhdmUgY2hpcCBpZCB0byBkbyBzcGVjaWFsIGluaXRpYWxpemF0aW9uIHdoZW4gcHJvYmluZy4gKi9cbiAgMzQ6XHRcdGRldi1cdTAwM2VjaGlwX2lkID0gY2hpcC1cdTAwM2VjaGlwX2lkO1xuICAzNTpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgX19LU1pfTlVNX1JFR01BUFM7IGkmIzQzOyYjNDM7KSB7XG4gIDM2Olx0XHRcdHJjID0ga3N6OTQ3N19yZWdtYXBfY29uZmlnW2ldO1xuICAzNzpcdFx0XHRyYy5sb2NrX2FyZyA9IFx1MDAyNmRldi1cdTAwM2VyZWdtYXBfbXV0ZXg7XG4gIDM4Olx0XHRcdGRldi1cdTAwM2VyZWdtYXBbaV0gPSBkZXZtX3JlZ21hcF9pbml0X2kyYyhpMmMsIFx1MDAyNnJjKTtcbiAgMzk6XHRcdFx0aWYgKElTX0VSUihkZXYtXHUwMDNlcmVnbWFwW2ldKSkge1xuICA0MDpcdFx0XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKFx1MDAyNmkyYy1cdTAwM2VkZXYsIFBUUl9FUlIoZGV2LVx1MDAzZXJlZ21hcFtpXSksXG4gIDQxOlx0XHRcdFx0XHRcdCAgICAgXCYjMzQ7RmFpbGVkIHRvIGluaXRpYWxpemUgcmVnbWFwJWlcXG5cJiMzNDssXG4gIDQyOlx0XHRcdFx0XHRcdCAgICAga3N6OTQ3N19yZWdtYXBfY29uZmlnW2ldLnZhbF9iaXRzKTtcbiAgNDM6XHRcdFx0fVxuICA0NDpcdFx0fVxuICA0NTpcdFxuICA0NjpcdFx0aWYgKGkyYy1cdTAwM2VkZXYucGxhdGZvcm1fZGF0YSlcbiAgNDc6XHRcdFx0ZGV2LVx1MDAzZXBkYXRhID0gaTJjLVx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhO1xuICA0ODpcdFxuICA0OTpcdFx0ZGV2LVx1MDAzZWlycSA9IGkyYy1cdTAwM2VpcnE7XG4gIDUwOlx0XG4gIDUxOlx0XHRyZXQgPSBrc3pfc3dpdGNoX3JlZ2lzdGVyKGRldik7XG4gIDUyOlx0XG4gIDUzOlx0XHQvKiBNYWluIERTQSBkcml2ZXIgbWF5IG5vdCBiZSBzdGFydGVkIHlldC4gKi9cbiAgNTQ6XHRcdGlmIChyZXQpXG4gIDU1Olx0XHRcdHJldHVybiByZXQ7XG4gIDU2Olx0XG4gIDU3Olx0XHRpMmNfc2V0X2NsaWVudGRhdGEoaTJjLCBkZXYpO1xuICA1ODpcdFxuICA1OTpcdFx0cmV0dXJuIDA7XG4gIDYwOlx0fVxuICA2MTpcdFxuICA2MjpcdHN0YXRpYyB2b2lkIGtzejk0NzdfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKVxuICA2MzpcdHtcbiAgNjQ6XHRcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoaTJjKTtcbiAgNjU6XHRcbiAgNjY6XHRcdGlmIChkZXYpXG4gIDY3Olx0XHRcdGtzel9zd2l0Y2hfcmVtb3ZlKGRldik7XG4gIDY4Olx0fVxuICA2OTpcdFxuICA3MDpcdHN0YXRpYyB2b2lkIGtzejk0NzdfaTJjX3NodXRkb3duKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpXG4gIDcxOlx0e1xuICA3MjpcdFx0c3RydWN0IGtzel9kZXZpY2UgKmRldiA9IGkyY19nZXRfY2xpZW50ZGF0YShpMmMpO1xuICA3MzpcdFxuICA3NDpcdFx0aWYgKCFkZXYpXG4gIDc1Olx0XHRcdHJldHVybjtcbiAgNzY6XHRcbiAgNzc6XHRcdGtzel9zd2l0Y2hfc2h1dGRvd24oZGV2KTtcbiAgNzg6XHRcbiAgNzk6XHRcdGkyY19zZXRfY2xpZW50ZGF0YShpMmMsIE5VTEwpO1xuICA4MDpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDU6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQxMTcKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiA2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIENoaXAgTWF0Y2ggaW4ga3N6OTQ3N19pMmMuYyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgZmlyc3QgdGhpbmcgSSYjMzk7bSBkb2luZyBpcyBncmFiYmluZyB0aGUgbWF0Y2hpbmcgZGF0YSBmb3IgdGhlIGRldmljZSwgbGlrZWx5IHRvIGlkZW50aWZ5IHRoZSBzcGVjaWZpYyBjaGlwIHVzaW5nIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGRldik7YC4gVGhhdCYjMzk7cyBzdGFuZGFyZCBwcmFjdGljZSwgYW5kIGZyb20gdGhlcmUgSSYjMzk7bSBnb2luZyB0byB3YW50IHRvIHVuZGVyc3RhbmQgd2hhdCBpcyBiZWluZyBkb25lIHdpdGggdGhhdCBkYXRhLiBJdCBzZWVtcyBsaWtlIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGBrc3o5NDc3X2kyYy5jYCBmaWxlLCBzcGVjaWZpY2FsbHkgbGluZXMgODAgdGhyb3VnaCAxNTAuIFRoYXQgc2VjdGlvbiBpcyBwcm9iYWJseSB3aGVyZSB0aGUgY2hpcC1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiBvciBjb25maWd1cmF0aW9uIGlzIGhhbmRsZWQsIG9yIHBlcmhhcHMgaXQmIzM5O3MgaW52b2x2ZWQgd2l0aCBJMkMgY29tbXVuaWNhdGlvbiBzZXR1cC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBoYXBwZW5zIGJhc2VkIG9uIHRoZSBtYXRjaCBkYXRhIHJldHVybmVkIGFuZCBkZXRlcm1pbmUgaG93IHRoZSBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlIGRldmljZS4gTGV0JiMzOTtzIHNlZSB3aGF0IGludGVyZXN0aW5nIHRpZGJpdHMgYXJlIGhpZGluZyBpbiB0aGF0IHNlY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA1OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA4MDpcdH1cbiAgODE6XHRcbiAgODI6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQga3N6OTQ3N19pMmNfaWRbXSA9IHtcbiAgODM6XHRcdHsgLm5hbWUgPSBcJiMzNDtrc3o5NDc3LXN3aXRjaFwmIzM0OyB9LFxuICA4NDpcdFx0eyB9XG4gIDg1Olx0fTtcbiAgODY6XHRcbiAgODc6XHRNT0RVTEVfREVWSUNFX1RBQkxFKGkyYywga3N6OTQ3N19pMmNfaWQpO1xuICA4ODpcdFxuICA4OTpcdHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGtzejk0NzdfZHRfaWRzW10gPSB7XG4gIDkwOlx0XHR7XG4gIDkxOlx0XHRcdC5jb21wYXRpYmxlID0gXCYjMzQ7bWljcm9jaGlwLGtzejk0NzdcJiMzNDssXG4gIDkyOlx0XHRcdC5kYXRhID0gXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5NDc3XVxuICA5MzpcdFx0fSxcbiAgOTQ6XHRcdHtcbiAgOTU6XHRcdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsa3N6OTg5NlwmIzM0OyxcbiAgOTY6XHRcdFx0LmRhdGEgPSBcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0tTWjk4OTZdXG4gIDk3Olx0XHR9LFxuICA5ODpcdFx0e1xuICA5OTpcdFx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o5ODk3XCYjMzQ7LFxuIDEwMDpcdFx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaOTg5N11cbiAxMDE6XHRcdH0sXG4gMTAyOlx0XHR7XG4gMTAzOlx0XHRcdC5jb21wYXRpYmxlID0gXCYjMzQ7bWljcm9jaGlwLGtzejk4OTNcJiMzNDssXG4gMTA0Olx0XHRcdC5kYXRhID0gXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5ODkzXVxuIDEwNTpcdFx0fSxcbiAxMDY6XHRcdHtcbiAxMDc6XHRcdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsa3N6OTU2M1wmIzM0OyxcbiAxMDg6XHRcdFx0LmRhdGEgPSBcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0tTWjk1NjNdXG4gMTA5Olx0XHR9LFxuIDExMDpcdFx0e1xuIDExMTpcdFx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o4NTYzXCYjMzQ7LFxuIDExMjpcdFx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaODU2M11cbiAxMTM6XHRcdH0sXG4gMTE0Olx0XHR7XG4gMTE1Olx0XHRcdC5jb21wYXRpYmxlID0gXCYjMzQ7bWljcm9jaGlwLGtzejg1NjdcJiMzNDssXG4gMTE2Olx0XHRcdC5kYXRhID0gXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o4NTY3XVxuIDExNzpcdFx0fSxcbiAxMTg6XHRcdHtcbiAxMTk6XHRcdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsa3N6OTU2N1wmIzM0OyxcbiAxMjA6XHRcdFx0LmRhdGEgPSBcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0tTWjk1NjddXG4gMTIxOlx0XHR9LFxuIDEyMjpcdFx0e1xuIDEyMzpcdFx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxsYW45NjQ2XCYjMzQ7LFxuIDEyNDpcdFx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbTEFOOTY0Nl1cbiAxMjU6XHRcdH0sXG4gMTI2Olx0XHR7fSxcbiAxMjc6XHR9O1xuIDEyODpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGtzejk0NzdfZHRfaWRzKTtcbiAxMjk6XHRcbiAxMzA6XHRzdGF0aWMgREVGSU5FX1NJTVBMRV9ERVZfUE1fT1BTKGtzel9pMmNfcG1fb3BzLFxuIDEzMTpcdFx0XHRcdFx0a3N6X3N3aXRjaF9zdXNwZW5kLCBrc3pfc3dpdGNoX3Jlc3VtZSk7XG4gMTMyOlx0XG4gMTMzOlx0c3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGtzejk0NzdfaTJjX2RyaXZlciA9IHtcbiAxMzQ6XHRcdC5kcml2ZXIgPSB7XG4gMTM1Olx0XHRcdC5uYW1lXHQ9IFwmIzM0O2tzejk0Nzctc3dpdGNoXCYjMzQ7LFxuIDEzNjpcdFx0XHQub2ZfbWF0Y2hfdGFibGUgPSBrc3o5NDc3X2R0X2lkcyxcbiAxMzc6XHRcdFx0LnBtID0gXHUwMDI2a3N6X2kyY19wbV9vcHMsXG4gMTM4Olx0XHR9LFxuIDEzOTpcdFx0LnByb2JlID0ga3N6OTQ3N19pMmNfcHJvYmUsXG4gMTQwOlx0XHQucmVtb3ZlXHQ9IGtzejk0NzdfaTJjX3JlbW92ZSxcbiAxNDE6XHRcdC5zaHV0ZG93biA9IGtzejk0NzdfaTJjX3NodXRkb3duLFxuIDE0MjpcdFx0LmlkX3RhYmxlID0ga3N6OTQ3N19pMmNfaWQsXG4gMTQzOlx0fTtcbiAxNDQ6XHRcbiAxNDU6XHRtb2R1bGVfaTJjX2RyaXZlcihrc3o5NDc3X2kyY19kcml2ZXIpO1xuIDE0NjpcdFxuIDE0NzpcdE1PRFVMRV9BVVRIT1IoXCYjMzQ7VHJpc3RyYW0gSGEgXHUwMDNjVHJpc3RyYW0uSGFAbWljcm9jaGlwLmNvbVx1MDAzZVwmIzM0Oyk7XG4gMTQ4Olx0TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O01pY3JvY2hpcCBLU1o5NDc3IFNlcmllcyBTd2l0Y2ggSTJDIGFjY2VzcyBEcml2ZXJcJiMzNDspO1xuIDE0OTpcdE1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTCB2MlwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA1OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NTUzCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBEcml2ZXIgSW5pdGlhbGl6YXRpb24gaW4gdGhlIEtlcm5lbCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcHJvYmUgZnVuY3Rpb24sIGBrc3o5NDc3X2kyY19wcm9iZWAuIEkgc2VlIGl0IHN0YXJ0cyBieSBncmFiYmluZyBgY2hpcGAgdXNpbmcgYGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZGV2KWAuIEhtbSwgaWYgdGhlcmUmIzM5O3Mgbm8gbWF0Y2ggZGF0YSDigJMgcGFydGljdWxhcmx5IGlmIHRoaXMgZGV2aWNlIHdhcyBpbnN0YW50aWF0ZWQgdGhyb3VnaCBJMkMgdmlhIGEgc3lzZnMgJiMzNDtuZXdfZGV2aWNlJiMzNDsgY2FsbCDigJMgdGhlbiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRkZXYpYCB3aWxsIHJldHVybiBgTlVMTGAuIEFuZCB0aGF0JiMzOTtzIGNyaXRpY2FsIGJlY2F1c2UgdGhlIGZ1bmN0aW9uIHRoZW4gaW1tZWRpYXRlbHkgZXhpdHMgd2l0aCBgLUVJTlZBTGAuIE5vIE9GIG1hdGNoIGRhdGEsIG5vIGluaXRpYWxpemF0aW9uLCBzaW1wbGUgYXMgdGhhdC4gSSBzdXNwZWN0ZWQgYXMgbXVjaC4gSSYjMzk7bSBub3RpbmcgdGhpcyBpcyBieSBkZXNpZ24gZm9yIHRoaXMgZHJpdmVyLiBJIGFtIGdvaW5nIHRvIGNvbXBhcmUgdGhpcyBJMkMgZHJpdmVyIHRvIGl0cyBTUEkgZXF1aXZhbGVudC4gTGV0JiMzOTtzIHNlZSBob3cgdGhhdCBvbmUgaXMgaGFuZGxpbmcgaW5pdGlhbGl6YXRpb24gYW5kIG1hdGNoaW5nIGluIGBrc3pfc3BpLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwNToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDcwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzMDA6XHRcdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsbGFuOTM3MlwmIzM0OyxcbiAzMDE6XHRcdFx0LmRhdGEgPSBcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0xBTjkzNzJdXG4gMzAyOlx0XHR9LFxuIDMwMzpcdFx0e1xuIDMwNDpcdFx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxsYW45MzczXCYjMzQ7LFxuIDMwNTpcdFx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbTEFOOTM3M11cbiAzMDY6XHRcdH0sXG4gMzA3Olx0XHR7XG4gMzA4Olx0XHRcdC5jb21wYXRpYmxlID0gXCYjMzQ7bWljcm9jaGlwLGxhbjkzNzRcJiMzNDssXG4gMzA5Olx0XHRcdC5kYXRhID0gXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tMQU45Mzc0XVxuIDMxMDpcdFx0fSxcbiAzMTE6XHRcdHtcbiAzMTI6XHRcdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsbGFuOTY0NlwmIzM0OyxcbiAzMTM6XHRcdFx0LmRhdGEgPSBcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0xBTjk2NDZdXG4gMzE0Olx0XHR9LFxuIDMxNTpcdFx0e30sXG4gMzE2Olx0fTtcbiAzMTc6XHRNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBrc3pfZHRfaWRzKTtcbiAzMTg6XHRcbiAzMTk6XHRzdGF0aWMgY29uc3Qgc3RydWN0IHNwaV9kZXZpY2VfaWQga3N6X3NwaV9pZHNbXSA9IHtcbiAzMjA6XHRcdHsgXCYjMzQ7a3N6ODQ2M1wmIzM0OyB9LFxuIDMyMTpcdFx0eyBcJiMzNDtrc3o4NzY1XCYjMzQ7IH0sXG4gMzIyOlx0XHR7IFwmIzM0O2tzejg3OTRcJiMzNDsgfSxcbiAzMjM6XHRcdHsgXCYjMzQ7a3N6ODc5NVwmIzM0OyB9LFxuIDMyNDpcdFx0eyBcJiMzNDtrc3o4ODYzXCYjMzQ7IH0sXG4gMzI1Olx0XHR7IFwmIzM0O2tzejg4NjRcJiMzNDsgfSxcbiAzMjY6XHRcdHsgXCYjMzQ7a3N6ODg3M1wmIzM0OyB9LFxuIDMyNzpcdFx0eyBcJiMzNDtrc3o4ODk1XCYjMzQ7IH0sXG4gMzI4Olx0XHR7IFwmIzM0O2tzejk0NzdcJiMzNDsgfSxcbiAzMjk6XHRcdHsgXCYjMzQ7a3N6OTg5NlwmIzM0OyB9LFxuIDMzMDpcdFx0eyBcJiMzNDtrc3o5ODk3XCYjMzQ7IH0sXG4gMzMxOlx0XHR7IFwmIzM0O2tzejk4OTNcJiMzNDsgfSxcbiAzMzI6XHRcdHsgXCYjMzQ7a3N6OTU2M1wmIzM0OyB9LFxuIDMzMzpcdFx0eyBcJiMzNDtrc3o4NTYzXCYjMzQ7IH0sXG4gMzM0Olx0XHR7IFwmIzM0O2tzejg1NjdcJiMzNDsgfSxcbiAzMzU6XHRcdHsgXCYjMzQ7a3N6OTU2N1wmIzM0OyB9LFxuIDMzNjpcdFx0eyBcJiMzNDtsYW45MzcwXCYjMzQ7IH0sXG4gMzM3Olx0XHR7IFwmIzM0O2xhbjkzNzFcJiMzNDsgfSxcbiAzMzg6XHRcdHsgXCYjMzQ7bGFuOTM3MlwmIzM0OyB9LFxuIDMzOTpcdFx0eyBcJiMzNDtsYW45MzczXCYjMzQ7IH0sXG4gMzQwOlx0XHR7IFwmIzM0O2xhbjkzNzRcJiMzNDsgfSxcbiAzNDE6XHRcdHsgXCYjMzQ7bGFuOTY0NlwmIzM0OyB9LFxuIDM0MjpcdFx0eyB9LFxuIDM0MzpcdH07XG4gMzQ0Olx0TU9EVUxFX0RFVklDRV9UQUJMRShzcGksIGtzel9zcGlfaWRzKTtcbiAzNDU6XHRcbiAzNDY6XHRzdGF0aWMgREVGSU5FX1NJTVBMRV9ERVZfUE1fT1BTKGtzel9zcGlfcG1fb3BzLFxuIDM0NzpcdFx0XHRcdFx0a3N6X3N3aXRjaF9zdXNwZW5kLCBrc3pfc3dpdGNoX3Jlc3VtZSk7XG4gMzQ4Olx0XG4gMzQ5Olx0c3RhdGljIHN0cnVjdCBzcGlfZHJpdmVyIGtzel9zcGlfZHJpdmVyID0ge1xuIDM1MDpcdFx0LmRyaXZlciA9IHtcbiAzNTE6XHRcdFx0Lm5hbWVcdD0gXCYjMzQ7a3N6LXN3aXRjaFwmIzM0OyxcbiAzNTI6XHRcdFx0Lm9mX21hdGNoX3RhYmxlID0ga3N6X2R0X2lkcyxcbiAzNTM6XHRcdFx0LnBtID0gXHUwMDI2a3N6X3NwaV9wbV9vcHMsXG4gMzU0Olx0XHR9LFxuIDM1NTpcdFx0LmlkX3RhYmxlID0ga3N6X3NwaV9pZHMsXG4gMzU2Olx0XHQucHJvYmVcdD0ga3N6X3NwaV9wcm9iZSxcbiAzNTc6XHRcdC5yZW1vdmVcdD0ga3N6X3NwaV9yZW1vdmUsXG4gMzU4Olx0XHQuc2h1dGRvd24gPSBrc3pfc3BpX3NodXRkb3duLFxuIDM1OTpcdH07XG4gMzYwOlx0XG4gMzYxOlx0bW9kdWxlX3NwaV9kcml2ZXIoa3N6X3NwaV9kcml2ZXIpO1xuIDM2MjpcdFxuIDM2MzpcdE1PRFVMRV9BTElBUyhcJiMzNDtzcGk6bGFuOTM3eFwmIzM0Oyk7XG4gMzY0Olx0TU9EVUxFX0FVVEhPUihcJiMzNDtUcmlzdHJhbSBIYSBcdTAwM2NUcmlzdHJhbS5IYUBtaWNyb2NoaXAuY29tXHUwMDNlXCYjMzQ7KTtcbiAzNjU6XHRNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7TWljcm9jaGlwIGtzeiBTZXJpZXMgU3dpdGNoIFNQSSBEcml2ZXJcJiMzNDspO1xuIDM2NjpcdE1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA1OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2OTYwCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBga3N6X3NwaV9wcm9iZWAgZnVuY3Rpb24gYW5kIHNlZSB3aGF0IGl0JiMzOTtzIGFsbCBhYm91dC4gQXMgYW4gZXhwZXJ0IGluIG15IGZpZWxkLCBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIGEgZmV3IHRoaW5ncywgYmFzZWQgb24gdGhlIG5hbWluZyBjb252ZW50aW9uIGFuZCB0aGUgY29udGV4dCBvZiBTUEkgcHJvYmluZy4gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyB0byBiZSB0aGUgY29yZSBpbml0aWFsaXphdGlvbiBhbmQgZGV0ZWN0aW9uIHJvdXRpbmUgZm9yIHRoZSBzcGVjaWZpYyBTUEkgZGV2aWNlLCBsaWtlbHkgaGFuZGxpbmcgaGFyZHdhcmUgc2V0dXAgYW5kIGRyaXZlciBiaW5kaW5nLiBUaGUgbmFtZSAmIzM0O3Byb2JlJiMzNDsgaXRzZWxmIGltcGxpZXMgYSBwcm9jZXNzIG9mIGRpc2NvdmVyeSBhbmQgY29uZmlndXJhdGlvbiwgc28gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYWN0aW9ucyBsaWtlOgoKKiAgICoqRGV2aWNlIElkZW50aWZpY2F0aW9uOioqIFRoZSBmdW5jdGlvbiB3aWxsIGxpa2VseSBzdGFydCBieSBpZGVudGlmeWluZyB0aGUgZGV2aWNlLCBwb3RlbnRpYWxseSB0aHJvdWdoIGEgY2hpcCBJRCByZWFkIG9yIGEgc3BlY2lmaWMgcmVnaXN0ZXIgaW50ZXJyb2dhdGlvbiBvdmVyIHRoZSBTUEkgYnVzLiBJJiMzOTtsbCBiZSB3YXRjaGluZyB0byBzZWUgaG93IGl0IGhhbmRsZXMgZGlmZmVyZW50IGRldmljZSByZXZpc2lvbnMgb3IgdmFyaWFudHMuIEFueSBlcnJvciBoYW5kbGluZyByZWxhdGVkIHRvIGRldmljZSBpZGVudGlmaWNhdGlvbiB3aWxsIGJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZy4KKiAgICoqUmVzb3VyY2UgQWxsb2NhdGlvbjoqKiBJJiMzOTttIGd1ZXNzaW5nIGl0IHdpbGwgYWxsb2NhdGUgbmVjZXNzYXJ5IHJlc291cmNlcywgc3VjaCBhcyBtZW1vcnkgYnVmZmVycyBmb3IgU1BJIHRyYW5zYWN0aW9ucyBvciBpbnRlcnJ1cHQgcmVxdWVzdCBsaW5lcywgaWYgYXBwbGljYWJsZS4gR29vZCByZXNvdXJjZSBtYW5hZ2VtZW50IGlzIGtleSwgc28gSSYjMzk7bGwgYmUgc2NydXRpbml6aW5nIHRoaXMgcGFydC4KKiAgICoqRHJpdmVyIEJpbmRpbmc6KiogVGhlcmUgd2lsbCBiZSBzdGVwcyB0byBiaW5kIHRoZSBkZXZpY2UgdG8gdGhlIGRyaXZlciYjMzk7cyBkYXRhIHN0cnVjdHVyZXMuIFRoaXMgcHJvYmFibHkgaW52b2x2ZXMgc2V0dGluZyB1cCB0aGUgZGV2aWNlJiMzOTtzIHByaXZhdGUgZGF0YSwgYXNzb2NpYXRpbmcgaXQgd2l0aCB0aGUgU1BJIGRldmljZSBzdHJ1Y3R1cmUgYW5kIHJlZ2lzdGVyaW5nIGl0IHdpdGhpbiB0aGUgTGludXgga2VybmVsIGZyYW1ld29yay4KKiAgICoqSW5pdGlhbGl6YXRpb246KiogSSYjMzk7bSBhc3N1bWluZyB0aGF0IGl0IHdpbGwgaW5pdGlhbGl6ZSB0aGUgZGV2aWNlIGZvciBvcGVyYXRpb24sIHdoaWNoIGNvdWxkIG1lYW4gc2VuZGluZyBjb25maWd1cmF0aW9uIGNvbW1hbmRzIG9yIHNldHRpbmcgdXAgb3BlcmF0aW9uYWwgbW9kZXMgdmlhIHRoZSBTUEkgYnVzLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGUgc3BlY2lmaWMgc2VxdWVuY2Ugb2YgU1BJIHRyYW5zZmVycyBhbmQgYW55IGRlbGF5cyBpbnZvbHZlZCwgYXMgdGltaW5nIGlzIGNydWNpYWwgZm9yIFNQSSBjb21tdW5pY2F0aW9uLgoqICAgKipFcnJvciBIYW5kbGluZzoqKiBBIHJvYnVzdCBgcHJvYmVgIGZ1bmN0aW9uIG5lZWRzIHNvbGlkIGVycm9yIGhhbmRsaW5nLiBJJiMzOTtsbCBiZSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGhvdyBpdCBkZWFscyB3aXRoIHBvdGVudGlhbCBpc3N1ZXMgbGlrZSBjb21tdW5pY2F0aW9uIGZhaWx1cmVzLCBpbnZhbGlkIGRldmljZSByZXNwb25zZXMsIG9yIHJlc291cmNlIGFsbG9jYXRpb24gZXJyb3JzLiBUaGUgcXVhbGl0eSBvZiBlcnJvciByZXBvcnRpbmcsIGxvZ2dpbmcsIGFuZCByZWNvdmVyeSB3aWxsIGJlIGNyaXRpY2FsIGluIGEgcmVhbC13b3JsZCBzY2VuYXJpby4KKiAgICoqT3B0aW9uYWwgSGFyZHdhcmUgQ2hlY2tzOioqIEl0IGlzIGFsc28gcGxhdXNpYmxlIGl0IGluY2x1ZGVzIHNvbWUgYmFzaWMgaGVhbHRoIGNoZWNrcyBhbmQgdmFsaWRhdGlvbiB0aGF0IGhhcmR3YXJlIGlzIGluIGEgd29ya2luZyBzdGF0ZS4KCkVzc2VudGlhbGx5LCBJJiMzOTttIGV4cGVjdGluZyB0aGlzIGBrc3pfc3BpX3Byb2JlYCBmdW5jdGlvbiB0byBiZSB0aGUgZ2F0ZXdheSBmb3IgdGhlIGRldmljZSYjMzk7cyBpbnRlZ3JhdGlvbiBpbnRvIHRoZSBzeXN0ZW0uIE15IGV4cGVydGlzZSB3aWxsIGFsbG93IG1lIHRvIHF1aWNrbHkgZXZhbHVhdGUgaXRzIHF1YWxpdHksIGVmZmljaWVuY3ksIGFuZCBvdmVyYWxsIGFwcHJvYWNoIHRvIFNQSSBkZXZpY2UgbWFuYWdlbWVudC4gSSYjMzk7bSByZWFkeSB0byBkaWcgaW4gYW5kIHVuZGVyc3RhbmQgaG93IHRoaXMgZnVuY3Rpb24gY29udHJpYnV0ZXMgdG8gdGhlIGdyZWF0ZXIgZHJpdmVyIGZyYW1ld29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDU6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEzNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTM1Olx0XHRcdCAgICAgS1NaODQ2M19TUElfQUREUl9BTElHTik7XG4gMTM2Olx0XG4gMTM3Olx0c3RhdGljIGludCBrc3pfc3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4gMTM4Olx0e1xuIDEzOTpcdFx0Y29uc3Qgc3RydWN0IHJlZ21hcF9jb25maWcgKnJlZ21hcF9jb25maWc7XG4gMTQwOlx0XHRjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSAqY2hpcDtcbiAxNDE6XHRcdHN0cnVjdCBkZXZpY2UgKmRkZXYgPSBcdTAwMjZzcGktXHUwMDNlZGV2O1xuIDE0MjpcdFx0c3RydWN0IHJlZ21hcF9jb25maWcgcmM7XG4gMTQzOlx0XHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2O1xuIDE0NDpcdFx0aW50IGksIHJldCA9IDA7XG4gMTQ1Olx0XG4gMTQ2Olx0XHRjaGlwID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRkZXYpO1xuIDE0NzpcdFx0aWYgKCFjaGlwKVxuIDE0ODpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAxNDk6XHRcbiAxNTA6XHRcdGRldiA9IGtzel9zd2l0Y2hfYWxsb2MoXHUwMDI2c3BpLVx1MDAzZWRldiwgY2hpcCwgc3BpKTtcbiAxNTE6XHRcdGlmICghZGV2KVxuIDE1MjpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAxNTM6XHRcbiAxNTQ6XHRcdC8qIFNhdmUgY2hpcCBpZCB0byBkbyBzcGVjaWFsIGluaXRpYWxpemF0aW9uIHdoZW4gcHJvYmluZy4gKi9cbiAxNTU6XHRcdGRldi1cdTAwM2VjaGlwX2lkID0gY2hpcC1cdTAwM2VjaGlwX2lkO1xuIDE1NjpcdFx0aWYgKGNoaXAtXHUwMDNlY2hpcF9pZCA9PSBLU1o4OFgzX0NISVBfSUQpXG4gMTU3Olx0XHRcdHJlZ21hcF9jb25maWcgPSBrc3o4ODYzX3JlZ21hcF9jb25maWc7XG4gMTU4Olx0XHRlbHNlIGlmIChjaGlwLVx1MDAzZWNoaXBfaWQgPT0gS1NaODQ2M19DSElQX0lEKVxuIDE1OTpcdFx0XHRyZWdtYXBfY29uZmlnID0ga3N6ODQ2M19yZWdtYXBfY29uZmlnO1xuIDE2MDpcdFx0ZWxzZSBpZiAoY2hpcC1cdTAwM2VjaGlwX2lkID09IEtTWjg3OTVfQ0hJUF9JRCB8fFxuIDE2MTpcdFx0XHQgY2hpcC1cdTAwM2VjaGlwX2lkID09IEtTWjg3OTRfQ0hJUF9JRCB8fFxuIDE2MjpcdFx0XHQgY2hpcC1cdTAwM2VjaGlwX2lkID09IEtTWjg3NjVfQ0hJUF9JRClcbiAxNjM6XHRcdFx0cmVnbWFwX2NvbmZpZyA9IGtzejg3OTVfcmVnbWFwX2NvbmZpZztcbiAxNjQ6XHRcdGVsc2UgaWYgKGNoaXAtXHUwMDNlY2hpcF9pZCA9PSBLU1o4ODk1X0NISVBfSUQgfHxcbiAxNjU6XHRcdFx0IGNoaXAtXHUwMDNlY2hpcF9pZCA9PSBLU1o4ODY0X0NISVBfSUQpXG4gMTY2Olx0XHRcdHJlZ21hcF9jb25maWcgPSBrc3o4ODYzX3JlZ21hcF9jb25maWc7XG4gMTY3Olx0XHRlbHNlXG4gMTY4Olx0XHRcdHJlZ21hcF9jb25maWcgPSBrc3o5NDc3X3JlZ21hcF9jb25maWc7XG4gMTY5Olx0XG4gMTcwOlx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBfX0tTWl9OVU1fUkVHTUFQUzsgaSYjNDM7JiM0MzspIHtcbiAxNzE6XHRcdFx0cmMgPSByZWdtYXBfY29uZmlnW2ldO1xuIDE3MjpcdFx0XHRyYy5sb2NrX2FyZyA9IFx1MDAyNmRldi1cdTAwM2VyZWdtYXBfbXV0ZXg7XG4gMTczOlx0XHRcdHJjLndyX3RhYmxlID0gY2hpcC1cdTAwM2V3cl90YWJsZTtcbiAxNzQ6XHRcdFx0cmMucmRfdGFibGUgPSBjaGlwLVx1MDAzZXJkX3RhYmxlO1xuIDE3NTpcdFx0XHRkZXYtXHUwMDNlcmVnbWFwW2ldID0gZGV2bV9yZWdtYXBfaW5pdF9zcGkoc3BpLCBcdTAwMjZyYyk7XG4gMTc2Olx0XG4gMTc3Olx0XHRcdGlmIChJU19FUlIoZGV2LVx1MDAzZXJlZ21hcFtpXSkpIHtcbiAxNzg6XHRcdFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShcdTAwMjZzcGktXHUwMDNlZGV2LCBQVFJfRVJSKGRldi1cdTAwM2VyZWdtYXBbaV0pLFxuIDE3OTpcdFx0XHRcdFx0XHQgICAgIFwmIzM0O0ZhaWxlZCB0byBpbml0aWFsaXplIHJlZ21hcCVpXFxuXCYjMzQ7LFxuIDE4MDpcdFx0XHRcdFx0XHQgICAgIHJlZ21hcF9jb25maWdbaV0udmFsX2JpdHMpO1xuIDE4MTpcdFx0XHR9XG4gMTgyOlx0XHR9XG4gMTgzOlx0XG4gMTg0Olx0XHRpZiAoc3BpLVx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhKVxuIDE4NTpcdFx0XHRkZXYtXHUwMDNlcGRhdGEgPSBzcGktXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGE7XG4gMTg2Olx0XG4gMTg3Olx0XHQvKiBzZXR1cCBzcGkgKi9cbiAxODg6XHRcdHNwaS1cdTAwM2Vtb2RlID0gU1BJX01PREVfMztcbiAxODk6XHRcdHJldCA9IHNwaV9zZXR1cChzcGkpO1xuIDE5MDpcdFx0aWYgKHJldClcbiAxOTE6XHRcdFx0cmV0dXJuIHJldDtcbiAxOTI6XHRcbiAxOTM6XHRcdGRldi1cdTAwM2VpcnEgPSBzcGktXHUwMDNlaXJxO1xuIDE5NDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwNToyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODUzOAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYnJlYWtpbmcgZG93biB0aGlzIGNvZGUgc25pcHBldDoKCioqRGVidWdnaW5nIENoaXAgSWRlbnRpZmljYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYml0IG9mIGNvZGUgYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGlzIGNoZWNrOiBgY2hpcCA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZGV2KTsgaWYgKCFjaGlwKSByZXR1cm4gLUVJTlZBTDtgLiBUaGlzIGlzIHN0YW5kYXJkIHByYWN0aWNlIGluIGRldmljZSBkcml2ZXJzIOKAkyBnZXQgdGhlIG1hdGNoaW5nIGRhdGEgZm9yIHRoZSBkZXZpY2UsIGFuZCBiYWlsIG91dCBpZiB3ZSBkb24mIzM5O3QgaGF2ZSBhIHZhbGlkIG1hdGNoLiBObyBzdXJwcmlzZXMgdGhlcmUuIEJ1dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgKmhvdyogdGhlIGBjaGlwYCBzdHJ1Y3R1cmUgaXMgcG9wdWxhdGVkLiBXaGVyZSBkb2VzIGBkZXYtJmd0O2NoaXBfaWRgIGNvbWUgZnJvbSwgc2luY2UgaXQgaXMgbGlrZWx5IHRoYXQgdGhlIGBjaGlwYCB2YXJpYWJsZSBjb250YWlucyBpbmZvcm1hdGlvbiB0aGF0IGluZGljYXRlcyB0aGUgc3BlY2lmaWMgdHlwZSBvZiBzd2l0Y2g/CgpNeSBuZXh0IHN0ZXAgaXMgdG8gdHJhY2UgYmFjayB0aGUgb3JpZ2luIG9mIHRoYXQgY2hpcCBJRC4gSSYjMzk7bSBnb2luZyB0byBoZWFkIGRpcmVjdGx5IHRvIHRoZSBga3N6X3N3aXRjaF9yZWdpc3RlcmAgYW5kIGBrc3pfc3dpdGNoX2RldGVjdGAgZnVuY3Rpb25zLCB3aGljaCwgZ2l2ZW4gdGhlIGNvbnRleHQsIEkmIzM5O20gYmV0dGluZyByZXNpZGUgaW4gYGtzel9jb21tb24uY2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNydWNpYWwgY29udGV4dCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyBgY2hpcGAgaXMgZGV0ZXJtaW5lZCwgd2hhdCBpdHMgY29udGVudHMgYXJlIGFuZCB3aGF0IGlzIGV4cGVjdGVkIG9mIG1lIGdvaW5nIGZvcndhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA1OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2tzel9zd2l0Y2hfZGV0ZWN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yOTM2PXZvaWQga3N6X3BoeWxpbmtfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yOTQ3LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6Mjk0ODpzdGF0aWMgaW50IGtzel9zd2l0Y2hfZGV0ZWN0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yOTQ5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0zOTUyPWludCBrc3pfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzk4OS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjM5OTA6XHRyZXQgPSBrc3pfc3dpdGNoX2RldGVjdChkZXYpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzk5MS1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA1OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MTU2CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEludmVzdGlnYXRpb24gaW50byBEU0EgU3dpdGNoIERyaXZlcnMqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byBob3cgRFNBIHN3aXRjaCBkcml2ZXJzIGZ1bmN0aW9uIHdpdGhpbiB0aGUga2VybmVsLiBNeSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGRyaXZlcnMgaW50ZXJmYWNlIHdpdGggdGhlIGhhcmR3YXJlLCBzcGVjaWZpY2FsbHkgdGhlIGV0aGVybmV0IHN3aXRjaCBjaGlwcyB3ZSBjb21tb25seSBzZWUsIGxpa2UgdGhlIG9uZXMgZnJvbSBNYXJ2ZWxsLCBNaWNyb2NoaXAgS1NaLCBCcm9hZGNvbSBTdGFyZmlnaHRlciwgYW5kIG90aGVycy4gVGhlc2UgY2hpcHMsIGFzIEkga25vdyB3ZWxsLCBhcmUgdHlwaWNhbGx5IGNvbm5lY3RlZCB0byB0aGUgcGh5c2ljYWwgZXRoZXJuZXQgaW50ZXJmYWNlcyB2aWEgcHJvdG9jb2xzIGxpa2UgTURJTywgU1BJLCBvciBJMkMgb24gZW1iZWRkZWQgc3lzdGVtcyBvciBkZWRpY2F0ZWQgaGFyZHdhcmUuCgpOb3csIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUmIzM5O3MgYW55IHZpcnR1YWwgZW11bGF0aW9uIGF2YWlsYWJsZSBmb3IgYSBzcGVjaWZpYyBjaGlwLCBsZXQmIzM5O3Mgc2F5IGEgTWljcm9jaGlwIEtTWiBzd2l0Y2gsIGZvciB0ZXN0aW5nIHB1cnBvc2VzLiBJZGVhbGx5LCBzb21ldGhpbmcgbGlrZSBRRU1VIHdvdWxkIGJlIHBlcmZlY3QuIEkmIzM5O20gY2hlY2tpbmcgc3BlY2lmaWNhbGx5IGZvciBzb21ldGhpbmcgbGlrZSBhIEtTWjk4OTcgb3IgS1NaOTg5N1MuIFNhZGx5LCB0aGUgcXVpY2sgYW5zd2VyIGlzIG5vLCBRRU1VIGRvZXNuJiMzOTt0IHNlZW0gdG8gZW11bGF0ZSBhbnkgS1NaIHN3aXRjaGVzLgoKQWxyaWdodCwgc28gdGhlIG5leHQgdGhpbmcgSSYjMzk7bSBjb25zaWRlcmluZyBpcyB3aGV0aGVyIEkgY2FuIGNyZWF0ZSBhIERTQSBzd2l0Y2ggZm9yIHRlc3RpbmcgaW4gdXNlciBzcGFjZSB3aXRob3V0IG5lZWRpbmcgdGhlIHBoeXNpY2FsIGhhcmR3YXJlLiBJcyB0aGVyZSBhIHZpcnR1YWwgRFNBIG9yIG1vY2sgRFNBIGNvbXBvbmVudCB3aXRoaW4gdGhlIGtlcm5lbCB0aGF0IGNvdWxkIGZhY2lsaXRhdGUgdGhpcz8gVG8gZ2V0IHN0YXJ0ZWQsIEkmIzM5O20gZ29pbmcgdG8gcnVuIGEgYGdyZXBgIGZvciBEU0EgZHJpdmVycyB0byBzZWUgd2hhdCYjMzk7cyBvdXQgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA1OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RzYV9yZWdpc3Rlcl9zd2l0Y2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM9MzMwOD1pbnQgYjUzX3N3aXRjaF9yZWdpc3RlcihzdHJ1Y3QgYjUzX2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTMzMjYtXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzozMzI3Olx0cmV0dXJuIGRzYV9yZWdpc3Rlcl9zd2l0Y2goZGV2LVx1MDAzZWRzKTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTMzMjgtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTU3PXN0cnVjdCBkc2FfbG9vcF9wZGF0YSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1ODpcdC8qIE11c3QgYmUgZmlyc3QsIHN1Y2ggdGhhdCBkc2FfcmVnaXN0ZXJfc3dpdGNoKCkgY2FuIGFjY2VzcyB0aGlzXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01OS1cdCAqIHdpdGhvdXQgZ29yeSBwb2ludGVyIG1hbmlwdWxhdGlvbnNcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz0zNTU9c3RhdGljIGludCBkc2FfbG9vcF9kcnZfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4OC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM4OTpcdHJldCA9IGRzYV9yZWdpc3Rlcl9zd2l0Y2goZHMpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzkwLVx0aWYgKCFyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmM9MTkzMz1zdGF0aWMgaW50IGhlbGxjcmVla19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jLTIwMjYtXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYzoyMDI3Olx0cmV0ID0gZHNhX3JlZ2lzdGVyX3N3aXRjaChoZWxsY3JlZWstXHUwMDNlZHMpO1xuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmMtMjAyOC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM9NzQ2PXN0YXRpYyBpbnQga3M4OTk1X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTgyMy1cbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYzo4MjQ6XHRlcnIgPSBkc2FfcmVnaXN0ZXJfc3dpdGNoKGtzLVx1MDAzZWRzKTtcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy04MjUtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYz0xNDA0PXN0YXRpYyBpbnQgbGFuOTMwM19yZWdpc3Rlcl9zd2l0Y2goc3RydWN0IGxhbjkzMDMgKmNoaXApXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTE0MTYtXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTQxNzpcdHJldHVybiBkc2FfcmVnaXN0ZXJfc3dpdGNoKGNoaXAtXHUwMDNlZHMpO1xuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTE0MTgtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jPTE2Nzg9aW50IGdzd2lwX3Byb2JlX2NvbW1vbihzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdiwgdTMyIHZlcnNpb24pXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTcwMy1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE3MDQ6XHRlcnIgPSBkc2FfcmVnaXN0ZXJfc3dpdGNoKHByaXYtXHUwMDNlZHMpO1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTcwNS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9Mzk1Mj1pbnQga3N6X3N3aXRjaF9yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTQwODUtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzo0MDg2Olx0cmV0ID0gZHNhX3JlZ2lzdGVyX3N3aXRjaChkZXYtXHUwMDNlZHMpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtNDA4Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9MTU1PW10NzUzMF9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjE3LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjE4Olx0cmV0dXJuIGRzYV9yZWdpc3Rlcl9zd2l0Y2gocHJpdi1cdTAwM2Vkcyk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMTktfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jPTMwPW10Nzk4OF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTYzLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6NjQ6XHRyZXR1cm4gZHNhX3JlZ2lzdGVyX3N3aXRjaChwcml2LVx1MDAzZWRzKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTY1LX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NjI4LmM9NTY1PXN0YXRpYyBpbnQgbXQ3NjI4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzYyOC5jLTYwNi1cbmRyaXZlcnMvbmV0L2RzYS9tdDc2MjguYzo2MDc6XHRyZXR1cm4gZHNhX3JlZ2lzdGVyX3N3aXRjaChkcyk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NjI4LmMtNjA4LX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2MDYwLmM9MzA0PXN0YXRpYyBpbnQgbXY4OGU2MDYwX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2MDYwLmMtMzM1LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNjA2MC5jOjMzNjpcdHJldHVybiBkc2FfcmVnaXN0ZXJfc3dpdGNoKGRzKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTYwNjAuYy0zMzctfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTM5ODA9c3RhdGljIGludCBtdjg4ZTZ4eHhfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5OTUtXHQgKiBkZXBlbmRzIG9uIHRoZSBwaHlzaWNhbCBzd2l0Y2ggdG9wb2xvZ3kuIFdlIG5lZWQgdG8gbGV0IERTQSBmaWd1cmVcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM5OTY6XHQgKiB0aGF0IG91dCBhbmQgdGhlcmVmb3JlIHdlIGNhbm5vdCBzZXQgdGhpcyBhdCBkc2FfcmVnaXN0ZXJfc3dpdGNoKClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5OTctXHQgKiB0aW1lLlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTcyNTE9c3RhdGljIGludCBtdjg4ZTZ4eHhfcmVnaXN0ZXJfc3dpdGNoKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03Mjc2LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzI3NzpcdHJldHVybiBkc2FfcmVnaXN0ZXJfc3dpdGNoKGRzKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcyNzgtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jPTIwOTE9c3RhdGljIGludCBteGw4NjJ4eF9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmMtMjEzMC1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jOjIxMzE6XHRlcnIgPSBkc2FfcmVnaXN0ZXJfc3dpdGNoKGRzKTtcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jLTIxMzItXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmM9MjQzNT1zdGF0aWMgaW50IG5ldGNfc3dpdGNoX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTI0NzgtXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzoyNDc5Olx0ZXJyID0gZHNhX3JlZ2lzdGVyX3N3aXRjaChkcyk7XG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy0yNDgwLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmM9MjM5MD1pbnQgZmVsaXhfcmVnaXN0ZXJfc3dpdGNoKHN0cnVjdCBkZXZpY2UgKmRldiwgcmVzb3VyY2Vfc2l6ZV90IHN3aXRjaF9iYXNlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYy0yNDI4LVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jOjI0Mjk6XHRlcnIgPSBkc2FfcmVnaXN0ZXJfc3dpdGNoKGRzKTtcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYy0yNDMwLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jPTEwMzE9c3RhdGljIGludCBhcjkzMzFfc3dfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmMtMTA3OC1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmM6MTA3OTpcdHJldCA9IGRzYV9yZWdpc3Rlcl9zd2l0Y2goZHMpO1xuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYy0xMDgwLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYz0yMDU5PXFjYThrX3N3X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYy0yMTIwLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM6MjEyMTpcdHJldHVybiBkc2FfcmVnaXN0ZXJfc3dpdGNoKHByaXYtXHUwMDNlZHMpO1xuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtMjEyMi19XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jPTIzNT1pbnQgcnRsODN4eF9yZWdpc3Rlcl9zd2l0Y2goc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmMtMjUxLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jOjI1MjpcdHJldCA9IGRzYV9yZWdpc3Rlcl9zd2l0Y2goZHMpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jLTI1My1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jPTEyMDc9c3RhdGljIGludCBhNXBzd19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmMtMTI2Mi1cbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmM6MTI2MzpcdHJldCA9IGRzYV9yZWdpc3Rlcl9zd2l0Y2goZHMpO1xuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYy0xMjY0LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jPTMyMzc9c3RhdGljIGludCBzamExMTA1X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMzM0MC1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jOjMzNDE6XHRyZXR1cm4gZHNhX3JlZ2lzdGVyX3N3aXRjaChwcml2LVx1MDAzZWRzKTtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jLTMzNDItfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS92aXRlc3NlLXZzYzczeHgtY29yZS5jPTIzMzM9aW50IHZzYzczeHhfcHJvYmUoc3RydWN0IHZzYzczeHggKnZzYylcbi0tXG5kcml2ZXJzL25ldC9kc2Evdml0ZXNzZS12c2M3M3h4LWNvcmUuYy0yMzg0LVx0dnNjLVx1MDAzZWRzLVx1MDAzZXBoeWxpbmtfbWFjX29wcyA9IFx1MDAyNnZzYzczeHhfcGh5bGlua19tYWNfb3BzO1xuZHJpdmVycy9uZXQvZHNhL3ZpdGVzc2UtdnNjNzN4eC1jb3JlLmM6MjM4NTpcdHJldCA9IGRzYV9yZWdpc3Rlcl9zd2l0Y2godnNjLVx1MDAzZWRzKTtcbmRyaXZlcnMvbmV0L2RzYS92aXRlc3NlLXZzYzczeHgtY29yZS5jLTIzODYtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3hyczcwMHgveHJzNzAweC5jPTgxOD1pbnQgeHJzNzAweF9zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IHhyczcwMHggKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3hyczcwMHgveHJzNzAweC5jLTg0MS1cbmRyaXZlcnMvbmV0L2RzYS94cnM3MDB4L3hyczcwMHguYzo4NDI6XHRyZXR1cm4gZHNhX3JlZ2lzdGVyX3N3aXRjaChwcml2LVx1MDAzZWRzKTtcbmRyaXZlcnMvbmV0L2RzYS94cnM3MDB4L3hyczcwMHguYy04NDMtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz00OTE0PXN0YXRpYyBpbnQgeXQ5MjF4X21kaW9fcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00OTU4LVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjQ5NTk6XHRyZXR1cm4gZHNhX3JlZ2lzdGVyX3N3aXRjaChkcyk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNDk2MC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA1OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMDAyCgkJCQkJCQlvdXRwdXQ6IDE2OQoJCQkJCQkJdGhvdWdodHM6IDU5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmcgQW5hbHlzaXM6IE1pY3JvY2hpcCBLU1ogU3dpdGNoIERyaXZlcioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGUgYGRzYV9sb29wLmNgIGRyaXZlciBpcyBhIG1vY2sgZHJpdmVyLCBmb3IgRFNBIHRlc3Rpbmcgb25seSwgYW5kIG5vdCByZWxldmFudCBoZXJlLiBUaGUgcmVhbCBmb2N1cyBpcyBvbiB0aGUgTWljcm9jaGlwIEtTWiBzd2l0Y2ggZHJpdmVyIGxvY2F0ZWQgaW4gYGRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvYC4gTXkgdGFzayBpcyB0byBkZXRlcm1pbmUgaWYgdGhpcyBjb2RlIGlzIGZ1enphYmxlIGJ5IHN5emthbGxlci4KCkZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIHRoaXMgZHJpdmVyIHJlbGllcyBvbiBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0JiMzOTtzIGluYWNjZXNzaWJsZSBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQsIGJlY2F1c2UgdGhhdCB3b3VsZCBtZWFuIGl0JiMzOTtzIG5vdCBmdXp6YWJsZS4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgY3JpdGVyaWEgZm9yICpub3QqIGZ1enppbmcsIHNwZWNpZmljYWxseSAmIzM0O1N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZS4mIzM0OwoKTGV0JiMzOTtzIHZlcmlmeToKCjEuICBNeSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LgoyLiAgVGhlIGNvZGUgaW4gcXVlc3Rpb24gaXMgaW4gYGRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvYCDigJMgc3BlY2lmaWNhbGx5IGBrc3pfY29tbW9uLmNgLCBga3N6X2NvbW1vbi5oYCwgYW5kIGBpbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbWljcm9jaGlwLWtzei5oYC4KMy4gIFRoaXMgY29kZSBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIHRoZSBgS1NaOTg5N1NgIHN3aXRjaCBjaGlwLCBkaXN0aW5ndWlzaGluZyBpdCBmcm9tIG90aGVyIEtTWiBtb2RlbHMgdmlhIGEgcmVnaXN0ZXIgcmVhZCwgYEtTWjk4OTdfUkVHX1BPUlQ3X1hNSUlfQ1RSTF8wYCAoMHg3MzAwKS4KNC4gIENydWNpYWxseSwgdGhpcyBkcml2ZXIgaXMgZGVzaWduZWQgZm9yIE1pY3JvY2hpcCYjMzk7cyAqcGh5c2ljYWwqIEV0aGVybmV0IHN3aXRjaCBjaGlwcywgd2hpY2ggY29ubmVjdCB0aHJvdWdoIFNQSSBvciBJMkMuCjUuICBJbiB0eXBpY2FsIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIGVudmlyb25tZW50cywgdGhlcmUmIzM5O3Mgbm8gTWljcm9jaGlwIEtTWiBzd2l0Y2ggaGFyZHdhcmUgZW11bGF0aW9uIGF2YWlsYWJsZSwgYW5kIEkgY2FuJiMzOTt0IGR5bmFtaWNhbGx5IHByb2JlIG9yIGF0dGFjaCB0aGlzIGhhcmR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgb3IgYSBkZXZpY2UgdHJlZS4KClRoZXJlZm9yZSwgdGhpcyBjb25maXJtcyB0aGF0IHRoZSBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSBpbiBteSBmdXp6aW5nIHNldHVwLiBJJiMzOTttIGNvbmZpZGVudCBhYm91dCB0aGF0LgoKTGV0JiMzOTtzIGNyb3NzLWNoZWNrIGV2ZXJ5dGhpbmcgdG8gYmUgY2VydGFpbi4KCiogICBJcyBgV29ydGhGdXp6aW5nYCBmYWxzZT8gWWVzLgoqICAgVGhlIHJlbGV2YW50IGBFbmFibGVDb25maWdzYCBhcmUgbGlrZWx5IGBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OYCwgYE5FVF9EU0FfTUlDUk9DSElQX0tTWjk0NzdfSTJDYCwgYW5kIGBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfU1BJYCwgb3IgcG9zc2libHkgZW1wdHkuCiogICBgRm9jdXNTeW1ib2xzYCBpcyBlbXB0eSwgd2hpY2ggaXNuJiMzOTt0IGEgZmFjdG9yIGhlcmUuCiogICBNeSByZWFzb25pbmcgaXMgY29uY2lzZTogdGhlIGRyaXZlciBpcyBmb3IgcGh5c2ljYWwgTWljcm9jaGlwIEtTWiBzd2l0Y2hlcyAoaW5jbHVkaW5nIGRldGVjdGluZyB0aGUgS1NaOTg5N1MgdmFyaWFudCkgdGhhdCBpbnRlcmZhY2UgdmlhIFNQSS9JMkMsIHdoaWNoIHJlcXVpcmUgaGFyZHdhcmUgdGhhdCBkb2VzbiYjMzk7dCBleGlzdCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIHRodXMgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIuCgpPa2F5LCBJJiMzOTttIHJlYWR5IHRvIHByZXBhcmUgdGhlIHRvb2wgY2FsbCB0byBgc2V0LXJlc3VsdHNgLiBUaGUgY29kZSBpcyAqbm90KiBmdXp6YWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDU6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT04mIzM0OywKICAgICYjMzQ7TkVUX0RTQV9NSUNST0NISVBfS1NaOTQ3N19JMkMmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9NSUNST0NISVBfS1NaX1NQSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBNaWNyb2NoaXAgS1NaOTg5N1Mgc3dpdGNoIHZhcmlhbnQgdG8gdGhlIE1pY3JvY2hpcCBLU1ogRFNBIHN3aXRjaCBkcml2ZXIgKGtzel9jb21tb24uYykuIFRoaXMgZHJpdmVyIGNvbnRyb2xzIHBoeXNpY2FsIEV0aGVybmV0IHN3aXRjaCBJQ3MgaW50ZXJmYWNlZCB2aWEgU1BJIG9yIEkyQy4gQmVjYXVzZSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSBsYWNrIGVtdWxhdGlvbiBmb3IgdGhlc2UgcGh5c2ljYWwgc3dpdGNoIGNoaXBzLCB0aGUgbW9kaWZpZWQgaGFyZHdhcmUtc3BlY2lmaWMgZGV0ZWN0aW9uIGFuZCBjaGlwIGRhdGEgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OJiMzNDssCiAgICAmIzM0O05FVF9EU0FfTUlDUk9DSElQX0tTWjk0NzdfSTJDJiMzNDssCiAgICAmIzM0O05FVF9EU0FfTUlDUk9DSElQX0tTWl9TUEkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgTWljcm9jaGlwIEtTWjk4OTdTIHN3aXRjaCB2YXJpYW50IHRvIHRoZSBNaWNyb2NoaXAgS1NaIERTQSBzd2l0Y2ggZHJpdmVyIChrc3pfY29tbW9uLmMpLiBUaGlzIGRyaXZlciBjb250cm9scyBwaHlzaWNhbCBFdGhlcm5ldCBzd2l0Y2ggSUNzIGludGVyZmFjZWQgdmlhIFNQSSBvciBJMkMuIEJlY2F1c2Ugc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgbGFjayBlbXVsYXRpb24gZm9yIHRoZXNlIHBoeXNpY2FsIHN3aXRjaCBjaGlwcywgdGhlIG1vZGlmaWVkIGhhcmR3YXJlLXNwZWNpZmljIGRldGVjdGlvbiBhbmQgY2hpcCBkYXRhIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDU6MjE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA1OjE5OjQ3Ljg1NDQ5NzU2M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk2ODcwMTYyNDgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT05cIixcbiAgICBcIk5FVF9EU0FfTUlDUk9DSElQX0tTWjk0NzdfSTJDXCIsXG4gICAgXCJORVRfRFNBX01JQ1JPQ0hJUF9LU1pfU1BJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBNaWNyb2NoaXAgS1NaOTg5N1Mgc3dpdGNoIHZhcmlhbnQgdG8gdGhlIE1pY3JvY2hpcCBLU1ogRFNBIHN3aXRjaCBkcml2ZXIgKGtzel9jb21tb24uYykuIFRoaXMgZHJpdmVyIGNvbnRyb2xzIHBoeXNpY2FsIEV0aGVybmV0IHN3aXRjaCBJQ3MgaW50ZXJmYWNlZCB2aWEgU1BJIG9yIEkyQy4gQmVjYXVzZSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSBsYWNrIGVtdWxhdGlvbiBmb3IgdGhlc2UgcGh5c2ljYWwgc3dpdGNoIGNoaXBzLCB0aGUgbW9kaWZpZWQgaGFyZHdhcmUtc3BlY2lmaWMgZGV0ZWN0aW9uIGFuZCBjaGlwIGRhdGEgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNToxOTo0Ny44NTQ1MDM5MDNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1NjEwMDc2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDIxZTM2YTNiZDI4MWRiYjA0YzM4OWZlNDgyNzM4MmNlMWMzMjFlYjNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBTZXAgNCAwNToxOTo0NyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jXFxuaW5kZXggMWE5ZDZmODNhMDIzMi4uMGJjODA5ZjU4MmJlZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jXFxuQEAgLTE0ODYsNiArMTQ4Niw0MSBAQCBjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSBrc3pfc3dpdGNoX2NoaXBzW10gPSB7XFxuIFxcdFxcdC5nYml0X2NhcGFibGVcXHQ9IHt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlfSxcXG4gXFx0fSxcXG4gXFxuK1xcdFtLU1o5ODk3U10gPSB7XFxuK1xcdFxcdC5jaGlwX2lkID0gS1NaOTg5N1NfQ0hJUF9JRCxcXG4rXFx0XFx0LmRldl9uYW1lID0gXFxcIktTWjk4OTdTXFxcIixcXG4rXFx0XFx0Lm51bV92bGFucyA9IDQwOTYsXFxuK1xcdFxcdC5udW1fYWx1cyA9IDQwOTYsXFxuK1xcdFxcdC5udW1fc3RhdGljcyA9IDE2LFxcbitcXHRcXHQuY3B1X3BvcnRzID0gMHg3RixcXHQvKiBjYW4gYmUgY29uZmlndXJlZCBhcyBjcHUgcG9ydCAqL1xcbitcXHRcXHQucG9ydF9jbnQgPSA3LFxcdFxcdC8qIHRvdGFsIHBoeXNpY2FsIHBvcnQgY291bnQgKi9cXG4rXFx0XFx0LnBvcnRfbmlycXMgPSAyLFxcbitcXHRcXHQubnVtX3R4X3F1ZXVlcyA9IDQsXFxuK1xcdFxcdC5udW1faXBtcyA9IDgsXFxuK1xcdFxcdC5vcHMgPSBcXHUwMDI2a3N6OTQ3N19kZXZfb3BzLFxcbitcXHRcXHQuc3dpdGNoX29wcyA9IFxcdTAwMjZrc3o5NDc3X3N3aXRjaF9vcHMsXFxuK1xcdFxcdC5waHlsaW5rX21hY19vcHMgPSBcXHUwMDI2a3N6OTQ3N19waHlsaW5rX21hY19vcHMsXFxuK1xcdFxcdC5waHlfZXJyYXRhXzk0NzcgPSB0cnVlLFxcbitcXHRcXHQubWliX25hbWVzID0ga3N6OTQ3N19taWJfbmFtZXMsXFxuK1xcdFxcdC5taWJfY250ID0gQVJSQVlfU0laRShrc3o5NDc3X21pYl9uYW1lcyksXFxuK1xcdFxcdC5yZWdfbWliX2NudCA9IE1JQl9DT1VOVEVSX05VTSxcXG4rXFx0XFx0LnJlZ3MgPSBrc3o5NDc3X3JlZ3MsXFxuK1xcdFxcdC5tYXNrcyA9IGtzejk0NzdfbWFza3MsXFxuK1xcdFxcdC5zaGlmdHMgPSBrc3o5NDc3X3NoaWZ0cyxcXG4rXFx0XFx0LnhtaWlfY3RybDAgPSBrc3o5NDc3X3htaWlfY3RybDAsXFxuK1xcdFxcdC54bWlpX2N0cmwxID0ga3N6OTQ3N194bWlpX2N0cmwxLFxcbitcXHRcXHQuc3VwcG9ydHNfbWlpXFx0PSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsXFxuK1xcdFxcdFxcdFxcdCAgIGZhbHNlLCB0cnVlLCBmYWxzZX0sXFxuK1xcdFxcdC5zdXBwb3J0c19ybWlpXFx0PSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsXFxuK1xcdFxcdFxcdFxcdCAgIGZhbHNlLCB0cnVlLCBmYWxzZX0sXFxuK1xcdFxcdC5zdXBwb3J0c19yZ21paSA9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxcXG4rXFx0XFx0XFx0XFx0ICAgZmFsc2UsIHRydWUsIGZhbHNlfSxcXG4rXFx0XFx0LmludGVybmFsX3BoeVxcdD0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsXFxuK1xcdFxcdFxcdFxcdCAgIHRydWUsIGZhbHNlLCBmYWxzZX0sXFxuK1xcdFxcdC5nYml0X2NhcGFibGVcXHQ9IHt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlfSxcXG4rXFx0XFx0LnNnbWlpX3BvcnQgPSA3LFxcbitcXHR9LFxcbitcXG4gXFx0W0tTWjk4OTNdID0ge1xcbiBcXHRcXHQuY2hpcF9pZCA9IEtTWjk4OTNfQ0hJUF9JRCxcXG4gXFx0XFx0LmRldl9uYW1lID0gXFxcIktTWjk4OTNcXFwiLFxcbkBAIC0xODUyLDYgKzE4ODcsMTMgQEAgc3RhdGljIGludCBrc3pfY2hlY2tfZGV2aWNlX2lkKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuIFxcdFxcdGV4cGVjdGVkX2NoaXBfaWQgPSBleHBlY3RlZF9jaGlwX2RhdGEtXFx1MDAzZWNoaXBfaWQ7XFxuIFxcdH1cXG4gXFxuK1xcdC8qIFRoZSBLU1o5ODk3UyBpcyBvbmx5IHRvbGQgYXBhcnQgZnJvbSB0aGUgS1NaOTg5N1IgYXQgcnVuIHRpbWUsIHNvIGFcXG4rXFx0ICogZGV2aWNlIHRyZWUgbmFtaW5nIHRoZSBLU1o5ODk3IG1hdGNoZXMgaXQgYXMgd2VsbC5cXG4rXFx0ICovXFxuK1xcdGlmIChleHBlY3RlZF9jaGlwX2lkID09IEtTWjk4OTdfQ0hJUF9JRCBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgZGV2LVxcdTAwM2VjaGlwX2lkID09IEtTWjk4OTdTX0NISVBfSUQpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4gXFx0aWYgKGV4cGVjdGVkX2NoaXBfaWQgIT0gZGV2LVxcdTAwM2VjaGlwX2lkKSB7XFxuIFxcdFxcdGRldl9lcnIoZGV2LVxcdTAwM2VkZXYsXFxuIFxcdFxcdFxcdFxcXCJEZXZpY2UgdHJlZSBzcGVjaWZpZXMgY2hpcCAlcyBidXQgZm91bmQgJXMsIHBsZWFzZSBmaXggaXQhXFxcXG5cXFwiLFxcbkBAIC0yOTY2LDcgKzMwMDgsNiBAQCBzdGF0aWMgaW50IGtzel9zd2l0Y2hfZGV0ZWN0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuIFxcdFxcdHN3aXRjaCAoaWQzMikge1xcbiBcXHRcXHRjYXNlIEtTWjk0NzdfQ0hJUF9JRDpcXG4gXFx0XFx0Y2FzZSBLU1o5ODk2X0NISVBfSUQ6XFxuLVxcdFxcdGNhc2UgS1NaOTg5N19DSElQX0lEOlxcbiBcXHRcXHRjYXNlIEtTWjk1NjdfQ0hJUF9JRDpcXG4gXFx0XFx0Y2FzZSBLU1o4NTY3X0NISVBfSUQ6XFxuIFxcdFxcdGNhc2UgTEFOOTM3MF9DSElQX0lEOlxcbkBAIC0yOTc5LDYgKzMwMjAsMjMgQEAgc3RhdGljIGludCBrc3pfc3dpdGNoX2RldGVjdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbiBcXHRcXHRcXHRpZiAoZGV2LVxcdTAwM2VjaGlwX2lkICE9IExBTjk2NDZfQ0hJUF9JRClcXG4gXFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VjaGlwX2lkID0gaWQzMjtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdGNhc2UgS1NaOTg5N19DSElQX0lEOlxcbitcXHRcXHRcXHQvKiBPbmx5IHRoZSBLU1o5ODk3UyBoYXMgYW4gU0dNSUkgcG9ydCA3OyB0aGUgS1NaOTg5N1JcXG4rXFx0XFx0XFx0ICogaGFzIGEgc2Vjb25kIFJHTUlJIHBvcnQgaW5zdGVhZC4gU2VlIHRoZSBLU1o5ODk3U1xcbitcXHRcXHRcXHQgKiBkYXRhIHNoZWV0IERTMDAwMDIzOTRDIHNlY3Rpb24gNS4yLjQuMSBhbmQgdGhlXFxuK1xcdFxcdFxcdCAqIEtTWjk4OTdSIGRhdGEgc2hlZXQgRFMwMDAwMjMzMEQgc2VjdGlvbiA1LjIuMy4xLlxcbitcXHRcXHRcXHQgKi9cXG4rXFx0XFx0XFx0cmV0ID0ga3N6X3JlYWQ4KGRldiwgS1NaOTg5N19SRUdfUE9SVDdfWE1JSV9DVFJMXzAsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdTAwMjZpZDQpO1xcbitcXHRcXHRcXHRpZiAocmV0KVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0XFx0XFx0aWYgKGlkNCBcXHUwMDI2IEtTWjk4OTdfUE9SVDdfU0dNSUlfU0VMKVxcbitcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBLU1o5ODk3U19DSElQX0lEO1xcbitcXHRcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdFxcdGRldi1cXHUwMDNlY2hpcF9pZCA9IEtTWjk4OTdfQ0hJUF9JRDtcXG4rXFxuK1xcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRjYXNlIEtTWjk4OTNfQ0hJUF9JRDpcXG4gXFx0XFx0XFx0cmV0ID0ga3N6X3JlYWQ4KGRldiwgUkVHX0NISVBfSUQ0LFxcbiBcXHRcXHRcXHRcXHRcXHRcXHUwMDI2aWQ0KTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmggYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaFxcbmluZGV4IGNiZTk4NDk0NTc4YzMuLjBjZmYzM2RmMDZhNGIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmhcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaFxcbkBAIC0yODQsNiArMjg0LDcgQEAgZW51bSBrc3pfbW9kZWwge1xcbiBcXHRLU1o5NDc3LFxcbiBcXHRLU1o5ODk2LFxcbiBcXHRLU1o5ODk3LFxcbitcXHRLU1o5ODk3UyxcXG4gXFx0S1NaOTg5MyxcXG4gXFx0S1NaOTU2MyxcXG4gXFx0S1NaOTU2NyxcXG5AQCAtODc0LDYgKzg3NSwxMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wga3N6X2lzX3NnbWlpX3BvcnQoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQpXFxuICNkZWZpbmUgU0tVX0lEX0tTWjg1NjNcXHRcXHRcXHQweDNjXFxuICNkZWZpbmUgU0tVX0lEX0tTWjk1NjNcXHRcXHRcXHQweDFjXFxuIFxcbisvKiBLU1o5ODk3IHNwZWNpZmljIHJlZ2lzdGVyOiBwb3J0IDcgWE1JSSBjb250cm9sIDAgKi9cXG4rI2RlZmluZSBLU1o5ODk3X1JFR19QT1JUN19YTUlJX0NUUkxfMFxcdDB4NzMwMFxcbisjZGVmaW5lIEtTWjk4OTdfUE9SVDdfU0dNSUlfU0VMXFx0XFx0QklUKDcpXFxuK1xcbiAvKiBEcml2ZXIgc2V0IHN3aXRjaCBicm9hZGNhc3Qgc3Rvcm0gcHJvdGVjdGlvbiBhdCAxMCUgcmF0ZS4gKi9cXG4gI2RlZmluZSBCUk9BRENBU1RfU1RPUk1fUFJPVF9SQVRFXFx0MTBcXG4gXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9taWNyb2NoaXAta3N6LmggYi9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbWljcm9jaGlwLWtzei5oXFxuaW5kZXggMDI4NzgxYWQ0MDU5My4uZmU4ZGYxNzc0Mjg5YyAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbWljcm9jaGlwLWtzei5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaFxcbkBAIC0zNCw2ICszNCw3IEBAIGVudW0ga3N6X2NoaXBfaWQge1xcbiBcXHRLU1o5NDc3X0NISVBfSUQgPSAweDAwOTQ3NzAwLFxcbiBcXHRLU1o5ODk2X0NISVBfSUQgPSAweDAwOTg5NjAwLFxcbiBcXHRLU1o5ODk3X0NISVBfSUQgPSAweDAwOTg5NzAwLFxcbitcXHRLU1o5ODk3U19DSElQX0lEID0gMHgwMDk4OTcwMSxcXG4gXFx0S1NaOTg5M19DSElQX0lEID0gMHgwMDk4OTMwMCxcXG4gXFx0S1NaOTU2M19DSElQX0lEID0gMHgwMDk1NjMwMCxcXG4gXFx0S1NaODU2N19DSElQX0lEID0gMHgwMDg1NjcwMCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDU6MTk6NDguNDExMjk4NDMxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo5NjMxMzM0MDI0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OXCIsXG4gICAgXCJORVRfRFNBX01JQ1JPQ0hJUF9LU1o5NDc3X0kyQ1wiLFxuICAgIFwiTkVUX0RTQV9NSUNST0NISVBfS1NaX1NQSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBNaWNyb2NoaXAgS1NaOTg5N1Mgc3dpdGNoIHZhcmlhbnQgdG8gdGhlIE1pY3JvY2hpcCBLU1ogRFNBIHN3aXRjaCBkcml2ZXIgKGtzel9jb21tb24uYykuIFRoaXMgZHJpdmVyIGNvbnRyb2xzIHBoeXNpY2FsIEV0aGVybmV0IHN3aXRjaCBJQ3MgaW50ZXJmYWNlZCB2aWEgU1BJIG9yIEkyQy4gQmVjYXVzZSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSBsYWNrIGVtdWxhdGlvbiBmb3IgdGhlc2UgcGh5c2ljYWwgc3dpdGNoIGNoaXBzLCB0aGUgbW9kaWZpZWQgaGFyZHdhcmUtc3BlY2lmaWMgZGV0ZWN0aW9uIGFuZCBjaGlwIGRhdGEgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDIxZTM2YTNiZDI4MWRiYjA0YzM4OWZlNDgyNzM4MmNlMWMzMjFlYjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIFNlcCA0IDA1OjE5OjQ3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uY1xuaW5kZXggMWE5ZDZmODNhMDIzMi4uMGJjODA5ZjU4MmJlZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uY1xuQEAgLTE0ODYsNiArMTQ4Niw0MSBAQCBjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSBrc3pfc3dpdGNoX2NoaXBzW10gPSB7XG4gXHRcdC5nYml0X2NhcGFibGVcdD0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWV9LFxuIFx0fSxcbiBcbitcdFtLU1o5ODk3U10gPSB7XG4rXHRcdC5jaGlwX2lkID0gS1NaOTg5N1NfQ0hJUF9JRCxcbitcdFx0LmRldl9uYW1lID0gXCJLU1o5ODk3U1wiLFxuK1x0XHQubnVtX3ZsYW5zID0gNDA5NixcbitcdFx0Lm51bV9hbHVzID0gNDA5NixcbitcdFx0Lm51bV9zdGF0aWNzID0gMTYsXG4rXHRcdC5jcHVfcG9ydHMgPSAweDdGLFx0LyogY2FuIGJlIGNvbmZpZ3VyZWQgYXMgY3B1IHBvcnQgKi9cbitcdFx0LnBvcnRfY250ID0gNyxcdFx0LyogdG90YWwgcGh5c2ljYWwgcG9ydCBjb3VudCAqL1xuK1x0XHQucG9ydF9uaXJxcyA9IDIsXG4rXHRcdC5udW1fdHhfcXVldWVzID0gNCxcbitcdFx0Lm51bV9pcG1zID0gOCxcbitcdFx0Lm9wcyA9IFx1MDAyNmtzejk0NzdfZGV2X29wcyxcbitcdFx0LnN3aXRjaF9vcHMgPSBcdTAwMjZrc3o5NDc3X3N3aXRjaF9vcHMsXG4rXHRcdC5waHlsaW5rX21hY19vcHMgPSBcdTAwMjZrc3o5NDc3X3BoeWxpbmtfbWFjX29wcyxcbitcdFx0LnBoeV9lcnJhdGFfOTQ3NyA9IHRydWUsXG4rXHRcdC5taWJfbmFtZXMgPSBrc3o5NDc3X21pYl9uYW1lcyxcbitcdFx0Lm1pYl9jbnQgPSBBUlJBWV9TSVpFKGtzejk0NzdfbWliX25hbWVzKSxcbitcdFx0LnJlZ19taWJfY250ID0gTUlCX0NPVU5URVJfTlVNLFxuK1x0XHQucmVncyA9IGtzejk0NzdfcmVncyxcbitcdFx0Lm1hc2tzID0ga3N6OTQ3N19tYXNrcyxcbitcdFx0LnNoaWZ0cyA9IGtzejk0Nzdfc2hpZnRzLFxuK1x0XHQueG1paV9jdHJsMCA9IGtzejk0NzdfeG1paV9jdHJsMCxcbitcdFx0LnhtaWlfY3RybDEgPSBrc3o5NDc3X3htaWlfY3RybDEsXG4rXHRcdC5zdXBwb3J0c19taWlcdD0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLFxuK1x0XHRcdFx0ICAgZmFsc2UsIHRydWUsIGZhbHNlfSxcbitcdFx0LnN1cHBvcnRzX3JtaWlcdD0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLFxuK1x0XHRcdFx0ICAgZmFsc2UsIHRydWUsIGZhbHNlfSxcbitcdFx0LnN1cHBvcnRzX3JnbWlpID0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLFxuK1x0XHRcdFx0ICAgZmFsc2UsIHRydWUsIGZhbHNlfSxcbitcdFx0LmludGVybmFsX3BoeVx0PSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSxcbitcdFx0XHRcdCAgIHRydWUsIGZhbHNlLCBmYWxzZX0sXG4rXHRcdC5nYml0X2NhcGFibGVcdD0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWV9LFxuK1x0XHQuc2dtaWlfcG9ydCA9IDcsXG4rXHR9LFxuK1xuIFx0W0tTWjk4OTNdID0ge1xuIFx0XHQuY2hpcF9pZCA9IEtTWjk4OTNfQ0hJUF9JRCxcbiBcdFx0LmRldl9uYW1lID0gXCJLU1o5ODkzXCIsXG5AQCAtMTg1Miw2ICsxODg3LDEzIEBAIHN0YXRpYyBpbnQga3N6X2NoZWNrX2RldmljZV9pZChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuIFx0XHRleHBlY3RlZF9jaGlwX2lkID0gZXhwZWN0ZWRfY2hpcF9kYXRhLVx1MDAzZWNoaXBfaWQ7XG4gXHR9XG4gXG4rXHQvKiBUaGUgS1NaOTg5N1MgaXMgb25seSB0b2xkIGFwYXJ0IGZyb20gdGhlIEtTWjk4OTdSIGF0IHJ1biB0aW1lLCBzbyBhXG4rXHQgKiBkZXZpY2UgdHJlZSBuYW1pbmcgdGhlIEtTWjk4OTcgbWF0Y2hlcyBpdCBhcyB3ZWxsLlxuK1x0ICovXG4rXHRpZiAoZXhwZWN0ZWRfY2hpcF9pZCA9PSBLU1o5ODk3X0NISVBfSUQgXHUwMDI2XHUwMDI2XG4rXHQgICAgZGV2LVx1MDAzZWNoaXBfaWQgPT0gS1NaOTg5N1NfQ0hJUF9JRClcbitcdFx0cmV0dXJuIDA7XG4rXG4gXHRpZiAoZXhwZWN0ZWRfY2hpcF9pZCAhPSBkZXYtXHUwMDNlY2hpcF9pZCkge1xuIFx0XHRkZXZfZXJyKGRldi1cdTAwM2VkZXYsXG4gXHRcdFx0XCJEZXZpY2UgdHJlZSBzcGVjaWZpZXMgY2hpcCAlcyBidXQgZm91bmQgJXMsIHBsZWFzZSBmaXggaXQhXFxuXCIsXG5AQCAtMjk2Niw3ICszMDA4LDYgQEAgc3RhdGljIGludCBrc3pfc3dpdGNoX2RldGVjdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuIFx0XHRzd2l0Y2ggKGlkMzIpIHtcbiBcdFx0Y2FzZSBLU1o5NDc3X0NISVBfSUQ6XG4gXHRcdGNhc2UgS1NaOTg5Nl9DSElQX0lEOlxuLVx0XHRjYXNlIEtTWjk4OTdfQ0hJUF9JRDpcbiBcdFx0Y2FzZSBLU1o5NTY3X0NISVBfSUQ6XG4gXHRcdGNhc2UgS1NaODU2N19DSElQX0lEOlxuIFx0XHRjYXNlIExBTjkzNzBfQ0hJUF9JRDpcbkBAIC0yOTc5LDYgKzMwMjAsMjMgQEAgc3RhdGljIGludCBrc3pfc3dpdGNoX2RldGVjdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuIFx0XHRcdGlmIChkZXYtXHUwMDNlY2hpcF9pZCAhPSBMQU45NjQ2X0NISVBfSUQpXG4gXHRcdFx0XHRkZXYtXHUwMDNlY2hpcF9pZCA9IGlkMzI7XG4gXHRcdFx0YnJlYWs7XG4rXHRcdGNhc2UgS1NaOTg5N19DSElQX0lEOlxuK1x0XHRcdC8qIE9ubHkgdGhlIEtTWjk4OTdTIGhhcyBhbiBTR01JSSBwb3J0IDc7IHRoZSBLU1o5ODk3UlxuK1x0XHRcdCAqIGhhcyBhIHNlY29uZCBSR01JSSBwb3J0IGluc3RlYWQuIFNlZSB0aGUgS1NaOTg5N1NcbitcdFx0XHQgKiBkYXRhIHNoZWV0IERTMDAwMDIzOTRDIHNlY3Rpb24gNS4yLjQuMSBhbmQgdGhlXG4rXHRcdFx0ICogS1NaOTg5N1IgZGF0YSBzaGVldCBEUzAwMDAyMzMwRCBzZWN0aW9uIDUuMi4zLjEuXG4rXHRcdFx0ICovXG4rXHRcdFx0cmV0ID0ga3N6X3JlYWQ4KGRldiwgS1NaOTg5N19SRUdfUE9SVDdfWE1JSV9DVFJMXzAsXG4rXHRcdFx0XHRcdFx1MDAyNmlkNCk7XG4rXHRcdFx0aWYgKHJldClcbitcdFx0XHRcdHJldHVybiByZXQ7XG4rXG4rXHRcdFx0aWYgKGlkNCBcdTAwMjYgS1NaOTg5N19QT1JUN19TR01JSV9TRUwpXG4rXHRcdFx0XHRkZXYtXHUwMDNlY2hpcF9pZCA9IEtTWjk4OTdTX0NISVBfSUQ7XG4rXHRcdFx0ZWxzZVxuK1x0XHRcdFx0ZGV2LVx1MDAzZWNoaXBfaWQgPSBLU1o5ODk3X0NISVBfSUQ7XG4rXG4rXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgS1NaOTg5M19DSElQX0lEOlxuIFx0XHRcdHJldCA9IGtzel9yZWFkOChkZXYsIFJFR19DSElQX0lENCxcbiBcdFx0XHRcdFx0XHUwMDI2aWQ0KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaCBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oXG5pbmRleCBjYmU5ODQ5NDU3OGMzLi4wY2ZmMzNkZjA2YTRiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmhcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oXG5AQCAtMjg0LDYgKzI4NCw3IEBAIGVudW0ga3N6X21vZGVsIHtcbiBcdEtTWjk0NzcsXG4gXHRLU1o5ODk2LFxuIFx0S1NaOTg5NyxcbitcdEtTWjk4OTdTLFxuIFx0S1NaOTg5MyxcbiBcdEtTWjk1NjMsXG4gXHRLU1o5NTY3LFxuQEAgLTg3NCw2ICs4NzUsMTAgQEAgc3RhdGljIGlubGluZSBib29sIGtzel9pc19zZ21paV9wb3J0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0KVxuICNkZWZpbmUgU0tVX0lEX0tTWjg1NjNcdFx0XHQweDNjXG4gI2RlZmluZSBTS1VfSURfS1NaOTU2M1x0XHRcdDB4MWNcbiBcbisvKiBLU1o5ODk3IHNwZWNpZmljIHJlZ2lzdGVyOiBwb3J0IDcgWE1JSSBjb250cm9sIDAgKi9cbisjZGVmaW5lIEtTWjk4OTdfUkVHX1BPUlQ3X1hNSUlfQ1RSTF8wXHQweDczMDBcbisjZGVmaW5lIEtTWjk4OTdfUE9SVDdfU0dNSUlfU0VMXHRcdEJJVCg3KVxuK1xuIC8qIERyaXZlciBzZXQgc3dpdGNoIGJyb2FkY2FzdCBzdG9ybSBwcm90ZWN0aW9uIGF0IDEwJSByYXRlLiAqL1xuICNkZWZpbmUgQlJPQURDQVNUX1NUT1JNX1BST1RfUkFURVx0MTBcbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbWljcm9jaGlwLWtzei5oIGIvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaFxuaW5kZXggMDI4NzgxYWQ0MDU5My4uZmU4ZGYxNzc0Mjg5YyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9taWNyb2NoaXAta3N6LmhcbisrKyBiL2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9taWNyb2NoaXAta3N6LmhcbkBAIC0zNCw2ICszNCw3IEBAIGVudW0ga3N6X2NoaXBfaWQge1xuIFx0S1NaOTQ3N19DSElQX0lEID0gMHgwMDk0NzcwMCxcbiBcdEtTWjk4OTZfQ0hJUF9JRCA9IDB4MDA5ODk2MDAsXG4gXHRLU1o5ODk3X0NISVBfSUQgPSAweDAwOTg5NzAwLFxuK1x0S1NaOTg5N1NfQ0hJUF9JRCA9IDB4MDA5ODk3MDEsXG4gXHRLU1o5ODkzX0NISVBfSUQgPSAweDAwOTg5MzAwLFxuIFx0S1NaOTU2M19DSElQX0lEID0gMHgwMDk1NjMwMCxcbiBcdEtTWjg1NjdfQ0hJUF9JRCA9IDB4MDA4NTY3MDAsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNToxOTo0OC40MTEzMDA0NzFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MzY4NjAwNzQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFzc2Vzc2luZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgVGhpcyBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGhpbmdlcyBvbiB3aGV0aGVyIHRoaXMgcGF0Y2ggd2FycmFudHMgdGhlIGZ1bGwgc3l6a2FsbGVyIHRyZWF0bWVudC4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGUgY2hhbmdlLiBJdCBsb29rcyBsaWtlIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHBhdGNoIHRoYXQgYWRkcyBzdXBwb3J0IGZvciB0aGUgS1NaOTg5N1Mgc3dpdGNoIGNoaXAgdG8gdGhlIE1pY3JvY2hpcCBLU1ogRFNBIHN3aXRjaCBkcml2ZXIuIEl0IHRvdWNoZXMgYGtzel9jb21tb24uY2AsIGBrc3pfY29tbW9uLmhgLCBhbmQgYSBoZWFkZXIgZmlsZS4gTm8gc3VycHJpc2VzIHRoZXJlLlxuXG5Ob3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBob3cgaXMgdGhpcyBkcml2ZXIgaW5zdGFudGlhdGVkPyBJcyB0aGlzIGFuIFNQSSwgSTJDLCBNTUlPLCBvciBhIERTQSBkcml2ZXI/IENhbiBJIHJlbGlhYmx5IHJlcHJvZHVjZSB0aGlzIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudCBsaWtlIFFFTVUsIG9yIGFyZSB3ZSBsb29raW5nIGF0IGEgaGFyZHdhcmUgZGVwZW5kZW5jeT8gVGhhdCdzIGdvaW5nIHRvIGJlIHRoZSBkZWNpZGluZyBmYWN0b3IgaW4gd2hldGhlciB0aGlzIGlzIHByYWN0aWNhbGx5IGZ1enphYmxlLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGBkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2AgZmlsZXMgdG8gdW5kZXJzdGFuZCB0aGUgZHJpdmVyJ3MgYXR0YWNobWVudCBtZWNoYW5pc20uIFRoaXMgd2lsbCB0ZWxsIG1lIGlmIEkgY2FuIGdldCBhdCB0aGlzIGZ1bmN0aW9uYWxpdHkgd2l0aG91dCBuZWVkaW5nIHRvIHNvdXJjZSBiZXNwb2tlIGhhcmR3YXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODg2LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDU6MTk6NTQuNzc5OTA0MjQ5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk4MDY5ODEzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9zcGlfZHJpdmVyfG1vZHVsZV9pMmNfZHJpdmVyfGtzel9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDU2OTQgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX05FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT04pXFx0Kz0ga3N6X3N3aXRjaC5vXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZTozOmtzel9zd2l0Y2gtb2JqcyA6PSBrc3pfY29tbW9uLm8ga3N6X2RjYi5vXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZTo0Omtzel9zd2l0Y2gtb2JqcyArPSBrc3o5NDc3Lm8ga3N6OTQ3N19hY2wubyBrc3o5NDc3X3RjX2Zsb3dlci5vXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZTo1Omtzel9zd2l0Y2gtb2JqcyArPSBrc3o4Lm9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlOjY6a3N6X3N3aXRjaC1vYmpzICs9IGxhbjkzN3hfbWFpbi5vXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZS03LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGU9OD1pZmRlZiBDT05GSUdfTkVUX0RTQV9NSUNST0NISVBfS1NaX1BUUFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGU6OTprc3pfc3dpdGNoLW9ianMgKz0ga3N6X3B0cC5vXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZS0xMC1lbmRpZlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZT0xMj1vYmotJChDT05GSUdfTkVUX0RTQV9NSUNST0NISVBfS1NaOTQ3N19JMkMpXFx0Kz0ga3N6OTQ3N19pMmMub1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX05FVF9EU0FfTUlDUk9DSElQX0tTWl9TUEkpXFx0XFx0Kz0ga3N6X3NwaS5vXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZS0xNC1vYmotJChDT05GSUdfTkVUX0RTQV9NSUNST0NISVBfS1NaODg2M19TTUkpXFx0Kz0ga3N6ODg2M19zbWkub1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTgtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RlbGF5LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTk6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RzYS9rc3pfY29tbW9uLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjAtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2V4cG9ydC5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzMtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MzQ6I2luY2x1ZGUgXFxcImtzel9jb21tb24uaFxcXCJcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzozNTojaW5jbHVkZSBcXFwia3N6X2RjYi5oXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM2LSNpbmNsdWRlIFxcXCJrc3o4X3JlZy5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDktICovXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTA6c3RhdGljIGNvbnN0IHN0cnVjdCBrc3pfZHJpdmVfc3RyZW5ndGgga3N6ODh4M19kcml2ZV9zdHJlbmd0aHNbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MS1cXHR7IDAsICA4MDAwIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYz01NT1zdHJ1Y3Qga3N6ODh4eF9zdGF0c19yYXcge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTEtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6OTI6c3RhdGljIHZvaWQga3N6X2NmZyhzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MzIgYWRkciwgdTggYml0cywgYm9vbCBzZXQpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTMte1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjk0OlxcdGtzel9ybXc4KGRldiwgYWRkciwgYml0cywgc2V0ID8gYml0cyA6IDApO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTk1LX1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05Ni1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo5NzpzdGF0aWMgdm9pZCBrc3pfcG9ydF9jZmcoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIGludCBvZmZzZXQsIHU4IGJpdHMsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTgtXFx0XFx0XFx0IGJvb2wgc2V0KVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTk5LXtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMDA6XFx0a3N6X3JtdzgoZGV2LCBkZXYtXFx1MDAzZWRldl9vcHMtXFx1MDAzZWdldF9wb3J0X2FkZHIocG9ydCwgb2Zmc2V0KSwgYml0cyxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDEtXFx0XFx0IHNldCA/IGJpdHMgOiAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExMi0gKiBQTUUgc3dpdGNoIGZ1bmN0aW9uYWxpdGllcy4gQm90aCA4LWJpdCByZWdpc3RlcnMgMTEwIGFuZCAxMTEgYXJlXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTEzOiAqIHdyaXR0ZW4gYXQgb25jZSB3aXRoIGtzel93cml0ZTE2LCB1c2luZyB0aGUgc2VyaWFsIG11bHRpcGxlIHdyaXRlXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTE0LSAqIGZ1bmN0aW9uYWxpdHkuXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTctICovXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTE4OnN0YXRpYyBpbnQga3N6OF9pbmRfd3JpdGU4KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHU4IHRhYmxlLCB1MTYgYWRkciwgdTggZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTkte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTI4LVxcdGN0cmxfYWRkciA9IElORF9BQ0NfVEFCTEUodGFibGUpIHwgYWRkcjtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMjk6XFx0cmV0ID0ga3N6X3dyaXRlMTYoZGV2LCByZWdzW1JFR19JTkRfQ1RSTF8wXSwgY3RybF9hZGRyKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzAtXFx0aWYgKCFyZXQpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTMxOlxcdFxcdHJldCA9IGtzel93cml0ZTgoZGV2LCByZWdzW1JFR19JTkRfQllURV0sIGRhdGEpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE0Ni0gKiBQTUUgc3dpdGNoIGZ1bmN0aW9uYWxpdGllcy4gQm90aCA4LWJpdCByZWdpc3RlcnMgMTEwIGFuZCAxMTEgYXJlXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTQ3OiAqIHdyaXR0ZW4gYXQgb25jZSB3aXRoIGtzel93cml0ZTE2LCB1c2luZyB0aGUgc2VyaWFsIG11bHRpcGxlIHdyaXRlXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQ4LSAqIGZ1bmN0aW9uYWxpdHkuXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNTEtICovXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTUyOnN0YXRpYyBpbnQga3N6OF9pbmRfcmVhZDgoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTggdGFibGUsIHUxNiBhZGRyLCB1OCAqdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE1My17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNjItXFx0Y3RybF9hZGRyID0gSU5EX0FDQ19UQUJMRSh0YWJsZSB8IFRBQkxFX1JFQUQpIHwgYWRkcjtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNjM6XFx0cmV0ID0ga3N6X3dyaXRlMTYoZGV2LCByZWdzW1JFR19JTkRfQ1RSTF8wXSwgY3RybF9hZGRyKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNjQtXFx0aWYgKCFyZXQpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTY1OlxcdFxcdHJldCA9IGtzel9yZWFkOChkZXYsIHJlZ3NbUkVHX0lORF9CWVRFXSwgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNjYtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNzEtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTcyOnN0YXRpYyBpbnQga3N6OF9wbWVfd3JpdGU4KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUzMiByZWcsIHU4IHZhbHVlKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE3My17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNzYtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTc3OnN0YXRpYyBpbnQga3N6OF9wbWVfcHJlYWQ4KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0LCBpbnQgb2Zmc2V0LCB1OCAqZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNzgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTgzLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjE4NDpzdGF0aWMgaW50IGtzejhfcG1lX3B3cml0ZTgoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIGludCBvZmZzZXQsIHU4IGRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jPTE5MT1zdGF0aWMgdm9pZCBrc3o4NDYzX2lycV9tYXNrKHN0cnVjdCBpcnFfZGF0YSAqZClcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xOTIte1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjE5MzpcXHRzdHJ1Y3Qga3N6X2lycSAqa2lycSA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE5NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jPTE5OD1zdGF0aWMgdm9pZCBrc3o4NDYzX2lycV91bm1hc2soc3RydWN0IGlycV9kYXRhICpkKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE5OS17XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjAwOlxcdHN0cnVjdCBrc3pfaXJxICpraXJxID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjAxLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MjA1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2NoaXAga3N6ODQ2M19pcnFfY2hpcCA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTIwOC1cXHQuaXJxX3VubWFza1xcdFxcdD0ga3N6ODQ2M19pcnFfdW5tYXNrLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjIwOTpcXHQuaXJxX2J1c19sb2NrXFx0XFx0PSBrc3pfaXJxX2J1c19sb2NrLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjIxMDpcXHQuaXJxX2J1c19zeW5jX3VubG9ja1xcdD0ga3N6X2lycV9idXNfc3luY191bmxvY2ssXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjExLX07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYz0yMjM9c3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfZG9tYWluX29wcyBrc3o4NDYzX2lycV9kb21haW5fb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjI3LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjIyODpzdGF0aWMgaW50IGtzejg0NjNfZ2lycV9zZXR1cChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTIyOS17XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjMwOlxcdHN0cnVjdCBrc3pfaXJxICpnaXJxID0gXFx1MDAyNmRldi1cXHUwMDNlZ2lycTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yMzEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yMzktXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjQwOlxcdHJldHVybiBrc3pfaXJxX2NvbW1vbl9zZXR1cChkZXYsIGdpcnEsIFxcdTAwMjZrc3o4NDYzX2lycV9kb21haW5fb3BzKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNDEtfVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI0Mi1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNDM6c3RhdGljIGludCBrc3o4NDYzX3Jlc2V0X3N3aXRjaChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI0NC17XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjQ1OlxcdGtzel9jZmcoZGV2LCBLU1o4NDYzX1JFR19TV19SRVNFVCxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNDYtXFx0XFx0S1NaODQ2M19HTE9CQUxfU09GVFdBUkVfUkVTRVQgfCBLU1o4NDYzX1BUUF9TT0ZUV0FSRV9SRVNFVCxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNDctXFx0XFx0dHJ1ZSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjQ4OlxcdGtzel9jZmcoZGV2LCBLU1o4NDYzX1JFR19TV19SRVNFVCxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNDktXFx0XFx0S1NaODQ2M19HTE9CQUxfU09GVFdBUkVfUkVTRVQgfCBLU1o4NDYzX1BUUF9TT0ZUV0FSRV9SRVNFVCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI1My1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNTQ6c3RhdGljIGludCBrc3o4X3Jlc2V0X3N3aXRjaChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI1NS17XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjU2OlxcdGlmIChrc3pfaXNfa3N6ODh4MyhkZXYpKSB7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjU3LVxcdFxcdC8qIHJlc2V0IHN3aXRjaCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI1ODpcXHRcXHRrc3pfY2ZnKGRldiwgS1NaODg2M19SRUdfU1dfUkVTRVQsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjU5LVxcdFxcdFxcdEtTWjg4NjNfR0xPQkFMX1NPRlRXQVJFX1JFU0VUIHwgS1NaODg2M19QQ1NfUkVTRVQsIHRydWUpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI2MDpcXHRcXHRrc3pfY2ZnKGRldiwgS1NaODg2M19SRUdfU1dfUkVTRVQsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjYxLVxcdFxcdFxcdEtTWjg4NjNfR0xPQkFMX1NPRlRXQVJFX1JFU0VUIHwgS1NaODg2M19QQ1NfUkVTRVQsIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI2My1cXHRcXHQvKiByZXNldCBzd2l0Y2ggKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNjQ6XFx0XFx0a3N6X3dyaXRlOChkZXYsIFJFR19QT1dFUl9NQU5BR0VNRU5UXzEsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjY1LVxcdFxcdFxcdCAgIFNXX1NPRlRXQVJFX1BPV0VSX0RPV04gXFx1MDAzY1xcdTAwM2MgU1dfUE9XRVJfTUFOQUdFTUVOVF9NT0RFX1MpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI2NjpcXHRcXHRrc3pfd3JpdGU4KGRldiwgUkVHX1BPV0VSX01BTkFHRU1FTlRfMSwgMCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjY3LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jPTI3Mj1zdGF0aWMgaW50IGtzejg4eHhfY2hhbmdlX210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgbXR1KVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI3My17XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6Mjc0OlxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNzUtXFx0aW50IGZyYW1lX3NpemU7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yODctXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6Mjg4OlxcdHJldHVybiBrc3pfcm13OChkZXYsIFJFR19TV19DVFJMXzIsIEtTWjg4NjNfTEVHQUxfUEFDS0VUX0VOQUJMRSB8XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjg5LVxcdFxcdFxcdEtTWjg4NjNfSFVHRV9QQUNLRVRfRU5BQkxFLCBjdHJsMik7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYz0yOTI9c3RhdGljIGludCBrc3o4N3h4X2NoYW5nZV9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IG10dSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yOTMte1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI5NDpcXHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2ID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjk1LVxcdHU4IGN0cmwxID0gMCwgY3RybDIgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzA4LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjMwOTpcXHRyZXQgPSBrc3pfcm13OChkZXYsIFJFR19TV19DVFJMXzEsIFNXX0hVR0VfUEFDS0VULCBjdHJsMSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzEwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zMTItXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MzEzOlxcdHJldHVybiBrc3pfcm13OChkZXYsIFJFR19TV19DVFJMXzIsIFNXX0xFR0FMX1BBQ0tFVF9ESVNBQkxFLCBjdHJsMik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzE0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jPTMyMT1zdGF0aWMgaW50IGtzejg4eHhfbWF4X210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzI1LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjMyNjpzdGF0aWMgaW50IGtzejhfcG9ydF9xdWV1ZV9zcGxpdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydCwgaW50IHF1ZXVlcylcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zMjcte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzMzLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjMzNDpcXHRpZiAoa3N6X2lzX2tzejg4eDMoZGV2KSkge1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTMzNS1cXHRcXHRtYXNrXzRxID0gS1NaODg3M19QT1JUXzRRVUVVRV9TUExJVF9FTjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM0NS1cXHRcXHQgKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzozNDY6XFx0XFx0cmV0ID0ga3N6X3JtdzgoZGV2LCBSRUdfU1dfQ1RSTF8zLCBXRUlHSFRFRF9GQUlSX1FVRVVFX0VOQUJMRSxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zNDctXFx0XFx0XFx0ICAgICAgIFdFSUdIVEVEX0ZBSVJfUVVFVUVfRU5BQkxFKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM0OS1cXHRcXHRcXHRyZXR1cm4gcmV0O1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjM1MDpcXHR9IGVsc2UgaWYgKGtzel9pc19rc3o4NDYzKGRldikpIHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zNTEtXFx0XFx0bWFza180cSA9IEtTWjg4NzNfUE9SVF80UVVFVUVfU1BMSVRfRU47XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zNjMtXFx0XFx0ICovXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MzY0OlxcdFxcdHJldCA9IGtzel9ybXc4KGRldiwgUkVHX1NXX0NUUkxfMTksXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzY1LVxcdFxcdFxcdCAgICAgICBTV19PVVRfUkFURV9MSU1JVF9RVUVVRV9CQVNFRCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM3NS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzozNzY6XFx0cmV0ID0ga3N6X3BybXc4KGRldiwgcG9ydCwgcmVnXzRxLCBtYXNrXzRxLCBkYXRhXzRxKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zNzctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM3OS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzozODA6XFx0cmV0dXJuIGtzel9wcm13OChkZXYsIHBvcnQsIHJlZ18ycSwgbWFza18ycSwgZGF0YV8ycSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzgxLX1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zODItXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MzgzOnN0YXRpYyB2b2lkIGtzejhfcl9taWJfY250KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0LCB1MTYgYWRkciwgdTY0ICpjbnQpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzg0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM5OC1cXHRtdXRleF9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZWFsdV9tdXRleCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6Mzk5OlxcdGtzel93cml0ZTE2KGRldiwgcmVnc1tSRUdfSU5EX0NUUkxfMF0sIGN0cmxfYWRkcik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDAwLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDA0LVxcdGZvciAobG9vcCA9IDI7IGxvb3AgXFx1MDAzZSAwOyBsb29wLS0pIHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo0MDU6XFx0XFx0a3N6X3JlYWQ4KGRldiwgcmVnc1tSRUdfSU5EX01JQl9DSEVDS10sIFxcdTAwMjZjaGVjayk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDA2LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQwNy1cXHRcXHRpZiAoY2hlY2sgXFx1MDAyNiBtYXNrc1tNSUJfQ09VTlRFUl9WQUxJRF0pIHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo0MDg6XFx0XFx0XFx0a3N6X3JlYWQzMihkZXYsIHJlZ3NbUkVHX0lORF9EQVRBX0xPXSwgXFx1MDAyNmRhdGEpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQwOS1cXHRcXHRcXHRpZiAoY2hlY2sgXFx1MDAyNiBtYXNrc1tNSUJfQ09VTlRFUl9PVkVSRkxPV10pXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00MTctXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NDE4OnN0YXRpYyB2b2lkIGtzejg3OTVfcl9taWJfcGt0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0LCB1MTYgYWRkcixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00MTktXFx0XFx0XFx0ICAgICAgdTY0ICpkcm9wcGVkLCB1NjQgKmNudClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQzNi1cXHRtdXRleF9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZWFsdV9tdXRleCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NDM3OlxcdGtzel93cml0ZTE2KGRldiwgcmVnc1tSRUdfSU5EX0NUUkxfMF0sIGN0cmxfYWRkcik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDM4LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDQyLVxcdGZvciAobG9vcCA9IDI7IGxvb3AgXFx1MDAzZSAwOyBsb29wLS0pIHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo0NDM6XFx0XFx0a3N6X3JlYWQ4KGRldiwgcmVnc1tSRUdfSU5EX01JQl9DSEVDS10sIFxcdTAwMjZjaGVjayk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDQ0LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQ0NS1cXHRcXHRpZiAoY2hlY2sgXFx1MDAyNiBtYXNrc1tNSUJfQ09VTlRFUl9WQUxJRF0pIHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo0NDY6XFx0XFx0XFx0a3N6X3JlYWQzMihkZXYsIHJlZ3NbUkVHX0lORF9EQVRBX0xPXSwgXFx1MDAyNmRhdGEpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQ0Ny1cXHRcXHRcXHRpZiAoYWRkciBcXHUwMDNjIDIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQ2OS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo0NzA6c3RhdGljIHZvaWQga3N6ODg2M19yX21pYl9wa3Qoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIHUxNiBhZGRyLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQ3MS1cXHRcXHRcXHQgICAgICB1NjQgKmRyb3BwZWQsIHU2NCAqY250KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDgzLVxcdFxcdFxcdCAgIEtTWjg4NjNfTUlCX1BBQ0tFVF9EUk9QUEVEX1JYXzA7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NDg0OlxcdGlmIChrc3pfaXNfODg5NV9mYW1pbHkoZGV2KSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQ4NS1cXHQgICAgY3RybF9hZGRyID09IEtTWjg4NjNfTUlCX1BBQ0tFVF9EUk9QUEVEX1JYXzApXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00OTAtXFx0bXV0ZXhfbG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VhbHVfbXV0ZXgpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjQ5MTpcXHRrc3pfd3JpdGUxNihkZXYsIHJlZ3NbUkVHX0lORF9DVFJMXzBdLCBjdHJsX2FkZHIpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjQ5MjpcXHRrc3pfcmVhZDMyKGRldiwgcmVnc1tSRUdfSU5EX0RBVEFfTE9dLCBcXHUwMDI2ZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDkzLVxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VhbHVfbXV0ZXgpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTA1LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjUwNjpzdGF0aWMgdm9pZCBrc3o4X3JfbWliX3BrdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydCwgdTE2IGFkZHIsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTA3LVxcdFxcdFxcdCAgIHU2NCAqZHJvcHBlZCwgdTY0ICpjbnQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MTQtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTE1OnN0YXRpYyB2b2lkIGtzejhfZnJlZXplX21pYihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydCwgYm9vbCBmcmVlemUpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTE2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUyMS1cXHRpZiAoZnJlZXplKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjUyMjpcXHRcXHRrc3pfY2ZnKGRldiwgUkVHX1NXX0NUUkxfNiwgQklUKHBvcnQpLCB0cnVlKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1MjM6XFx0a3N6X2NmZyhkZXYsIFJFR19TV19DVFJMXzYsIFNXX01JQl9DT1VOVEVSX0ZSRUVaRSwgZnJlZXplKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MjQtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MjYtXFx0aWYgKCFmcmVlemUpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTI3OlxcdFxcdGtzel9jZmcoZGV2LCBSRUdfU1dfQ1RSTF82LCBCSVQocG9ydCksIGZhbHNlKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MjgtfVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUyOS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1MzA6c3RhdGljIHZvaWQga3N6OF9wb3J0X2luaXRfY250KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0KVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUzMS17XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTMyOlxcdHN0cnVjdCBrc3pfcG9ydF9taWIgKm1pYiA9IFxcdTAwMjZkZXYtXFx1MDAzZXBvcnRzW3BvcnRdLm1pYjtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MzMtXFx0dTY0ICpkcm9wcGVkO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTM1LVxcdC8qIEZvciBLU1o4Nzk1IGZhbWlseS4gKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1MzY6XFx0aWYgKGtzel9pc19rc3o4N3h4KGRldikpIHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MzctXFx0XFx0LyogZmx1c2ggYWxsIGVuYWJsZWQgcG9ydCBNSUIgY291bnRlcnMgKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1Mzg6XFx0XFx0a3N6X2NmZyhkZXYsIFJFR19TV19DVFJMXzYsIEJJVChwb3J0KSwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTM5OlxcdFxcdGtzel9jZmcoZGV2LCBSRUdfU1dfQ1RSTF82LCBTV19NSUJfQ09VTlRFUl9GTFVTSCwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTQwOlxcdFxcdGtzel9jZmcoZGV2LCBSRUdfU1dfQ1RSTF82LCBCSVQocG9ydCksIGZhbHNlKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01NDEtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTYyLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjU2MzpzdGF0aWMgaW50IGtzejhfcl90YWJsZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgdGFibGUsIHUxNiBhZGRyLCB1NjQgKmRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTY0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTU3My1cXHRtdXRleF9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZWFsdV9tdXRleCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTc0OlxcdHJldCA9IGtzel93cml0ZTE2KGRldiwgcmVnc1tSRUdfSU5EX0NUUkxfMF0sIGN0cmxfYWRkcik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTc1LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01NzctXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTc4OlxcdHJldCA9IGtzel9yZWFkNjQoZGV2LCByZWdzW1JFR19JTkRfREFUQV9ISV0sIGRhdGEpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTU3OS11bmxvY2tfYWx1Olxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTg0LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjU4NTpzdGF0aWMgaW50IGtzejhfd190YWJsZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgdGFibGUsIHUxNiBhZGRyLCB1NjQgZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01ODYte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTk1LVxcdG11dGV4X2xvY2soXFx1MDAyNmRldi1cXHUwMDNlYWx1X211dGV4KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1OTY6XFx0cmV0ID0ga3N6X3dyaXRlNjQoZGV2LCByZWdzW1JFR19JTkRfREFUQV9ISV0sIGRhdGEpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTU5Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTk5LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjYwMDpcXHRyZXQgPSBrc3pfd3JpdGUxNihkZXYsIHJlZ3NbUkVHX0lORF9DVFJMXzBdLCBjdHJsX2FkZHIpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTYwMS11bmxvY2tfYWx1Olxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNjA2LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjYwNzpzdGF0aWMgaW50IGtzejhfdmFsaWRfZHluX2VudHJ5KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHU4ICpkYXRhKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTYwOC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02MTctXFx0ZG8ge1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjYxODpcXHRcXHRyZXQgPSBrc3pfcmVhZDgoZGV2LCByZWdzW1JFR19JTkRfREFUQV9DSEVDS10sIGRhdGEpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTYxOS1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNjI5LVxcdC8qIEVudHJ5IGlzIHJlYWR5IGZvciBhY2Nlc3NpbmcuICovXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NjMwOlxcdHJldHVybiBrc3pfcmVhZDgoZGV2LCByZWdzW1JFR19JTkRfREFUQV84XSwgZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNjMxLX1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02MzItXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NjMzOnN0YXRpYyBpbnQga3N6OF9yX2R5bl9tYWNfdGFibGUoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTE2IGFkZHIsIHU4ICptYWNfYWRkcixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02MzQtXFx0XFx0XFx0XFx0dTggKmZpZCwgdTggKnNyY19wb3J0LCB1MTYgKmVudHJpZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02NTItXFx0bXV0ZXhfbG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VhbHVfbXV0ZXgpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjY1MzpcXHRyZXQgPSBrc3pfd3JpdGUxNihkZXYsIHJlZ3NbUkVHX0lORF9DVFJMXzBdLCBjdHJsX2FkZHIpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTY1NC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNjY1LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjY2NjpcXHRyZXQgPSBrc3pfcmVhZDY0KGRldiwgcmVnc1tSRUdfSU5EX0RBVEFfSEldLCBcXHUwMDI2YnVmKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02NjctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTY5OC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo2OTk6c3RhdGljIGludCBrc3o4X3Jfc3RhX21hY190YWJsZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MTYgYWRkcixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy03MDAtXFx0XFx0XFx0XFx0c3RydWN0IGFsdV9zdHJ1Y3QgKmFsdSwgYm9vbCAqdmFsaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy03MzgtXFx0ICovXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NzM5OlxcdGlmIChrc3pfaXNfa3N6ODd4eChkZXYpIHx8IGtzel9pc184ODk1X2ZhbWlseShkZXYpKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTc0MC1cXHRcXHRkYXRhX2hpIFxcdTAwM2VcXHUwMDNlPSAxO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNzUwLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjc1MTpzdGF0aWMgaW50IGtzejhfd19zdGFfbWFjX3RhYmxlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUxNiBhZGRyLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTc1Mi1cXHRcXHRcXHRcXHRzdHJ1Y3QgYWx1X3N0cnVjdCAqYWx1KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNzgzLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjc4NDpzdGF0aWMgdm9pZCBrc3o4X2Zyb21fdmxhbihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MzIgdmxhbiwgdTggKmZpZCxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy03ODUtXFx0XFx0XFx0ICAgdTggKm1lbWJlciwgdTggKnZhbGlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNzk4LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjc5OTpzdGF0aWMgdm9pZCBrc3o4X3RvX3ZsYW4oc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTggZmlkLCB1OCBtZW1iZXIsIHU4IHZhbGlkLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTgwMC1cXHRcXHRcXHQgdTE2ICp2bGFuKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtODEzLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjgxNDpzdGF0aWMgdm9pZCBrc3o4X3Jfdmxhbl9lbnRyaWVzKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUxNiBhZGRyKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTgxNS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy04MjktXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6ODMwOnN0YXRpYyB2b2lkIGtzejhfcl92bGFuX3RhYmxlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUxNiB2aWQsIHUxNiAqdmxhbilcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy04MzEte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtODQzLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjg0NDpzdGF0aWMgdm9pZCBrc3o4X3dfdmxhbl90YWJsZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MTYgdmlkLCB1MTYgdmxhbilcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy04NDUte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtODcxLSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjg3MjpzdGF0aWMgaW50IGtzejg3OXhfZ2V0X2xvb3BiYWNrKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUxNiBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTg3My1cXHRcXHRcXHRcXHR1MTYgKnZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTg3Ny1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo4Nzg6XFx0cmV0ID0ga3N6X3ByZWFkOChkZXYsIHBvcnQsIFJFR19QT1JUX1NUQVRVU18zLCBcXHUwMDI2c3RhdDMpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTg3OS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtODk5LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjkwMDpzdGF0aWMgaW50IGtzejg3OXhfc2V0X2xvb3BiYWNrKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUxNiBwb3J0LCB1MTYgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTkwMS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05MDYtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6OTA3OlxcdHJldHVybiBrc3pfcHJtdzgoZGV2LCBwb3J0LCBSRUdfUE9SVF9TVEFUVVNfMywgUE9SVF9QSFlfTE9PUEJBQ0ssXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTA4LVxcdFxcdFxcdCBzdGF0Myk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05MTAtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6OTExOnN0YXRpYyBpbnQga3N6ODd4eF9hcHBseV9sb3dfbG9zc19wcmVzZXQoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgYm9vbCBlbmFibGUpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTEyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTkyMS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo5MjI6XFx0aWYgKCFrc3pfaXNfa3N6ODd4eChkZXYpKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTkyMy1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05NTctICovXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6OTU4OnN0YXRpYyBpbnQga3N6OF9yX3BoeV9jdHJsKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0LCB1MTYgKnZhbClcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05NTkte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTY1LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjk2NjpcXHRyZXQgPSBrc3pfcHJlYWQ4KGRldiwgcG9ydCwgcmVnc1tQX0xJTktfU1RBVFVTXSwgXFx1MDAyNnJlZ192YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTk2Ny1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTk3Mi1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo5NzM6XFx0cmV0ID0ga3N6X3ByZWFkOChkZXYsIHBvcnQsIFJFR19QT1JUX0xJTktfTURfQ1RSTCwgXFx1MDAyNnJlZ192YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTk3NC1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEwMjMtICovXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTAyNDpzdGF0aWMgaW50IGtzejhfcl9waHlfYm1jcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MTYgcG9ydCwgdTE2ICp2YWwpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTAyNS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDMxLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEwMzI6XFx0cmV0ID0ga3N6X3ByZWFkOChkZXYsIHBvcnQsIHJlZ3NbUF9ORUdfUkVTVEFSVF9DVFJMXSwgXFx1MDAyNnJlc3RhcnQpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEwMzMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEwMzUtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTAzNjpcXHRyZXQgPSBrc3pfcHJlYWQ4KGRldiwgcG9ydCwgcmVnc1tQX1NQRUVEX1NUQVRVU10sIFxcdTAwMjZzcGVlZCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTAzNy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTAzOS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMDQwOlxcdHJldCA9IGtzel9wcmVhZDgoZGV2LCBwb3J0LCByZWdzW1BfRk9SQ0VfQ1RSTF0sIFxcdTAwMjZjdHJsKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDQxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDQ2LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEwNDc6XFx0aWYgKGtzel9pc19rc3o4OHgzKGRldikpIHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDQ4LVxcdFxcdGlmIChyZXN0YXJ0IFxcdTAwMjYgS1NaODg3M19QT1JUX1BIWV9MT09QQkFDSylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEwODgtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTA4OTpzdGF0aWMgaW50IGtzejhfcl9waHkoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTE2IHBoeSwgdTE2IHJlZywgdTE2ICp2YWwpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTA5MC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTA2LVxcdGNhc2UgTUlJX0JNU1I6XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTEwNzpcXHRcXHRyZXQgPSBrc3pfcHJlYWQ4KGRldiwgcCwgcmVnc1tQX0xJTktfU1RBVFVTXSwgXFx1MDAyNmxpbmspO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExMDgtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExMjQtXFx0Y2FzZSBNSUlfUEhZU0lEMjpcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMTI1OlxcdFxcdGlmIChrc3pfaXNfa3N6ODh4MyhkZXYpKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExMjYtXFx0XFx0XFx0ZGF0YSA9IEtTWjg4NjNfSURfTE87XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTMwLVxcdGNhc2UgTUlJX0FEVkVSVElTRTpcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMTMxOlxcdFxcdHJldCA9IGtzel9wcmVhZDgoZGV2LCBwLCByZWdzW1BfTE9DQUxfQ1RSTF0sIFxcdTAwMjZjdHJsKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTMyLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTQ3LVxcdGNhc2UgTUlJX0xQQTpcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMTQ4OlxcdFxcdHJldCA9IGtzel9wcmVhZDgoZGV2LCBwLCByZWdzW1BfUkVNT1RFX1NUQVRVU10sIFxcdTAwMjZsaW5rKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTQ5LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTY2LVxcdGNhc2UgUEhZX1JFR19MSU5LX01EOlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjExNjc6XFx0XFx0cmV0ID0ga3N6X3ByZWFkOChkZXYsIHAsIFJFR19QT1JUX0xJTktfTURfQ1RSTCwgXFx1MDAyNnZhbDEpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExNjgtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExNzAtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTE3MTpcXHRcXHRyZXQgPSBrc3pfcHJlYWQ4KGRldiwgcCwgUkVHX1BPUlRfTElOS19NRF9SRVNVTFQsIFxcdTAwMjZ2YWwyKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTcyLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTk0LVxcdGNhc2UgUEhZX1JFR19LU1o4N1hYX1NIT1JUX0NBQkxFOlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjExOTU6XFx0XFx0aWYgKCFrc3pfaXNfa3N6ODd4eChkZXYpKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExOTYtXFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTIwMC1cXHRjYXNlIFBIWV9SRUdfS1NaODdYWF9MUEZfQlc6XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTIwMTpcXHRcXHRpZiAoIWtzel9pc19rc3o4N3h4KGRldikpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTIwMi1cXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMjA1LVxcdGNhc2UgUEhZX1JFR19LU1o4N1hYX0VRX0lOSVQ6XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTIwNjpcXHRcXHRpZiAoIWtzel9pc19rc3o4N3h4KGRldikpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTIwNy1cXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYz0xMjIwPXN0YXRpYyBpbnQga3N6OF9waHlfcmVhZDE2KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IGFkZHIsIGludCByZWcpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTIyMS17XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTIyMjpcXHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2ID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTIyMy1cXHR1MTYgdmFsID0gMHhmZmZmO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTI0NS0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMjQ2OnN0YXRpYyBpbnQga3N6OF93X3BoeV9jdHJsKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0LCB1MTYgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEyNDcte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTI1OS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMjYwOlxcdHJldCA9IGtzel9wcm13OChkZXYsIHBvcnQsIFJFR19QT1JUX0xJTktfTURfQ1RSTCwgUE9SVF9GT1JDRV9MSU5LIHxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMjYxLVxcdFxcdFxcdFBPUlRfUE9XRVJfU0FWSU5HIHwgUE9SVF9QSFlfUkVNT1RFX0xPT1BCQUNLLCByZWdfdmFsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEyOTktICovXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTMwMDpzdGF0aWMgaW50IGtzejhfd19waHlfYm1jcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MTYgcG9ydCwgdTE2IHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzAxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzMTMtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTMxNDpcXHRyZXQgPSBrc3pfcHJtdzgoZGV2LCBwb3J0LCByZWdzW1BfU1BFRURfU1RBVFVTXSwgUE9SVF9IUF9NRElYLCBzcGVlZCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTMxNS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTMxOC1cXHRjdHJsID0gMDtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMzE5OlxcdGlmIChrc3pfaXNfa3N6ODh4MyhkZXYpKSB7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTMyMC1cXHRcXHRpZiAoKHZhbCBcXHUwMDI2IEJNQ1JfQU5FTkFCTEUpKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTMzNi1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMzM3OlxcdHJldCA9IGtzel9wcm13OChkZXYsIHBvcnQsIHJlZ3NbUF9GT1JDRV9DVFJMXSwgUE9SVF9GT1JDRV8xMDBfTUJJVCB8XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTMzOC1cXHRcXHQgLyogUE9SVF9BVVRPX05FR19FTkFCTEUgYW5kIFBPUlRfQVVUT19ORUdfRElTQUJMRSBhcmUgdGhlIHNhbWVcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzNjYtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTM2NzpcXHRpZiAoa3N6X2lzX2tzejg4eDMoZGV2KSkge1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzNjgtXFx0XFx0cmVzdGFydF9tYXNrIHw9IEtTWjg4NzNfUE9SVF9QSFlfTE9PUEJBQ0s7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzc3LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEzNzg6XFx0cmV0dXJuIGtzel9wcm13OChkZXYsIHBvcnQsIHJlZ3NbUF9ORUdfUkVTVEFSVF9DVFJMXSwgcmVzdGFydF9tYXNrLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzNzktXFx0XFx0XFx0IHJlc3RhcnQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTM4MS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMzgyOnN0YXRpYyBpbnQga3N6OF93X3BoeShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MTYgcGh5LCB1MTYgcmVnLCB1MTYgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzODMte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTM5Ny1cXHRjYXNlIE1JSV9BRFZFUlRJU0U6XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTM5ODpcXHRcXHRyZXQgPSBrc3pfcHJlYWQ4KGRldiwgcCwgcmVnc1tQX0xPQ0FMX0NUUkxdLCBcXHUwMDI2Y3RybCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTM5OS1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQxOS1cXHRcXHRpZiAoZGF0YSAhPSBjdHJsKSB7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTQyMDpcXHRcXHRcXHRyZXQgPSBrc3pfcHdyaXRlOChkZXYsIHAsIHJlZ3NbUF9MT0NBTF9DVFJMXSwgZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQyMS1cXHRcXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQyNi1cXHRcXHRpZiAodmFsIFxcdTAwMjYgUEhZX1NUQVJUX0NBQkxFX0RJQUcpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTQyNzpcXHRcXHRcXHRrc3pfcG9ydF9jZmcoZGV2LCBwLCBSRUdfUE9SVF9MSU5LX01EX0NUUkwsIFBPUlRfU1RBUlRfQ0FCTEVfRElBRywgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQyOC1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE0MzUtXFx0Y2FzZSBQSFlfUkVHX0tTWjg3WFhfU0hPUlRfQ0FCTEU6XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTQzNjpcXHRcXHRpZiAoIWtzel9pc19rc3o4N3h4KGRldikpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQzNy1cXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNDQ0LVxcdGNhc2UgUEhZX1JFR19LU1o4N1hYX0xQRl9CVzpcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNDQ1OlxcdFxcdGlmICgha3N6X2lzX2tzejg3eHgoZGV2KSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNDQ2LVxcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE0NTctXFx0Y2FzZSBQSFlfUkVHX0tTWjg3WFhfRVFfSU5JVDpcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNDU4OlxcdFxcdGlmICgha3N6X2lzX2tzejg3eHgoZGV2KSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNDU5LVxcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jPTE0Nzc9c3RhdGljIGludCBrc3o4X3BoeV93cml0ZTE2KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IGFkZHIsIGludCByZWcsIHUxNiB2YWwpXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA1OjE5OjU0Ljg3Nzk4MjU5MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIzNTc3MzQ0NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBrc3pfc3dpdGNoL2tzel9jb21tb24gRHJpdmVyIExhbmRzY2FwZSoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBkcml2ZXJzIHRoYXQgYXJlIGhvb2tlZCBpbnRvIHRoZSBga3N6X3N3aXRjaGAgb3IgYGtzel9jb21tb25gIG1vZHVsZXMuIEZyb20gd2hhdCBJIGNhbiBzZWUsIHdlIGhhdmUgYGtzel9zcGkuY2AsIGBrc3o5NDc3X2kyYy5jYCwgYW5kIGBrc3o4ODYzX3NtaS5jYCBsaXN0ZWQgYXMgdGhlIGtleSBwbGF5ZXJzLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byByb2xsIHVwIG15IHNsZWV2ZXMgYW5kIHBlcmZvcm0gYSBkZWVwIGRpdmUgaW50byBlYWNoIG9mIHRob3NlIGZpbGVzOiBga3N6X3NwaS5jYCwgYGtzejk0NzdfaTJjLmNgLCBhbmQgYGtzejg4NjNfc21pLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGVpciBzcGVjaWZpYyByb2xlcyBhbmQgaG93IHRoZXkgY29udHJpYnV0ZSB0byB0aGUgb3ZlcmFsbCBzd2l0Y2ggZnVuY3Rpb25hbGl0eS4gQW5kIEkgY2FuJ3QgZm9yZ2V0IGBLY29uZmlnYCwgd2hpY2ggaXMgZXNzZW50aWFsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGVzZSBkcml2ZXJzIGFyZSBjb25maWd1cmVkIGFuZCBpbnRlZ3JhdGVkIGludG8gdGhlIGJyb2FkZXIga2VybmVsIGJ1aWxkIHByb2Nlc3MuIFRpbWUgdG8gZ2V0IHRvIHdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MzM2LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDU6MTk6NTcuMjM1NzIwMjUzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODYzMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0bWVudWNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiTWljcm9jaGlwIEtTWjhYWFgvS1NaOVhYWC9MQU45MzdYIHNlcmllcyBzd2l0Y2ggc3VwcG9ydFxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gTkVUX0RTQVxcbiAgIDU6XFx0XFx0c2VsZWN0IE5FVF9EU0FfVEFHX0tTWlxcbiAgIDY6XFx0XFx0c2VsZWN0IE5FVF9EU0FfVEFHX05PTkVcXG4gICA3OlxcdFxcdHNlbGVjdCBORVRfSUVFRTgwMjFRX0hFTFBFUlNcXG4gICA4OlxcdFxcdHNlbGVjdCBEQ0JcXG4gICA5OlxcdFxcdHNlbGVjdCBQQ1NfWFBDU1xcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBUaGlzIGRyaXZlciBhZGRzIHN1cHBvcnQgZm9yIE1pY3JvY2hpcCBLU1o4LCBLU1o5IGFuZFxcbiAgMTI6XFx0XFx0ICBMQU45MzdYIHNlcmllcyBzd2l0Y2ggY2hpcHMsIGJlaW5nIEtTWjg4NjMvODg3MyxcXG4gIDEzOlxcdFxcdCAgS1NaODg5NS84ODY0LCBLU1o4Nzk0Lzg3OTUvODc2NSxcXG4gIDE0OlxcdFxcdCAgS1NaOTQ3Ny85ODk3Lzk4OTYvOTU2Ny84NTY3LCBLU1o5ODkzLzk1NjMvODU2MyBhbmRcXG4gIDE1OlxcdFxcdCAgTEFOOTM3MC85MzcxLzkzNzIvOTM3My85Mzc0LlxcbiAgMTY6XFx0XFxuICAxNzpcXHRjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaOTQ3N19JMkNcXG4gIDE4OlxcdFxcdHRyaXN0YXRlIFxcXCJLU1ogc2VyaWVzIEkyQyBjb25uZWN0ZWQgc3dpdGNoIGRyaXZlclxcXCJcXG4gIDE5OlxcdFxcdGRlcGVuZHMgb24gTkVUX0RTQV9NSUNST0NISVBfS1NaX0NPTU1PTiBcXHUwMDI2XFx1MDAyNiBJMkNcXG4gIDIwOlxcdFxcdHNlbGVjdCBSRUdNQVBfSTJDXFxuICAyMTpcXHRcXHRoZWxwXFxuICAyMjpcXHRcXHQgIFNlbGVjdCB0byBlbmFibGUgc3VwcG9ydCBmb3IgcmVnaXN0ZXJpbmcgc3dpdGNoZXMgY29uZmlndXJlZCB0aHJvdWdoIEkyQy5cXG4gIDIzOlxcdFxcbiAgMjQ6XFx0Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9TUElcXG4gIDI1OlxcdFxcdHRyaXN0YXRlIFxcXCJLU1ogc2VyaWVzIFNQSSBjb25uZWN0ZWQgc3dpdGNoIGRyaXZlclxcXCJcXG4gIDI2OlxcdFxcdGRlcGVuZHMgb24gTkVUX0RTQV9NSUNST0NISVBfS1NaX0NPTU1PTiBcXHUwMDI2XFx1MDAyNiBTUElcXG4gIDI3OlxcdFxcdHNlbGVjdCBSRUdNQVBfU1BJXFxuICAyODpcXHRcXHRoZWxwXFxuICAyOTpcXHRcXHQgIFNlbGVjdCB0byBlbmFibGUgc3VwcG9ydCBmb3IgcmVnaXN0ZXJpbmcgc3dpdGNoZXMgY29uZmlndXJlZCB0aHJvdWdoIFNQSS5cXG4gIDMwOlxcdFxcbiAgMzE6XFx0Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9QVFBcXG4gIDMyOlxcdFxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIHRoZSBQVFAgY2xvY2sgb24gdGhlIEtTWjk1NjMvTEFOOTM3eCBFdGhlcm5ldCBTd2l0Y2hcXFwiXFxuICAzMzpcXHRcXHRkZXBlbmRzIG9uIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT04gXFx1MDAyNlxcdTAwMjYgUFRQXzE1ODhfQ0xPQ0tcXG4gIDM0OlxcdFxcdGRlcGVuZHMgb24gTkVUX0RTQV9NSUNST0NISVBfS1NaX0NPTU1PTj1tIHx8IFBUUF8xNTg4X0NMT0NLPXlcXG4gIDM1OlxcdFxcdGhlbHBcXG4gIDM2OlxcdFxcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciB0aW1lc3RhbXBpbmcgXFx1MDAyNiBQVFAgY2xvY2sgbWFuaXB1bGF0aW9uIGluXFxuICAzNzpcXHRcXHQgIEtTWjg1NjMvS1NaOTU2My9MQU45Mzd4IHNlcmllcyBvZiBzd2l0Y2hlcy4gS1NaOTU2My9LU1o4NTYzIHN1cHBvcnRzXFxuICAzODpcXHRcXHQgIG9ubHkgb25lIHN0ZXAgdGltZXN0YW1waW5nLiBMQU45Mzd4IHN3aXRjaCBzdXBwb3J0cyBib3RoIG9uZSBzdGVwIGFuZFxcbiAgMzk6XFx0XFx0ICB0d28gc3RlcCB0aW1lc3RhbXBpbmcuXFxuICA0MDpcXHRcXG4gIDQxOlxcdGNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1o4ODYzX1NNSVxcbiAgNDI6XFx0XFx0dHJpc3RhdGUgXFxcIktTWiBzZXJpZXMgU01JIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXFxcIlxcbiAgNDM6XFx0XFx0ZGVwZW5kcyBvbiBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OXFxuICA0NDpcXHRcXHRzZWxlY3QgTURJT19CSVRCQU5HXFxuICA0NTpcXHRcXHRoZWxwXFxuICA0NjpcXHRcXHQgIFNlbGVjdCB0byBlbmFibGUgc3VwcG9ydCBmb3IgcmVnaXN0ZXJpbmcgc3dpdGNoZXMgY29uZmlndXJlZCB0aHJvdWdoXFxuICA0NzpcXHRcXHQgIE1pY3JvY2hpcCBTTUkuIEl0IHN1cHBvcnRzIHRoZSBLU1o4ODYzIGFuZCBLU1o4ODczIHN3aXRjaC5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDU6MTk6NTcuMjM1ODA4MzIzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzcwOTEyMjUxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIERTQSBTd2l0Y2ggRnV6emluZyBGZWFzaWJpbGl0eSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTWljcm9jaGlwIEtTWiBEU0Egc3dpdGNoZXMgYXJlIEV0aGVybmV0IHN3aXRjaGVzIG1hbmFnZWQgdGhyb3VnaCBpbnRlcmZhY2VzIGxpa2UgSTJDLCBTUEksIG9yIFNNSSwgYW5kIHRoZXkgY29ubmVjdCB0byBwaHlzaWNhbCBFdGhlcm5ldCBvciBhcmUgZGVzY3JpYmVkIGluIGRldmljZSB0cmVlcywgb2Z0ZW4gdXNlZCBpbiBlbWJlZGRlZCBzeXN0ZW1zLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IGNhbiB0aGVzZSBEU0Egc3dpdGNoZXMsIGFuZCBzcGVjaWZpY2FsbHkgdGhlaXIgSTJDL1NQSSBpbnRlcmZhY2VzLCBiZSBwcm9iZWQgYW5kIGZ1enplZCBlZmZlY3RpdmVseSB3aXRoaW4gYSBzdGFuZGFyZCBzeXprYWxsZXIgc2V0dXA/IFRoYXQncyB0aGUgY29yZSBvZiB0aGUgcHJvYmxlbS5cblxuQWxyaWdodCwgdGltZSB0byBjaGVjayB0aGUgc3l6a2FsbGVyIGd1aWRlbGluZXMsIHNwZWNpZmljYWxseSBzZWN0aW9ucyAyIGFuZCAzLiBTZWN0aW9uIDIgaGlnaGxpZ2h0cyB3aGF0J3MgdHlwaWNhbGx5ICpub3QqIGZ1enplZCB3ZWxsLiBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUgaXMgdGhlIHJlZCBmbGFnIGhlcmU6IHRoaW5ncyBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBzcGVjaWFsaXplZCBOSUNzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBvciBjb21wbGV4IGVtdWxhdGlvbiB0aGF0IGlzbid0IHN0YW5kYXJkIGluIFFFTVUsIG9yIGRyaXZlcnMgd2hvc2UgZXhlY3V0aW9uIHBhdGhzIGFyZSBvbmx5IGhpdCBkdXJpbmcgaG90LXVucGx1ZyBldmVudHMuXG5cblNlY3Rpb24gMyBnaXZlcyB1cyBzb21lIGhvcGUsIHRob3VnaC4gSXQgZm9jdXNlcyBvbiBcIlJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHMsXCIgbWVhbmluZyBkcml2ZXJzIGFjY2Vzc2libGUgdGhyb3VnaCB2aXJ0dWFsIGJ1c2VzIHN1Y2ggYXMgdmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjayBpbnRlcmZhY2VzLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gU28sIHRoZSBrZXkgcXVlc3Rpb24gaXM6IGRvZXMgdGhlIE1pY3JvY2hpcCBLU1ogc3dpdGNoIGRyaXZlciBmaXQgdGhpcyBcInJlYWNoYWJsZVwiIGNhdGVnb3J5LCBvciBpcyBpdCBmdW5kYW1lbnRhbGx5IHRpZWQgdG8gc29tZSBmb3JtIG9mIFwic3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCI/XG5cbk5vdyBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgdGhlIHByb2JpbmcgcHJvY2Vzcy4gQ2FuIHRoaXMgZHJpdmVyIGJlIHRyaWdnZXJlZCB0aHJvdWdoIHNvbWV0aGluZyBsaWtlIGEgdmlydHVhbCBidXMsIGEgZGV2aWNlIHRyZWUgZW50cnkgdGhhdOKAmXMgZW11bGF0ZWQgYnkgUUVNVSwgb3IgdGhyb3VnaCBzeXNmcz8gSSBuZWVkIHRvIGFuYWx5emUgaG93IHRoZSBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9gIGRpcmVjdG9yeSBpcyBhY3R1YWxseSBpbml0aWFsaXplZCBhbmQgcHJvYmVkLiBUaGF0J3MgdGhlIGNydWNpYWwgZGF0YSBwb2ludCB0aGF0IHdpbGwgZGV0ZXJtaW5lIGlmIGl0J3MgZmVhc2libGUgdG8gZnV6eiB0aGlzIGNvZGUgaW4gYSBzdGFuZGFyZCBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk1ODMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNToyMDowMC45NDQ5MzM4ODNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA3NTczNjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlXy4qZHJpdmVyXFxcXCh8cHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYz0yMTM9c3RhdGljIGludCBrc3o4NDYzX2lycV9kb21haW5fbWFwKHN0cnVjdCBpcnFfZG9tYWluICpkLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjE3LVxcdGlycV9zZXRfY2hpcF9hbmRfaGFuZGxlcihpcnEsIFxcdTAwMjZrc3o4NDYzX2lycV9jaGlwLCBoYW5kbGVfbGV2ZWxfaXJxKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyMTg6XFx0aXJxX3NldF9ub3Byb2JlKGlycSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjE5LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jPTEwMD1zdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9jb25maWcga3N6ODg2M19yZWdtYXBfY29uZmlnW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmMtMTMyLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYzoxMzM6c3RhdGljIGludCBrc3o4ODYzX3NtaV9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jLTEzNC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmMtMTU4LVxcdFxcdGlmIChJU19FUlIoZGV2LVxcdTAwM2VyZWdtYXBbaV0pKSB7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jOjE1OTpcXHRcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYy0xNjAtXFx0XFx0XFx0XFx0XFx0ICAgICBQVFJfRVJSKGRldi1cXHUwMDNlcmVnbWFwW2ldKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYz0yMTE9c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBrc3o4ODYzX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmM6MjEyOlxcdC5wcm9iZVxcdD0ga3N6ODg2M19zbWlfcHJvYmUsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jLTIxMy1cXHQucmVtb3ZlXFx0PSBrc3o4ODYzX3NtaV9yZW1vdmUsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmMtMjIwLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYzoyMjE6bWRpb19tb2R1bGVfZHJpdmVyKGtzejg4NjNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmMtMjIyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jPTE1PUtTWl9SRUdNQVBfVEFCTEUoa3N6OTQ3Nywgbm90X3VzZWQsIDE2LCAwLCAwKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtMTYtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jOjE3OnN0YXRpYyBpbnQga3N6OTQ3N19pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmkyYylcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtMTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTM5LVxcdFxcdGlmIChJU19FUlIoZGV2LVxcdTAwM2VyZWdtYXBbaV0pKSB7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jOjQwOlxcdFxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKFxcdTAwMjZpMmMtXFx1MDAzZWRldiwgUFRSX0VSUihkZXYtXFx1MDAzZXJlZ21hcFtpXSksXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTQxLVxcdFxcdFxcdFxcdFxcdCAgICAgXFxcIkZhaWxlZCB0byBpbml0aWFsaXplIHJlZ21hcCVpXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jPTEzMz1zdGF0aWMgc3RydWN0IGkyY19kcml2ZXIga3N6OTQ3N19pMmNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTEzOC1cXHR9LFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzoxMzk6XFx0LnByb2JlID0ga3N6OTQ3N19pMmNfcHJvYmUsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTE0MC1cXHQucmVtb3ZlXFx0PSBrc3o5NDc3X2kyY19yZW1vdmUsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtMTQ0LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzoxNDU6bW9kdWxlX2kyY19kcml2ZXIoa3N6OTQ3N19pMmNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtMTQ2LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9MjQ5Mj1zdGF0aWMgaW50IGtzel9pcnFfZG9tYWluX21hcChzdHJ1Y3QgaXJxX2RvbWFpbiAqZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI0OTYtXFx0aXJxX3NldF9jaGlwX2FuZF9oYW5kbGVyKGlycSwgXFx1MDAyNmtzel9pcnFfY2hpcCwgaGFuZGxlX2xldmVsX2lycSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MjQ5NzpcXHRpcnFfc2V0X25vcHJvYmUoaXJxKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yNDk4LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9Mzk1Mj1pbnQga3N6X3N3aXRjaF9yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzk5Ny1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzozOTk4OlxcdC8qIFVwZGF0ZSB0aGUgY29tcGF0aWJsZSBpbmZvIHdpdGggdGhlIHByb2JlZCBvbmUgKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zOTk5LVxcdGRldi1cXHUwMDNlaW5mbyA9IGluZm87XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYz0xMjIwPXN0YXRpYyBpbnQga3N6X3B0cF9pcnFfZG9tYWluX21hcChzdHJ1Y3QgaXJxX2RvbWFpbiAqZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyMjQtXFx0aXJxX3NldF9jaGlwX2FuZF9oYW5kbGVyKGlycSwgXFx1MDAyNmtzel9wdHBfaXJxX2NoaXAsIGhhbmRsZV9sZXZlbF9pcnEpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEyMjU6XFx0aXJxX3NldF9ub3Byb2JlKGlycSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTIyNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jPTEzND1LU1o4NDYzX1JFR01BUF9UQUJMRShrc3o4NDYzLCBLU1o4NDYzX1NQSV9BRERSX1NISUZULCAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMTM2LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jOjEzNzpzdGF0aWMgaW50IGtzel9zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYy0xMzgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMTc3LVxcdFxcdGlmIChJU19FUlIoZGV2LVxcdTAwM2VyZWdtYXBbaV0pKSB7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MTc4OlxcdFxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKFxcdTAwMjZzcGktXFx1MDAzZWRldiwgUFRSX0VSUihkZXYtXFx1MDAzZXJlZ21hcFtpXSksXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMTc5LVxcdFxcdFxcdFxcdFxcdCAgICAgXFxcIkZhaWxlZCB0byBpbml0aWFsaXplIHJlZ21hcCVpXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM9MzQ5PXN0YXRpYyBzdHJ1Y3Qgc3BpX2RyaXZlciBrc3pfc3BpX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTM1NS1cXHQuaWRfdGFibGUgPSBrc3pfc3BpX2lkcyxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzozNTY6XFx0LnByb2JlXFx0PSBrc3pfc3BpX3Byb2JlLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTM1Ny1cXHQucmVtb3ZlXFx0PSBrc3pfc3BpX3JlbW92ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTM2MC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzozNjE6bW9kdWxlX3NwaV9kcml2ZXIoa3N6X3NwaV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTM2Mi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDU6MjA6MDAuOTk1Njk4MTM5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzI3MTI2MTQxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIEtTWiBEcml2ZXIgTGFuZHNjYXBlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgS1NaIGRyaXZlcnM6IGBrc3o5NDc3X2kyY19kcml2ZXJgLCBga3N6X3NwaV9kcml2ZXJgLCBhbmQgYGtzejg4NjNfZHJpdmVyYC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBjYW4gdGhlc2UgSTJDIG9yIFNQSSBkZXZpY2VzIGJlIGVmZmVjdGl2ZWx5IHByb2JlZCBhbmQgdGVzdGVkIHVzaW5nIHRvb2xzIGxpa2Ugc3l6a2FsbGVyLCBvciBldmVuIGZyb20gdXNlcnNwYWNlIGRpcmVjdGx5PyBUaGF0J3MgYSBjcml0aWNhbCBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyB0aGVpciByb2J1c3RuZXNzLiBBbmQgdGhlbiBpdCBoaXRzIG1lIOKAkyBjYW4gSSBpbnN0YW50aWF0ZSBhbiBJMkMgZGV2aWNlLCBzcGVjaWZpY2FsbHksIGJ5IGxldmVyYWdpbmcgdGhhdCBgL3N5cy9idXMvaTJjL2RldmljZXMvaTJjLSovbmV3X2RldmljZWAgc3lzZnMgaW50ZXJmYWNlPyBUaGlzIHdvdWxkIGJlIGluY3JlZGlibHkgdmFsdWFibGUgZm9yIHN0cmVhbWxpbmVkIHRlc3RpbmcgYW5kIGRlYnVnZ2luZywgaWYgcG9zc2libGUuXG5cbk15IG5leHQgc3RlcCBpcyBjbGVhci4gSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGUgYGtzejk0NzdfaTJjYCBkZXZpY2UsIGZvciBpbnN0YW5jZSwgaXMgYW1lbmFibGUgdG8gaW5zdGFudGlhdGlvbiB2aWEgdGhlIGBuZXdfZGV2aWNlYCBzeXNmcyBpbnRlcmZhY2UsIG9yIGlmIGl0IGhhcyB2ZXJ5IHNwZWNpZmljIGRlcGVuZGVuY2llcyBvbiBEZXZpY2UgVHJlZSAoRFQpIG9yIHBsYXRmb3JtLWxldmVsIHNldHVwIHRoYXQgd291bGQgY29tcGxpY2F0ZSBkaXJlY3QgbWFuaXB1bGF0aW9uLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZS4gSSdsbCBzdGFydCBieSBleGFtaW5pbmcgdGhlIGBrc3o5NDc3X2kyY19wcm9iZWAgZnVuY3Rpb24sIHNwZWNpZmljYWxseSBpbiBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jYCwgdG8gdW5kZXJzdGFuZCB0aGUgZHJpdmVyJ3MgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgYW5kIHByb2JlIGJlaGF2aW9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjQ3OSwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNToyMDowNC4yNjY5NjIzMzFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTA4NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdC8qXFxuICAgMzpcXHQgKiBNaWNyb2NoaXAgS1NaOTQ3NyBzZXJpZXMgcmVnaXN0ZXIgYWNjZXNzIHRocm91Z2ggSTJDXFxuICAgNDpcXHQgKlxcbiAgIDU6XFx0ICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjQgTWljcm9jaGlwIFRlY2hub2xvZ3kgSW5jLlxcbiAgIDY6XFx0ICovXFxuICAgNzpcXHRcXG4gICA4OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9pMmMuaFxcdTAwM2VcXG4gICA5OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXJuZWwuaFxcdTAwM2VcXG4gIDEwOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4gIDExOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZWdtYXAuaFxcdTAwM2VcXG4gIDEyOlxcdFxcbiAgMTM6XFx0I2luY2x1ZGUgXFxcImtzel9jb21tb24uaFxcXCJcXG4gIDE0OlxcdFxcbiAgMTU6XFx0S1NaX1JFR01BUF9UQUJMRShrc3o5NDc3LCBub3RfdXNlZCwgMTYsIDAsIDApO1xcbiAgMTY6XFx0XFxuICAxNzpcXHRzdGF0aWMgaW50IGtzejk0NzdfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpXFxuICAxODpcXHR7XFxuICAxOTpcXHRcXHRjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSAqY2hpcDtcXG4gIDIwOlxcdFxcdHN0cnVjdCBkZXZpY2UgKmRkZXYgPSBcXHUwMDI2aTJjLVxcdTAwM2VkZXY7XFxuICAyMTpcXHRcXHRzdHJ1Y3QgcmVnbWFwX2NvbmZpZyByYztcXG4gIDIyOlxcdFxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXY7XFxuICAyMzpcXHRcXHRpbnQgaSwgcmV0O1xcbiAgMjQ6XFx0XFxuICAyNTpcXHRcXHRjaGlwID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRkZXYpO1xcbiAgMjY6XFx0XFx0aWYgKCFjaGlwKVxcbiAgMjc6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuICAyODpcXHRcXG4gIDI5OlxcdFxcdGRldiA9IGtzel9zd2l0Y2hfYWxsb2MoXFx1MDAyNmkyYy1cXHUwMDNlZGV2LCBjaGlwLCBpMmMpO1xcbiAgMzA6XFx0XFx0aWYgKCFkZXYpXFxuICAzMTpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gIDMyOlxcdFxcbiAgMzM6XFx0XFx0LyogU2F2ZSBjaGlwIGlkIHRvIGRvIHNwZWNpYWwgaW5pdGlhbGl6YXRpb24gd2hlbiBwcm9iaW5nLiAqL1xcbiAgMzQ6XFx0XFx0ZGV2LVxcdTAwM2VjaGlwX2lkID0gY2hpcC1cXHUwMDNlY2hpcF9pZDtcXG4gIDM1OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBfX0tTWl9OVU1fUkVHTUFQUzsgaSsrKSB7XFxuICAzNjpcXHRcXHRcXHRyYyA9IGtzejk0NzdfcmVnbWFwX2NvbmZpZ1tpXTtcXG4gIDM3OlxcdFxcdFxcdHJjLmxvY2tfYXJnID0gXFx1MDAyNmRldi1cXHUwMDNlcmVnbWFwX211dGV4O1xcbiAgMzg6XFx0XFx0XFx0ZGV2LVxcdTAwM2VyZWdtYXBbaV0gPSBkZXZtX3JlZ21hcF9pbml0X2kyYyhpMmMsIFxcdTAwMjZyYyk7XFxuICAzOTpcXHRcXHRcXHRpZiAoSVNfRVJSKGRldi1cXHUwMDNlcmVnbWFwW2ldKSkge1xcbiAgNDA6XFx0XFx0XFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXFx1MDAyNmkyYy1cXHUwMDNlZGV2LCBQVFJfRVJSKGRldi1cXHUwMDNlcmVnbWFwW2ldKSxcXG4gIDQxOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgXFxcIkZhaWxlZCB0byBpbml0aWFsaXplIHJlZ21hcCVpXFxcXG5cXFwiLFxcbiAgNDI6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBrc3o5NDc3X3JlZ21hcF9jb25maWdbaV0udmFsX2JpdHMpO1xcbiAgNDM6XFx0XFx0XFx0fVxcbiAgNDQ6XFx0XFx0fVxcbiAgNDU6XFx0XFxuICA0NjpcXHRcXHRpZiAoaTJjLVxcdTAwM2VkZXYucGxhdGZvcm1fZGF0YSlcXG4gIDQ3OlxcdFxcdFxcdGRldi1cXHUwMDNlcGRhdGEgPSBpMmMtXFx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhO1xcbiAgNDg6XFx0XFxuICA0OTpcXHRcXHRkZXYtXFx1MDAzZWlycSA9IGkyYy1cXHUwMDNlaXJxO1xcbiAgNTA6XFx0XFxuICA1MTpcXHRcXHRyZXQgPSBrc3pfc3dpdGNoX3JlZ2lzdGVyKGRldik7XFxuICA1MjpcXHRcXG4gIDUzOlxcdFxcdC8qIE1haW4gRFNBIGRyaXZlciBtYXkgbm90IGJlIHN0YXJ0ZWQgeWV0LiAqL1xcbiAgNTQ6XFx0XFx0aWYgKHJldClcXG4gIDU1OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuICA1NjpcXHRcXG4gIDU3OlxcdFxcdGkyY19zZXRfY2xpZW50ZGF0YShpMmMsIGRldik7XFxuICA1ODpcXHRcXG4gIDU5OlxcdFxcdHJldHVybiAwO1xcbiAgNjA6XFx0fVxcbiAgNjE6XFx0XFxuICA2MjpcXHRzdGF0aWMgdm9pZCBrc3o5NDc3X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmkyYylcXG4gIDYzOlxcdHtcXG4gIDY0OlxcdFxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoaTJjKTtcXG4gIDY1OlxcdFxcbiAgNjY6XFx0XFx0aWYgKGRldilcXG4gIDY3OlxcdFxcdFxcdGtzel9zd2l0Y2hfcmVtb3ZlKGRldik7XFxuICA2ODpcXHR9XFxuICA2OTpcXHRcXG4gIDcwOlxcdHN0YXRpYyB2b2lkIGtzejk0NzdfaTJjX3NodXRkb3duKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpXFxuICA3MTpcXHR7XFxuICA3MjpcXHRcXHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2ID0gaTJjX2dldF9jbGllbnRkYXRhKGkyYyk7XFxuICA3MzpcXHRcXG4gIDc0OlxcdFxcdGlmICghZGV2KVxcbiAgNzU6XFx0XFx0XFx0cmV0dXJuO1xcbiAgNzY6XFx0XFxuICA3NzpcXHRcXHRrc3pfc3dpdGNoX3NodXRkb3duKGRldik7XFxuICA3ODpcXHRcXG4gIDc5OlxcdFxcdGkyY19zZXRfY2xpZW50ZGF0YShpMmMsIE5VTEwpO1xcbiAgODA6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNToyMDowNC4yNjcwNTc1NzFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE5MjYyMzI1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBDaGlwIE1hdGNoIGluIGtzejk0NzdfaTJjLmMqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBmaXJzdCB0aGluZyBJJ20gZG9pbmcgaXMgZ3JhYmJpbmcgdGhlIG1hdGNoaW5nIGRhdGEgZm9yIHRoZSBkZXZpY2UsIGxpa2VseSB0byBpZGVudGlmeSB0aGUgc3BlY2lmaWMgY2hpcCB1c2luZyBgZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRkZXYpO2AuIFRoYXQncyBzdGFuZGFyZCBwcmFjdGljZSwgYW5kIGZyb20gdGhlcmUgSSdtIGdvaW5nIHRvIHdhbnQgdG8gdW5kZXJzdGFuZCB3aGF0IGlzIGJlaW5nIGRvbmUgd2l0aCB0aGF0IGRhdGEuIEl0IHNlZW1zIGxpa2UgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUgYGtzejk0NzdfaTJjLmNgIGZpbGUsIHNwZWNpZmljYWxseSBsaW5lcyA4MCB0aHJvdWdoIDE1MC4gVGhhdCBzZWN0aW9uIGlzIHByb2JhYmx5IHdoZXJlIHRoZSBjaGlwLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIG9yIGNvbmZpZ3VyYXRpb24gaXMgaGFuZGxlZCwgb3IgcGVyaGFwcyBpdCdzIGludm9sdmVkIHdpdGggSTJDIGNvbW11bmljYXRpb24gc2V0dXAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgaGFwcGVucyBiYXNlZCBvbiB0aGUgbWF0Y2ggZGF0YSByZXR1cm5lZCBhbmQgZGV0ZXJtaW5lIGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBkZXZpY2UuIExldCdzIHNlZSB3aGF0IGludGVyZXN0aW5nIHRpZGJpdHMgYXJlIGhpZGluZyBpbiB0aGF0IHNlY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MTE3LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNToyMDowNi40NTk2ODQyNDVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMwMTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA4MCxcbiAgXCJMaW5lQ291bnRcIjogNzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA4MDpcXHR9XFxuICA4MTpcXHRcXG4gIDgyOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBrc3o5NDc3X2kyY19pZFtdID0ge1xcbiAgODM6XFx0XFx0eyAubmFtZSA9IFxcXCJrc3o5NDc3LXN3aXRjaFxcXCIgfSxcXG4gIDg0OlxcdFxcdHsgfVxcbiAgODU6XFx0fTtcXG4gIDg2OlxcdFxcbiAgODc6XFx0TU9EVUxFX0RFVklDRV9UQUJMRShpMmMsIGtzejk0NzdfaTJjX2lkKTtcXG4gIDg4OlxcdFxcbiAgODk6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQga3N6OTQ3N19kdF9pZHNbXSA9IHtcXG4gIDkwOlxcdFxcdHtcXG4gIDkxOlxcdFxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o5NDc3XFxcIixcXG4gIDkyOlxcdFxcdFxcdC5kYXRhID0gXFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaOTQ3N11cXG4gIDkzOlxcdFxcdH0sXFxuICA5NDpcXHRcXHR7XFxuICA5NTpcXHRcXHRcXHQuY29tcGF0aWJsZSA9IFxcXCJtaWNyb2NoaXAsa3N6OTg5NlxcXCIsXFxuICA5NjpcXHRcXHRcXHQuZGF0YSA9IFxcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0tTWjk4OTZdXFxuICA5NzpcXHRcXHR9LFxcbiAgOTg6XFx0XFx0e1xcbiAgOTk6XFx0XFx0XFx0LmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGtzejk4OTdcXFwiLFxcbiAxMDA6XFx0XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5ODk3XVxcbiAxMDE6XFx0XFx0fSxcXG4gMTAyOlxcdFxcdHtcXG4gMTAzOlxcdFxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o5ODkzXFxcIixcXG4gMTA0OlxcdFxcdFxcdC5kYXRhID0gXFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaOTg5M11cXG4gMTA1OlxcdFxcdH0sXFxuIDEwNjpcXHRcXHR7XFxuIDEwNzpcXHRcXHRcXHQuY29tcGF0aWJsZSA9IFxcXCJtaWNyb2NoaXAsa3N6OTU2M1xcXCIsXFxuIDEwODpcXHRcXHRcXHQuZGF0YSA9IFxcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0tTWjk1NjNdXFxuIDEwOTpcXHRcXHR9LFxcbiAxMTA6XFx0XFx0e1xcbiAxMTE6XFx0XFx0XFx0LmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGtzejg1NjNcXFwiLFxcbiAxMTI6XFx0XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o4NTYzXVxcbiAxMTM6XFx0XFx0fSxcXG4gMTE0OlxcdFxcdHtcXG4gMTE1OlxcdFxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o4NTY3XFxcIixcXG4gMTE2OlxcdFxcdFxcdC5kYXRhID0gXFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaODU2N11cXG4gMTE3OlxcdFxcdH0sXFxuIDExODpcXHRcXHR7XFxuIDExOTpcXHRcXHRcXHQuY29tcGF0aWJsZSA9IFxcXCJtaWNyb2NoaXAsa3N6OTU2N1xcXCIsXFxuIDEyMDpcXHRcXHRcXHQuZGF0YSA9IFxcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0tTWjk1NjddXFxuIDEyMTpcXHRcXHR9LFxcbiAxMjI6XFx0XFx0e1xcbiAxMjM6XFx0XFx0XFx0LmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGxhbjk2NDZcXFwiLFxcbiAxMjQ6XFx0XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tMQU45NjQ2XVxcbiAxMjU6XFx0XFx0fSxcXG4gMTI2OlxcdFxcdHt9LFxcbiAxMjc6XFx0fTtcXG4gMTI4OlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGtzejk0NzdfZHRfaWRzKTtcXG4gMTI5OlxcdFxcbiAxMzA6XFx0c3RhdGljIERFRklORV9TSU1QTEVfREVWX1BNX09QUyhrc3pfaTJjX3BtX29wcyxcXG4gMTMxOlxcdFxcdFxcdFxcdFxcdGtzel9zd2l0Y2hfc3VzcGVuZCwga3N6X3N3aXRjaF9yZXN1bWUpO1xcbiAxMzI6XFx0XFxuIDEzMzpcXHRzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIga3N6OTQ3N19pMmNfZHJpdmVyID0ge1xcbiAxMzQ6XFx0XFx0LmRyaXZlciA9IHtcXG4gMTM1OlxcdFxcdFxcdC5uYW1lXFx0PSBcXFwia3N6OTQ3Ny1zd2l0Y2hcXFwiLFxcbiAxMzY6XFx0XFx0XFx0Lm9mX21hdGNoX3RhYmxlID0ga3N6OTQ3N19kdF9pZHMsXFxuIDEzNzpcXHRcXHRcXHQucG0gPSBcXHUwMDI2a3N6X2kyY19wbV9vcHMsXFxuIDEzODpcXHRcXHR9LFxcbiAxMzk6XFx0XFx0LnByb2JlID0ga3N6OTQ3N19pMmNfcHJvYmUsXFxuIDE0MDpcXHRcXHQucmVtb3ZlXFx0PSBrc3o5NDc3X2kyY19yZW1vdmUsXFxuIDE0MTpcXHRcXHQuc2h1dGRvd24gPSBrc3o5NDc3X2kyY19zaHV0ZG93bixcXG4gMTQyOlxcdFxcdC5pZF90YWJsZSA9IGtzejk0NzdfaTJjX2lkLFxcbiAxNDM6XFx0fTtcXG4gMTQ0OlxcdFxcbiAxNDU6XFx0bW9kdWxlX2kyY19kcml2ZXIoa3N6OTQ3N19pMmNfZHJpdmVyKTtcXG4gMTQ2OlxcdFxcbiAxNDc6XFx0TU9EVUxFX0FVVEhPUihcXFwiVHJpc3RyYW0gSGEgXFx1MDAzY1RyaXN0cmFtLkhhQG1pY3JvY2hpcC5jb21cXHUwMDNlXFxcIik7XFxuIDE0ODpcXHRNT0RVTEVfREVTQ1JJUFRJT04oXFxcIk1pY3JvY2hpcCBLU1o5NDc3IFNlcmllcyBTd2l0Y2ggSTJDIGFjY2VzcyBEcml2ZXJcXFwiKTtcXG4gMTQ5OlxcdE1PRFVMRV9MSUNFTlNFKFxcXCJHUEwgdjJcXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDU6MjA6MDYuNDU5ODE2MDQ1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI2ODkyNTM2NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIERyaXZlciBJbml0aWFsaXphdGlvbiBpbiB0aGUgS2VybmVsKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcHJvYmUgZnVuY3Rpb24sIGBrc3o5NDc3X2kyY19wcm9iZWAuIEkgc2VlIGl0IHN0YXJ0cyBieSBncmFiYmluZyBgY2hpcGAgdXNpbmcgYGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZGV2KWAuIEhtbSwgaWYgdGhlcmUncyBubyBtYXRjaCBkYXRhIOKAkyBwYXJ0aWN1bGFybHkgaWYgdGhpcyBkZXZpY2Ugd2FzIGluc3RhbnRpYXRlZCB0aHJvdWdoIEkyQyB2aWEgYSBzeXNmcyBcIm5ld19kZXZpY2VcIiBjYWxsIOKAkyB0aGVuIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGRldilgIHdpbGwgcmV0dXJuIGBOVUxMYC4gQW5kIHRoYXQncyBjcml0aWNhbCBiZWNhdXNlIHRoZSBmdW5jdGlvbiB0aGVuIGltbWVkaWF0ZWx5IGV4aXRzIHdpdGggYC1FSU5WQUxgLiBObyBPRiBtYXRjaCBkYXRhLCBubyBpbml0aWFsaXphdGlvbiwgc2ltcGxlIGFzIHRoYXQuIEkgc3VzcGVjdGVkIGFzIG11Y2guIEknbSBub3RpbmcgdGhpcyBpcyBieSBkZXNpZ24gZm9yIHRoaXMgZHJpdmVyLiBJIGFtIGdvaW5nIHRvIGNvbXBhcmUgdGhpcyBJMkMgZHJpdmVyIHRvIGl0cyBTUEkgZXF1aXZhbGVudC4gTGV0J3Mgc2VlIGhvdyB0aGF0IG9uZSBpcyBoYW5kbGluZyBpbml0aWFsaXphdGlvbiBhbmQgbWF0Y2hpbmcgaW4gYGtzel9zcGkuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NTUzLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDU6MjA6MDkuMTQ5MDczMzAyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjA0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMDAsXG4gIFwiTGluZUNvdW50XCI6IDcwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzMDA6XFx0XFx0XFx0LmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGxhbjkzNzJcXFwiLFxcbiAzMDE6XFx0XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tMQU45MzcyXVxcbiAzMDI6XFx0XFx0fSxcXG4gMzAzOlxcdFxcdHtcXG4gMzA0OlxcdFxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxsYW45MzczXFxcIixcXG4gMzA1OlxcdFxcdFxcdC5kYXRhID0gXFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbTEFOOTM3M11cXG4gMzA2OlxcdFxcdH0sXFxuIDMwNzpcXHRcXHR7XFxuIDMwODpcXHRcXHRcXHQuY29tcGF0aWJsZSA9IFxcXCJtaWNyb2NoaXAsbGFuOTM3NFxcXCIsXFxuIDMwOTpcXHRcXHRcXHQuZGF0YSA9IFxcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0xBTjkzNzRdXFxuIDMxMDpcXHRcXHR9LFxcbiAzMTE6XFx0XFx0e1xcbiAzMTI6XFx0XFx0XFx0LmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGxhbjk2NDZcXFwiLFxcbiAzMTM6XFx0XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tMQU45NjQ2XVxcbiAzMTQ6XFx0XFx0fSxcXG4gMzE1OlxcdFxcdHt9LFxcbiAzMTY6XFx0fTtcXG4gMzE3OlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGtzel9kdF9pZHMpO1xcbiAzMTg6XFx0XFxuIDMxOTpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHNwaV9kZXZpY2VfaWQga3N6X3NwaV9pZHNbXSA9IHtcXG4gMzIwOlxcdFxcdHsgXFxcImtzejg0NjNcXFwiIH0sXFxuIDMyMTpcXHRcXHR7IFxcXCJrc3o4NzY1XFxcIiB9LFxcbiAzMjI6XFx0XFx0eyBcXFwia3N6ODc5NFxcXCIgfSxcXG4gMzIzOlxcdFxcdHsgXFxcImtzejg3OTVcXFwiIH0sXFxuIDMyNDpcXHRcXHR7IFxcXCJrc3o4ODYzXFxcIiB9LFxcbiAzMjU6XFx0XFx0eyBcXFwia3N6ODg2NFxcXCIgfSxcXG4gMzI2OlxcdFxcdHsgXFxcImtzejg4NzNcXFwiIH0sXFxuIDMyNzpcXHRcXHR7IFxcXCJrc3o4ODk1XFxcIiB9LFxcbiAzMjg6XFx0XFx0eyBcXFwia3N6OTQ3N1xcXCIgfSxcXG4gMzI5OlxcdFxcdHsgXFxcImtzejk4OTZcXFwiIH0sXFxuIDMzMDpcXHRcXHR7IFxcXCJrc3o5ODk3XFxcIiB9LFxcbiAzMzE6XFx0XFx0eyBcXFwia3N6OTg5M1xcXCIgfSxcXG4gMzMyOlxcdFxcdHsgXFxcImtzejk1NjNcXFwiIH0sXFxuIDMzMzpcXHRcXHR7IFxcXCJrc3o4NTYzXFxcIiB9LFxcbiAzMzQ6XFx0XFx0eyBcXFwia3N6ODU2N1xcXCIgfSxcXG4gMzM1OlxcdFxcdHsgXFxcImtzejk1NjdcXFwiIH0sXFxuIDMzNjpcXHRcXHR7IFxcXCJsYW45MzcwXFxcIiB9LFxcbiAzMzc6XFx0XFx0eyBcXFwibGFuOTM3MVxcXCIgfSxcXG4gMzM4OlxcdFxcdHsgXFxcImxhbjkzNzJcXFwiIH0sXFxuIDMzOTpcXHRcXHR7IFxcXCJsYW45MzczXFxcIiB9LFxcbiAzNDA6XFx0XFx0eyBcXFwibGFuOTM3NFxcXCIgfSxcXG4gMzQxOlxcdFxcdHsgXFxcImxhbjk2NDZcXFwiIH0sXFxuIDM0MjpcXHRcXHR7IH0sXFxuIDM0MzpcXHR9O1xcbiAzNDQ6XFx0TU9EVUxFX0RFVklDRV9UQUJMRShzcGksIGtzel9zcGlfaWRzKTtcXG4gMzQ1OlxcdFxcbiAzNDY6XFx0c3RhdGljIERFRklORV9TSU1QTEVfREVWX1BNX09QUyhrc3pfc3BpX3BtX29wcyxcXG4gMzQ3OlxcdFxcdFxcdFxcdFxcdGtzel9zd2l0Y2hfc3VzcGVuZCwga3N6X3N3aXRjaF9yZXN1bWUpO1xcbiAzNDg6XFx0XFxuIDM0OTpcXHRzdGF0aWMgc3RydWN0IHNwaV9kcml2ZXIga3N6X3NwaV9kcml2ZXIgPSB7XFxuIDM1MDpcXHRcXHQuZHJpdmVyID0ge1xcbiAzNTE6XFx0XFx0XFx0Lm5hbWVcXHQ9IFxcXCJrc3otc3dpdGNoXFxcIixcXG4gMzUyOlxcdFxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IGtzel9kdF9pZHMsXFxuIDM1MzpcXHRcXHRcXHQucG0gPSBcXHUwMDI2a3N6X3NwaV9wbV9vcHMsXFxuIDM1NDpcXHRcXHR9LFxcbiAzNTU6XFx0XFx0LmlkX3RhYmxlID0ga3N6X3NwaV9pZHMsXFxuIDM1NjpcXHRcXHQucHJvYmVcXHQ9IGtzel9zcGlfcHJvYmUsXFxuIDM1NzpcXHRcXHQucmVtb3ZlXFx0PSBrc3pfc3BpX3JlbW92ZSxcXG4gMzU4OlxcdFxcdC5zaHV0ZG93biA9IGtzel9zcGlfc2h1dGRvd24sXFxuIDM1OTpcXHR9O1xcbiAzNjA6XFx0XFxuIDM2MTpcXHRtb2R1bGVfc3BpX2RyaXZlcihrc3pfc3BpX2RyaXZlcik7XFxuIDM2MjpcXHRcXG4gMzYzOlxcdE1PRFVMRV9BTElBUyhcXFwic3BpOmxhbjkzN3hcXFwiKTtcXG4gMzY0OlxcdE1PRFVMRV9BVVRIT1IoXFxcIlRyaXN0cmFtIEhhIFxcdTAwM2NUcmlzdHJhbS5IYUBtaWNyb2NoaXAuY29tXFx1MDAzZVxcXCIpO1xcbiAzNjU6XFx0TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJNaWNyb2NoaXAga3N6IFNlcmllcyBTd2l0Y2ggU1BJIERyaXZlclxcXCIpO1xcbiAzNjY6XFx0TU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNToyMDowOS4xNDkyMDE3ODJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzczOTQ2NjM2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYGtzel9zcGlfcHJvYmVgIGZ1bmN0aW9uIGFuZCBzZWUgd2hhdCBpdCdzIGFsbCBhYm91dC4gQXMgYW4gZXhwZXJ0IGluIG15IGZpZWxkLCBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgYSBmZXcgdGhpbmdzLCBiYXNlZCBvbiB0aGUgbmFtaW5nIGNvbnZlbnRpb24gYW5kIHRoZSBjb250ZXh0IG9mIFNQSSBwcm9iaW5nLiBJJ20gZXhwZWN0aW5nIHRoaXMgdG8gYmUgdGhlIGNvcmUgaW5pdGlhbGl6YXRpb24gYW5kIGRldGVjdGlvbiByb3V0aW5lIGZvciB0aGUgc3BlY2lmaWMgU1BJIGRldmljZSwgbGlrZWx5IGhhbmRsaW5nIGhhcmR3YXJlIHNldHVwIGFuZCBkcml2ZXIgYmluZGluZy4gVGhlIG5hbWUgXCJwcm9iZVwiIGl0c2VsZiBpbXBsaWVzIGEgcHJvY2VzcyBvZiBkaXNjb3ZlcnkgYW5kIGNvbmZpZ3VyYXRpb24sIHNvIEknbGwgYmUgbG9va2luZyBmb3IgYWN0aW9ucyBsaWtlOlxuXG4qICAgKipEZXZpY2UgSWRlbnRpZmljYXRpb246KiogVGhlIGZ1bmN0aW9uIHdpbGwgbGlrZWx5IHN0YXJ0IGJ5IGlkZW50aWZ5aW5nIHRoZSBkZXZpY2UsIHBvdGVudGlhbGx5IHRocm91Z2ggYSBjaGlwIElEIHJlYWQgb3IgYSBzcGVjaWZpYyByZWdpc3RlciBpbnRlcnJvZ2F0aW9uIG92ZXIgdGhlIFNQSSBidXMuIEknbGwgYmUgd2F0Y2hpbmcgdG8gc2VlIGhvdyBpdCBoYW5kbGVzIGRpZmZlcmVudCBkZXZpY2UgcmV2aXNpb25zIG9yIHZhcmlhbnRzLiBBbnkgZXJyb3IgaGFuZGxpbmcgcmVsYXRlZCB0byBkZXZpY2UgaWRlbnRpZmljYXRpb24gd2lsbCBiZSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcuXG4qICAgKipSZXNvdXJjZSBBbGxvY2F0aW9uOioqIEknbSBndWVzc2luZyBpdCB3aWxsIGFsbG9jYXRlIG5lY2Vzc2FyeSByZXNvdXJjZXMsIHN1Y2ggYXMgbWVtb3J5IGJ1ZmZlcnMgZm9yIFNQSSB0cmFuc2FjdGlvbnMgb3IgaW50ZXJydXB0IHJlcXVlc3QgbGluZXMsIGlmIGFwcGxpY2FibGUuIEdvb2QgcmVzb3VyY2UgbWFuYWdlbWVudCBpcyBrZXksIHNvIEknbGwgYmUgc2NydXRpbml6aW5nIHRoaXMgcGFydC5cbiogICAqKkRyaXZlciBCaW5kaW5nOioqIFRoZXJlIHdpbGwgYmUgc3RlcHMgdG8gYmluZCB0aGUgZGV2aWNlIHRvIHRoZSBkcml2ZXIncyBkYXRhIHN0cnVjdHVyZXMuIFRoaXMgcHJvYmFibHkgaW52b2x2ZXMgc2V0dGluZyB1cCB0aGUgZGV2aWNlJ3MgcHJpdmF0ZSBkYXRhLCBhc3NvY2lhdGluZyBpdCB3aXRoIHRoZSBTUEkgZGV2aWNlIHN0cnVjdHVyZSBhbmQgcmVnaXN0ZXJpbmcgaXQgd2l0aGluIHRoZSBMaW51eCBrZXJuZWwgZnJhbWV3b3JrLlxuKiAgICoqSW5pdGlhbGl6YXRpb246KiogSSdtIGFzc3VtaW5nIHRoYXQgaXQgd2lsbCBpbml0aWFsaXplIHRoZSBkZXZpY2UgZm9yIG9wZXJhdGlvbiwgd2hpY2ggY291bGQgbWVhbiBzZW5kaW5nIGNvbmZpZ3VyYXRpb24gY29tbWFuZHMgb3Igc2V0dGluZyB1cCBvcGVyYXRpb25hbCBtb2RlcyB2aWEgdGhlIFNQSSBidXMuIEknbGwgYmUgbG9va2luZyBmb3IgdGhlIHNwZWNpZmljIHNlcXVlbmNlIG9mIFNQSSB0cmFuc2ZlcnMgYW5kIGFueSBkZWxheXMgaW52b2x2ZWQsIGFzIHRpbWluZyBpcyBjcnVjaWFsIGZvciBTUEkgY29tbXVuaWNhdGlvbi5cbiogICAqKkVycm9yIEhhbmRsaW5nOioqIEEgcm9idXN0IGBwcm9iZWAgZnVuY3Rpb24gbmVlZHMgc29saWQgZXJyb3IgaGFuZGxpbmcuIEknbGwgYmUgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBob3cgaXQgZGVhbHMgd2l0aCBwb3RlbnRpYWwgaXNzdWVzIGxpa2UgY29tbXVuaWNhdGlvbiBmYWlsdXJlcywgaW52YWxpZCBkZXZpY2UgcmVzcG9uc2VzLCBvciByZXNvdXJjZSBhbGxvY2F0aW9uIGVycm9ycy4gVGhlIHF1YWxpdHkgb2YgZXJyb3IgcmVwb3J0aW5nLCBsb2dnaW5nLCBhbmQgcmVjb3Zlcnkgd2lsbCBiZSBjcml0aWNhbCBpbiBhIHJlYWwtd29ybGQgc2NlbmFyaW8uXG4qICAgKipPcHRpb25hbCBIYXJkd2FyZSBDaGVja3M6KiogSXQgaXMgYWxzbyBwbGF1c2libGUgaXQgaW5jbHVkZXMgc29tZSBiYXNpYyBoZWFsdGggY2hlY2tzIGFuZCB2YWxpZGF0aW9uIHRoYXQgaGFyZHdhcmUgaXMgaW4gYSB3b3JraW5nIHN0YXRlLlxuXG5Fc3NlbnRpYWxseSwgSSdtIGV4cGVjdGluZyB0aGlzIGBrc3pfc3BpX3Byb2JlYCBmdW5jdGlvbiB0byBiZSB0aGUgZ2F0ZXdheSBmb3IgdGhlIGRldmljZSdzIGludGVncmF0aW9uIGludG8gdGhlIHN5c3RlbS4gTXkgZXhwZXJ0aXNlIHdpbGwgYWxsb3cgbWUgdG8gcXVpY2tseSBldmFsdWF0ZSBpdHMgcXVhbGl0eSwgZWZmaWNpZW5jeSwgYW5kIG92ZXJhbGwgYXBwcm9hY2ggdG8gU1BJIGRldmljZSBtYW5hZ2VtZW50LiBJJ20gcmVhZHkgdG8gZGlnIGluIGFuZCB1bmRlcnN0YW5kIGhvdyB0aGlzIGZ1bmN0aW9uIGNvbnRyaWJ1dGVzIHRvIHRoZSBncmVhdGVyIGRyaXZlciBmcmFtZXdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2OTYwLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNToyMDoxMi44ODg2NzA2NDlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODc5NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTM1LFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTM1OlxcdFxcdFxcdCAgICAgS1NaODQ2M19TUElfQUREUl9BTElHTik7XFxuIDEzNjpcXHRcXG4gMTM3OlxcdHN0YXRpYyBpbnQga3N6X3NwaV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxcbiAxMzg6XFx0e1xcbiAxMzk6XFx0XFx0Y29uc3Qgc3RydWN0IHJlZ21hcF9jb25maWcgKnJlZ21hcF9jb25maWc7XFxuIDE0MDpcXHRcXHRjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSAqY2hpcDtcXG4gMTQxOlxcdFxcdHN0cnVjdCBkZXZpY2UgKmRkZXYgPSBcXHUwMDI2c3BpLVxcdTAwM2VkZXY7XFxuIDE0MjpcXHRcXHRzdHJ1Y3QgcmVnbWFwX2NvbmZpZyByYztcXG4gMTQzOlxcdFxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXY7XFxuIDE0NDpcXHRcXHRpbnQgaSwgcmV0ID0gMDtcXG4gMTQ1OlxcdFxcbiAxNDY6XFx0XFx0Y2hpcCA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZGV2KTtcXG4gMTQ3OlxcdFxcdGlmICghY2hpcClcXG4gMTQ4OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAxNDk6XFx0XFxuIDE1MDpcXHRcXHRkZXYgPSBrc3pfc3dpdGNoX2FsbG9jKFxcdTAwMjZzcGktXFx1MDAzZWRldiwgY2hpcCwgc3BpKTtcXG4gMTUxOlxcdFxcdGlmICghZGV2KVxcbiAxNTI6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIDE1MzpcXHRcXG4gMTU0OlxcdFxcdC8qIFNhdmUgY2hpcCBpZCB0byBkbyBzcGVjaWFsIGluaXRpYWxpemF0aW9uIHdoZW4gcHJvYmluZy4gKi9cXG4gMTU1OlxcdFxcdGRldi1cXHUwMDNlY2hpcF9pZCA9IGNoaXAtXFx1MDAzZWNoaXBfaWQ7XFxuIDE1NjpcXHRcXHRpZiAoY2hpcC1cXHUwMDNlY2hpcF9pZCA9PSBLU1o4OFgzX0NISVBfSUQpXFxuIDE1NzpcXHRcXHRcXHRyZWdtYXBfY29uZmlnID0ga3N6ODg2M19yZWdtYXBfY29uZmlnO1xcbiAxNTg6XFx0XFx0ZWxzZSBpZiAoY2hpcC1cXHUwMDNlY2hpcF9pZCA9PSBLU1o4NDYzX0NISVBfSUQpXFxuIDE1OTpcXHRcXHRcXHRyZWdtYXBfY29uZmlnID0ga3N6ODQ2M19yZWdtYXBfY29uZmlnO1xcbiAxNjA6XFx0XFx0ZWxzZSBpZiAoY2hpcC1cXHUwMDNlY2hpcF9pZCA9PSBLU1o4Nzk1X0NISVBfSUQgfHxcXG4gMTYxOlxcdFxcdFxcdCBjaGlwLVxcdTAwM2VjaGlwX2lkID09IEtTWjg3OTRfQ0hJUF9JRCB8fFxcbiAxNjI6XFx0XFx0XFx0IGNoaXAtXFx1MDAzZWNoaXBfaWQgPT0gS1NaODc2NV9DSElQX0lEKVxcbiAxNjM6XFx0XFx0XFx0cmVnbWFwX2NvbmZpZyA9IGtzejg3OTVfcmVnbWFwX2NvbmZpZztcXG4gMTY0OlxcdFxcdGVsc2UgaWYgKGNoaXAtXFx1MDAzZWNoaXBfaWQgPT0gS1NaODg5NV9DSElQX0lEIHx8XFxuIDE2NTpcXHRcXHRcXHQgY2hpcC1cXHUwMDNlY2hpcF9pZCA9PSBLU1o4ODY0X0NISVBfSUQpXFxuIDE2NjpcXHRcXHRcXHRyZWdtYXBfY29uZmlnID0ga3N6ODg2M19yZWdtYXBfY29uZmlnO1xcbiAxNjc6XFx0XFx0ZWxzZVxcbiAxNjg6XFx0XFx0XFx0cmVnbWFwX2NvbmZpZyA9IGtzejk0NzdfcmVnbWFwX2NvbmZpZztcXG4gMTY5OlxcdFxcbiAxNzA6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIF9fS1NaX05VTV9SRUdNQVBTOyBpKyspIHtcXG4gMTcxOlxcdFxcdFxcdHJjID0gcmVnbWFwX2NvbmZpZ1tpXTtcXG4gMTcyOlxcdFxcdFxcdHJjLmxvY2tfYXJnID0gXFx1MDAyNmRldi1cXHUwMDNlcmVnbWFwX211dGV4O1xcbiAxNzM6XFx0XFx0XFx0cmMud3JfdGFibGUgPSBjaGlwLVxcdTAwM2V3cl90YWJsZTtcXG4gMTc0OlxcdFxcdFxcdHJjLnJkX3RhYmxlID0gY2hpcC1cXHUwMDNlcmRfdGFibGU7XFxuIDE3NTpcXHRcXHRcXHRkZXYtXFx1MDAzZXJlZ21hcFtpXSA9IGRldm1fcmVnbWFwX2luaXRfc3BpKHNwaSwgXFx1MDAyNnJjKTtcXG4gMTc2OlxcdFxcbiAxNzc6XFx0XFx0XFx0aWYgKElTX0VSUihkZXYtXFx1MDAzZXJlZ21hcFtpXSkpIHtcXG4gMTc4OlxcdFxcdFxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKFxcdTAwMjZzcGktXFx1MDAzZWRldiwgUFRSX0VSUihkZXYtXFx1MDAzZXJlZ21hcFtpXSksXFxuIDE3OTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgIFxcXCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSByZWdtYXAlaVxcXFxuXFxcIixcXG4gMTgwOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgcmVnbWFwX2NvbmZpZ1tpXS52YWxfYml0cyk7XFxuIDE4MTpcXHRcXHRcXHR9XFxuIDE4MjpcXHRcXHR9XFxuIDE4MzpcXHRcXG4gMTg0OlxcdFxcdGlmIChzcGktXFx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhKVxcbiAxODU6XFx0XFx0XFx0ZGV2LVxcdTAwM2VwZGF0YSA9IHNwaS1cXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGE7XFxuIDE4NjpcXHRcXG4gMTg3OlxcdFxcdC8qIHNldHVwIHNwaSAqL1xcbiAxODg6XFx0XFx0c3BpLVxcdTAwM2Vtb2RlID0gU1BJX01PREVfMztcXG4gMTg5OlxcdFxcdHJldCA9IHNwaV9zZXR1cChzcGkpO1xcbiAxOTA6XFx0XFx0aWYgKHJldClcXG4gMTkxOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDE5MjpcXHRcXG4gMTkzOlxcdFxcdGRldi1cXHUwMDNlaXJxID0gc3BpLVxcdTAwM2VpcnE7XFxuIDE5NDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDU6MjA6MTIuODg4NzYwMTU5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYyOTA1MTIzNjQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBicmVha2luZyBkb3duIHRoaXMgY29kZSBzbmlwcGV0OlxuXG4qKkRlYnVnZ2luZyBDaGlwIElkZW50aWZpY2F0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBiaXQgb2YgY29kZSBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoaXMgY2hlY2s6IGBjaGlwID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRkZXYpOyBpZiAoIWNoaXApIHJldHVybiAtRUlOVkFMO2AuIFRoaXMgaXMgc3RhbmRhcmQgcHJhY3RpY2UgaW4gZGV2aWNlIGRyaXZlcnMg4oCTIGdldCB0aGUgbWF0Y2hpbmcgZGF0YSBmb3IgdGhlIGRldmljZSwgYW5kIGJhaWwgb3V0IGlmIHdlIGRvbid0IGhhdmUgYSB2YWxpZCBtYXRjaC4gTm8gc3VycHJpc2VzIHRoZXJlLiBCdXQsIEkgbmVlZCB0byB1bmRlcnN0YW5kICpob3cqIHRoZSBgY2hpcGAgc3RydWN0dXJlIGlzIHBvcHVsYXRlZC4gV2hlcmUgZG9lcyBgZGV2LVx1MDAzZWNoaXBfaWRgIGNvbWUgZnJvbSwgc2luY2UgaXQgaXMgbGlrZWx5IHRoYXQgdGhlIGBjaGlwYCB2YXJpYWJsZSBjb250YWlucyBpbmZvcm1hdGlvbiB0aGF0IGluZGljYXRlcyB0aGUgc3BlY2lmaWMgdHlwZSBvZiBzd2l0Y2g/XG5cbk15IG5leHQgc3RlcCBpcyB0byB0cmFjZSBiYWNrIHRoZSBvcmlnaW4gb2YgdGhhdCBjaGlwIElELiBJJ20gZ29pbmcgdG8gaGVhZCBkaXJlY3RseSB0byB0aGUgYGtzel9zd2l0Y2hfcmVnaXN0ZXJgIGFuZCBga3N6X3N3aXRjaF9kZXRlY3RgIGZ1bmN0aW9ucywgd2hpY2gsIGdpdmVuIHRoZSBjb250ZXh0LCBJJ20gYmV0dGluZyByZXNpZGUgaW4gYGtzel9jb21tb24uY2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNydWNpYWwgY29udGV4dCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyBgY2hpcGAgaXMgZGV0ZXJtaW5lZCwgd2hhdCBpdHMgY29udGVudHMgYXJlIGFuZCB3aGF0IGlzIGV4cGVjdGVkIG9mIG1lIGdvaW5nIGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NTM4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNToyMToxNS43OTM4ODg0MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY0NTA0NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3N6X3N3aXRjaF9kZXRlY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yOTM2PXZvaWQga3N6X3BoeWxpbmtfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI5NDctXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6Mjk0ODpzdGF0aWMgaW50IGtzel9zd2l0Y2hfZGV0ZWN0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjk0OS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0zOTUyPWludCBrc3pfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zOTg5LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjM5OTA6XFx0cmV0ID0ga3N6X3N3aXRjaF9kZXRlY3QoZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zOTkxLVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA1OjIxOjE1Ljg0MDM0NjA4N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNzE3MjQzOTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEludmVzdGlnYXRpb24gaW50byBEU0EgU3dpdGNoIERyaXZlcnMqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gaG93IERTQSBzd2l0Y2ggZHJpdmVycyBmdW5jdGlvbiB3aXRoaW4gdGhlIGtlcm5lbC4gTXkgZ29hbCBpcyB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBkcml2ZXJzIGludGVyZmFjZSB3aXRoIHRoZSBoYXJkd2FyZSwgc3BlY2lmaWNhbGx5IHRoZSBldGhlcm5ldCBzd2l0Y2ggY2hpcHMgd2UgY29tbW9ubHkgc2VlLCBsaWtlIHRoZSBvbmVzIGZyb20gTWFydmVsbCwgTWljcm9jaGlwIEtTWiwgQnJvYWRjb20gU3RhcmZpZ2h0ZXIsIGFuZCBvdGhlcnMuIFRoZXNlIGNoaXBzLCBhcyBJIGtub3cgd2VsbCwgYXJlIHR5cGljYWxseSBjb25uZWN0ZWQgdG8gdGhlIHBoeXNpY2FsIGV0aGVybmV0IGludGVyZmFjZXMgdmlhIHByb3RvY29scyBsaWtlIE1ESU8sIFNQSSwgb3IgSTJDIG9uIGVtYmVkZGVkIHN5c3RlbXMgb3IgZGVkaWNhdGVkIGhhcmR3YXJlLlxuXG5Ob3csIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCBpZiB0aGVyZSdzIGFueSB2aXJ0dWFsIGVtdWxhdGlvbiBhdmFpbGFibGUgZm9yIGEgc3BlY2lmaWMgY2hpcCwgbGV0J3Mgc2F5IGEgTWljcm9jaGlwIEtTWiBzd2l0Y2gsIGZvciB0ZXN0aW5nIHB1cnBvc2VzLiBJZGVhbGx5LCBzb21ldGhpbmcgbGlrZSBRRU1VIHdvdWxkIGJlIHBlcmZlY3QuIEknbSBjaGVja2luZyBzcGVjaWZpY2FsbHkgZm9yIHNvbWV0aGluZyBsaWtlIGEgS1NaOTg5NyBvciBLU1o5ODk3Uy4gU2FkbHksIHRoZSBxdWljayBhbnN3ZXIgaXMgbm8sIFFFTVUgZG9lc24ndCBzZWVtIHRvIGVtdWxhdGUgYW55IEtTWiBzd2l0Y2hlcy5cblxuQWxyaWdodCwgc28gdGhlIG5leHQgdGhpbmcgSSdtIGNvbnNpZGVyaW5nIGlzIHdoZXRoZXIgSSBjYW4gY3JlYXRlIGEgRFNBIHN3aXRjaCBmb3IgdGVzdGluZyBpbiB1c2VyIHNwYWNlIHdpdGhvdXQgbmVlZGluZyB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuIElzIHRoZXJlIGEgdmlydHVhbCBEU0Egb3IgbW9jayBEU0EgY29tcG9uZW50IHdpdGhpbiB0aGUga2VybmVsIHRoYXQgY291bGQgZmFjaWxpdGF0ZSB0aGlzPyBUbyBnZXQgc3RhcnRlZCwgSSdtIGdvaW5nIHRvIHJ1biBhIGBncmVwYCBmb3IgRFNBIGRyaXZlcnMgdG8gc2VlIHdoYXQncyBvdXQgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MTU2LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA1OjIxOjE4LjU1NzU5MjE2MVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAyNzcxOTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHNhX3JlZ2lzdGVyX3N3aXRjaFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2FcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM9MzMwOD1pbnQgYjUzX3N3aXRjaF9yZWdpc3RlcihzdHJ1Y3QgYjUzX2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMzMyNi1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzozMzI3OlxcdHJldHVybiBkc2FfcmVnaXN0ZXJfc3dpdGNoKGRldi1cXHUwMDNlZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTMzMjgtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9NTc9c3RydWN0IGRzYV9sb29wX3BkYXRhIHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1ODpcXHQvKiBNdXN0IGJlIGZpcnN0LCBzdWNoIHRoYXQgZHNhX3JlZ2lzdGVyX3N3aXRjaCgpIGNhbiBhY2Nlc3MgdGhpc1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU5LVxcdCAqIHdpdGhvdXQgZ29yeSBwb2ludGVyIG1hbmlwdWxhdGlvbnNcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTM1NT1zdGF0aWMgaW50IGRzYV9sb29wX2Rydl9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zODgtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Mzg5OlxcdHJldCA9IGRzYV9yZWdpc3Rlcl9zd2l0Y2goZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5MC1cXHRpZiAoIXJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jPTE5MzM9c3RhdGljIGludCBoZWxsY3JlZWtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jLTIwMjYtXFxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmM6MjAyNzpcXHRyZXQgPSBkc2FfcmVnaXN0ZXJfc3dpdGNoKGhlbGxjcmVlay1cXHUwMDNlZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jLTIwMjgtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jPTc0Nj1zdGF0aWMgaW50IGtzODk5NV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTgyMy1cXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM6ODI0OlxcdGVyciA9IGRzYV9yZWdpc3Rlcl9zd2l0Y2goa3MtXFx1MDAzZWRzKTtcXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtODI1LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM9MTQwND1zdGF0aWMgaW50IGxhbjkzMDNfcmVnaXN0ZXJfc3dpdGNoKHN0cnVjdCBsYW45MzAzICpjaGlwKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTE0MTYtXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjE0MTc6XFx0cmV0dXJuIGRzYV9yZWdpc3Rlcl9zd2l0Y2goY2hpcC1cXHUwMDNlZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xNDE4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jPTE2Nzg9aW50IGdzd2lwX3Byb2JlX2NvbW1vbihzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdiwgdTMyIHZlcnNpb24pXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNzAzLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE3MDQ6XFx0ZXJyID0gZHNhX3JlZ2lzdGVyX3N3aXRjaChwcml2LVxcdTAwM2Vkcyk7XFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTcwNS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9Mzk1Mj1pbnQga3N6X3N3aXRjaF9yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtNDA4NS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzo0MDg2OlxcdHJldCA9IGRzYV9yZWdpc3Rlcl9zd2l0Y2goZGV2LVxcdTAwM2Vkcyk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtNDA4Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9MTU1PW10NzUzMF9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMTctXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjE4OlxcdHJldHVybiBkc2FfcmVnaXN0ZXJfc3dpdGNoKHByaXYtXFx1MDAzZWRzKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMTktfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM9MzA9bXQ3OTg4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy02My1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzo2NDpcXHRyZXR1cm4gZHNhX3JlZ2lzdGVyX3N3aXRjaChwcml2LVxcdTAwM2Vkcyk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNjUtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzYyOC5jPTU2NT1zdGF0aWMgaW50IG10NzYyOF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzYyOC5jLTYwNi1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NjI4LmM6NjA3OlxcdHJldHVybiBkc2FfcmVnaXN0ZXJfc3dpdGNoKGRzKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NjI4LmMtNjA4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTYwNjAuYz0zMDQ9c3RhdGljIGludCBtdjg4ZTYwNjBfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNjA2MC5jLTMzNS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2MDYwLmM6MzM2OlxcdHJldHVybiBkc2FfcmVnaXN0ZXJfc3dpdGNoKGRzKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2MDYwLmMtMzM3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTM5ODA9c3RhdGljIGludCBtdjg4ZTZ4eHhfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzk5NS1cXHQgKiBkZXBlbmRzIG9uIHRoZSBwaHlzaWNhbCBzd2l0Y2ggdG9wb2xvZ3kuIFdlIG5lZWQgdG8gbGV0IERTQSBmaWd1cmVcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozOTk2OlxcdCAqIHRoYXQgb3V0IGFuZCB0aGVyZWZvcmUgd2UgY2Fubm90IHNldCB0aGlzIGF0IGRzYV9yZWdpc3Rlcl9zd2l0Y2goKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5OTctXFx0ICogdGltZS5cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTcyNTE9c3RhdGljIGludCBtdjg4ZTZ4eHhfcmVnaXN0ZXJfc3dpdGNoKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcyNzYtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzI3NzpcXHRyZXR1cm4gZHNhX3JlZ2lzdGVyX3N3aXRjaChkcyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzI3OC19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYz0yMDkxPXN0YXRpYyBpbnQgbXhsODYyeHhfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmMtMjEzMC1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYzoyMTMxOlxcdGVyciA9IGRzYV9yZWdpc3Rlcl9zd2l0Y2goZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jLTIxMzItXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmM9MjQzNT1zdGF0aWMgaW50IG5ldGNfc3dpdGNoX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtMjQ3OC1cXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzoyNDc5OlxcdGVyciA9IGRzYV9yZWdpc3Rlcl9zd2l0Y2goZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTI0ODAtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYz0yMzkwPWludCBmZWxpeF9yZWdpc3Rlcl9zd2l0Y2goc3RydWN0IGRldmljZSAqZGV2LCByZXNvdXJjZV9zaXplX3Qgc3dpdGNoX2Jhc2UsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmMtMjQyOC1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmM6MjQyOTpcXHRlcnIgPSBkc2FfcmVnaXN0ZXJfc3dpdGNoKGRzKTtcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmMtMjQzMC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYz0xMDMxPXN0YXRpYyBpbnQgYXI5MzMxX3N3X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmMtMTA3OC1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jOjEwNzk6XFx0cmV0ID0gZHNhX3JlZ2lzdGVyX3N3aXRjaChkcyk7XFxuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYy0xMDgwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYz0yMDU5PXFjYThrX3N3X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTIxMjAtXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM6MjEyMTpcXHRyZXR1cm4gZHNhX3JlZ2lzdGVyX3N3aXRjaChwcml2LVxcdTAwM2Vkcyk7XFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtMjEyMi19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmM9MjM1PWludCBydGw4M3h4X3JlZ2lzdGVyX3N3aXRjaChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jLTI1MS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmM6MjUyOlxcdHJldCA9IGRzYV9yZWdpc3Rlcl9zd2l0Y2goZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYy0yNTMtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYz0xMjA3PXN0YXRpYyBpbnQgYTVwc3dfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmMtMTI2Mi1cXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jOjEyNjM6XFx0cmV0ID0gZHNhX3JlZ2lzdGVyX3N3aXRjaChkcyk7XFxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYy0xMjY0LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jPTMyMzc9c3RhdGljIGludCBzamExMTA1X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYy0zMzQwLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jOjMzNDE6XFx0cmV0dXJuIGRzYV9yZWdpc3Rlcl9zd2l0Y2gocHJpdi1cXHUwMDNlZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jLTMzNDItfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3ZpdGVzc2UtdnNjNzN4eC1jb3JlLmM9MjMzMz1pbnQgdnNjNzN4eF9wcm9iZShzdHJ1Y3QgdnNjNzN4eCAqdnNjKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3ZpdGVzc2UtdnNjNzN4eC1jb3JlLmMtMjM4NC1cXHR2c2MtXFx1MDAzZWRzLVxcdTAwM2VwaHlsaW5rX21hY19vcHMgPSBcXHUwMDI2dnNjNzN4eF9waHlsaW5rX21hY19vcHM7XFxuZHJpdmVycy9uZXQvZHNhL3ZpdGVzc2UtdnNjNzN4eC1jb3JlLmM6MjM4NTpcXHRyZXQgPSBkc2FfcmVnaXN0ZXJfc3dpdGNoKHZzYy1cXHUwMDNlZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS92aXRlc3NlLXZzYzczeHgtY29yZS5jLTIzODYtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3hyczcwMHgveHJzNzAweC5jPTgxOD1pbnQgeHJzNzAweF9zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IHhyczcwMHggKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveHJzNzAweC94cnM3MDB4LmMtODQxLVxcbmRyaXZlcnMvbmV0L2RzYS94cnM3MDB4L3hyczcwMHguYzo4NDI6XFx0cmV0dXJuIGRzYV9yZWdpc3Rlcl9zd2l0Y2gocHJpdi1cXHUwMDNlZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS94cnM3MDB4L3hyczcwMHguYy04NDMtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTQ5MTQ9c3RhdGljIGludCB5dDkyMXhfbWRpb19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNDk1OC1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NDk1OTpcXHRyZXR1cm4gZHNhX3JlZ2lzdGVyX3N3aXRjaChkcyk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTQ5NjAtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNToyMToxOC42MDc4NzYyMDdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjAzNzE4OTIxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgQW5hbHlzaXM6IE1pY3JvY2hpcCBLU1ogU3dpdGNoIERyaXZlcioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhlIGBkc2FfbG9vcC5jYCBkcml2ZXIgaXMgYSBtb2NrIGRyaXZlciwgZm9yIERTQSB0ZXN0aW5nIG9ubHksIGFuZCBub3QgcmVsZXZhbnQgaGVyZS4gVGhlIHJlYWwgZm9jdXMgaXMgb24gdGhlIE1pY3JvY2hpcCBLU1ogc3dpdGNoIGRyaXZlciBsb2NhdGVkIGluIGBkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2AuIE15IHRhc2sgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgY29kZSBpcyBmdXp6YWJsZSBieSBzeXprYWxsZXIuXG5cbkZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIHRoaXMgZHJpdmVyIHJlbGllcyBvbiBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0J3MgaW5hY2Nlc3NpYmxlIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCwgYmVjYXVzZSB0aGF0IHdvdWxkIG1lYW4gaXQncyBub3QgZnV6emFibGUuIEknbSBmb2N1c2luZyBvbiB0aGUgY3JpdGVyaWEgZm9yICpub3QqIGZ1enppbmcsIHNwZWNpZmljYWxseSBcIlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZS5cIlxuXG5MZXQncyB2ZXJpZnk6XG5cbjEuICBNeSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LlxuMi4gIFRoZSBjb2RlIGluIHF1ZXN0aW9uIGlzIGluIGBkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2Ag4oCTIHNwZWNpZmljYWxseSBga3N6X2NvbW1vbi5jYCwgYGtzel9jb21tb24uaGAsIGFuZCBgaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaGAuXG4zLiAgVGhpcyBjb2RlIGludHJvZHVjZXMgc3VwcG9ydCBmb3IgdGhlIGBLU1o5ODk3U2Agc3dpdGNoIGNoaXAsIGRpc3Rpbmd1aXNoaW5nIGl0IGZyb20gb3RoZXIgS1NaIG1vZGVscyB2aWEgYSByZWdpc3RlciByZWFkLCBgS1NaOTg5N19SRUdfUE9SVDdfWE1JSV9DVFJMXzBgICgweDczMDApLlxuNC4gIENydWNpYWxseSwgdGhpcyBkcml2ZXIgaXMgZGVzaWduZWQgZm9yIE1pY3JvY2hpcCdzICpwaHlzaWNhbCogRXRoZXJuZXQgc3dpdGNoIGNoaXBzLCB3aGljaCBjb25uZWN0IHRocm91Z2ggU1BJIG9yIEkyQy5cbjUuICBJbiB0eXBpY2FsIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIGVudmlyb25tZW50cywgdGhlcmUncyBubyBNaWNyb2NoaXAgS1NaIHN3aXRjaCBoYXJkd2FyZSBlbXVsYXRpb24gYXZhaWxhYmxlLCBhbmQgSSBjYW4ndCBkeW5hbWljYWxseSBwcm9iZSBvciBhdHRhY2ggdGhpcyBoYXJkd2FyZSB3aXRob3V0IHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIG9yIGEgZGV2aWNlIHRyZWUuXG5cblRoZXJlZm9yZSwgdGhpcyBjb25maXJtcyB0aGF0IHRoZSBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSBpbiBteSBmdXp6aW5nIHNldHVwLiBJJ20gY29uZmlkZW50IGFib3V0IHRoYXQuXG5cbkxldCdzIGNyb3NzLWNoZWNrIGV2ZXJ5dGhpbmcgdG8gYmUgY2VydGFpbi5cblxuKiAgIElzIGBXb3J0aEZ1enppbmdgIGZhbHNlPyBZZXMuXG4qICAgVGhlIHJlbGV2YW50IGBFbmFibGVDb25maWdzYCBhcmUgbGlrZWx5IGBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OYCwgYE5FVF9EU0FfTUlDUk9DSElQX0tTWjk0NzdfSTJDYCwgYW5kIGBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfU1BJYCwgb3IgcG9zc2libHkgZW1wdHkuXG4qICAgYEZvY3VzU3ltYm9sc2AgaXMgZW1wdHksIHdoaWNoIGlzbid0IGEgZmFjdG9yIGhlcmUuXG4qICAgTXkgcmVhc29uaW5nIGlzIGNvbmNpc2U6IHRoZSBkcml2ZXIgaXMgZm9yIHBoeXNpY2FsIE1pY3JvY2hpcCBLU1ogc3dpdGNoZXMgKGluY2x1ZGluZyBkZXRlY3RpbmcgdGhlIEtTWjk4OTdTIHZhcmlhbnQpIHRoYXQgaW50ZXJmYWNlIHZpYSBTUEkvSTJDLCB3aGljaCByZXF1aXJlIGhhcmR3YXJlIHRoYXQgZG9lc24ndCBleGlzdCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIHRodXMgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIuXG5cbk9rYXksIEknbSByZWFkeSB0byBwcmVwYXJlIHRoZSB0b29sIGNhbGwgdG8gYHNldC1yZXN1bHRzYC4gVGhlIGNvZGUgaXMgKm5vdCogZnV6emFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMDAyLCJPdXRwdXRUb2tlbnMiOjE2OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNToyMToyNC42NDUwNjg0N1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NTY2MzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OXCIsXG4gICAgXCJORVRfRFNBX01JQ1JPQ0hJUF9LU1o5NDc3X0kyQ1wiLFxuICAgIFwiTkVUX0RTQV9NSUNST0NISVBfS1NaX1NQSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBNaWNyb2NoaXAgS1NaOTg5N1Mgc3dpdGNoIHZhcmlhbnQgdG8gdGhlIE1pY3JvY2hpcCBLU1ogRFNBIHN3aXRjaCBkcml2ZXIgKGtzel9jb21tb24uYykuIFRoaXMgZHJpdmVyIGNvbnRyb2xzIHBoeXNpY2FsIEV0aGVybmV0IHN3aXRjaCBJQ3MgaW50ZXJmYWNlZCB2aWEgU1BJIG9yIEkyQy4gQmVjYXVzZSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSBsYWNrIGVtdWxhdGlvbiBmb3IgdGhlc2UgcGh5c2ljYWwgc3dpdGNoIGNoaXBzLCB0aGUgbW9kaWZpZWQgaGFyZHdhcmUtc3BlY2lmaWMgZGV0ZWN0aW9uIGFuZCBjaGlwIGRhdGEgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT05cIixcbiAgICBcIk5FVF9EU0FfTUlDUk9DSElQX0tTWjk0NzdfSTJDXCIsXG4gICAgXCJORVRfRFNBX01JQ1JPQ0hJUF9LU1pfU1BJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIE1pY3JvY2hpcCBLU1o5ODk3UyBzd2l0Y2ggdmFyaWFudCB0byB0aGUgTWljcm9jaGlwIEtTWiBEU0Egc3dpdGNoIGRyaXZlciAoa3N6X2NvbW1vbi5jKS4gVGhpcyBkcml2ZXIgY29udHJvbHMgcGh5c2ljYWwgRXRoZXJuZXQgc3dpdGNoIElDcyBpbnRlcmZhY2VkIHZpYSBTUEkgb3IgSTJDLiBCZWNhdXNlIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpIGxhY2sgZW11bGF0aW9uIGZvciB0aGVzZSBwaHlzaWNhbCBzd2l0Y2ggY2hpcHMsIHRoZSBtb2RpZmllZCBoYXJkd2FyZS1zcGVjaWZpYyBkZXRlY3Rpb24gYW5kIGNoaXAgZGF0YSBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA1OjIxOjI0LjcyNDY0MzkwNFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzYwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowfpcx5[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-04 05:18:35 +0000 UTC FinishedAt: 2026-09-04 05:21:26 +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+CgkJCTx0ZD4yMDI2LzA5LzA0IDA1OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT04mIzM0OywKICAgICYjMzQ7TkVUX0RTQV9NSUNST0NISVBfS1NaOTQ3N19JMkMmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9NSUNST0NISVBfS1NaX1NQSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7JiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIE1pY3JvY2hpcCBLU1o5ODk3UyBzd2l0Y2ggdmFyaWFudCB0byB0aGUgTWljcm9jaGlwIEtTWiBEU0Egc3dpdGNoIGRyaXZlciAoa3N6X2NvbW1vbi5jKS4gVGhpcyBkcml2ZXIgY29udHJvbHMgcGh5c2ljYWwgRXRoZXJuZXQgc3dpdGNoIElDcyBpbnRlcmZhY2VkIHZpYSBTUEkgb3IgSTJDLiBCZWNhdXNlIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpIGxhY2sgZW11bGF0aW9uIGZvciB0aGVzZSBwaHlzaWNhbCBzd2l0Y2ggY2hpcHMsIHRoZSBtb2RpZmllZCBoYXJkd2FyZS1zcGVjaWZpYyBkZXRlY3Rpb24gYW5kIGNoaXAgZGF0YSBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDU6MTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyMWUzNmEzYmQyODFkYmIwNGMzODlmZTQ4MjczODJjZTFjMzIxZWIzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgNCAwNToxOTo0NyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jXG5pbmRleCAxYTlkNmY4M2EwMjMyLi4wYmM4MDlmNTgyYmVkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jXG5AQCAtMTQ4Niw2ICYjNDM7MTQ4Niw0MSBAQCBjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSBrc3pfc3dpdGNoX2NoaXBzW10gPSB7XG4gXHRcdC5nYml0X2NhcGFibGVcdD0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWV9LFxuIFx0fSxcbiBcbiYjNDM7XHRbS1NaOTg5N1NdID0ge1xuJiM0MztcdFx0LmNoaXBfaWQgPSBLU1o5ODk3U19DSElQX0lELFxuJiM0MztcdFx0LmRldl9uYW1lID0gXCYjMzQ7S1NaOTg5N1NcJiMzNDssXG4mIzQzO1x0XHQubnVtX3ZsYW5zID0gNDA5NixcbiYjNDM7XHRcdC5udW1fYWx1cyA9IDQwOTYsXG4mIzQzO1x0XHQubnVtX3N0YXRpY3MgPSAxNixcbiYjNDM7XHRcdC5jcHVfcG9ydHMgPSAweDdGLFx0LyogY2FuIGJlIGNvbmZpZ3VyZWQgYXMgY3B1IHBvcnQgKi9cbiYjNDM7XHRcdC5wb3J0X2NudCA9IDcsXHRcdC8qIHRvdGFsIHBoeXNpY2FsIHBvcnQgY291bnQgKi9cbiYjNDM7XHRcdC5wb3J0X25pcnFzID0gMixcbiYjNDM7XHRcdC5udW1fdHhfcXVldWVzID0gNCxcbiYjNDM7XHRcdC5udW1faXBtcyA9IDgsXG4mIzQzO1x0XHQub3BzID0gXHUwMDI2a3N6OTQ3N19kZXZfb3BzLFxuJiM0MztcdFx0LnN3aXRjaF9vcHMgPSBcdTAwMjZrc3o5NDc3X3N3aXRjaF9vcHMsXG4mIzQzO1x0XHQucGh5bGlua19tYWNfb3BzID0gXHUwMDI2a3N6OTQ3N19waHlsaW5rX21hY19vcHMsXG4mIzQzO1x0XHQucGh5X2VycmF0YV85NDc3ID0gdHJ1ZSxcbiYjNDM7XHRcdC5taWJfbmFtZXMgPSBrc3o5NDc3X21pYl9uYW1lcyxcbiYjNDM7XHRcdC5taWJfY250ID0gQVJSQVlfU0laRShrc3o5NDc3X21pYl9uYW1lcyksXG4mIzQzO1x0XHQucmVnX21pYl9jbnQgPSBNSUJfQ09VTlRFUl9OVU0sXG4mIzQzO1x0XHQucmVncyA9IGtzejk0NzdfcmVncyxcbiYjNDM7XHRcdC5tYXNrcyA9IGtzejk0NzdfbWFza3MsXG4mIzQzO1x0XHQuc2hpZnRzID0ga3N6OTQ3N19zaGlmdHMsXG4mIzQzO1x0XHQueG1paV9jdHJsMCA9IGtzejk0NzdfeG1paV9jdHJsMCxcbiYjNDM7XHRcdC54bWlpX2N0cmwxID0ga3N6OTQ3N194bWlpX2N0cmwxLFxuJiM0MztcdFx0LnN1cHBvcnRzX21paVx0PSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsXG4mIzQzO1x0XHRcdFx0ICAgZmFsc2UsIHRydWUsIGZhbHNlfSxcbiYjNDM7XHRcdC5zdXBwb3J0c19ybWlpXHQ9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxcbiYjNDM7XHRcdFx0XHQgICBmYWxzZSwgdHJ1ZSwgZmFsc2V9LFxuJiM0MztcdFx0LnN1cHBvcnRzX3JnbWlpID0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLFxuJiM0MztcdFx0XHRcdCAgIGZhbHNlLCB0cnVlLCBmYWxzZX0sXG4mIzQzO1x0XHQuaW50ZXJuYWxfcGh5XHQ9IHt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLFxuJiM0MztcdFx0XHRcdCAgIHRydWUsIGZhbHNlLCBmYWxzZX0sXG4mIzQzO1x0XHQuZ2JpdF9jYXBhYmxlXHQ9IHt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlfSxcbiYjNDM7XHRcdC5zZ21paV9wb3J0ID0gNyxcbiYjNDM7XHR9LFxuJiM0MztcbiBcdFtLU1o5ODkzXSA9IHtcbiBcdFx0LmNoaXBfaWQgPSBLU1o5ODkzX0NISVBfSUQsXG4gXHRcdC5kZXZfbmFtZSA9IFwmIzM0O0tTWjk4OTNcJiMzNDssXG5AQCAtMTg1Miw2ICYjNDM7MTg4NywxMyBAQCBzdGF0aWMgaW50IGtzel9jaGVja19kZXZpY2VfaWQoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbiBcdFx0ZXhwZWN0ZWRfY2hpcF9pZCA9IGV4cGVjdGVkX2NoaXBfZGF0YS1cdTAwM2VjaGlwX2lkO1xuIFx0fVxuIFxuJiM0MztcdC8qIFRoZSBLU1o5ODk3UyBpcyBvbmx5IHRvbGQgYXBhcnQgZnJvbSB0aGUgS1NaOTg5N1IgYXQgcnVuIHRpbWUsIHNvIGFcbiYjNDM7XHQgKiBkZXZpY2UgdHJlZSBuYW1pbmcgdGhlIEtTWjk4OTcgbWF0Y2hlcyBpdCBhcyB3ZWxsLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChleHBlY3RlZF9jaGlwX2lkID09IEtTWjk4OTdfQ0hJUF9JRCBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgZGV2LVx1MDAzZWNoaXBfaWQgPT0gS1NaOTg5N1NfQ0hJUF9JRClcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiBcdGlmIChleHBlY3RlZF9jaGlwX2lkICE9IGRldi1cdTAwM2VjaGlwX2lkKSB7XG4gXHRcdGRldl9lcnIoZGV2LVx1MDAzZWRldixcbiBcdFx0XHRcJiMzNDtEZXZpY2UgdHJlZSBzcGVjaWZpZXMgY2hpcCAlcyBidXQgZm91bmQgJXMsIHBsZWFzZSBmaXggaXQhXFxuXCYjMzQ7LFxuQEAgLTI5NjYsNyAmIzQzOzMwMDgsNiBAQCBzdGF0aWMgaW50IGtzel9zd2l0Y2hfZGV0ZWN0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG4gXHRcdHN3aXRjaCAoaWQzMikge1xuIFx0XHRjYXNlIEtTWjk0NzdfQ0hJUF9JRDpcbiBcdFx0Y2FzZSBLU1o5ODk2X0NISVBfSUQ6XG4tXHRcdGNhc2UgS1NaOTg5N19DSElQX0lEOlxuIFx0XHRjYXNlIEtTWjk1NjdfQ0hJUF9JRDpcbiBcdFx0Y2FzZSBLU1o4NTY3X0NISVBfSUQ6XG4gXHRcdGNhc2UgTEFOOTM3MF9DSElQX0lEOlxuQEAgLTI5NzksNiAmIzQzOzMwMjAsMjMgQEAgc3RhdGljIGludCBrc3pfc3dpdGNoX2RldGVjdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuIFx0XHRcdGlmIChkZXYtXHUwMDNlY2hpcF9pZCAhPSBMQU45NjQ2X0NISVBfSUQpXG4gXHRcdFx0XHRkZXYtXHUwMDNlY2hpcF9pZCA9IGlkMzI7XG4gXHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRjYXNlIEtTWjk4OTdfQ0hJUF9JRDpcbiYjNDM7XHRcdFx0LyogT25seSB0aGUgS1NaOTg5N1MgaGFzIGFuIFNHTUlJIHBvcnQgNzsgdGhlIEtTWjk4OTdSXG4mIzQzO1x0XHRcdCAqIGhhcyBhIHNlY29uZCBSR01JSSBwb3J0IGluc3RlYWQuIFNlZSB0aGUgS1NaOTg5N1NcbiYjNDM7XHRcdFx0ICogZGF0YSBzaGVldCBEUzAwMDAyMzk0QyBzZWN0aW9uIDUuMi40LjEgYW5kIHRoZVxuJiM0MztcdFx0XHQgKiBLU1o5ODk3UiBkYXRhIHNoZWV0IERTMDAwMDIzMzBEIHNlY3Rpb24gNS4yLjMuMS5cbiYjNDM7XHRcdFx0ICovXG4mIzQzO1x0XHRcdHJldCA9IGtzel9yZWFkOChkZXYsIEtTWjk4OTdfUkVHX1BPUlQ3X1hNSUlfQ1RSTF8wLFxuJiM0MztcdFx0XHRcdFx0XHUwMDI2aWQ0KTtcbiYjNDM7XHRcdFx0aWYgKHJldClcbiYjNDM7XHRcdFx0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHRcdFx0aWYgKGlkNCBcdTAwMjYgS1NaOTg5N19QT1JUN19TR01JSV9TRUwpXG4mIzQzO1x0XHRcdFx0ZGV2LVx1MDAzZWNoaXBfaWQgPSBLU1o5ODk3U19DSElQX0lEO1xuJiM0MztcdFx0XHRlbHNlXG4mIzQzO1x0XHRcdFx0ZGV2LVx1MDAzZWNoaXBfaWQgPSBLU1o5ODk3X0NISVBfSUQ7XG4mIzQzO1xuJiM0MztcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBLU1o5ODkzX0NISVBfSUQ6XG4gXHRcdFx0cmV0ID0ga3N6X3JlYWQ4KGRldiwgUkVHX0NISVBfSUQ0LFxuIFx0XHRcdFx0XHRcdTAwMjZpZDQpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oIGIvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmhcbmluZGV4IGNiZTk4NDk0NTc4YzMuLjBjZmYzM2RmMDZhNGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmhcbkBAIC0yODQsNiAmIzQzOzI4NCw3IEBAIGVudW0ga3N6X21vZGVsIHtcbiBcdEtTWjk0NzcsXG4gXHRLU1o5ODk2LFxuIFx0S1NaOTg5NyxcbiYjNDM7XHRLU1o5ODk3UyxcbiBcdEtTWjk4OTMsXG4gXHRLU1o5NTYzLFxuIFx0S1NaOTU2NyxcbkBAIC04NzQsNiAmIzQzOzg3NSwxMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wga3N6X2lzX3NnbWlpX3BvcnQoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQpXG4gI2RlZmluZSBTS1VfSURfS1NaODU2M1x0XHRcdDB4M2NcbiAjZGVmaW5lIFNLVV9JRF9LU1o5NTYzXHRcdFx0MHgxY1xuIFxuJiM0MzsvKiBLU1o5ODk3IHNwZWNpZmljIHJlZ2lzdGVyOiBwb3J0IDcgWE1JSSBjb250cm9sIDAgKi9cbiYjNDM7I2RlZmluZSBLU1o5ODk3X1JFR19QT1JUN19YTUlJX0NUUkxfMFx0MHg3MzAwXG4mIzQzOyNkZWZpbmUgS1NaOTg5N19QT1JUN19TR01JSV9TRUxcdFx0QklUKDcpXG4mIzQzO1xuIC8qIERyaXZlciBzZXQgc3dpdGNoIGJyb2FkY2FzdCBzdG9ybSBwcm90ZWN0aW9uIGF0IDEwJSByYXRlLiAqL1xuICNkZWZpbmUgQlJPQURDQVNUX1NUT1JNX1BST1RfUkFURVx0MTBcbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbWljcm9jaGlwLWtzei5oIGIvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaFxuaW5kZXggMDI4NzgxYWQ0MDU5My4uZmU4ZGYxNzc0Mjg5YyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9taWNyb2NoaXAta3N6LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9taWNyb2NoaXAta3N6LmhcbkBAIC0zNCw2ICYjNDM7MzQsNyBAQCBlbnVtIGtzel9jaGlwX2lkIHtcbiBcdEtTWjk0NzdfQ0hJUF9JRCA9IDB4MDA5NDc3MDAsXG4gXHRLU1o5ODk2X0NISVBfSUQgPSAweDAwOTg5NjAwLFxuIFx0S1NaOTg5N19DSElQX0lEID0gMHgwMDk4OTcwMCxcbiYjNDM7XHRLU1o5ODk3U19DSElQX0lEID0gMHgwMDk4OTcwMSxcbiBcdEtTWjk4OTNfQ0hJUF9JRCA9IDB4MDA5ODkzMDAsXG4gXHRLU1o5NTYzX0NISVBfSUQgPSAweDAwOTU2MzAwLFxuIFx0S1NaODU2N19DSElQX0lEID0gMHgwMDg1NjcwMCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwNToxOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OJiMzNDssCiAgICAmIzM0O05FVF9EU0FfTUlDUk9DSElQX0tTWjk0NzdfSTJDJiMzNDssCiAgICAmIzM0O05FVF9EU0FfTUlDUk9DSElQX0tTWl9TUEkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgTWljcm9jaGlwIEtTWjk4OTdTIHN3aXRjaCB2YXJpYW50IHRvIHRoZSBNaWNyb2NoaXAgS1NaIERTQSBzd2l0Y2ggZHJpdmVyIChrc3pfY29tbW9uLmMpLiBUaGlzIGRyaXZlciBjb250cm9scyBwaHlzaWNhbCBFdGhlcm5ldCBzd2l0Y2ggSUNzIGludGVyZmFjZWQgdmlhIFNQSSBvciBJMkMuIEJlY2F1c2Ugc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgbGFjayBlbXVsYXRpb24gZm9yIHRoZXNlIHBoeXNpY2FsIHN3aXRjaCBjaGlwcywgdGhlIG1vZGlmaWVkIGhhcmR3YXJlLXNwZWNpZmljIGRldGVjdGlvbiBhbmQgY2hpcCBkYXRhIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDIxZTM2YTNiZDI4MWRiYjA0YzM4OWZlNDgyNzM4MmNlMWMzMjFlYjMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIFNlcCA0IDA1OjE5OjQ3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYwppbmRleCAxYTlkNmY4M2EwMjMyLi4wYmM4MDlmNTgyYmVkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYwpAQCAtMTQ4Niw2ICYjNDM7MTQ4Niw0MSBAQCBjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSBrc3pfc3dpdGNoX2NoaXBzW10gPSB7CiAJCS5nYml0X2NhcGFibGUJPSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZX0sCiAJfSwKIAomIzQzOwlbS1NaOTg5N1NdID0gewomIzQzOwkJLmNoaXBfaWQgPSBLU1o5ODk3U19DSElQX0lELAomIzQzOwkJLmRldl9uYW1lID0gJiMzNDtLU1o5ODk3UyYjMzQ7LAomIzQzOwkJLm51bV92bGFucyA9IDQwOTYsCiYjNDM7CQkubnVtX2FsdXMgPSA0MDk2LAomIzQzOwkJLm51bV9zdGF0aWNzID0gMTYsCiYjNDM7CQkuY3B1X3BvcnRzID0gMHg3RiwJLyogY2FuIGJlIGNvbmZpZ3VyZWQgYXMgY3B1IHBvcnQgKi8KJiM0MzsJCS5wb3J0X2NudCA9IDcsCQkvKiB0b3RhbCBwaHlzaWNhbCBwb3J0IGNvdW50ICovCiYjNDM7CQkucG9ydF9uaXJxcyA9IDIsCiYjNDM7CQkubnVtX3R4X3F1ZXVlcyA9IDQsCiYjNDM7CQkubnVtX2lwbXMgPSA4LAomIzQzOwkJLm9wcyA9ICZhbXA7a3N6OTQ3N19kZXZfb3BzLAomIzQzOwkJLnN3aXRjaF9vcHMgPSAmYW1wO2tzejk0Nzdfc3dpdGNoX29wcywKJiM0MzsJCS5waHlsaW5rX21hY19vcHMgPSAmYW1wO2tzejk0NzdfcGh5bGlua19tYWNfb3BzLAomIzQzOwkJLnBoeV9lcnJhdGFfOTQ3NyA9IHRydWUsCiYjNDM7CQkubWliX25hbWVzID0ga3N6OTQ3N19taWJfbmFtZXMsCiYjNDM7CQkubWliX2NudCA9IEFSUkFZX1NJWkUoa3N6OTQ3N19taWJfbmFtZXMpLAomIzQzOwkJLnJlZ19taWJfY250ID0gTUlCX0NPVU5URVJfTlVNLAomIzQzOwkJLnJlZ3MgPSBrc3o5NDc3X3JlZ3MsCiYjNDM7CQkubWFza3MgPSBrc3o5NDc3X21hc2tzLAomIzQzOwkJLnNoaWZ0cyA9IGtzejk0Nzdfc2hpZnRzLAomIzQzOwkJLnhtaWlfY3RybDAgPSBrc3o5NDc3X3htaWlfY3RybDAsCiYjNDM7CQkueG1paV9jdHJsMSA9IGtzejk0NzdfeG1paV9jdHJsMSwKJiM0MzsJCS5zdXBwb3J0c19taWkJPSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCiYjNDM7CQkJCSAgIGZhbHNlLCB0cnVlLCBmYWxzZX0sCiYjNDM7CQkuc3VwcG9ydHNfcm1paQk9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKJiM0MzsJCQkJICAgZmFsc2UsIHRydWUsIGZhbHNlfSwKJiM0MzsJCS5zdXBwb3J0c19yZ21paSA9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKJiM0MzsJCQkJICAgZmFsc2UsIHRydWUsIGZhbHNlfSwKJiM0MzsJCS5pbnRlcm5hbF9waHkJPSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwKJiM0MzsJCQkJICAgdHJ1ZSwgZmFsc2UsIGZhbHNlfSwKJiM0MzsJCS5nYml0X2NhcGFibGUJPSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZX0sCiYjNDM7CQkuc2dtaWlfcG9ydCA9IDcsCiYjNDM7CX0sCiYjNDM7CiAJW0tTWjk4OTNdID0gewogCQkuY2hpcF9pZCA9IEtTWjk4OTNfQ0hJUF9JRCwKIAkJLmRldl9uYW1lID0gJiMzNDtLU1o5ODkzJiMzNDssCkBAIC0xODUyLDYgJiM0MzsxODg3LDEzIEBAIHN0YXRpYyBpbnQga3N6X2NoZWNrX2RldmljZV9pZChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KQogCQlleHBlY3RlZF9jaGlwX2lkID0gZXhwZWN0ZWRfY2hpcF9kYXRhLSZndDtjaGlwX2lkOwogCX0KIAomIzQzOwkvKiBUaGUgS1NaOTg5N1MgaXMgb25seSB0b2xkIGFwYXJ0IGZyb20gdGhlIEtTWjk4OTdSIGF0IHJ1biB0aW1lLCBzbyBhCiYjNDM7CSAqIGRldmljZSB0cmVlIG5hbWluZyB0aGUgS1NaOTg5NyBtYXRjaGVzIGl0IGFzIHdlbGwuCiYjNDM7CSAqLwomIzQzOwlpZiAoZXhwZWN0ZWRfY2hpcF9pZCA9PSBLU1o5ODk3X0NISVBfSUQgJmFtcDsmYW1wOwomIzQzOwkgICAgZGV2LSZndDtjaGlwX2lkID09IEtTWjk4OTdTX0NISVBfSUQpCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKIAlpZiAoZXhwZWN0ZWRfY2hpcF9pZCAhPSBkZXYtJmd0O2NoaXBfaWQpIHsKIAkJZGV2X2VycihkZXYtJmd0O2RldiwKIAkJCSYjMzQ7RGV2aWNlIHRyZWUgc3BlY2lmaWVzIGNoaXAgJXMgYnV0IGZvdW5kICVzLCBwbGVhc2UgZml4IGl0IVxuJiMzNDssCkBAIC0yOTY2LDcgJiM0MzszMDA4LDYgQEAgc3RhdGljIGludCBrc3pfc3dpdGNoX2RldGVjdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KQogCQlzd2l0Y2ggKGlkMzIpIHsKIAkJY2FzZSBLU1o5NDc3X0NISVBfSUQ6CiAJCWNhc2UgS1NaOTg5Nl9DSElQX0lEOgotCQljYXNlIEtTWjk4OTdfQ0hJUF9JRDoKIAkJY2FzZSBLU1o5NTY3X0NISVBfSUQ6CiAJCWNhc2UgS1NaODU2N19DSElQX0lEOgogCQljYXNlIExBTjkzNzBfQ0hJUF9JRDoKQEAgLTI5NzksNiAmIzQzOzMwMjAsMjMgQEAgc3RhdGljIGludCBrc3pfc3dpdGNoX2RldGVjdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KQogCQkJaWYgKGRldi0mZ3Q7Y2hpcF9pZCAhPSBMQU45NjQ2X0NISVBfSUQpCiAJCQkJZGV2LSZndDtjaGlwX2lkID0gaWQzMjsKIAkJCWJyZWFrOwomIzQzOwkJY2FzZSBLU1o5ODk3X0NISVBfSUQ6CiYjNDM7CQkJLyogT25seSB0aGUgS1NaOTg5N1MgaGFzIGFuIFNHTUlJIHBvcnQgNzsgdGhlIEtTWjk4OTdSCiYjNDM7CQkJICogaGFzIGEgc2Vjb25kIFJHTUlJIHBvcnQgaW5zdGVhZC4gU2VlIHRoZSBLU1o5ODk3UwomIzQzOwkJCSAqIGRhdGEgc2hlZXQgRFMwMDAwMjM5NEMgc2VjdGlvbiA1LjIuNC4xIGFuZCB0aGUKJiM0MzsJCQkgKiBLU1o5ODk3UiBkYXRhIHNoZWV0IERTMDAwMDIzMzBEIHNlY3Rpb24gNS4yLjMuMS4KJiM0MzsJCQkgKi8KJiM0MzsJCQlyZXQgPSBrc3pfcmVhZDgoZGV2LCBLU1o5ODk3X1JFR19QT1JUN19YTUlJX0NUUkxfMCwKJiM0MzsJCQkJCSZhbXA7aWQ0KTsKJiM0MzsJCQlpZiAocmV0KQomIzQzOwkJCQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwkJCWlmIChpZDQgJmFtcDsgS1NaOTg5N19QT1JUN19TR01JSV9TRUwpCiYjNDM7CQkJCWRldi0mZ3Q7Y2hpcF9pZCA9IEtTWjk4OTdTX0NISVBfSUQ7CiYjNDM7CQkJZWxzZQomIzQzOwkJCQlkZXYtJmd0O2NoaXBfaWQgPSBLU1o5ODk3X0NISVBfSUQ7CiYjNDM7CiYjNDM7CQkJYnJlYWs7CiAJCWNhc2UgS1NaOTg5M19DSElQX0lEOgogCQkJcmV0ID0ga3N6X3JlYWQ4KGRldiwgUkVHX0NISVBfSUQ0LAogCQkJCQkmYW1wO2lkNCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaCBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oCmluZGV4IGNiZTk4NDk0NTc4YzMuLjBjZmYzM2RmMDZhNGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oCkBAIC0yODQsNiAmIzQzOzI4NCw3IEBAIGVudW0ga3N6X21vZGVsIHsKIAlLU1o5NDc3LAogCUtTWjk4OTYsCiAJS1NaOTg5NywKJiM0MzsJS1NaOTg5N1MsCiAJS1NaOTg5MywKIAlLU1o5NTYzLAogCUtTWjk1NjcsCkBAIC04NzQsNiAmIzQzOzg3NSwxMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wga3N6X2lzX3NnbWlpX3BvcnQoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQpCiAjZGVmaW5lIFNLVV9JRF9LU1o4NTYzCQkJMHgzYwogI2RlZmluZSBTS1VfSURfS1NaOTU2MwkJCTB4MWMKIAomIzQzOy8qIEtTWjk4OTcgc3BlY2lmaWMgcmVnaXN0ZXI6IHBvcnQgNyBYTUlJIGNvbnRyb2wgMCAqLwomIzQzOyNkZWZpbmUgS1NaOTg5N19SRUdfUE9SVDdfWE1JSV9DVFJMXzAJMHg3MzAwCiYjNDM7I2RlZmluZSBLU1o5ODk3X1BPUlQ3X1NHTUlJX1NFTAkJQklUKDcpCiYjNDM7CiAvKiBEcml2ZXIgc2V0IHN3aXRjaCBicm9hZGNhc3Qgc3Rvcm0gcHJvdGVjdGlvbiBhdCAxMCUgcmF0ZS4gKi8KICNkZWZpbmUgQlJPQURDQVNUX1NUT1JNX1BST1RfUkFURQkxMAogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbWljcm9jaGlwLWtzei5oIGIvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaAppbmRleCAwMjg3ODFhZDQwNTkzLi5mZThkZjE3NzQyODljIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbWljcm9jaGlwLWtzei5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9taWNyb2NoaXAta3N6LmgKQEAgLTM0LDYgJiM0MzszNCw3IEBAIGVudW0ga3N6X2NoaXBfaWQgewogCUtTWjk0NzdfQ0hJUF9JRCA9IDB4MDA5NDc3MDAsCiAJS1NaOTg5Nl9DSElQX0lEID0gMHgwMDk4OTYwMCwKIAlLU1o5ODk3X0NISVBfSUQgPSAweDAwOTg5NzAwLAomIzQzOwlLU1o5ODk3U19DSElQX0lEID0gMHgwMDk4OTcwMSwKIAlLU1o5ODkzX0NISVBfSUQgPSAweDAwOTg5MzAwLAogCUtTWjk1NjNfQ0hJUF9JRCA9IDB4MDA5NTYzMDAsCiAJS1NaODU2N19DSElQX0lEID0gMHgwMDg1NjcwMCwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDU6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg4NgoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDE4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBc3Nlc3NpbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIFRoaXMgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGhpbmdlcyBvbiB3aGV0aGVyIHRoaXMgcGF0Y2ggd2FycmFudHMgdGhlIGZ1bGwgc3l6a2FsbGVyIHRyZWF0bWVudC4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGUgY2hhbmdlLiBJdCBsb29rcyBsaWtlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBwYXRjaCB0aGF0IGFkZHMgc3VwcG9ydCBmb3IgdGhlIEtTWjk4OTdTIHN3aXRjaCBjaGlwIHRvIHRoZSBNaWNyb2NoaXAgS1NaIERTQSBzd2l0Y2ggZHJpdmVyLiBJdCB0b3VjaGVzIGBrc3pfY29tbW9uLmNgLCBga3N6X2NvbW1vbi5oYCwgYW5kIGEgaGVhZGVyIGZpbGUuIE5vIHN1cnByaXNlcyB0aGVyZS4KCk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IGhvdyBpcyB0aGlzIGRyaXZlciBpbnN0YW50aWF0ZWQ/IElzIHRoaXMgYW4gU1BJLCBJMkMsIE1NSU8sIG9yIGEgRFNBIGRyaXZlcj8gQ2FuIEkgcmVsaWFibHkgcmVwcm9kdWNlIHRoaXMgaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50IGxpa2UgUUVNVSwgb3IgYXJlIHdlIGxvb2tpbmcgYXQgYSBoYXJkd2FyZSBkZXBlbmRlbmN5PyBUaGF0JiMzOTtzIGdvaW5nIHRvIGJlIHRoZSBkZWNpZGluZyBmYWN0b3IgaW4gd2hldGhlciB0aGlzIGlzIHByYWN0aWNhbGx5IGZ1enphYmxlLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9gIGZpbGVzIHRvIHVuZGVyc3RhbmQgdGhlIGRyaXZlciYjMzk7cyBhdHRhY2htZW50IG1lY2hhbmlzbS4gVGhpcyB3aWxsIHRlbGwgbWUgaWYgSSBjYW4gZ2V0IGF0IHRoaXMgZnVuY3Rpb25hbGl0eSB3aXRob3V0IG5lZWRpbmcgdG8gc291cmNlIGJlc3Bva2UgaGFyZHdhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDU6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3NwaV9kcml2ZXJ8bW9kdWxlX2kyY19kcml2ZXJ8a3N6XyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDU2OTQgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfTkVUX0RTQV9NSUNST0NISVBfS1NaX0NPTU1PTilcdCYjNDM7PSBrc3pfc3dpdGNoLm9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGU6Mzprc3pfc3dpdGNoLW9ianMgOj0ga3N6X2NvbW1vbi5vIGtzel9kY2Iub1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZTo0Omtzel9zd2l0Y2gtb2JqcyAmIzQzOz0ga3N6OTQ3Ny5vIGtzejk0NzdfYWNsLm8ga3N6OTQ3N190Y19mbG93ZXIub1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZTo1Omtzel9zd2l0Y2gtb2JqcyAmIzQzOz0ga3N6OC5vXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlOjY6a3N6X3N3aXRjaC1vYmpzICYjNDM7PSBsYW45Mzd4X21haW4ub1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZS03LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZT04PWlmZGVmIENPTkZJR19ORVRfRFNBX01JQ1JPQ0hJUF9LU1pfUFRQXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlOjk6a3N6X3N3aXRjaC1vYmpzICYjNDM7PSBrc3pfcHRwLm9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGUtMTAtZW5kaWZcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlPTEyPW9iai0kKENPTkZJR19ORVRfRFNBX01JQ1JPQ0hJUF9LU1o5NDc3X0kyQylcdCYjNDM7PSBrc3o5NDc3X2kyYy5vXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlOjEzOm9iai0kKENPTkZJR19ORVRfRFNBX01JQ1JPQ0hJUF9LU1pfU1BJKVx0XHQmIzQzOz0ga3N6X3NwaS5vXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlLTE0LW9iai0kKENPTkZJR19ORVRfRFNBX01JQ1JPQ0hJUF9LU1o4ODYzX1NNSSlcdCYjNDM7PSBrc3o4ODYzX3NtaS5vXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTgtI2luY2x1ZGUgXHUwMDNjbGludXgvZGVsYXkuaFx1MDAzZVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTk6I2luY2x1ZGUgXHUwMDNjbGludXgvZHNhL2tzel9jb21tb24uaFx1MDAzZVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjAtI2luY2x1ZGUgXHUwMDNjbGludXgvZXhwb3J0LmhcdTAwM2Vcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zMy1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjM0OiNpbmNsdWRlIFwmIzM0O2tzel9jb21tb24uaFwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MzU6I2luY2x1ZGUgXCYjMzQ7a3N6X2RjYi5oXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zNi0jaW5jbHVkZSBcJiMzNDtrc3o4X3JlZy5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDktICovXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1MDpzdGF0aWMgY29uc3Qgc3RydWN0IGtzel9kcml2ZV9zdHJlbmd0aCBrc3o4OHgzX2RyaXZlX3N0cmVuZ3Roc1tdID0ge1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTEtXHR7IDAsICA4MDAwIH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9NTU9c3RydWN0IGtzejg4eHhfc3RhdHNfcmF3IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05MS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjkyOnN0YXRpYyB2b2lkIGtzel9jZmcoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTMyIGFkZHIsIHU4IGJpdHMsIGJvb2wgc2V0KVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTMte1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6OTQ6XHRrc3pfcm13OChkZXYsIGFkZHIsIGJpdHMsIHNldCA/IGJpdHMgOiAwKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTk1LX1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTk2LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6OTc6c3RhdGljIHZvaWQga3N6X3BvcnRfY2ZnKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0LCBpbnQgb2Zmc2V0LCB1OCBiaXRzLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTgtXHRcdFx0IGJvb2wgc2V0KVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTkte1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTAwOlx0a3N6X3JtdzgoZGV2LCBkZXYtXHUwMDNlZGV2X29wcy1cdTAwM2VnZXRfcG9ydF9hZGRyKHBvcnQsIG9mZnNldCksIGJpdHMsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDEtXHRcdCBzZXQgPyBiaXRzIDogMCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTEyLSAqIFBNRSBzd2l0Y2ggZnVuY3Rpb25hbGl0aWVzLiBCb3RoIDgtYml0IHJlZ2lzdGVycyAxMTAgYW5kIDExMSBhcmVcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjExMzogKiB3cml0dGVuIGF0IG9uY2Ugd2l0aCBrc3pfd3JpdGUxNiwgdXNpbmcgdGhlIHNlcmlhbCBtdWx0aXBsZSB3cml0ZVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTE0LSAqIGZ1bmN0aW9uYWxpdHkuXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTE3LSAqL1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTE4OnN0YXRpYyBpbnQga3N6OF9pbmRfd3JpdGU4KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHU4IHRhYmxlLCB1MTYgYWRkciwgdTggZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExOS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTI4LVx0Y3RybF9hZGRyID0gSU5EX0FDQ19UQUJMRSh0YWJsZSkgfCBhZGRyO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTI5Olx0cmV0ID0ga3N6X3dyaXRlMTYoZGV2LCByZWdzW1JFR19JTkRfQ1RSTF8wXSwgY3RybF9hZGRyKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzMC1cdGlmICghcmV0KVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTMxOlx0XHRyZXQgPSBrc3pfd3JpdGU4KGRldiwgcmVnc1tSRUdfSU5EX0JZVEVdLCBkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzMi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNDYtICogUE1FIHN3aXRjaCBmdW5jdGlvbmFsaXRpZXMuIEJvdGggOC1iaXQgcmVnaXN0ZXJzIDExMCBhbmQgMTExIGFyZVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTQ3OiAqIHdyaXR0ZW4gYXQgb25jZSB3aXRoIGtzel93cml0ZTE2LCB1c2luZyB0aGUgc2VyaWFsIG11bHRpcGxlIHdyaXRlXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNDgtICogZnVuY3Rpb25hbGl0eS5cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNTEtICovXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNTI6c3RhdGljIGludCBrc3o4X2luZF9yZWFkOChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1OCB0YWJsZSwgdTE2IGFkZHIsIHU4ICp2YWwpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNTMte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE2Mi1cdGN0cmxfYWRkciA9IElORF9BQ0NfVEFCTEUodGFibGUgfCBUQUJMRV9SRUFEKSB8IGFkZHI7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNjM6XHRyZXQgPSBrc3pfd3JpdGUxNihkZXYsIHJlZ3NbUkVHX0lORF9DVFJMXzBdLCBjdHJsX2FkZHIpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTY0LVx0aWYgKCFyZXQpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNjU6XHRcdHJldCA9IGtzel9yZWFkOChkZXYsIHJlZ3NbUkVHX0lORF9CWVRFXSwgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE2Ni1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNzEtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNzI6c3RhdGljIGludCBrc3o4X3BtZV93cml0ZTgoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTMyIHJlZywgdTggdmFsdWUpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNzMte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE3Ni1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjE3NzpzdGF0aWMgaW50IGtzejhfcG1lX3ByZWFkOChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydCwgaW50IG9mZnNldCwgdTggKmRhdGEpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNzgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE4My1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjE4NDpzdGF0aWMgaW50IGtzejhfcG1lX3B3cml0ZTgoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIGludCBvZmZzZXQsIHU4IGRhdGEpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xODUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jPTE5MT1zdGF0aWMgdm9pZCBrc3o4NDYzX2lycV9tYXNrKHN0cnVjdCBpcnFfZGF0YSAqZClcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE5Mi17XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxOTM6XHRzdHJ1Y3Qga3N6X2lycSAqa2lycSA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTk0LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jPTE5OD1zdGF0aWMgdm9pZCBrc3o4NDYzX2lycV91bm1hc2soc3RydWN0IGlycV9kYXRhICpkKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTk5LXtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjIwMDpcdHN0cnVjdCBrc3pfaXJxICpraXJxID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yMDEtXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MjA1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2NoaXAga3N6ODQ2M19pcnFfY2hpcCA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yMDgtXHQuaXJxX3VubWFza1x0XHQ9IGtzejg0NjNfaXJxX3VubWFzayxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjIwOTpcdC5pcnFfYnVzX2xvY2tcdFx0PSBrc3pfaXJxX2J1c19sb2NrLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjEwOlx0LmlycV9idXNfc3luY191bmxvY2tcdD0ga3N6X2lycV9idXNfc3luY191bmxvY2ssXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yMTEtfTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYz0yMjM9c3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfZG9tYWluX29wcyBrc3o4NDYzX2lycV9kb21haW5fb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTIyNy1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjIyODpzdGF0aWMgaW50IGtzejg0NjNfZ2lycV9zZXR1cChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjI5LXtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjIzMDpcdHN0cnVjdCBrc3pfaXJxICpnaXJxID0gXHUwMDI2ZGV2LVx1MDAzZWdpcnE7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yMzEtXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjM5LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjQwOlx0cmV0dXJuIGtzel9pcnFfY29tbW9uX3NldHVwKGRldiwgZ2lycSwgXHUwMDI2a3N6ODQ2M19pcnFfZG9tYWluX29wcyk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNDEtfVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjQyLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjQzOnN0YXRpYyBpbnQga3N6ODQ2M19yZXNldF9zd2l0Y2goc3RydWN0IGtzel9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI0NC17XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNDU6XHRrc3pfY2ZnKGRldiwgS1NaODQ2M19SRUdfU1dfUkVTRVQsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNDYtXHRcdEtTWjg0NjNfR0xPQkFMX1NPRlRXQVJFX1JFU0VUIHwgS1NaODQ2M19QVFBfU09GVFdBUkVfUkVTRVQsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNDctXHRcdHRydWUpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjQ4Olx0a3N6X2NmZyhkZXYsIEtTWjg0NjNfUkVHX1NXX1JFU0VULFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjQ5LVx0XHRLU1o4NDYzX0dMT0JBTF9TT0ZUV0FSRV9SRVNFVCB8IEtTWjg0NjNfUFRQX1NPRlRXQVJFX1JFU0VULFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI1My1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI1NDpzdGF0aWMgaW50IGtzejhfcmVzZXRfc3dpdGNoKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNTUte1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjU2Olx0aWYgKGtzel9pc19rc3o4OHgzKGRldikpIHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI1Ny1cdFx0LyogcmVzZXQgc3dpdGNoICovXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNTg6XHRcdGtzel9jZmcoZGV2LCBLU1o4ODYzX1JFR19TV19SRVNFVCxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI1OS1cdFx0XHRLU1o4ODYzX0dMT0JBTF9TT0ZUV0FSRV9SRVNFVCB8IEtTWjg4NjNfUENTX1JFU0VULCB0cnVlKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI2MDpcdFx0a3N6X2NmZyhkZXYsIEtTWjg4NjNfUkVHX1NXX1JFU0VULFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjYxLVx0XHRcdEtTWjg4NjNfR0xPQkFMX1NPRlRXQVJFX1JFU0VUIHwgS1NaODg2M19QQ1NfUkVTRVQsIGZhbHNlKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNjMtXHRcdC8qIHJlc2V0IHN3aXRjaCAqL1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjY0Olx0XHRrc3pfd3JpdGU4KGRldiwgUkVHX1BPV0VSX01BTkFHRU1FTlRfMSxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI2NS1cdFx0XHQgICBTV19TT0ZUV0FSRV9QT1dFUl9ET1dOIFx1MDAzY1x1MDAzYyBTV19QT1dFUl9NQU5BR0VNRU5UX01PREVfUyk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNjY6XHRcdGtzel93cml0ZTgoZGV2LCBSRUdfUE9XRVJfTUFOQUdFTUVOVF8xLCAwKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI2Ny1cdH1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYz0yNzI9c3RhdGljIGludCBrc3o4OHh4X2NoYW5nZV9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IG10dSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI3My17XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNzQ6XHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2ID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI3NS1cdGludCBmcmFtZV9zaXplO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI4Ny1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI4ODpcdHJldHVybiBrc3pfcm13OChkZXYsIFJFR19TV19DVFJMXzIsIEtTWjg4NjNfTEVHQUxfUEFDS0VUX0VOQUJMRSB8XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yODktXHRcdFx0S1NaODg2M19IVUdFX1BBQ0tFVF9FTkFCTEUsIGN0cmwyKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYz0yOTI9c3RhdGljIGludCBrc3o4N3h4X2NoYW5nZV9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IG10dSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI5My17XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyOTQ6XHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2ID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI5NS1cdHU4IGN0cmwxID0gMCwgY3RybDIgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTMwOC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjMwOTpcdHJldCA9IGtzel9ybXc4KGRldiwgUkVHX1NXX0NUUkxfMSwgU1dfSFVHRV9QQUNLRVQsIGN0cmwxKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTMxMC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzEyLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MzEzOlx0cmV0dXJuIGtzel9ybXc4KGRldiwgUkVHX1NXX0NUUkxfMiwgU1dfTEVHQUxfUEFDS0VUX0RJU0FCTEUsIGN0cmwyKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTMxNC19XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MzIxPXN0YXRpYyBpbnQga3N6ODh4eF9tYXhfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzI1LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MzI2OnN0YXRpYyBpbnQga3N6OF9wb3J0X3F1ZXVlX3NwbGl0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0LCBpbnQgcXVldWVzKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzI3LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zMzMtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzozMzQ6XHRpZiAoa3N6X2lzX2tzejg4eDMoZGV2KSkge1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzM1LVx0XHRtYXNrXzRxID0gS1NaODg3M19QT1JUXzRRVUVVRV9TUExJVF9FTjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zNDUtXHRcdCAqL1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MzQ2Olx0XHRyZXQgPSBrc3pfcm13OChkZXYsIFJFR19TV19DVFJMXzMsIFdFSUdIVEVEX0ZBSVJfUVVFVUVfRU5BQkxFLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzQ3LVx0XHRcdCAgICAgICBXRUlHSFRFRF9GQUlSX1FVRVVFX0VOQUJMRSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzQ5LVx0XHRcdHJldHVybiByZXQ7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzozNTA6XHR9IGVsc2UgaWYgKGtzel9pc19rc3o4NDYzKGRldikpIHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM1MS1cdFx0bWFza180cSA9IEtTWjg4NzNfUE9SVF80UVVFVUVfU1BMSVRfRU47XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzYzLVx0XHQgKi9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjM2NDpcdFx0cmV0ID0ga3N6X3JtdzgoZGV2LCBSRUdfU1dfQ1RSTF8xOSxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM2NS1cdFx0XHQgICAgICAgU1dfT1VUX1JBVEVfTElNSVRfUVVFVUVfQkFTRUQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzc1LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6Mzc2Olx0cmV0ID0ga3N6X3BybXc4KGRldiwgcG9ydCwgcmVnXzRxLCBtYXNrXzRxLCBkYXRhXzRxKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM3Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzc5LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MzgwOlx0cmV0dXJuIGtzel9wcm13OChkZXYsIHBvcnQsIHJlZ18ycSwgbWFza18ycSwgZGF0YV8ycSk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zODEtfVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzgyLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MzgzOnN0YXRpYyB2b2lkIGtzejhfcl9taWJfY250KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0LCB1MTYgYWRkciwgdTY0ICpjbnQpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zODQte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM5OC1cdG11dGV4X2xvY2soXHUwMDI2ZGV2LVx1MDAzZWFsdV9tdXRleCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzozOTk6XHRrc3pfd3JpdGUxNihkZXYsIHJlZ3NbUkVHX0lORF9DVFJMXzBdLCBjdHJsX2FkZHIpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDAwLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQwNC1cdGZvciAobG9vcCA9IDI7IGxvb3AgXHUwMDNlIDA7IGxvb3AtLSkge1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NDA1Olx0XHRrc3pfcmVhZDgoZGV2LCByZWdzW1JFR19JTkRfTUlCX0NIRUNLXSwgXHUwMDI2Y2hlY2spO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDA2LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDA3LVx0XHRpZiAoY2hlY2sgXHUwMDI2IG1hc2tzW01JQl9DT1VOVEVSX1ZBTElEXSkge1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NDA4Olx0XHRcdGtzel9yZWFkMzIoZGV2LCByZWdzW1JFR19JTkRfREFUQV9MT10sIFx1MDAyNmRhdGEpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDA5LVx0XHRcdGlmIChjaGVjayBcdTAwMjYgbWFza3NbTUlCX0NPVU5URVJfT1ZFUkZMT1ddKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQxNy1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjQxODpzdGF0aWMgdm9pZCBrc3o4Nzk1X3JfbWliX3BrdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydCwgdTE2IGFkZHIsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00MTktXHRcdFx0ICAgICAgdTY0ICpkcm9wcGVkLCB1NjQgKmNudClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00MzYtXHRtdXRleF9sb2NrKFx1MDAyNmRldi1cdTAwM2VhbHVfbXV0ZXgpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NDM3Olx0a3N6X3dyaXRlMTYoZGV2LCByZWdzW1JFR19JTkRfQ1RSTF8wXSwgY3RybF9hZGRyKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQzOC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00NDItXHRmb3IgKGxvb3AgPSAyOyBsb29wIFx1MDAzZSAwOyBsb29wLS0pIHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjQ0MzpcdFx0a3N6X3JlYWQ4KGRldiwgcmVnc1tSRUdfSU5EX01JQl9DSEVDS10sIFx1MDAyNmNoZWNrKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQ0NC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQ0NS1cdFx0aWYgKGNoZWNrIFx1MDAyNiBtYXNrc1tNSUJfQ09VTlRFUl9WQUxJRF0pIHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjQ0NjpcdFx0XHRrc3pfcmVhZDMyKGRldiwgcmVnc1tSRUdfSU5EX0RBVEFfTE9dLCBcdTAwMjZkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQ0Ny1cdFx0XHRpZiAoYWRkciBcdTAwM2MgMikge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQ2OS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjQ3MDpzdGF0aWMgdm9pZCBrc3o4ODYzX3JfbWliX3BrdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydCwgdTE2IGFkZHIsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00NzEtXHRcdFx0ICAgICAgdTY0ICpkcm9wcGVkLCB1NjQgKmNudClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00ODMtXHRcdFx0ICAgS1NaODg2M19NSUJfUEFDS0VUX0RST1BQRURfUlhfMDtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjQ4NDpcdGlmIChrc3pfaXNfODg5NV9mYW1pbHkoZGV2KSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQ4NS1cdCAgICBjdHJsX2FkZHIgPT0gS1NaODg2M19NSUJfUEFDS0VUX0RST1BQRURfUlhfMClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00OTAtXHRtdXRleF9sb2NrKFx1MDAyNmRldi1cdTAwM2VhbHVfbXV0ZXgpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NDkxOlx0a3N6X3dyaXRlMTYoZGV2LCByZWdzW1JFR19JTkRfQ1RSTF8wXSwgY3RybF9hZGRyKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjQ5MjpcdGtzel9yZWFkMzIoZGV2LCByZWdzW1JFR19JTkRfREFUQV9MT10sIFx1MDAyNmRhdGEpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDkzLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRldi1cdTAwM2VhbHVfbXV0ZXgpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUwNS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjUwNjpzdGF0aWMgdm9pZCBrc3o4X3JfbWliX3BrdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydCwgdTE2IGFkZHIsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MDctXHRcdFx0ICAgdTY0ICpkcm9wcGVkLCB1NjQgKmNudClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MTQtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1MTU6c3RhdGljIHZvaWQga3N6OF9mcmVlemVfbWliKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0LCBib29sIGZyZWV6ZSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUxNi17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTIxLVx0aWYgKGZyZWV6ZSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjUyMjpcdFx0a3N6X2NmZyhkZXYsIFJFR19TV19DVFJMXzYsIEJJVChwb3J0KSwgdHJ1ZSk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1MjM6XHRrc3pfY2ZnKGRldiwgUkVHX1NXX0NUUkxfNiwgU1dfTUlCX0NPVU5URVJfRlJFRVpFLCBmcmVlemUpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTI0LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUyNi1cdGlmICghZnJlZXplKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTI3Olx0XHRrc3pfY2ZnKGRldiwgUkVHX1NXX0NUUkxfNiwgQklUKHBvcnQpLCBmYWxzZSk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MjgtfVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTI5LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTMwOnN0YXRpYyB2b2lkIGtzejhfcG9ydF9pbml0X2NudChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydClcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUzMS17XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1MzI6XHRzdHJ1Y3Qga3N6X3BvcnRfbWliICptaWIgPSBcdTAwMjZkZXYtXHUwMDNlcG9ydHNbcG9ydF0ubWliO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTMzLVx0dTY0ICpkcm9wcGVkO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUzNS1cdC8qIEZvciBLU1o4Nzk1IGZhbWlseS4gKi9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjUzNjpcdGlmIChrc3pfaXNfa3N6ODd4eChkZXYpKSB7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MzctXHRcdC8qIGZsdXNoIGFsbCBlbmFibGVkIHBvcnQgTUlCIGNvdW50ZXJzICovXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1Mzg6XHRcdGtzel9jZmcoZGV2LCBSRUdfU1dfQ1RSTF82LCBCSVQocG9ydCksIHRydWUpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTM5Olx0XHRrc3pfY2ZnKGRldiwgUkVHX1NXX0NUUkxfNiwgU1dfTUlCX0NPVU5URVJfRkxVU0gsIHRydWUpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTQwOlx0XHRrc3pfY2ZnKGRldiwgUkVHX1NXX0NUUkxfNiwgQklUKHBvcnQpLCBmYWxzZSk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01NDEtXHR9XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTYyLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTYzOnN0YXRpYyBpbnQga3N6OF9yX3RhYmxlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCB0YWJsZSwgdTE2IGFkZHIsIHU2NCAqZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTU2NC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTczLVx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNlYWx1X211dGV4KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjU3NDpcdHJldCA9IGtzel93cml0ZTE2KGRldiwgcmVnc1tSRUdfSU5EX0NUUkxfMF0sIGN0cmxfYWRkcik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01NzUtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTU3Ny1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjU3ODpcdHJldCA9IGtzel9yZWFkNjQoZGV2LCByZWdzW1JFR19JTkRfREFUQV9ISV0sIGRhdGEpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTc5LXVubG9ja19hbHU6XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTg0LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTg1OnN0YXRpYyBpbnQga3N6OF93X3RhYmxlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCB0YWJsZSwgdTE2IGFkZHIsIHU2NCBkYXRhKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTg2LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01OTUtXHRtdXRleF9sb2NrKFx1MDAyNmRldi1cdTAwM2VhbHVfbXV0ZXgpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTk2Olx0cmV0ID0ga3N6X3dyaXRlNjQoZGV2LCByZWdzW1JFR19JTkRfREFUQV9ISV0sIGRhdGEpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTk3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01OTktXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo2MDA6XHRyZXQgPSBrc3pfd3JpdGUxNihkZXYsIHJlZ3NbUkVHX0lORF9DVFJMXzBdLCBjdHJsX2FkZHIpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNjAxLXVubG9ja19hbHU6XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNjA2LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NjA3OnN0YXRpYyBpbnQga3N6OF92YWxpZF9keW5fZW50cnkoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTggKmRhdGEpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02MDgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTYxNy1cdGRvIHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjYxODpcdFx0cmV0ID0ga3N6X3JlYWQ4KGRldiwgcmVnc1tSRUdfSU5EX0RBVEFfQ0hFQ0tdLCBkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTYxOS1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02MjktXHQvKiBFbnRyeSBpcyByZWFkeSBmb3IgYWNjZXNzaW5nLiAqL1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NjMwOlx0cmV0dXJuIGtzel9yZWFkOChkZXYsIHJlZ3NbUkVHX0lORF9EQVRBXzhdLCBkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTYzMS19XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02MzItXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo2MzM6c3RhdGljIGludCBrc3o4X3JfZHluX21hY190YWJsZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MTYgYWRkciwgdTggKm1hY19hZGRyLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNjM0LVx0XHRcdFx0dTggKmZpZCwgdTggKnNyY19wb3J0LCB1MTYgKmVudHJpZXMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNjUyLVx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNlYWx1X211dGV4KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjY1MzpcdHJldCA9IGtzel93cml0ZTE2KGRldiwgcmVnc1tSRUdfSU5EX0NUUkxfMF0sIGN0cmxfYWRkcik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02NTQtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTY2NS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjY2NjpcdHJldCA9IGtzel9yZWFkNjQoZGV2LCByZWdzW1JFR19JTkRfREFUQV9ISV0sIFx1MDAyNmJ1Zik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02NjctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTY5OC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjY5OTpzdGF0aWMgaW50IGtzejhfcl9zdGFfbWFjX3RhYmxlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUxNiBhZGRyLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNzAwLVx0XHRcdFx0c3RydWN0IGFsdV9zdHJ1Y3QgKmFsdSwgYm9vbCAqdmFsaWQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNzM4LVx0ICovXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo3Mzk6XHRpZiAoa3N6X2lzX2tzejg3eHgoZGV2KSB8fCBrc3pfaXNfODg5NV9mYW1pbHkoZGV2KSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTc0MC1cdFx0ZGF0YV9oaSBcdTAwM2VcdTAwM2U9IDE7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNzUwLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NzUxOnN0YXRpYyBpbnQga3N6OF93X3N0YV9tYWNfdGFibGUoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTE2IGFkZHIsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy03NTItXHRcdFx0XHRzdHJ1Y3QgYWx1X3N0cnVjdCAqYWx1KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTc4My1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjc4NDpzdGF0aWMgdm9pZCBrc3o4X2Zyb21fdmxhbihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MzIgdmxhbiwgdTggKmZpZCxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTc4NS1cdFx0XHQgICB1OCAqbWVtYmVyLCB1OCAqdmFsaWQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNzk4LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6Nzk5OnN0YXRpYyB2b2lkIGtzejhfdG9fdmxhbihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1OCBmaWQsIHU4IG1lbWJlciwgdTggdmFsaWQsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy04MDAtXHRcdFx0IHUxNiAqdmxhbilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy04MTMtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo4MTQ6c3RhdGljIHZvaWQga3N6OF9yX3ZsYW5fZW50cmllcyhzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MTYgYWRkcilcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTgxNS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtODI5LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6ODMwOnN0YXRpYyB2b2lkIGtzejhfcl92bGFuX3RhYmxlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUxNiB2aWQsIHUxNiAqdmxhbilcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTgzMS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtODQzLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6ODQ0OnN0YXRpYyB2b2lkIGtzejhfd192bGFuX3RhYmxlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUxNiB2aWQsIHUxNiB2bGFuKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtODQ1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy04NzEtICovXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo4NzI6c3RhdGljIGludCBrc3o4Nzl4X2dldF9sb29wYmFjayhzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MTYgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTg3My1cdFx0XHRcdHUxNiAqdmFsKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTg3Ny1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjg3ODpcdHJldCA9IGtzel9wcmVhZDgoZGV2LCBwb3J0LCBSRUdfUE9SVF9TVEFUVVNfMywgXHUwMDI2c3RhdDMpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtODc5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy04OTktICovXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo5MDA6c3RhdGljIGludCBrc3o4Nzl4X3NldF9sb29wYmFjayhzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MTYgcG9ydCwgdTE2IHZhbClcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTkwMS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTA2LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6OTA3Olx0cmV0dXJuIGtzel9wcm13OChkZXYsIHBvcnQsIFJFR19QT1JUX1NUQVRVU18zLCBQT1JUX1BIWV9MT09QQkFDSyxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTkwOC1cdFx0XHQgc3RhdDMpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTkxMC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjkxMTpzdGF0aWMgaW50IGtzejg3eHhfYXBwbHlfbG93X2xvc3NfcHJlc2V0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGJvb2wgZW5hYmxlKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTEyLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05MjEtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo5MjI6XHRpZiAoIWtzel9pc19rc3o4N3h4KGRldikpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05MjMtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05NTctICovXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo5NTg6c3RhdGljIGludCBrc3o4X3JfcGh5X2N0cmwoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIHUxNiAqdmFsKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTU5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05NjUtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo5NjY6XHRyZXQgPSBrc3pfcHJlYWQ4KGRldiwgcG9ydCwgcmVnc1tQX0xJTktfU1RBVFVTXSwgXHUwMDI2cmVnX3ZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05NjctXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTk3Mi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjk3MzpcdHJldCA9IGtzel9wcmVhZDgoZGV2LCBwb3J0LCBSRUdfUE9SVF9MSU5LX01EX0NUUkwsIFx1MDAyNnJlZ192YWwpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTc0LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDIzLSAqL1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTAyNDpzdGF0aWMgaW50IGtzejhfcl9waHlfYm1jcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MTYgcG9ydCwgdTE2ICp2YWwpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDI1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDMxLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTAzMjpcdHJldCA9IGtzel9wcmVhZDgoZGV2LCBwb3J0LCByZWdzW1BfTkVHX1JFU1RBUlRfQ1RSTF0sIFx1MDAyNnJlc3RhcnQpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTAzMy1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTAzNS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEwMzY6XHRyZXQgPSBrc3pfcHJlYWQ4KGRldiwgcG9ydCwgcmVnc1tQX1NQRUVEX1NUQVRVU10sIFx1MDAyNnNwZWVkKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEwMzctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEwMzktXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMDQwOlx0cmV0ID0ga3N6X3ByZWFkOChkZXYsIHBvcnQsIHJlZ3NbUF9GT1JDRV9DVFJMXSwgXHUwMDI2Y3RybCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDQxLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDQ2LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTA0NzpcdGlmIChrc3pfaXNfa3N6ODh4MyhkZXYpKSB7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDQ4LVx0XHRpZiAocmVzdGFydCBcdTAwMjYgS1NaODg3M19QT1JUX1BIWV9MT09QQkFDSylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDg4LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTA4OTpzdGF0aWMgaW50IGtzejhfcl9waHkoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTE2IHBoeSwgdTE2IHJlZywgdTE2ICp2YWwpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDkwLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTA2LVx0Y2FzZSBNSUlfQk1TUjpcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjExMDc6XHRcdHJldCA9IGtzel9wcmVhZDgoZGV2LCBwLCByZWdzW1BfTElOS19TVEFUVVNdLCBcdTAwMjZsaW5rKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExMDgtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTEyNC1cdGNhc2UgTUlJX1BIWVNJRDI6XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMTI1Olx0XHRpZiAoa3N6X2lzX2tzejg4eDMoZGV2KSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExMjYtXHRcdFx0ZGF0YSA9IEtTWjg4NjNfSURfTE87XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTEzMC1cdGNhc2UgTUlJX0FEVkVSVElTRTpcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjExMzE6XHRcdHJldCA9IGtzel9wcmVhZDgoZGV2LCBwLCByZWdzW1BfTE9DQUxfQ1RSTF0sIFx1MDAyNmN0cmwpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTEzMi1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTQ3LVx0Y2FzZSBNSUlfTFBBOlxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTE0ODpcdFx0cmV0ID0ga3N6X3ByZWFkOChkZXYsIHAsIHJlZ3NbUF9SRU1PVEVfU1RBVFVTXSwgXHUwMDI2bGluayk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTQ5LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExNjYtXHRjYXNlIFBIWV9SRUdfTElOS19NRDpcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjExNjc6XHRcdHJldCA9IGtzel9wcmVhZDgoZGV2LCBwLCBSRUdfUE9SVF9MSU5LX01EX0NUUkwsIFx1MDAyNnZhbDEpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTE2OC1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTcwLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTE3MTpcdFx0cmV0ID0ga3N6X3ByZWFkOChkZXYsIHAsIFJFR19QT1JUX0xJTktfTURfUkVTVUxULCBcdTAwMjZ2YWwyKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExNzItXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTE5NC1cdGNhc2UgUEhZX1JFR19LU1o4N1hYX1NIT1JUX0NBQkxFOlxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTE5NTpcdFx0aWYgKCFrc3pfaXNfa3N6ODd4eChkZXYpKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTE5Ni1cdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTIwMC1cdGNhc2UgUEhZX1JFR19LU1o4N1hYX0xQRl9CVzpcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEyMDE6XHRcdGlmICgha3N6X2lzX2tzejg3eHgoZGV2KSlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEyMDItXHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEyMDUtXHRjYXNlIFBIWV9SRUdfS1NaODdYWF9FUV9JTklUOlxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTIwNjpcdFx0aWYgKCFrc3pfaXNfa3N6ODd4eChkZXYpKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTIwNy1cdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MTIyMD1zdGF0aWMgaW50IGtzejhfcGh5X3JlYWQxNihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBhZGRyLCBpbnQgcmVnKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTIyMS17XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMjIyOlx0c3RydWN0IGtzel9kZXZpY2UgKmRldiA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMjIzLVx0dTE2IHZhbCA9IDB4ZmZmZjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMjQ1LSAqL1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTI0NjpzdGF0aWMgaW50IGtzejhfd19waHlfY3RybChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydCwgdTE2IHZhbClcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEyNDcte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEyNTktXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMjYwOlx0cmV0ID0ga3N6X3BybXc4KGRldiwgcG9ydCwgUkVHX1BPUlRfTElOS19NRF9DVFJMLCBQT1JUX0ZPUkNFX0xJTksgfFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTI2MS1cdFx0XHRQT1JUX1BPV0VSX1NBVklORyB8IFBPUlRfUEhZX1JFTU9URV9MT09QQkFDSywgcmVnX3ZhbCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTI5OS0gKi9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEzMDA6c3RhdGljIGludCBrc3o4X3dfcGh5X2JtY3Ioc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTE2IHBvcnQsIHUxNiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzAxLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzEzLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTMxNDpcdHJldCA9IGtzel9wcm13OChkZXYsIHBvcnQsIHJlZ3NbUF9TUEVFRF9TVEFUVVNdLCBQT1JUX0hQX01ESVgsIHNwZWVkKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzMTUtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzMTgtXHRjdHJsID0gMDtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEzMTk6XHRpZiAoa3N6X2lzX2tzejg4eDMoZGV2KSkge1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTMyMC1cdFx0aWYgKCh2YWwgXHUwMDI2IEJNQ1JfQU5FTkFCTEUpKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzMzYtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMzM3Olx0cmV0ID0ga3N6X3BybXc4KGRldiwgcG9ydCwgcmVnc1tQX0ZPUkNFX0NUUkxdLCBQT1JUX0ZPUkNFXzEwMF9NQklUIHxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzMzgtXHRcdCAvKiBQT1JUX0FVVE9fTkVHX0VOQUJMRSBhbmQgUE9SVF9BVVRPX05FR19ESVNBQkxFIGFyZSB0aGUgc2FtZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzNjYtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMzY3Olx0aWYgKGtzel9pc19rc3o4OHgzKGRldikpIHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzNjgtXHRcdHJlc3RhcnRfbWFzayB8PSBLU1o4ODczX1BPUlRfUEhZX0xPT1BCQUNLO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzNzctXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMzc4Olx0cmV0dXJuIGtzel9wcm13OChkZXYsIHBvcnQsIHJlZ3NbUF9ORUdfUkVTVEFSVF9DVFJMXSwgcmVzdGFydF9tYXNrLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTM3OS1cdFx0XHQgcmVzdGFydCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTM4MS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEzODI6c3RhdGljIGludCBrc3o4X3dfcGh5KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUxNiBwaHksIHUxNiByZWcsIHUxNiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzgzLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzk3LVx0Y2FzZSBNSUlfQURWRVJUSVNFOlxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTM5ODpcdFx0cmV0ID0ga3N6X3ByZWFkOChkZXYsIHAsIHJlZ3NbUF9MT0NBTF9DVFJMXSwgXHUwMDI2Y3RybCk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzk5LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE0MTktXHRcdGlmIChkYXRhICE9IGN0cmwpIHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjE0MjA6XHRcdFx0cmV0ID0ga3N6X3B3cml0ZTgoZGV2LCBwLCByZWdzW1BfTE9DQUxfQ1RSTF0sIGRhdGEpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQyMS1cdFx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE0MjYtXHRcdGlmICh2YWwgXHUwMDI2IFBIWV9TVEFSVF9DQUJMRV9ESUFHKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTQyNzpcdFx0XHRrc3pfcG9ydF9jZmcoZGV2LCBwLCBSRUdfUE9SVF9MSU5LX01EX0NUUkwsIFBPUlRfU1RBUlRfQ0FCTEVfRElBRywgdHJ1ZSk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNDI4LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNDM1LVx0Y2FzZSBQSFlfUkVHX0tTWjg3WFhfU0hPUlRfQ0FCTEU6XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNDM2Olx0XHRpZiAoIWtzel9pc19rc3o4N3h4KGRldikpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNDM3LVx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNDQ0LVx0Y2FzZSBQSFlfUkVHX0tTWjg3WFhfTFBGX0JXOlxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTQ0NTpcdFx0aWYgKCFrc3pfaXNfa3N6ODd4eChkZXYpKVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQ0Ni1cdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQ1Ny1cdGNhc2UgUEhZX1JFR19LU1o4N1hYX0VRX0lOSVQ6XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNDU4Olx0XHRpZiAoIWtzel9pc19rc3o4N3h4KGRldikpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNDU5LVx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYz0xNDc3PXN0YXRpYyBpbnQga3N6OF9waHlfd3JpdGUxNihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBhZGRyLCBpbnQgcmVnLCB1MTYgdmFsKVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDU6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgzMzYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIGtzel9zd2l0Y2gva3N6X2NvbW1vbiBEcml2ZXIgTGFuZHNjYXBlKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgZHJpdmVycyB0aGF0IGFyZSBob29rZWQgaW50byB0aGUgYGtzel9zd2l0Y2hgIG9yIGBrc3pfY29tbW9uYCBtb2R1bGVzLiBGcm9tIHdoYXQgSSBjYW4gc2VlLCB3ZSBoYXZlIGBrc3pfc3BpLmNgLCBga3N6OTQ3N19pMmMuY2AsIGFuZCBga3N6ODg2M19zbWkuY2AgbGlzdGVkIGFzIHRoZSBrZXkgcGxheWVycy4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcm9sbCB1cCBteSBzbGVldmVzIGFuZCBwZXJmb3JtIGEgZGVlcCBkaXZlIGludG8gZWFjaCBvZiB0aG9zZSBmaWxlczogYGtzel9zcGkuY2AsIGBrc3o5NDc3X2kyYy5jYCwgYW5kIGBrc3o4ODYzX3NtaS5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgc3BlY2lmaWMgcm9sZXMgYW5kIGhvdyB0aGV5IGNvbnRyaWJ1dGUgdG8gdGhlIG92ZXJhbGwgc3dpdGNoIGZ1bmN0aW9uYWxpdHkuIEFuZCBJIGNhbiYjMzk7dCBmb3JnZXQgYEtjb25maWdgLCB3aGljaCBpcyBlc3NlbnRpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZXNlIGRyaXZlcnMgYXJlIGNvbmZpZ3VyZWQgYW5kIGludGVncmF0ZWQgaW50byB0aGUgYnJvYWRlciBrZXJuZWwgYnVpbGQgcHJvY2Vzcy4gVGltZSB0byBnZXQgdG8gd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwNToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRtZW51Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT05cbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O01pY3JvY2hpcCBLU1o4WFhYL0tTWjlYWFgvTEFOOTM3WCBzZXJpZXMgc3dpdGNoIHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gTkVUX0RTQVxuICAgNTpcdFx0c2VsZWN0IE5FVF9EU0FfVEFHX0tTWlxuICAgNjpcdFx0c2VsZWN0IE5FVF9EU0FfVEFHX05PTkVcbiAgIDc6XHRcdHNlbGVjdCBORVRfSUVFRTgwMjFRX0hFTFBFUlNcbiAgIDg6XHRcdHNlbGVjdCBEQ0JcbiAgIDk6XHRcdHNlbGVjdCBQQ1NfWFBDU1xuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBUaGlzIGRyaXZlciBhZGRzIHN1cHBvcnQgZm9yIE1pY3JvY2hpcCBLU1o4LCBLU1o5IGFuZFxuICAxMjpcdFx0ICBMQU45MzdYIHNlcmllcyBzd2l0Y2ggY2hpcHMsIGJlaW5nIEtTWjg4NjMvODg3MyxcbiAgMTM6XHRcdCAgS1NaODg5NS84ODY0LCBLU1o4Nzk0Lzg3OTUvODc2NSxcbiAgMTQ6XHRcdCAgS1NaOTQ3Ny85ODk3Lzk4OTYvOTU2Ny84NTY3LCBLU1o5ODkzLzk1NjMvODU2MyBhbmRcbiAgMTU6XHRcdCAgTEFOOTM3MC85MzcxLzkzNzIvOTM3My85Mzc0LlxuICAxNjpcdFxuICAxNzpcdGNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1o5NDc3X0kyQ1xuICAxODpcdFx0dHJpc3RhdGUgXCYjMzQ7S1NaIHNlcmllcyBJMkMgY29ubmVjdGVkIHN3aXRjaCBkcml2ZXJcJiMzNDtcbiAgMTk6XHRcdGRlcGVuZHMgb24gTkVUX0RTQV9NSUNST0NISVBfS1NaX0NPTU1PTiBcdTAwMjZcdTAwMjYgSTJDXG4gIDIwOlx0XHRzZWxlY3QgUkVHTUFQX0kyQ1xuICAyMTpcdFx0aGVscFxuICAyMjpcdFx0ICBTZWxlY3QgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHJlZ2lzdGVyaW5nIHN3aXRjaGVzIGNvbmZpZ3VyZWQgdGhyb3VnaCBJMkMuXG4gIDIzOlx0XG4gIDI0Olx0Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9TUElcbiAgMjU6XHRcdHRyaXN0YXRlIFwmIzM0O0tTWiBzZXJpZXMgU1BJIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4gIDI2Olx0XHRkZXBlbmRzIG9uIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT04gXHUwMDI2XHUwMDI2IFNQSVxuICAyNzpcdFx0c2VsZWN0IFJFR01BUF9TUElcbiAgMjg6XHRcdGhlbHBcbiAgMjk6XHRcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciByZWdpc3RlcmluZyBzd2l0Y2hlcyBjb25maWd1cmVkIHRocm91Z2ggU1BJLlxuICAzMDpcdFxuICAzMTpcdGNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfUFRQXG4gIDMyOlx0XHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIHRoZSBQVFAgY2xvY2sgb24gdGhlIEtTWjk1NjMvTEFOOTM3eCBFdGhlcm5ldCBTd2l0Y2hcJiMzNDtcbiAgMzM6XHRcdGRlcGVuZHMgb24gTkVUX0RTQV9NSUNST0NISVBfS1NaX0NPTU1PTiBcdTAwMjZcdTAwMjYgUFRQXzE1ODhfQ0xPQ0tcbiAgMzQ6XHRcdGRlcGVuZHMgb24gTkVUX0RTQV9NSUNST0NISVBfS1NaX0NPTU1PTj1tIHx8IFBUUF8xNTg4X0NMT0NLPXlcbiAgMzU6XHRcdGhlbHBcbiAgMzY6XHRcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciB0aW1lc3RhbXBpbmcgXHUwMDI2IFBUUCBjbG9jayBtYW5pcHVsYXRpb24gaW5cbiAgMzc6XHRcdCAgS1NaODU2My9LU1o5NTYzL0xBTjkzN3ggc2VyaWVzIG9mIHN3aXRjaGVzLiBLU1o5NTYzL0tTWjg1NjMgc3VwcG9ydHNcbiAgMzg6XHRcdCAgb25seSBvbmUgc3RlcCB0aW1lc3RhbXBpbmcuIExBTjkzN3ggc3dpdGNoIHN1cHBvcnRzIGJvdGggb25lIHN0ZXAgYW5kXG4gIDM5Olx0XHQgIHR3byBzdGVwIHRpbWVzdGFtcGluZy5cbiAgNDA6XHRcbiAgNDE6XHRjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaODg2M19TTUlcbiAgNDI6XHRcdHRyaXN0YXRlIFwmIzM0O0tTWiBzZXJpZXMgU01JIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4gIDQzOlx0XHRkZXBlbmRzIG9uIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT05cbiAgNDQ6XHRcdHNlbGVjdCBNRElPX0JJVEJBTkdcbiAgNDU6XHRcdGhlbHBcbiAgNDY6XHRcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciByZWdpc3RlcmluZyBzd2l0Y2hlcyBjb25maWd1cmVkIHRocm91Z2hcbiAgNDc6XHRcdCAgTWljcm9jaGlwIFNNSS4gSXQgc3VwcG9ydHMgdGhlIEtTWjg4NjMgYW5kIEtTWjg4NzMgc3dpdGNoLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA1OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NTgzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgRFNBIFN3aXRjaCBGdXp6aW5nIEZlYXNpYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE1pY3JvY2hpcCBLU1ogRFNBIHN3aXRjaGVzIGFyZSBFdGhlcm5ldCBzd2l0Y2hlcyBtYW5hZ2VkIHRocm91Z2ggaW50ZXJmYWNlcyBsaWtlIEkyQywgU1BJLCBvciBTTUksIGFuZCB0aGV5IGNvbm5lY3QgdG8gcGh5c2ljYWwgRXRoZXJuZXQgb3IgYXJlIGRlc2NyaWJlZCBpbiBkZXZpY2UgdHJlZXMsIG9mdGVuIHVzZWQgaW4gZW1iZWRkZWQgc3lzdGVtcy4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBjYW4gdGhlc2UgRFNBIHN3aXRjaGVzLCBhbmQgc3BlY2lmaWNhbGx5IHRoZWlyIEkyQy9TUEkgaW50ZXJmYWNlcywgYmUgcHJvYmVkIGFuZCBmdXp6ZWQgZWZmZWN0aXZlbHkgd2l0aGluIGEgc3RhbmRhcmQgc3l6a2FsbGVyIHNldHVwPyBUaGF0JiMzOTtzIHRoZSBjb3JlIG9mIHRoZSBwcm9ibGVtLgoKQWxyaWdodCwgdGltZSB0byBjaGVjayB0aGUgc3l6a2FsbGVyIGd1aWRlbGluZXMsIHNwZWNpZmljYWxseSBzZWN0aW9ucyAyIGFuZCAzLiBTZWN0aW9uIDIgaGlnaGxpZ2h0cyB3aGF0JiMzOTtzIHR5cGljYWxseSAqbm90KiBmdXp6ZWQgd2VsbC4gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlIGlzIHRoZSByZWQgZmxhZyBoZXJlOiB0aGluZ3MgbGlrZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgc3BlY2lhbGl6ZWQgTklDcyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgb3IgY29tcGxleCBlbXVsYXRpb24gdGhhdCBpc24mIzM5O3Qgc3RhbmRhcmQgaW4gUUVNVSwgb3IgZHJpdmVycyB3aG9zZSBleGVjdXRpb24gcGF0aHMgYXJlIG9ubHkgaGl0IGR1cmluZyBob3QtdW5wbHVnIGV2ZW50cy4KClNlY3Rpb24gMyBnaXZlcyB1cyBzb21lIGhvcGUsIHRob3VnaC4gSXQgZm9jdXNlcyBvbiAmIzM0O1JlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHMsJiMzNDsgbWVhbmluZyBkcml2ZXJzIGFjY2Vzc2libGUgdGhyb3VnaCB2aXJ0dWFsIGJ1c2VzIHN1Y2ggYXMgdmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjayBpbnRlcmZhY2VzLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFNvLCB0aGUga2V5IHF1ZXN0aW9uIGlzOiBkb2VzIHRoZSBNaWNyb2NoaXAgS1NaIHN3aXRjaCBkcml2ZXIgZml0IHRoaXMgJiMzNDtyZWFjaGFibGUmIzM0OyBjYXRlZ29yeSwgb3IgaXMgaXQgZnVuZGFtZW50YWxseSB0aWVkIHRvIHNvbWUgZm9ybSBvZiAmIzM0O3N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7PwoKTm93IEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGUgcHJvYmluZyBwcm9jZXNzLiBDYW4gdGhpcyBkcml2ZXIgYmUgdHJpZ2dlcmVkIHRocm91Z2ggc29tZXRoaW5nIGxpa2UgYSB2aXJ0dWFsIGJ1cywgYSBkZXZpY2UgdHJlZSBlbnRyeSB0aGF04oCZcyBlbXVsYXRlZCBieSBRRU1VLCBvciB0aHJvdWdoIHN5c2ZzPyBJIG5lZWQgdG8gYW5hbHl6ZSBob3cgdGhlIGBkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2AgZGlyZWN0b3J5IGlzIGFjdHVhbGx5IGluaXRpYWxpemVkIGFuZCBwcm9iZWQuIFRoYXQmIzM5O3MgdGhlIGNydWNpYWwgZGF0YSBwb2ludCB0aGF0IHdpbGwgZGV0ZXJtaW5lIGlmIGl0JiMzOTtzIGZlYXNpYmxlIHRvIGZ1enogdGhpcyBjb2RlIGluIGEgc3RhbmRhcmQgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDU6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlXy4qZHJpdmVyXFwofHByb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYz0yMTM9c3RhdGljIGludCBrc3o4NDYzX2lycV9kb21haW5fbWFwKHN0cnVjdCBpcnFfZG9tYWluICpkLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTIxNy1cdGlycV9zZXRfY2hpcF9hbmRfaGFuZGxlcihpcnEsIFx1MDAyNmtzejg0NjNfaXJxX2NoaXAsIGhhbmRsZV9sZXZlbF9pcnEpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjE4Olx0aXJxX3NldF9ub3Byb2JlKGlycSk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yMTktXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jPTEwMD1zdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9jb25maWcga3N6ODg2M19yZWdtYXBfY29uZmlnW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jLTEzMi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYzoxMzM6c3RhdGljIGludCBrc3o4ODYzX3NtaV9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmMtMTM0LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmMtMTU4LVx0XHRpZiAoSVNfRVJSKGRldi1cdTAwM2VyZWdtYXBbaV0pKSB7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmM6MTU5Olx0XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jLTE2MC1cdFx0XHRcdFx0ICAgICBQVFJfRVJSKGRldi1cdTAwM2VyZWdtYXBbaV0pLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYz0yMTE9c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBrc3o4ODYzX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYzoyMTI6XHQucHJvYmVcdD0ga3N6ODg2M19zbWlfcHJvYmUsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmMtMjEzLVx0LnJlbW92ZVx0PSBrc3o4ODYzX3NtaV9yZW1vdmUsXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jLTIyMC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYzoyMjE6bWRpb19tb2R1bGVfZHJpdmVyKGtzejg4NjNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYy0yMjItXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jPTE1PUtTWl9SRUdNQVBfVEFCTEUoa3N6OTQ3Nywgbm90X3VzZWQsIDE2LCAwLCAwKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xNi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzoxNzpzdGF0aWMgaW50IGtzejk0NzdfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtMTgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0zOS1cdFx0aWYgKElTX0VSUihkZXYtXHUwMDNlcmVnbWFwW2ldKSkge1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jOjQwOlx0XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKFx1MDAyNmkyYy1cdTAwM2VkZXYsIFBUUl9FUlIoZGV2LVx1MDAzZXJlZ21hcFtpXSksXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtNDEtXHRcdFx0XHRcdCAgICAgXCYjMzQ7RmFpbGVkIHRvIGluaXRpYWxpemUgcmVnbWFwJWlcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jPTEzMz1zdGF0aWMgc3RydWN0IGkyY19kcml2ZXIga3N6OTQ3N19pMmNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xMzgtXHR9LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jOjEzOTpcdC5wcm9iZSA9IGtzejk0NzdfaTJjX3Byb2JlLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTE0MC1cdC5yZW1vdmVcdD0ga3N6OTQ3N19pMmNfcmVtb3ZlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy0xNDQtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmM6MTQ1Om1vZHVsZV9pMmNfZHJpdmVyKGtzejk0NzdfaTJjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtMTQ2LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTI0OTI9c3RhdGljIGludCBrc3pfaXJxX2RvbWFpbl9tYXAoc3RydWN0IGlycV9kb21haW4gKmQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjQ5Ni1cdGlycV9zZXRfY2hpcF9hbmRfaGFuZGxlcihpcnEsIFx1MDAyNmtzel9pcnFfY2hpcCwgaGFuZGxlX2xldmVsX2lycSk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyNDk3Olx0aXJxX3NldF9ub3Byb2JlKGlycSk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yNDk4LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTM5NTI9aW50IGtzel9zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zOTk3LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6Mzk5ODpcdC8qIFVwZGF0ZSB0aGUgY29tcGF0aWJsZSBpbmZvIHdpdGggdGhlIHByb2JlZCBvbmUgKi9cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTM5OTktXHRkZXYtXHUwMDNlaW5mbyA9IGluZm87XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM9MTIyMD1zdGF0aWMgaW50IGtzel9wdHBfaXJxX2RvbWFpbl9tYXAoc3RydWN0IGlycV9kb21haW4gKmQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTIyNC1cdGlycV9zZXRfY2hpcF9hbmRfaGFuZGxlcihpcnEsIFx1MDAyNmtzel9wdHBfaXJxX2NoaXAsIGhhbmRsZV9sZXZlbF9pcnEpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmM6MTIyNTpcdGlycV9zZXRfbm9wcm9iZShpcnEpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTIyNi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYz0xMzQ9S1NaODQ2M19SRUdNQVBfVEFCTEUoa3N6ODQ2MywgS1NaODQ2M19TUElfQUREUl9TSElGVCwgMCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYy0xMzYtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoxMzc6c3RhdGljIGludCBrc3pfc3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYy0xMzgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTE3Ny1cdFx0aWYgKElTX0VSUihkZXYtXHUwMDNlcmVnbWFwW2ldKSkge1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MTc4Olx0XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKFx1MDAyNnNwaS1cdTAwM2VkZXYsIFBUUl9FUlIoZGV2LVx1MDAzZXJlZ21hcFtpXSksXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYy0xNzktXHRcdFx0XHRcdCAgICAgXCYjMzQ7RmFpbGVkIHRvIGluaXRpYWxpemUgcmVnbWFwJWlcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM9MzQ5PXN0YXRpYyBzdHJ1Y3Qgc3BpX2RyaXZlciBrc3pfc3BpX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYy0zNTUtXHQuaWRfdGFibGUgPSBrc3pfc3BpX2lkcyxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jOjM1NjpcdC5wcm9iZVx0PSBrc3pfc3BpX3Byb2JlLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMzU3LVx0LnJlbW92ZVx0PSBrc3pfc3BpX3JlbW92ZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYy0zNjAtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzozNjE6bW9kdWxlX3NwaV9kcml2ZXIoa3N6X3NwaV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMzYyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA1OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNDc5CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMTY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgS1NaIERyaXZlciBMYW5kc2NhcGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIEtTWiBkcml2ZXJzOiBga3N6OTQ3N19pMmNfZHJpdmVyYCwgYGtzel9zcGlfZHJpdmVyYCwgYW5kIGBrc3o4ODYzX2RyaXZlcmAuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogY2FuIHRoZXNlIEkyQyBvciBTUEkgZGV2aWNlcyBiZSBlZmZlY3RpdmVseSBwcm9iZWQgYW5kIHRlc3RlZCB1c2luZyB0b29scyBsaWtlIHN5emthbGxlciwgb3IgZXZlbiBmcm9tIHVzZXJzcGFjZSBkaXJlY3RseT8gVGhhdCYjMzk7cyBhIGNyaXRpY2FsIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZWlyIHJvYnVzdG5lc3MuIEFuZCB0aGVuIGl0IGhpdHMgbWUg4oCTIGNhbiBJIGluc3RhbnRpYXRlIGFuIEkyQyBkZXZpY2UsIHNwZWNpZmljYWxseSwgYnkgbGV2ZXJhZ2luZyB0aGF0IGAvc3lzL2J1cy9pMmMvZGV2aWNlcy9pMmMtKi9uZXdfZGV2aWNlYCBzeXNmcyBpbnRlcmZhY2U/IFRoaXMgd291bGQgYmUgaW5jcmVkaWJseSB2YWx1YWJsZSBmb3Igc3RyZWFtbGluZWQgdGVzdGluZyBhbmQgZGVidWdnaW5nLCBpZiBwb3NzaWJsZS4KCk15IG5leHQgc3RlcCBpcyBjbGVhci4gSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGUgYGtzejk0NzdfaTJjYCBkZXZpY2UsIGZvciBpbnN0YW5jZSwgaXMgYW1lbmFibGUgdG8gaW5zdGFudGlhdGlvbiB2aWEgdGhlIGBuZXdfZGV2aWNlYCBzeXNmcyBpbnRlcmZhY2UsIG9yIGlmIGl0IGhhcyB2ZXJ5IHNwZWNpZmljIGRlcGVuZGVuY2llcyBvbiBEZXZpY2UgVHJlZSAoRFQpIG9yIHBsYXRmb3JtLWxldmVsIHNldHVwIHRoYXQgd291bGQgY29tcGxpY2F0ZSBkaXJlY3QgbWFuaXB1bGF0aW9uLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZS4gSSYjMzk7bGwgc3RhcnQgYnkgZXhhbWluaW5nIHRoZSBga3N6OTQ3N19pMmNfcHJvYmVgIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgaW4gYGRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuY2AsIHRvIHVuZGVyc3RhbmQgdGhlIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBhbmQgcHJvYmUgYmVoYXZpb3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA1OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQvKlxuICAgMzpcdCAqIE1pY3JvY2hpcCBLU1o5NDc3IHNlcmllcyByZWdpc3RlciBhY2Nlc3MgdGhyb3VnaCBJMkNcbiAgIDQ6XHQgKlxuICAgNTpcdCAqIENvcHlyaWdodCAoQykgMjAxOC0yMDI0IE1pY3JvY2hpcCBUZWNobm9sb2d5IEluYy5cbiAgIDY6XHQgKi9cbiAgIDc6XHRcbiAgIDg6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9pMmMuaFx1MDAzZVxuICAgOTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4gIDEwOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAgMTE6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWdtYXAuaFx1MDAzZVxuICAxMjpcdFxuICAxMzpcdCNpbmNsdWRlIFwmIzM0O2tzel9jb21tb24uaFwmIzM0O1xuICAxNDpcdFxuICAxNTpcdEtTWl9SRUdNQVBfVEFCTEUoa3N6OTQ3Nywgbm90X3VzZWQsIDE2LCAwLCAwKTtcbiAgMTY6XHRcbiAgMTc6XHRzdGF0aWMgaW50IGtzejk0NzdfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpXG4gIDE4Olx0e1xuICAxOTpcdFx0Y29uc3Qgc3RydWN0IGtzel9jaGlwX2RhdGEgKmNoaXA7XG4gIDIwOlx0XHRzdHJ1Y3QgZGV2aWNlICpkZGV2ID0gXHUwMDI2aTJjLVx1MDAzZWRldjtcbiAgMjE6XHRcdHN0cnVjdCByZWdtYXBfY29uZmlnIHJjO1xuICAyMjpcdFx0c3RydWN0IGtzel9kZXZpY2UgKmRldjtcbiAgMjM6XHRcdGludCBpLCByZXQ7XG4gIDI0Olx0XG4gIDI1Olx0XHRjaGlwID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRkZXYpO1xuICAyNjpcdFx0aWYgKCFjaGlwKVxuICAyNzpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAgMjg6XHRcbiAgMjk6XHRcdGRldiA9IGtzel9zd2l0Y2hfYWxsb2MoXHUwMDI2aTJjLVx1MDAzZWRldiwgY2hpcCwgaTJjKTtcbiAgMzA6XHRcdGlmICghZGV2KVxuICAzMTpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAgMzI6XHRcbiAgMzM6XHRcdC8qIFNhdmUgY2hpcCBpZCB0byBkbyBzcGVjaWFsIGluaXRpYWxpemF0aW9uIHdoZW4gcHJvYmluZy4gKi9cbiAgMzQ6XHRcdGRldi1cdTAwM2VjaGlwX2lkID0gY2hpcC1cdTAwM2VjaGlwX2lkO1xuICAzNTpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgX19LU1pfTlVNX1JFR01BUFM7IGkmIzQzOyYjNDM7KSB7XG4gIDM2Olx0XHRcdHJjID0ga3N6OTQ3N19yZWdtYXBfY29uZmlnW2ldO1xuICAzNzpcdFx0XHRyYy5sb2NrX2FyZyA9IFx1MDAyNmRldi1cdTAwM2VyZWdtYXBfbXV0ZXg7XG4gIDM4Olx0XHRcdGRldi1cdTAwM2VyZWdtYXBbaV0gPSBkZXZtX3JlZ21hcF9pbml0X2kyYyhpMmMsIFx1MDAyNnJjKTtcbiAgMzk6XHRcdFx0aWYgKElTX0VSUihkZXYtXHUwMDNlcmVnbWFwW2ldKSkge1xuICA0MDpcdFx0XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKFx1MDAyNmkyYy1cdTAwM2VkZXYsIFBUUl9FUlIoZGV2LVx1MDAzZXJlZ21hcFtpXSksXG4gIDQxOlx0XHRcdFx0XHRcdCAgICAgXCYjMzQ7RmFpbGVkIHRvIGluaXRpYWxpemUgcmVnbWFwJWlcXG5cJiMzNDssXG4gIDQyOlx0XHRcdFx0XHRcdCAgICAga3N6OTQ3N19yZWdtYXBfY29uZmlnW2ldLnZhbF9iaXRzKTtcbiAgNDM6XHRcdFx0fVxuICA0NDpcdFx0fVxuICA0NTpcdFxuICA0NjpcdFx0aWYgKGkyYy1cdTAwM2VkZXYucGxhdGZvcm1fZGF0YSlcbiAgNDc6XHRcdFx0ZGV2LVx1MDAzZXBkYXRhID0gaTJjLVx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhO1xuICA0ODpcdFxuICA0OTpcdFx0ZGV2LVx1MDAzZWlycSA9IGkyYy1cdTAwM2VpcnE7XG4gIDUwOlx0XG4gIDUxOlx0XHRyZXQgPSBrc3pfc3dpdGNoX3JlZ2lzdGVyKGRldik7XG4gIDUyOlx0XG4gIDUzOlx0XHQvKiBNYWluIERTQSBkcml2ZXIgbWF5IG5vdCBiZSBzdGFydGVkIHlldC4gKi9cbiAgNTQ6XHRcdGlmIChyZXQpXG4gIDU1Olx0XHRcdHJldHVybiByZXQ7XG4gIDU2Olx0XG4gIDU3Olx0XHRpMmNfc2V0X2NsaWVudGRhdGEoaTJjLCBkZXYpO1xuICA1ODpcdFxuICA1OTpcdFx0cmV0dXJuIDA7XG4gIDYwOlx0fVxuICA2MTpcdFxuICA2MjpcdHN0YXRpYyB2b2lkIGtzejk0NzdfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKVxuICA2MzpcdHtcbiAgNjQ6XHRcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoaTJjKTtcbiAgNjU6XHRcbiAgNjY6XHRcdGlmIChkZXYpXG4gIDY3Olx0XHRcdGtzel9zd2l0Y2hfcmVtb3ZlKGRldik7XG4gIDY4Olx0fVxuICA2OTpcdFxuICA3MDpcdHN0YXRpYyB2b2lkIGtzejk0NzdfaTJjX3NodXRkb3duKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpXG4gIDcxOlx0e1xuICA3MjpcdFx0c3RydWN0IGtzel9kZXZpY2UgKmRldiA9IGkyY19nZXRfY2xpZW50ZGF0YShpMmMpO1xuICA3MzpcdFxuICA3NDpcdFx0aWYgKCFkZXYpXG4gIDc1Olx0XHRcdHJldHVybjtcbiAgNzY6XHRcbiAgNzc6XHRcdGtzel9zd2l0Y2hfc2h1dGRvd24oZGV2KTtcbiAgNzg6XHRcbiAgNzk6XHRcdGkyY19zZXRfY2xpZW50ZGF0YShpMmMsIE5VTEwpO1xuICA4MDpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDU6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQxMTcKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiA2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIENoaXAgTWF0Y2ggaW4ga3N6OTQ3N19pMmMuYyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgZmlyc3QgdGhpbmcgSSYjMzk7bSBkb2luZyBpcyBncmFiYmluZyB0aGUgbWF0Y2hpbmcgZGF0YSBmb3IgdGhlIGRldmljZSwgbGlrZWx5IHRvIGlkZW50aWZ5IHRoZSBzcGVjaWZpYyBjaGlwIHVzaW5nIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGRldik7YC4gVGhhdCYjMzk7cyBzdGFuZGFyZCBwcmFjdGljZSwgYW5kIGZyb20gdGhlcmUgSSYjMzk7bSBnb2luZyB0byB3YW50IHRvIHVuZGVyc3RhbmQgd2hhdCBpcyBiZWluZyBkb25lIHdpdGggdGhhdCBkYXRhLiBJdCBzZWVtcyBsaWtlIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGBrc3o5NDc3X2kyYy5jYCBmaWxlLCBzcGVjaWZpY2FsbHkgbGluZXMgODAgdGhyb3VnaCAxNTAuIFRoYXQgc2VjdGlvbiBpcyBwcm9iYWJseSB3aGVyZSB0aGUgY2hpcC1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiBvciBjb25maWd1cmF0aW9uIGlzIGhhbmRsZWQsIG9yIHBlcmhhcHMgaXQmIzM5O3MgaW52b2x2ZWQgd2l0aCBJMkMgY29tbXVuaWNhdGlvbiBzZXR1cC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBoYXBwZW5zIGJhc2VkIG9uIHRoZSBtYXRjaCBkYXRhIHJldHVybmVkIGFuZCBkZXRlcm1pbmUgaG93IHRoZSBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlIGRldmljZS4gTGV0JiMzOTtzIHNlZSB3aGF0IGludGVyZXN0aW5nIHRpZGJpdHMgYXJlIGhpZGluZyBpbiB0aGF0IHNlY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA1OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA4MDpcdH1cbiAgODE6XHRcbiAgODI6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQga3N6OTQ3N19pMmNfaWRbXSA9IHtcbiAgODM6XHRcdHsgLm5hbWUgPSBcJiMzNDtrc3o5NDc3LXN3aXRjaFwmIzM0OyB9LFxuICA4NDpcdFx0eyB9XG4gIDg1Olx0fTtcbiAgODY6XHRcbiAgODc6XHRNT0RVTEVfREVWSUNFX1RBQkxFKGkyYywga3N6OTQ3N19pMmNfaWQpO1xuICA4ODpcdFxuICA4OTpcdHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGtzejk0NzdfZHRfaWRzW10gPSB7XG4gIDkwOlx0XHR7XG4gIDkxOlx0XHRcdC5jb21wYXRpYmxlID0gXCYjMzQ7bWljcm9jaGlwLGtzejk0NzdcJiMzNDssXG4gIDkyOlx0XHRcdC5kYXRhID0gXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5NDc3XVxuICA5MzpcdFx0fSxcbiAgOTQ6XHRcdHtcbiAgOTU6XHRcdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsa3N6OTg5NlwmIzM0OyxcbiAgOTY6XHRcdFx0LmRhdGEgPSBcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0tTWjk4OTZdXG4gIDk3Olx0XHR9LFxuICA5ODpcdFx0e1xuICA5OTpcdFx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o5ODk3XCYjMzQ7LFxuIDEwMDpcdFx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaOTg5N11cbiAxMDE6XHRcdH0sXG4gMTAyOlx0XHR7XG4gMTAzOlx0XHRcdC5jb21wYXRpYmxlID0gXCYjMzQ7bWljcm9jaGlwLGtzejk4OTNcJiMzNDssXG4gMTA0Olx0XHRcdC5kYXRhID0gXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5ODkzXVxuIDEwNTpcdFx0fSxcbiAxMDY6XHRcdHtcbiAxMDc6XHRcdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsa3N6OTU2M1wmIzM0OyxcbiAxMDg6XHRcdFx0LmRhdGEgPSBcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0tTWjk1NjNdXG4gMTA5Olx0XHR9LFxuIDExMDpcdFx0e1xuIDExMTpcdFx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxrc3o4NTYzXCYjMzQ7LFxuIDExMjpcdFx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaODU2M11cbiAxMTM6XHRcdH0sXG4gMTE0Olx0XHR7XG4gMTE1Olx0XHRcdC5jb21wYXRpYmxlID0gXCYjMzQ7bWljcm9jaGlwLGtzejg1NjdcJiMzNDssXG4gMTE2Olx0XHRcdC5kYXRhID0gXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o4NTY3XVxuIDExNzpcdFx0fSxcbiAxMTg6XHRcdHtcbiAxMTk6XHRcdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsa3N6OTU2N1wmIzM0OyxcbiAxMjA6XHRcdFx0LmRhdGEgPSBcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0tTWjk1NjddXG4gMTIxOlx0XHR9LFxuIDEyMjpcdFx0e1xuIDEyMzpcdFx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxsYW45NjQ2XCYjMzQ7LFxuIDEyNDpcdFx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbTEFOOTY0Nl1cbiAxMjU6XHRcdH0sXG4gMTI2Olx0XHR7fSxcbiAxMjc6XHR9O1xuIDEyODpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGtzejk0NzdfZHRfaWRzKTtcbiAxMjk6XHRcbiAxMzA6XHRzdGF0aWMgREVGSU5FX1NJTVBMRV9ERVZfUE1fT1BTKGtzel9pMmNfcG1fb3BzLFxuIDEzMTpcdFx0XHRcdFx0a3N6X3N3aXRjaF9zdXNwZW5kLCBrc3pfc3dpdGNoX3Jlc3VtZSk7XG4gMTMyOlx0XG4gMTMzOlx0c3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGtzejk0NzdfaTJjX2RyaXZlciA9IHtcbiAxMzQ6XHRcdC5kcml2ZXIgPSB7XG4gMTM1Olx0XHRcdC5uYW1lXHQ9IFwmIzM0O2tzejk0Nzctc3dpdGNoXCYjMzQ7LFxuIDEzNjpcdFx0XHQub2ZfbWF0Y2hfdGFibGUgPSBrc3o5NDc3X2R0X2lkcyxcbiAxMzc6XHRcdFx0LnBtID0gXHUwMDI2a3N6X2kyY19wbV9vcHMsXG4gMTM4Olx0XHR9LFxuIDEzOTpcdFx0LnByb2JlID0ga3N6OTQ3N19pMmNfcHJvYmUsXG4gMTQwOlx0XHQucmVtb3ZlXHQ9IGtzejk0NzdfaTJjX3JlbW92ZSxcbiAxNDE6XHRcdC5zaHV0ZG93biA9IGtzejk0NzdfaTJjX3NodXRkb3duLFxuIDE0MjpcdFx0LmlkX3RhYmxlID0ga3N6OTQ3N19pMmNfaWQsXG4gMTQzOlx0fTtcbiAxNDQ6XHRcbiAxNDU6XHRtb2R1bGVfaTJjX2RyaXZlcihrc3o5NDc3X2kyY19kcml2ZXIpO1xuIDE0NjpcdFxuIDE0NzpcdE1PRFVMRV9BVVRIT1IoXCYjMzQ7VHJpc3RyYW0gSGEgXHUwMDNjVHJpc3RyYW0uSGFAbWljcm9jaGlwLmNvbVx1MDAzZVwmIzM0Oyk7XG4gMTQ4Olx0TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O01pY3JvY2hpcCBLU1o5NDc3IFNlcmllcyBTd2l0Y2ggSTJDIGFjY2VzcyBEcml2ZXJcJiMzNDspO1xuIDE0OTpcdE1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTCB2MlwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA1OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NTUzCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBEcml2ZXIgSW5pdGlhbGl6YXRpb24gaW4gdGhlIEtlcm5lbCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcHJvYmUgZnVuY3Rpb24sIGBrc3o5NDc3X2kyY19wcm9iZWAuIEkgc2VlIGl0IHN0YXJ0cyBieSBncmFiYmluZyBgY2hpcGAgdXNpbmcgYGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZGV2KWAuIEhtbSwgaWYgdGhlcmUmIzM5O3Mgbm8gbWF0Y2ggZGF0YSDigJMgcGFydGljdWxhcmx5IGlmIHRoaXMgZGV2aWNlIHdhcyBpbnN0YW50aWF0ZWQgdGhyb3VnaCBJMkMgdmlhIGEgc3lzZnMgJiMzNDtuZXdfZGV2aWNlJiMzNDsgY2FsbCDigJMgdGhlbiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRkZXYpYCB3aWxsIHJldHVybiBgTlVMTGAuIEFuZCB0aGF0JiMzOTtzIGNyaXRpY2FsIGJlY2F1c2UgdGhlIGZ1bmN0aW9uIHRoZW4gaW1tZWRpYXRlbHkgZXhpdHMgd2l0aCBgLUVJTlZBTGAuIE5vIE9GIG1hdGNoIGRhdGEsIG5vIGluaXRpYWxpemF0aW9uLCBzaW1wbGUgYXMgdGhhdC4gSSBzdXNwZWN0ZWQgYXMgbXVjaC4gSSYjMzk7bSBub3RpbmcgdGhpcyBpcyBieSBkZXNpZ24gZm9yIHRoaXMgZHJpdmVyLiBJIGFtIGdvaW5nIHRvIGNvbXBhcmUgdGhpcyBJMkMgZHJpdmVyIHRvIGl0cyBTUEkgZXF1aXZhbGVudC4gTGV0JiMzOTtzIHNlZSBob3cgdGhhdCBvbmUgaXMgaGFuZGxpbmcgaW5pdGlhbGl6YXRpb24gYW5kIG1hdGNoaW5nIGluIGBrc3pfc3BpLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwNToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDcwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzMDA6XHRcdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsbGFuOTM3MlwmIzM0OyxcbiAzMDE6XHRcdFx0LmRhdGEgPSBcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0xBTjkzNzJdXG4gMzAyOlx0XHR9LFxuIDMwMzpcdFx0e1xuIDMwNDpcdFx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCxsYW45MzczXCYjMzQ7LFxuIDMwNTpcdFx0XHQuZGF0YSA9IFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbTEFOOTM3M11cbiAzMDY6XHRcdH0sXG4gMzA3Olx0XHR7XG4gMzA4Olx0XHRcdC5jb21wYXRpYmxlID0gXCYjMzQ7bWljcm9jaGlwLGxhbjkzNzRcJiMzNDssXG4gMzA5Olx0XHRcdC5kYXRhID0gXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tMQU45Mzc0XVxuIDMxMDpcdFx0fSxcbiAzMTE6XHRcdHtcbiAzMTI6XHRcdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsbGFuOTY0NlwmIzM0OyxcbiAzMTM6XHRcdFx0LmRhdGEgPSBcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0xBTjk2NDZdXG4gMzE0Olx0XHR9LFxuIDMxNTpcdFx0e30sXG4gMzE2Olx0fTtcbiAzMTc6XHRNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBrc3pfZHRfaWRzKTtcbiAzMTg6XHRcbiAzMTk6XHRzdGF0aWMgY29uc3Qgc3RydWN0IHNwaV9kZXZpY2VfaWQga3N6X3NwaV9pZHNbXSA9IHtcbiAzMjA6XHRcdHsgXCYjMzQ7a3N6ODQ2M1wmIzM0OyB9LFxuIDMyMTpcdFx0eyBcJiMzNDtrc3o4NzY1XCYjMzQ7IH0sXG4gMzIyOlx0XHR7IFwmIzM0O2tzejg3OTRcJiMzNDsgfSxcbiAzMjM6XHRcdHsgXCYjMzQ7a3N6ODc5NVwmIzM0OyB9LFxuIDMyNDpcdFx0eyBcJiMzNDtrc3o4ODYzXCYjMzQ7IH0sXG4gMzI1Olx0XHR7IFwmIzM0O2tzejg4NjRcJiMzNDsgfSxcbiAzMjY6XHRcdHsgXCYjMzQ7a3N6ODg3M1wmIzM0OyB9LFxuIDMyNzpcdFx0eyBcJiMzNDtrc3o4ODk1XCYjMzQ7IH0sXG4gMzI4Olx0XHR7IFwmIzM0O2tzejk0NzdcJiMzNDsgfSxcbiAzMjk6XHRcdHsgXCYjMzQ7a3N6OTg5NlwmIzM0OyB9LFxuIDMzMDpcdFx0eyBcJiMzNDtrc3o5ODk3XCYjMzQ7IH0sXG4gMzMxOlx0XHR7IFwmIzM0O2tzejk4OTNcJiMzNDsgfSxcbiAzMzI6XHRcdHsgXCYjMzQ7a3N6OTU2M1wmIzM0OyB9LFxuIDMzMzpcdFx0eyBcJiMzNDtrc3o4NTYzXCYjMzQ7IH0sXG4gMzM0Olx0XHR7IFwmIzM0O2tzejg1NjdcJiMzNDsgfSxcbiAzMzU6XHRcdHsgXCYjMzQ7a3N6OTU2N1wmIzM0OyB9LFxuIDMzNjpcdFx0eyBcJiMzNDtsYW45MzcwXCYjMzQ7IH0sXG4gMzM3Olx0XHR7IFwmIzM0O2xhbjkzNzFcJiMzNDsgfSxcbiAzMzg6XHRcdHsgXCYjMzQ7bGFuOTM3MlwmIzM0OyB9LFxuIDMzOTpcdFx0eyBcJiMzNDtsYW45MzczXCYjMzQ7IH0sXG4gMzQwOlx0XHR7IFwmIzM0O2xhbjkzNzRcJiMzNDsgfSxcbiAzNDE6XHRcdHsgXCYjMzQ7bGFuOTY0NlwmIzM0OyB9LFxuIDM0MjpcdFx0eyB9LFxuIDM0MzpcdH07XG4gMzQ0Olx0TU9EVUxFX0RFVklDRV9UQUJMRShzcGksIGtzel9zcGlfaWRzKTtcbiAzNDU6XHRcbiAzNDY6XHRzdGF0aWMgREVGSU5FX1NJTVBMRV9ERVZfUE1fT1BTKGtzel9zcGlfcG1fb3BzLFxuIDM0NzpcdFx0XHRcdFx0a3N6X3N3aXRjaF9zdXNwZW5kLCBrc3pfc3dpdGNoX3Jlc3VtZSk7XG4gMzQ4Olx0XG4gMzQ5Olx0c3RhdGljIHN0cnVjdCBzcGlfZHJpdmVyIGtzel9zcGlfZHJpdmVyID0ge1xuIDM1MDpcdFx0LmRyaXZlciA9IHtcbiAzNTE6XHRcdFx0Lm5hbWVcdD0gXCYjMzQ7a3N6LXN3aXRjaFwmIzM0OyxcbiAzNTI6XHRcdFx0Lm9mX21hdGNoX3RhYmxlID0ga3N6X2R0X2lkcyxcbiAzNTM6XHRcdFx0LnBtID0gXHUwMDI2a3N6X3NwaV9wbV9vcHMsXG4gMzU0Olx0XHR9LFxuIDM1NTpcdFx0LmlkX3RhYmxlID0ga3N6X3NwaV9pZHMsXG4gMzU2Olx0XHQucHJvYmVcdD0ga3N6X3NwaV9wcm9iZSxcbiAzNTc6XHRcdC5yZW1vdmVcdD0ga3N6X3NwaV9yZW1vdmUsXG4gMzU4Olx0XHQuc2h1dGRvd24gPSBrc3pfc3BpX3NodXRkb3duLFxuIDM1OTpcdH07XG4gMzYwOlx0XG4gMzYxOlx0bW9kdWxlX3NwaV9kcml2ZXIoa3N6X3NwaV9kcml2ZXIpO1xuIDM2MjpcdFxuIDM2MzpcdE1PRFVMRV9BTElBUyhcJiMzNDtzcGk6bGFuOTM3eFwmIzM0Oyk7XG4gMzY0Olx0TU9EVUxFX0FVVEhPUihcJiMzNDtUcmlzdHJhbSBIYSBcdTAwM2NUcmlzdHJhbS5IYUBtaWNyb2NoaXAuY29tXHUwMDNlXCYjMzQ7KTtcbiAzNjU6XHRNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7TWljcm9jaGlwIGtzeiBTZXJpZXMgU3dpdGNoIFNQSSBEcml2ZXJcJiMzNDspO1xuIDM2NjpcdE1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA1OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2OTYwCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBga3N6X3NwaV9wcm9iZWAgZnVuY3Rpb24gYW5kIHNlZSB3aGF0IGl0JiMzOTtzIGFsbCBhYm91dC4gQXMgYW4gZXhwZXJ0IGluIG15IGZpZWxkLCBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIGEgZmV3IHRoaW5ncywgYmFzZWQgb24gdGhlIG5hbWluZyBjb252ZW50aW9uIGFuZCB0aGUgY29udGV4dCBvZiBTUEkgcHJvYmluZy4gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyB0byBiZSB0aGUgY29yZSBpbml0aWFsaXphdGlvbiBhbmQgZGV0ZWN0aW9uIHJvdXRpbmUgZm9yIHRoZSBzcGVjaWZpYyBTUEkgZGV2aWNlLCBsaWtlbHkgaGFuZGxpbmcgaGFyZHdhcmUgc2V0dXAgYW5kIGRyaXZlciBiaW5kaW5nLiBUaGUgbmFtZSAmIzM0O3Byb2JlJiMzNDsgaXRzZWxmIGltcGxpZXMgYSBwcm9jZXNzIG9mIGRpc2NvdmVyeSBhbmQgY29uZmlndXJhdGlvbiwgc28gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYWN0aW9ucyBsaWtlOgoKKiAgICoqRGV2aWNlIElkZW50aWZpY2F0aW9uOioqIFRoZSBmdW5jdGlvbiB3aWxsIGxpa2VseSBzdGFydCBieSBpZGVudGlmeWluZyB0aGUgZGV2aWNlLCBwb3RlbnRpYWxseSB0aHJvdWdoIGEgY2hpcCBJRCByZWFkIG9yIGEgc3BlY2lmaWMgcmVnaXN0ZXIgaW50ZXJyb2dhdGlvbiBvdmVyIHRoZSBTUEkgYnVzLiBJJiMzOTtsbCBiZSB3YXRjaGluZyB0byBzZWUgaG93IGl0IGhhbmRsZXMgZGlmZmVyZW50IGRldmljZSByZXZpc2lvbnMgb3IgdmFyaWFudHMuIEFueSBlcnJvciBoYW5kbGluZyByZWxhdGVkIHRvIGRldmljZSBpZGVudGlmaWNhdGlvbiB3aWxsIGJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZy4KKiAgICoqUmVzb3VyY2UgQWxsb2NhdGlvbjoqKiBJJiMzOTttIGd1ZXNzaW5nIGl0IHdpbGwgYWxsb2NhdGUgbmVjZXNzYXJ5IHJlc291cmNlcywgc3VjaCBhcyBtZW1vcnkgYnVmZmVycyBmb3IgU1BJIHRyYW5zYWN0aW9ucyBvciBpbnRlcnJ1cHQgcmVxdWVzdCBsaW5lcywgaWYgYXBwbGljYWJsZS4gR29vZCByZXNvdXJjZSBtYW5hZ2VtZW50IGlzIGtleSwgc28gSSYjMzk7bGwgYmUgc2NydXRpbml6aW5nIHRoaXMgcGFydC4KKiAgICoqRHJpdmVyIEJpbmRpbmc6KiogVGhlcmUgd2lsbCBiZSBzdGVwcyB0byBiaW5kIHRoZSBkZXZpY2UgdG8gdGhlIGRyaXZlciYjMzk7cyBkYXRhIHN0cnVjdHVyZXMuIFRoaXMgcHJvYmFibHkgaW52b2x2ZXMgc2V0dGluZyB1cCB0aGUgZGV2aWNlJiMzOTtzIHByaXZhdGUgZGF0YSwgYXNzb2NpYXRpbmcgaXQgd2l0aCB0aGUgU1BJIGRldmljZSBzdHJ1Y3R1cmUgYW5kIHJlZ2lzdGVyaW5nIGl0IHdpdGhpbiB0aGUgTGludXgga2VybmVsIGZyYW1ld29yay4KKiAgICoqSW5pdGlhbGl6YXRpb246KiogSSYjMzk7bSBhc3N1bWluZyB0aGF0IGl0IHdpbGwgaW5pdGlhbGl6ZSB0aGUgZGV2aWNlIGZvciBvcGVyYXRpb24sIHdoaWNoIGNvdWxkIG1lYW4gc2VuZGluZyBjb25maWd1cmF0aW9uIGNvbW1hbmRzIG9yIHNldHRpbmcgdXAgb3BlcmF0aW9uYWwgbW9kZXMgdmlhIHRoZSBTUEkgYnVzLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGUgc3BlY2lmaWMgc2VxdWVuY2Ugb2YgU1BJIHRyYW5zZmVycyBhbmQgYW55IGRlbGF5cyBpbnZvbHZlZCwgYXMgdGltaW5nIGlzIGNydWNpYWwgZm9yIFNQSSBjb21tdW5pY2F0aW9uLgoqICAgKipFcnJvciBIYW5kbGluZzoqKiBBIHJvYnVzdCBgcHJvYmVgIGZ1bmN0aW9uIG5lZWRzIHNvbGlkIGVycm9yIGhhbmRsaW5nLiBJJiMzOTtsbCBiZSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGhvdyBpdCBkZWFscyB3aXRoIHBvdGVudGlhbCBpc3N1ZXMgbGlrZSBjb21tdW5pY2F0aW9uIGZhaWx1cmVzLCBpbnZhbGlkIGRldmljZSByZXNwb25zZXMsIG9yIHJlc291cmNlIGFsbG9jYXRpb24gZXJyb3JzLiBUaGUgcXVhbGl0eSBvZiBlcnJvciByZXBvcnRpbmcsIGxvZ2dpbmcsIGFuZCByZWNvdmVyeSB3aWxsIGJlIGNyaXRpY2FsIGluIGEgcmVhbC13b3JsZCBzY2VuYXJpby4KKiAgICoqT3B0aW9uYWwgSGFyZHdhcmUgQ2hlY2tzOioqIEl0IGlzIGFsc28gcGxhdXNpYmxlIGl0IGluY2x1ZGVzIHNvbWUgYmFzaWMgaGVhbHRoIGNoZWNrcyBhbmQgdmFsaWRhdGlvbiB0aGF0IGhhcmR3YXJlIGlzIGluIGEgd29ya2luZyBzdGF0ZS4KCkVzc2VudGlhbGx5LCBJJiMzOTttIGV4cGVjdGluZyB0aGlzIGBrc3pfc3BpX3Byb2JlYCBmdW5jdGlvbiB0byBiZSB0aGUgZ2F0ZXdheSBmb3IgdGhlIGRldmljZSYjMzk7cyBpbnRlZ3JhdGlvbiBpbnRvIHRoZSBzeXN0ZW0uIE15IGV4cGVydGlzZSB3aWxsIGFsbG93IG1lIHRvIHF1aWNrbHkgZXZhbHVhdGUgaXRzIHF1YWxpdHksIGVmZmljaWVuY3ksIGFuZCBvdmVyYWxsIGFwcHJvYWNoIHRvIFNQSSBkZXZpY2UgbWFuYWdlbWVudC4gSSYjMzk7bSByZWFkeSB0byBkaWcgaW4gYW5kIHVuZGVyc3RhbmQgaG93IHRoaXMgZnVuY3Rpb24gY29udHJpYnV0ZXMgdG8gdGhlIGdyZWF0ZXIgZHJpdmVyIGZyYW1ld29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDU6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEzNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTM1Olx0XHRcdCAgICAgS1NaODQ2M19TUElfQUREUl9BTElHTik7XG4gMTM2Olx0XG4gMTM3Olx0c3RhdGljIGludCBrc3pfc3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4gMTM4Olx0e1xuIDEzOTpcdFx0Y29uc3Qgc3RydWN0IHJlZ21hcF9jb25maWcgKnJlZ21hcF9jb25maWc7XG4gMTQwOlx0XHRjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSAqY2hpcDtcbiAxNDE6XHRcdHN0cnVjdCBkZXZpY2UgKmRkZXYgPSBcdTAwMjZzcGktXHUwMDNlZGV2O1xuIDE0MjpcdFx0c3RydWN0IHJlZ21hcF9jb25maWcgcmM7XG4gMTQzOlx0XHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2O1xuIDE0NDpcdFx0aW50IGksIHJldCA9IDA7XG4gMTQ1Olx0XG4gMTQ2Olx0XHRjaGlwID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRkZXYpO1xuIDE0NzpcdFx0aWYgKCFjaGlwKVxuIDE0ODpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAxNDk6XHRcbiAxNTA6XHRcdGRldiA9IGtzel9zd2l0Y2hfYWxsb2MoXHUwMDI2c3BpLVx1MDAzZWRldiwgY2hpcCwgc3BpKTtcbiAxNTE6XHRcdGlmICghZGV2KVxuIDE1MjpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAxNTM6XHRcbiAxNTQ6XHRcdC8qIFNhdmUgY2hpcCBpZCB0byBkbyBzcGVjaWFsIGluaXRpYWxpemF0aW9uIHdoZW4gcHJvYmluZy4gKi9cbiAxNTU6XHRcdGRldi1cdTAwM2VjaGlwX2lkID0gY2hpcC1cdTAwM2VjaGlwX2lkO1xuIDE1NjpcdFx0aWYgKGNoaXAtXHUwMDNlY2hpcF9pZCA9PSBLU1o4OFgzX0NISVBfSUQpXG4gMTU3Olx0XHRcdHJlZ21hcF9jb25maWcgPSBrc3o4ODYzX3JlZ21hcF9jb25maWc7XG4gMTU4Olx0XHRlbHNlIGlmIChjaGlwLVx1MDAzZWNoaXBfaWQgPT0gS1NaODQ2M19DSElQX0lEKVxuIDE1OTpcdFx0XHRyZWdtYXBfY29uZmlnID0ga3N6ODQ2M19yZWdtYXBfY29uZmlnO1xuIDE2MDpcdFx0ZWxzZSBpZiAoY2hpcC1cdTAwM2VjaGlwX2lkID09IEtTWjg3OTVfQ0hJUF9JRCB8fFxuIDE2MTpcdFx0XHQgY2hpcC1cdTAwM2VjaGlwX2lkID09IEtTWjg3OTRfQ0hJUF9JRCB8fFxuIDE2MjpcdFx0XHQgY2hpcC1cdTAwM2VjaGlwX2lkID09IEtTWjg3NjVfQ0hJUF9JRClcbiAxNjM6XHRcdFx0cmVnbWFwX2NvbmZpZyA9IGtzejg3OTVfcmVnbWFwX2NvbmZpZztcbiAxNjQ6XHRcdGVsc2UgaWYgKGNoaXAtXHUwMDNlY2hpcF9pZCA9PSBLU1o4ODk1X0NISVBfSUQgfHxcbiAxNjU6XHRcdFx0IGNoaXAtXHUwMDNlY2hpcF9pZCA9PSBLU1o4ODY0X0NISVBfSUQpXG4gMTY2Olx0XHRcdHJlZ21hcF9jb25maWcgPSBrc3o4ODYzX3JlZ21hcF9jb25maWc7XG4gMTY3Olx0XHRlbHNlXG4gMTY4Olx0XHRcdHJlZ21hcF9jb25maWcgPSBrc3o5NDc3X3JlZ21hcF9jb25maWc7XG4gMTY5Olx0XG4gMTcwOlx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBfX0tTWl9OVU1fUkVHTUFQUzsgaSYjNDM7JiM0MzspIHtcbiAxNzE6XHRcdFx0cmMgPSByZWdtYXBfY29uZmlnW2ldO1xuIDE3MjpcdFx0XHRyYy5sb2NrX2FyZyA9IFx1MDAyNmRldi1cdTAwM2VyZWdtYXBfbXV0ZXg7XG4gMTczOlx0XHRcdHJjLndyX3RhYmxlID0gY2hpcC1cdTAwM2V3cl90YWJsZTtcbiAxNzQ6XHRcdFx0cmMucmRfdGFibGUgPSBjaGlwLVx1MDAzZXJkX3RhYmxlO1xuIDE3NTpcdFx0XHRkZXYtXHUwMDNlcmVnbWFwW2ldID0gZGV2bV9yZWdtYXBfaW5pdF9zcGkoc3BpLCBcdTAwMjZyYyk7XG4gMTc2Olx0XG4gMTc3Olx0XHRcdGlmIChJU19FUlIoZGV2LVx1MDAzZXJlZ21hcFtpXSkpIHtcbiAxNzg6XHRcdFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShcdTAwMjZzcGktXHUwMDNlZGV2LCBQVFJfRVJSKGRldi1cdTAwM2VyZWdtYXBbaV0pLFxuIDE3OTpcdFx0XHRcdFx0XHQgICAgIFwmIzM0O0ZhaWxlZCB0byBpbml0aWFsaXplIHJlZ21hcCVpXFxuXCYjMzQ7LFxuIDE4MDpcdFx0XHRcdFx0XHQgICAgIHJlZ21hcF9jb25maWdbaV0udmFsX2JpdHMpO1xuIDE4MTpcdFx0XHR9XG4gMTgyOlx0XHR9XG4gMTgzOlx0XG4gMTg0Olx0XHRpZiAoc3BpLVx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhKVxuIDE4NTpcdFx0XHRkZXYtXHUwMDNlcGRhdGEgPSBzcGktXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGE7XG4gMTg2Olx0XG4gMTg3Olx0XHQvKiBzZXR1cCBzcGkgKi9cbiAxODg6XHRcdHNwaS1cdTAwM2Vtb2RlID0gU1BJX01PREVfMztcbiAxODk6XHRcdHJldCA9IHNwaV9zZXR1cChzcGkpO1xuIDE5MDpcdFx0aWYgKHJldClcbiAxOTE6XHRcdFx0cmV0dXJuIHJldDtcbiAxOTI6XHRcbiAxOTM6XHRcdGRldi1cdTAwM2VpcnEgPSBzcGktXHUwMDNlaXJxO1xuIDE5NDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwNToyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODUzOAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYnJlYWtpbmcgZG93biB0aGlzIGNvZGUgc25pcHBldDoKCioqRGVidWdnaW5nIENoaXAgSWRlbnRpZmljYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYml0IG9mIGNvZGUgYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGlzIGNoZWNrOiBgY2hpcCA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZGV2KTsgaWYgKCFjaGlwKSByZXR1cm4gLUVJTlZBTDtgLiBUaGlzIGlzIHN0YW5kYXJkIHByYWN0aWNlIGluIGRldmljZSBkcml2ZXJzIOKAkyBnZXQgdGhlIG1hdGNoaW5nIGRhdGEgZm9yIHRoZSBkZXZpY2UsIGFuZCBiYWlsIG91dCBpZiB3ZSBkb24mIzM5O3QgaGF2ZSBhIHZhbGlkIG1hdGNoLiBObyBzdXJwcmlzZXMgdGhlcmUuIEJ1dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgKmhvdyogdGhlIGBjaGlwYCBzdHJ1Y3R1cmUgaXMgcG9wdWxhdGVkLiBXaGVyZSBkb2VzIGBkZXYtJmd0O2NoaXBfaWRgIGNvbWUgZnJvbSwgc2luY2UgaXQgaXMgbGlrZWx5IHRoYXQgdGhlIGBjaGlwYCB2YXJpYWJsZSBjb250YWlucyBpbmZvcm1hdGlvbiB0aGF0IGluZGljYXRlcyB0aGUgc3BlY2lmaWMgdHlwZSBvZiBzd2l0Y2g/CgpNeSBuZXh0IHN0ZXAgaXMgdG8gdHJhY2UgYmFjayB0aGUgb3JpZ2luIG9mIHRoYXQgY2hpcCBJRC4gSSYjMzk7bSBnb2luZyB0byBoZWFkIGRpcmVjdGx5IHRvIHRoZSBga3N6X3N3aXRjaF9yZWdpc3RlcmAgYW5kIGBrc3pfc3dpdGNoX2RldGVjdGAgZnVuY3Rpb25zLCB3aGljaCwgZ2l2ZW4gdGhlIGNvbnRleHQsIEkmIzM5O20gYmV0dGluZyByZXNpZGUgaW4gYGtzel9jb21tb24uY2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNydWNpYWwgY29udGV4dCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyBgY2hpcGAgaXMgZGV0ZXJtaW5lZCwgd2hhdCBpdHMgY29udGVudHMgYXJlIGFuZCB3aGF0IGlzIGV4cGVjdGVkIG9mIG1lIGdvaW5nIGZvcndhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA1OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2tzel9zd2l0Y2hfZGV0ZWN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yOTM2PXZvaWQga3N6X3BoeWxpbmtfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yOTQ3LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6Mjk0ODpzdGF0aWMgaW50IGtzel9zd2l0Y2hfZGV0ZWN0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yOTQ5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0zOTUyPWludCBrc3pfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzk4OS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjM5OTA6XHRyZXQgPSBrc3pfc3dpdGNoX2RldGVjdChkZXYpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzk5MS1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA1OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MTU2CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEludmVzdGlnYXRpb24gaW50byBEU0EgU3dpdGNoIERyaXZlcnMqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byBob3cgRFNBIHN3aXRjaCBkcml2ZXJzIGZ1bmN0aW9uIHdpdGhpbiB0aGUga2VybmVsLiBNeSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGRyaXZlcnMgaW50ZXJmYWNlIHdpdGggdGhlIGhhcmR3YXJlLCBzcGVjaWZpY2FsbHkgdGhlIGV0aGVybmV0IHN3aXRjaCBjaGlwcyB3ZSBjb21tb25seSBzZWUsIGxpa2UgdGhlIG9uZXMgZnJvbSBNYXJ2ZWxsLCBNaWNyb2NoaXAgS1NaLCBCcm9hZGNvbSBTdGFyZmlnaHRlciwgYW5kIG90aGVycy4gVGhlc2UgY2hpcHMsIGFzIEkga25vdyB3ZWxsLCBhcmUgdHlwaWNhbGx5IGNvbm5lY3RlZCB0byB0aGUgcGh5c2ljYWwgZXRoZXJuZXQgaW50ZXJmYWNlcyB2aWEgcHJvdG9jb2xzIGxpa2UgTURJTywgU1BJLCBvciBJMkMgb24gZW1iZWRkZWQgc3lzdGVtcyBvciBkZWRpY2F0ZWQgaGFyZHdhcmUuCgpOb3csIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUmIzM5O3MgYW55IHZpcnR1YWwgZW11bGF0aW9uIGF2YWlsYWJsZSBmb3IgYSBzcGVjaWZpYyBjaGlwLCBsZXQmIzM5O3Mgc2F5IGEgTWljcm9jaGlwIEtTWiBzd2l0Y2gsIGZvciB0ZXN0aW5nIHB1cnBvc2VzLiBJZGVhbGx5LCBzb21ldGhpbmcgbGlrZSBRRU1VIHdvdWxkIGJlIHBlcmZlY3QuIEkmIzM5O20gY2hlY2tpbmcgc3BlY2lmaWNhbGx5IGZvciBzb21ldGhpbmcgbGlrZSBhIEtTWjk4OTcgb3IgS1NaOTg5N1MuIFNhZGx5LCB0aGUgcXVpY2sgYW5zd2VyIGlzIG5vLCBRRU1VIGRvZXNuJiMzOTt0IHNlZW0gdG8gZW11bGF0ZSBhbnkgS1NaIHN3aXRjaGVzLgoKQWxyaWdodCwgc28gdGhlIG5leHQgdGhpbmcgSSYjMzk7bSBjb25zaWRlcmluZyBpcyB3aGV0aGVyIEkgY2FuIGNyZWF0ZSBhIERTQSBzd2l0Y2ggZm9yIHRlc3RpbmcgaW4gdXNlciBzcGFjZSB3aXRob3V0IG5lZWRpbmcgdGhlIHBoeXNpY2FsIGhhcmR3YXJlLiBJcyB0aGVyZSBhIHZpcnR1YWwgRFNBIG9yIG1vY2sgRFNBIGNvbXBvbmVudCB3aXRoaW4gdGhlIGtlcm5lbCB0aGF0IGNvdWxkIGZhY2lsaXRhdGUgdGhpcz8gVG8gZ2V0IHN0YXJ0ZWQsIEkmIzM5O20gZ29pbmcgdG8gcnVuIGEgYGdyZXBgIGZvciBEU0EgZHJpdmVycyB0byBzZWUgd2hhdCYjMzk7cyBvdXQgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA1OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RzYV9yZWdpc3Rlcl9zd2l0Y2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM9MzMwOD1pbnQgYjUzX3N3aXRjaF9yZWdpc3RlcihzdHJ1Y3QgYjUzX2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTMzMjYtXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzozMzI3Olx0cmV0dXJuIGRzYV9yZWdpc3Rlcl9zd2l0Y2goZGV2LVx1MDAzZWRzKTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTMzMjgtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTU3PXN0cnVjdCBkc2FfbG9vcF9wZGF0YSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1ODpcdC8qIE11c3QgYmUgZmlyc3QsIHN1Y2ggdGhhdCBkc2FfcmVnaXN0ZXJfc3dpdGNoKCkgY2FuIGFjY2VzcyB0aGlzXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01OS1cdCAqIHdpdGhvdXQgZ29yeSBwb2ludGVyIG1hbmlwdWxhdGlvbnNcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz0zNTU9c3RhdGljIGludCBkc2FfbG9vcF9kcnZfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4OC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM4OTpcdHJldCA9IGRzYV9yZWdpc3Rlcl9zd2l0Y2goZHMpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzkwLVx0aWYgKCFyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmM9MTkzMz1zdGF0aWMgaW50IGhlbGxjcmVla19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jLTIwMjYtXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYzoyMDI3Olx0cmV0ID0gZHNhX3JlZ2lzdGVyX3N3aXRjaChoZWxsY3JlZWstXHUwMDNlZHMpO1xuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmMtMjAyOC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM9NzQ2PXN0YXRpYyBpbnQga3M4OTk1X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTgyMy1cbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYzo4MjQ6XHRlcnIgPSBkc2FfcmVnaXN0ZXJfc3dpdGNoKGtzLVx1MDAzZWRzKTtcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy04MjUtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYz0xNDA0PXN0YXRpYyBpbnQgbGFuOTMwM19yZWdpc3Rlcl9zd2l0Y2goc3RydWN0IGxhbjkzMDMgKmNoaXApXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTE0MTYtXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTQxNzpcdHJldHVybiBkc2FfcmVnaXN0ZXJfc3dpdGNoKGNoaXAtXHUwMDNlZHMpO1xuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTE0MTgtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jPTE2Nzg9aW50IGdzd2lwX3Byb2JlX2NvbW1vbihzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdiwgdTMyIHZlcnNpb24pXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTcwMy1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE3MDQ6XHRlcnIgPSBkc2FfcmVnaXN0ZXJfc3dpdGNoKHByaXYtXHUwMDNlZHMpO1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTcwNS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9Mzk1Mj1pbnQga3N6X3N3aXRjaF9yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTQwODUtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzo0MDg2Olx0cmV0ID0gZHNhX3JlZ2lzdGVyX3N3aXRjaChkZXYtXHUwMDNlZHMpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtNDA4Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9MTU1PW10NzUzMF9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjE3LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjE4Olx0cmV0dXJuIGRzYV9yZWdpc3Rlcl9zd2l0Y2gocHJpdi1cdTAwM2Vkcyk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMTktfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jPTMwPW10Nzk4OF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTYzLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6NjQ6XHRyZXR1cm4gZHNhX3JlZ2lzdGVyX3N3aXRjaChwcml2LVx1MDAzZWRzKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTY1LX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NjI4LmM9NTY1PXN0YXRpYyBpbnQgbXQ3NjI4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzYyOC5jLTYwNi1cbmRyaXZlcnMvbmV0L2RzYS9tdDc2MjguYzo2MDc6XHRyZXR1cm4gZHNhX3JlZ2lzdGVyX3N3aXRjaChkcyk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NjI4LmMtNjA4LX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2MDYwLmM9MzA0PXN0YXRpYyBpbnQgbXY4OGU2MDYwX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2MDYwLmMtMzM1LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNjA2MC5jOjMzNjpcdHJldHVybiBkc2FfcmVnaXN0ZXJfc3dpdGNoKGRzKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTYwNjAuYy0zMzctfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTM5ODA9c3RhdGljIGludCBtdjg4ZTZ4eHhfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5OTUtXHQgKiBkZXBlbmRzIG9uIHRoZSBwaHlzaWNhbCBzd2l0Y2ggdG9wb2xvZ3kuIFdlIG5lZWQgdG8gbGV0IERTQSBmaWd1cmVcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM5OTY6XHQgKiB0aGF0IG91dCBhbmQgdGhlcmVmb3JlIHdlIGNhbm5vdCBzZXQgdGhpcyBhdCBkc2FfcmVnaXN0ZXJfc3dpdGNoKClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5OTctXHQgKiB0aW1lLlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTcyNTE9c3RhdGljIGludCBtdjg4ZTZ4eHhfcmVnaXN0ZXJfc3dpdGNoKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03Mjc2LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzI3NzpcdHJldHVybiBkc2FfcmVnaXN0ZXJfc3dpdGNoKGRzKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcyNzgtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jPTIwOTE9c3RhdGljIGludCBteGw4NjJ4eF9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmMtMjEzMC1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jOjIxMzE6XHRlcnIgPSBkc2FfcmVnaXN0ZXJfc3dpdGNoKGRzKTtcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jLTIxMzItXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmM9MjQzNT1zdGF0aWMgaW50IG5ldGNfc3dpdGNoX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTI0NzgtXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzoyNDc5Olx0ZXJyID0gZHNhX3JlZ2lzdGVyX3N3aXRjaChkcyk7XG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy0yNDgwLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmM9MjM5MD1pbnQgZmVsaXhfcmVnaXN0ZXJfc3dpdGNoKHN0cnVjdCBkZXZpY2UgKmRldiwgcmVzb3VyY2Vfc2l6ZV90IHN3aXRjaF9iYXNlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYy0yNDI4LVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jOjI0Mjk6XHRlcnIgPSBkc2FfcmVnaXN0ZXJfc3dpdGNoKGRzKTtcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYy0yNDMwLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jPTEwMzE9c3RhdGljIGludCBhcjkzMzFfc3dfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmMtMTA3OC1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmM6MTA3OTpcdHJldCA9IGRzYV9yZWdpc3Rlcl9zd2l0Y2goZHMpO1xuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYy0xMDgwLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYz0yMDU5PXFjYThrX3N3X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYy0yMTIwLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM6MjEyMTpcdHJldHVybiBkc2FfcmVnaXN0ZXJfc3dpdGNoKHByaXYtXHUwMDNlZHMpO1xuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtMjEyMi19XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jPTIzNT1pbnQgcnRsODN4eF9yZWdpc3Rlcl9zd2l0Y2goc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmMtMjUxLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jOjI1MjpcdHJldCA9IGRzYV9yZWdpc3Rlcl9zd2l0Y2goZHMpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jLTI1My1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jPTEyMDc9c3RhdGljIGludCBhNXBzd19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmMtMTI2Mi1cbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmM6MTI2MzpcdHJldCA9IGRzYV9yZWdpc3Rlcl9zd2l0Y2goZHMpO1xuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYy0xMjY0LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jPTMyMzc9c3RhdGljIGludCBzamExMTA1X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMzM0MC1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jOjMzNDE6XHRyZXR1cm4gZHNhX3JlZ2lzdGVyX3N3aXRjaChwcml2LVx1MDAzZWRzKTtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jLTMzNDItfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS92aXRlc3NlLXZzYzczeHgtY29yZS5jPTIzMzM9aW50IHZzYzczeHhfcHJvYmUoc3RydWN0IHZzYzczeHggKnZzYylcbi0tXG5kcml2ZXJzL25ldC9kc2Evdml0ZXNzZS12c2M3M3h4LWNvcmUuYy0yMzg0LVx0dnNjLVx1MDAzZWRzLVx1MDAzZXBoeWxpbmtfbWFjX29wcyA9IFx1MDAyNnZzYzczeHhfcGh5bGlua19tYWNfb3BzO1xuZHJpdmVycy9uZXQvZHNhL3ZpdGVzc2UtdnNjNzN4eC1jb3JlLmM6MjM4NTpcdHJldCA9IGRzYV9yZWdpc3Rlcl9zd2l0Y2godnNjLVx1MDAzZWRzKTtcbmRyaXZlcnMvbmV0L2RzYS92aXRlc3NlLXZzYzczeHgtY29yZS5jLTIzODYtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3hyczcwMHgveHJzNzAweC5jPTgxOD1pbnQgeHJzNzAweF9zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IHhyczcwMHggKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3hyczcwMHgveHJzNzAweC5jLTg0MS1cbmRyaXZlcnMvbmV0L2RzYS94cnM3MDB4L3hyczcwMHguYzo4NDI6XHRyZXR1cm4gZHNhX3JlZ2lzdGVyX3N3aXRjaChwcml2LVx1MDAzZWRzKTtcbmRyaXZlcnMvbmV0L2RzYS94cnM3MDB4L3hyczcwMHguYy04NDMtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz00OTE0PXN0YXRpYyBpbnQgeXQ5MjF4X21kaW9fcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00OTU4LVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjQ5NTk6XHRyZXR1cm4gZHNhX3JlZ2lzdGVyX3N3aXRjaChkcyk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNDk2MC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA1OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMDAyCgkJCQkJCQlvdXRwdXQ6IDE2OQoJCQkJCQkJdGhvdWdodHM6IDU5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmcgQW5hbHlzaXM6IE1pY3JvY2hpcCBLU1ogU3dpdGNoIERyaXZlcioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGUgYGRzYV9sb29wLmNgIGRyaXZlciBpcyBhIG1vY2sgZHJpdmVyLCBmb3IgRFNBIHRlc3Rpbmcgb25seSwgYW5kIG5vdCByZWxldmFudCBoZXJlLiBUaGUgcmVhbCBmb2N1cyBpcyBvbiB0aGUgTWljcm9jaGlwIEtTWiBzd2l0Y2ggZHJpdmVyIGxvY2F0ZWQgaW4gYGRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvYC4gTXkgdGFzayBpcyB0byBkZXRlcm1pbmUgaWYgdGhpcyBjb2RlIGlzIGZ1enphYmxlIGJ5IHN5emthbGxlci4KCkZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIHRoaXMgZHJpdmVyIHJlbGllcyBvbiBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0JiMzOTtzIGluYWNjZXNzaWJsZSBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQsIGJlY2F1c2UgdGhhdCB3b3VsZCBtZWFuIGl0JiMzOTtzIG5vdCBmdXp6YWJsZS4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgY3JpdGVyaWEgZm9yICpub3QqIGZ1enppbmcsIHNwZWNpZmljYWxseSAmIzM0O1N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZS4mIzM0OwoKTGV0JiMzOTtzIHZlcmlmeToKCjEuICBNeSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LgoyLiAgVGhlIGNvZGUgaW4gcXVlc3Rpb24gaXMgaW4gYGRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvYCDigJMgc3BlY2lmaWNhbGx5IGBrc3pfY29tbW9uLmNgLCBga3N6X2NvbW1vbi5oYCwgYW5kIGBpbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbWljcm9jaGlwLWtzei5oYC4KMy4gIFRoaXMgY29kZSBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIHRoZSBgS1NaOTg5N1NgIHN3aXRjaCBjaGlwLCBkaXN0aW5ndWlzaGluZyBpdCBmcm9tIG90aGVyIEtTWiBtb2RlbHMgdmlhIGEgcmVnaXN0ZXIgcmVhZCwgYEtTWjk4OTdfUkVHX1BPUlQ3X1hNSUlfQ1RSTF8wYCAoMHg3MzAwKS4KNC4gIENydWNpYWxseSwgdGhpcyBkcml2ZXIgaXMgZGVzaWduZWQgZm9yIE1pY3JvY2hpcCYjMzk7cyAqcGh5c2ljYWwqIEV0aGVybmV0IHN3aXRjaCBjaGlwcywgd2hpY2ggY29ubmVjdCB0aHJvdWdoIFNQSSBvciBJMkMuCjUuICBJbiB0eXBpY2FsIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIGVudmlyb25tZW50cywgdGhlcmUmIzM5O3Mgbm8gTWljcm9jaGlwIEtTWiBzd2l0Y2ggaGFyZHdhcmUgZW11bGF0aW9uIGF2YWlsYWJsZSwgYW5kIEkgY2FuJiMzOTt0IGR5bmFtaWNhbGx5IHByb2JlIG9yIGF0dGFjaCB0aGlzIGhhcmR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgb3IgYSBkZXZpY2UgdHJlZS4KClRoZXJlZm9yZSwgdGhpcyBjb25maXJtcyB0aGF0IHRoZSBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSBpbiBteSBmdXp6aW5nIHNldHVwLiBJJiMzOTttIGNvbmZpZGVudCBhYm91dCB0aGF0LgoKTGV0JiMzOTtzIGNyb3NzLWNoZWNrIGV2ZXJ5dGhpbmcgdG8gYmUgY2VydGFpbi4KCiogICBJcyBgV29ydGhGdXp6aW5nYCBmYWxzZT8gWWVzLgoqICAgVGhlIHJlbGV2YW50IGBFbmFibGVDb25maWdzYCBhcmUgbGlrZWx5IGBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OYCwgYE5FVF9EU0FfTUlDUk9DSElQX0tTWjk0NzdfSTJDYCwgYW5kIGBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfU1BJYCwgb3IgcG9zc2libHkgZW1wdHkuCiogICBgRm9jdXNTeW1ib2xzYCBpcyBlbXB0eSwgd2hpY2ggaXNuJiMzOTt0IGEgZmFjdG9yIGhlcmUuCiogICBNeSByZWFzb25pbmcgaXMgY29uY2lzZTogdGhlIGRyaXZlciBpcyBmb3IgcGh5c2ljYWwgTWljcm9jaGlwIEtTWiBzd2l0Y2hlcyAoaW5jbHVkaW5nIGRldGVjdGluZyB0aGUgS1NaOTg5N1MgdmFyaWFudCkgdGhhdCBpbnRlcmZhY2UgdmlhIFNQSS9JMkMsIHdoaWNoIHJlcXVpcmUgaGFyZHdhcmUgdGhhdCBkb2VzbiYjMzk7dCBleGlzdCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIHRodXMgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIuCgpPa2F5LCBJJiMzOTttIHJlYWR5IHRvIHByZXBhcmUgdGhlIHRvb2wgY2FsbCB0byBgc2V0LXJlc3VsdHNgLiBUaGUgY29kZSBpcyAqbm90KiBmdXp6YWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDU6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT04mIzM0OywKICAgICYjMzQ7TkVUX0RTQV9NSUNST0NISVBfS1NaOTQ3N19JMkMmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9NSUNST0NISVBfS1NaX1NQSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBNaWNyb2NoaXAgS1NaOTg5N1Mgc3dpdGNoIHZhcmlhbnQgdG8gdGhlIE1pY3JvY2hpcCBLU1ogRFNBIHN3aXRjaCBkcml2ZXIgKGtzel9jb21tb24uYykuIFRoaXMgZHJpdmVyIGNvbnRyb2xzIHBoeXNpY2FsIEV0aGVybmV0IHN3aXRjaCBJQ3MgaW50ZXJmYWNlZCB2aWEgU1BJIG9yIEkyQy4gQmVjYXVzZSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSBsYWNrIGVtdWxhdGlvbiBmb3IgdGhlc2UgcGh5c2ljYWwgc3dpdGNoIGNoaXBzLCB0aGUgbW9kaWZpZWQgaGFyZHdhcmUtc3BlY2lmaWMgZGV0ZWN0aW9uIGFuZCBjaGlwIGRhdGEgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OJiMzNDssCiAgICAmIzM0O05FVF9EU0FfTUlDUk9DSElQX0tTWjk0NzdfSTJDJiMzNDssCiAgICAmIzM0O05FVF9EU0FfTUlDUk9DSElQX0tTWl9TUEkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgTWljcm9jaGlwIEtTWjk4OTdTIHN3aXRjaCB2YXJpYW50IHRvIHRoZSBNaWNyb2NoaXAgS1NaIERTQSBzd2l0Y2ggZHJpdmVyIChrc3pfY29tbW9uLmMpLiBUaGlzIGRyaXZlciBjb250cm9scyBwaHlzaWNhbCBFdGhlcm5ldCBzd2l0Y2ggSUNzIGludGVyZmFjZWQgdmlhIFNQSSBvciBJMkMuIEJlY2F1c2Ugc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgbGFjayBlbXVsYXRpb24gZm9yIHRoZXNlIHBoeXNpY2FsIHN3aXRjaCBjaGlwcywgdGhlIG1vZGlmaWVkIGhhcmR3YXJlLXNwZWNpZmljIGRldGVjdGlvbiBhbmQgY2hpcCBkYXRhIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDU6MjE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA1OjE5OjQ3Ljg1NDQ5NzU2M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk2ODcwMTYyNDgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT05cIixcbiAgICBcIk5FVF9EU0FfTUlDUk9DSElQX0tTWjk0NzdfSTJDXCIsXG4gICAgXCJORVRfRFNBX01JQ1JPQ0hJUF9LU1pfU1BJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBNaWNyb2NoaXAgS1NaOTg5N1Mgc3dpdGNoIHZhcmlhbnQgdG8gdGhlIE1pY3JvY2hpcCBLU1ogRFNBIHN3aXRjaCBkcml2ZXIgKGtzel9jb21tb24uYykuIFRoaXMgZHJpdmVyIGNvbnRyb2xzIHBoeXNpY2FsIEV0aGVybmV0IHN3aXRjaCBJQ3MgaW50ZXJmYWNlZCB2aWEgU1BJIG9yIEkyQy4gQmVjYXVzZSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSBsYWNrIGVtdWxhdGlvbiBmb3IgdGhlc2UgcGh5c2ljYWwgc3dpdGNoIGNoaXBzLCB0aGUgbW9kaWZpZWQgaGFyZHdhcmUtc3BlY2lmaWMgZGV0ZWN0aW9uIGFuZCBjaGlwIGRhdGEgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNToxOTo0Ny44NTQ1MDM5MDNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1NjEwMDc2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDIxZTM2YTNiZDI4MWRiYjA0YzM4OWZlNDgyNzM4MmNlMWMzMjFlYjNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBTZXAgNCAwNToxOTo0NyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jXFxuaW5kZXggMWE5ZDZmODNhMDIzMi4uMGJjODA5ZjU4MmJlZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jXFxuQEAgLTE0ODYsNiArMTQ4Niw0MSBAQCBjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSBrc3pfc3dpdGNoX2NoaXBzW10gPSB7XFxuIFxcdFxcdC5nYml0X2NhcGFibGVcXHQ9IHt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlfSxcXG4gXFx0fSxcXG4gXFxuK1xcdFtLU1o5ODk3U10gPSB7XFxuK1xcdFxcdC5jaGlwX2lkID0gS1NaOTg5N1NfQ0hJUF9JRCxcXG4rXFx0XFx0LmRldl9uYW1lID0gXFxcIktTWjk4OTdTXFxcIixcXG4rXFx0XFx0Lm51bV92bGFucyA9IDQwOTYsXFxuK1xcdFxcdC5udW1fYWx1cyA9IDQwOTYsXFxuK1xcdFxcdC5udW1fc3RhdGljcyA9IDE2LFxcbitcXHRcXHQuY3B1X3BvcnRzID0gMHg3RixcXHQvKiBjYW4gYmUgY29uZmlndXJlZCBhcyBjcHUgcG9ydCAqL1xcbitcXHRcXHQucG9ydF9jbnQgPSA3LFxcdFxcdC8qIHRvdGFsIHBoeXNpY2FsIHBvcnQgY291bnQgKi9cXG4rXFx0XFx0LnBvcnRfbmlycXMgPSAyLFxcbitcXHRcXHQubnVtX3R4X3F1ZXVlcyA9IDQsXFxuK1xcdFxcdC5udW1faXBtcyA9IDgsXFxuK1xcdFxcdC5vcHMgPSBcXHUwMDI2a3N6OTQ3N19kZXZfb3BzLFxcbitcXHRcXHQuc3dpdGNoX29wcyA9IFxcdTAwMjZrc3o5NDc3X3N3aXRjaF9vcHMsXFxuK1xcdFxcdC5waHlsaW5rX21hY19vcHMgPSBcXHUwMDI2a3N6OTQ3N19waHlsaW5rX21hY19vcHMsXFxuK1xcdFxcdC5waHlfZXJyYXRhXzk0NzcgPSB0cnVlLFxcbitcXHRcXHQubWliX25hbWVzID0ga3N6OTQ3N19taWJfbmFtZXMsXFxuK1xcdFxcdC5taWJfY250ID0gQVJSQVlfU0laRShrc3o5NDc3X21pYl9uYW1lcyksXFxuK1xcdFxcdC5yZWdfbWliX2NudCA9IE1JQl9DT1VOVEVSX05VTSxcXG4rXFx0XFx0LnJlZ3MgPSBrc3o5NDc3X3JlZ3MsXFxuK1xcdFxcdC5tYXNrcyA9IGtzejk0NzdfbWFza3MsXFxuK1xcdFxcdC5zaGlmdHMgPSBrc3o5NDc3X3NoaWZ0cyxcXG4rXFx0XFx0LnhtaWlfY3RybDAgPSBrc3o5NDc3X3htaWlfY3RybDAsXFxuK1xcdFxcdC54bWlpX2N0cmwxID0ga3N6OTQ3N194bWlpX2N0cmwxLFxcbitcXHRcXHQuc3VwcG9ydHNfbWlpXFx0PSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsXFxuK1xcdFxcdFxcdFxcdCAgIGZhbHNlLCB0cnVlLCBmYWxzZX0sXFxuK1xcdFxcdC5zdXBwb3J0c19ybWlpXFx0PSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsXFxuK1xcdFxcdFxcdFxcdCAgIGZhbHNlLCB0cnVlLCBmYWxzZX0sXFxuK1xcdFxcdC5zdXBwb3J0c19yZ21paSA9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxcXG4rXFx0XFx0XFx0XFx0ICAgZmFsc2UsIHRydWUsIGZhbHNlfSxcXG4rXFx0XFx0LmludGVybmFsX3BoeVxcdD0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsXFxuK1xcdFxcdFxcdFxcdCAgIHRydWUsIGZhbHNlLCBmYWxzZX0sXFxuK1xcdFxcdC5nYml0X2NhcGFibGVcXHQ9IHt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlfSxcXG4rXFx0XFx0LnNnbWlpX3BvcnQgPSA3LFxcbitcXHR9LFxcbitcXG4gXFx0W0tTWjk4OTNdID0ge1xcbiBcXHRcXHQuY2hpcF9pZCA9IEtTWjk4OTNfQ0hJUF9JRCxcXG4gXFx0XFx0LmRldl9uYW1lID0gXFxcIktTWjk4OTNcXFwiLFxcbkBAIC0xODUyLDYgKzE4ODcsMTMgQEAgc3RhdGljIGludCBrc3pfY2hlY2tfZGV2aWNlX2lkKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuIFxcdFxcdGV4cGVjdGVkX2NoaXBfaWQgPSBleHBlY3RlZF9jaGlwX2RhdGEtXFx1MDAzZWNoaXBfaWQ7XFxuIFxcdH1cXG4gXFxuK1xcdC8qIFRoZSBLU1o5ODk3UyBpcyBvbmx5IHRvbGQgYXBhcnQgZnJvbSB0aGUgS1NaOTg5N1IgYXQgcnVuIHRpbWUsIHNvIGFcXG4rXFx0ICogZGV2aWNlIHRyZWUgbmFtaW5nIHRoZSBLU1o5ODk3IG1hdGNoZXMgaXQgYXMgd2VsbC5cXG4rXFx0ICovXFxuK1xcdGlmIChleHBlY3RlZF9jaGlwX2lkID09IEtTWjk4OTdfQ0hJUF9JRCBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgZGV2LVxcdTAwM2VjaGlwX2lkID09IEtTWjk4OTdTX0NISVBfSUQpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4gXFx0aWYgKGV4cGVjdGVkX2NoaXBfaWQgIT0gZGV2LVxcdTAwM2VjaGlwX2lkKSB7XFxuIFxcdFxcdGRldl9lcnIoZGV2LVxcdTAwM2VkZXYsXFxuIFxcdFxcdFxcdFxcXCJEZXZpY2UgdHJlZSBzcGVjaWZpZXMgY2hpcCAlcyBidXQgZm91bmQgJXMsIHBsZWFzZSBmaXggaXQhXFxcXG5cXFwiLFxcbkBAIC0yOTY2LDcgKzMwMDgsNiBAQCBzdGF0aWMgaW50IGtzel9zd2l0Y2hfZGV0ZWN0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuIFxcdFxcdHN3aXRjaCAoaWQzMikge1xcbiBcXHRcXHRjYXNlIEtTWjk0NzdfQ0hJUF9JRDpcXG4gXFx0XFx0Y2FzZSBLU1o5ODk2X0NISVBfSUQ6XFxuLVxcdFxcdGNhc2UgS1NaOTg5N19DSElQX0lEOlxcbiBcXHRcXHRjYXNlIEtTWjk1NjdfQ0hJUF9JRDpcXG4gXFx0XFx0Y2FzZSBLU1o4NTY3X0NISVBfSUQ6XFxuIFxcdFxcdGNhc2UgTEFOOTM3MF9DSElQX0lEOlxcbkBAIC0yOTc5LDYgKzMwMjAsMjMgQEAgc3RhdGljIGludCBrc3pfc3dpdGNoX2RldGVjdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbiBcXHRcXHRcXHRpZiAoZGV2LVxcdTAwM2VjaGlwX2lkICE9IExBTjk2NDZfQ0hJUF9JRClcXG4gXFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VjaGlwX2lkID0gaWQzMjtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdGNhc2UgS1NaOTg5N19DSElQX0lEOlxcbitcXHRcXHRcXHQvKiBPbmx5IHRoZSBLU1o5ODk3UyBoYXMgYW4gU0dNSUkgcG9ydCA3OyB0aGUgS1NaOTg5N1JcXG4rXFx0XFx0XFx0ICogaGFzIGEgc2Vjb25kIFJHTUlJIHBvcnQgaW5zdGVhZC4gU2VlIHRoZSBLU1o5ODk3U1xcbitcXHRcXHRcXHQgKiBkYXRhIHNoZWV0IERTMDAwMDIzOTRDIHNlY3Rpb24gNS4yLjQuMSBhbmQgdGhlXFxuK1xcdFxcdFxcdCAqIEtTWjk4OTdSIGRhdGEgc2hlZXQgRFMwMDAwMjMzMEQgc2VjdGlvbiA1LjIuMy4xLlxcbitcXHRcXHRcXHQgKi9cXG4rXFx0XFx0XFx0cmV0ID0ga3N6X3JlYWQ4KGRldiwgS1NaOTg5N19SRUdfUE9SVDdfWE1JSV9DVFJMXzAsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdTAwMjZpZDQpO1xcbitcXHRcXHRcXHRpZiAocmV0KVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0XFx0XFx0aWYgKGlkNCBcXHUwMDI2IEtTWjk4OTdfUE9SVDdfU0dNSUlfU0VMKVxcbitcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBLU1o5ODk3U19DSElQX0lEO1xcbitcXHRcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdFxcdGRldi1cXHUwMDNlY2hpcF9pZCA9IEtTWjk4OTdfQ0hJUF9JRDtcXG4rXFxuK1xcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRjYXNlIEtTWjk4OTNfQ0hJUF9JRDpcXG4gXFx0XFx0XFx0cmV0ID0ga3N6X3JlYWQ4KGRldiwgUkVHX0NISVBfSUQ0LFxcbiBcXHRcXHRcXHRcXHRcXHRcXHUwMDI2aWQ0KTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmggYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaFxcbmluZGV4IGNiZTk4NDk0NTc4YzMuLjBjZmYzM2RmMDZhNGIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmhcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaFxcbkBAIC0yODQsNiArMjg0LDcgQEAgZW51bSBrc3pfbW9kZWwge1xcbiBcXHRLU1o5NDc3LFxcbiBcXHRLU1o5ODk2LFxcbiBcXHRLU1o5ODk3LFxcbitcXHRLU1o5ODk3UyxcXG4gXFx0S1NaOTg5MyxcXG4gXFx0S1NaOTU2MyxcXG4gXFx0S1NaOTU2NyxcXG5AQCAtODc0LDYgKzg3NSwxMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wga3N6X2lzX3NnbWlpX3BvcnQoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQpXFxuICNkZWZpbmUgU0tVX0lEX0tTWjg1NjNcXHRcXHRcXHQweDNjXFxuICNkZWZpbmUgU0tVX0lEX0tTWjk1NjNcXHRcXHRcXHQweDFjXFxuIFxcbisvKiBLU1o5ODk3IHNwZWNpZmljIHJlZ2lzdGVyOiBwb3J0IDcgWE1JSSBjb250cm9sIDAgKi9cXG4rI2RlZmluZSBLU1o5ODk3X1JFR19QT1JUN19YTUlJX0NUUkxfMFxcdDB4NzMwMFxcbisjZGVmaW5lIEtTWjk4OTdfUE9SVDdfU0dNSUlfU0VMXFx0XFx0QklUKDcpXFxuK1xcbiAvKiBEcml2ZXIgc2V0IHN3aXRjaCBicm9hZGNhc3Qgc3Rvcm0gcHJvdGVjdGlvbiBhdCAxMCUgcmF0ZS4gKi9cXG4gI2RlZmluZSBCUk9BRENBU1RfU1RPUk1fUFJPVF9SQVRFXFx0MTBcXG4gXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9taWNyb2NoaXAta3N6LmggYi9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbWljcm9jaGlwLWtzei5oXFxuaW5kZXggMDI4NzgxYWQ0MDU5My4uZmU4ZGYxNzc0Mjg5YyAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbWljcm9jaGlwLWtzei5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaFxcbkBAIC0zNCw2ICszNCw3IEBAIGVudW0ga3N6X2NoaXBfaWQge1xcbiBcXHRLU1o5NDc3X0NISVBfSUQgPSAweDAwOTQ3NzAwLFxcbiBcXHRLU1o5ODk2X0NISVBfSUQgPSAweDAwOTg5NjAwLFxcbiBcXHRLU1o5ODk3X0NISVBfSUQgPSAweDAwOTg5NzAwLFxcbitcXHRLU1o5ODk3U19DSElQX0lEID0gMHgwMDk4OTcwMSxcXG4gXFx0S1NaOTg5M19DSElQX0lEID0gMHgwMDk4OTMwMCxcXG4gXFx0S1NaOTU2M19DSElQX0lEID0gMHgwMDk1NjMwMCxcXG4gXFx0S1NaODU2N19DSElQX0lEID0gMHgwMDg1NjcwMCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDU6MTk6NDguNDExMjk4NDMxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo5NjMxMzM0MDI0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OXCIsXG4gICAgXCJORVRfRFNBX01JQ1JPQ0hJUF9LU1o5NDc3X0kyQ1wiLFxuICAgIFwiTkVUX0RTQV9NSUNST0NISVBfS1NaX1NQSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBNaWNyb2NoaXAgS1NaOTg5N1Mgc3dpdGNoIHZhcmlhbnQgdG8gdGhlIE1pY3JvY2hpcCBLU1ogRFNBIHN3aXRjaCBkcml2ZXIgKGtzel9jb21tb24uYykuIFRoaXMgZHJpdmVyIGNvbnRyb2xzIHBoeXNpY2FsIEV0aGVybmV0IHN3aXRjaCBJQ3MgaW50ZXJmYWNlZCB2aWEgU1BJIG9yIEkyQy4gQmVjYXVzZSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSBsYWNrIGVtdWxhdGlvbiBmb3IgdGhlc2UgcGh5c2ljYWwgc3dpdGNoIGNoaXBzLCB0aGUgbW9kaWZpZWQgaGFyZHdhcmUtc3BlY2lmaWMgZGV0ZWN0aW9uIGFuZCBjaGlwIGRhdGEgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDIxZTM2YTNiZDI4MWRiYjA0YzM4OWZlNDgyNzM4MmNlMWMzMjFlYjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIFNlcCA0IDA1OjE5OjQ3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uY1xuaW5kZXggMWE5ZDZmODNhMDIzMi4uMGJjODA5ZjU4MmJlZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uY1xuQEAgLTE0ODYsNiArMTQ4Niw0MSBAQCBjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSBrc3pfc3dpdGNoX2NoaXBzW10gPSB7XG4gXHRcdC5nYml0X2NhcGFibGVcdD0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWV9LFxuIFx0fSxcbiBcbitcdFtLU1o5ODk3U10gPSB7XG4rXHRcdC5jaGlwX2lkID0gS1NaOTg5N1NfQ0hJUF9JRCxcbitcdFx0LmRldl9uYW1lID0gXCJLU1o5ODk3U1wiLFxuK1x0XHQubnVtX3ZsYW5zID0gNDA5NixcbitcdFx0Lm51bV9hbHVzID0gNDA5NixcbitcdFx0Lm51bV9zdGF0aWNzID0gMTYsXG4rXHRcdC5jcHVfcG9ydHMgPSAweDdGLFx0LyogY2FuIGJlIGNvbmZpZ3VyZWQgYXMgY3B1IHBvcnQgKi9cbitcdFx0LnBvcnRfY250ID0gNyxcdFx0LyogdG90YWwgcGh5c2ljYWwgcG9ydCBjb3VudCAqL1xuK1x0XHQucG9ydF9uaXJxcyA9IDIsXG4rXHRcdC5udW1fdHhfcXVldWVzID0gNCxcbitcdFx0Lm51bV9pcG1zID0gOCxcbitcdFx0Lm9wcyA9IFx1MDAyNmtzejk0NzdfZGV2X29wcyxcbitcdFx0LnN3aXRjaF9vcHMgPSBcdTAwMjZrc3o5NDc3X3N3aXRjaF9vcHMsXG4rXHRcdC5waHlsaW5rX21hY19vcHMgPSBcdTAwMjZrc3o5NDc3X3BoeWxpbmtfbWFjX29wcyxcbitcdFx0LnBoeV9lcnJhdGFfOTQ3NyA9IHRydWUsXG4rXHRcdC5taWJfbmFtZXMgPSBrc3o5NDc3X21pYl9uYW1lcyxcbitcdFx0Lm1pYl9jbnQgPSBBUlJBWV9TSVpFKGtzejk0NzdfbWliX25hbWVzKSxcbitcdFx0LnJlZ19taWJfY250ID0gTUlCX0NPVU5URVJfTlVNLFxuK1x0XHQucmVncyA9IGtzejk0NzdfcmVncyxcbitcdFx0Lm1hc2tzID0ga3N6OTQ3N19tYXNrcyxcbitcdFx0LnNoaWZ0cyA9IGtzejk0Nzdfc2hpZnRzLFxuK1x0XHQueG1paV9jdHJsMCA9IGtzejk0NzdfeG1paV9jdHJsMCxcbitcdFx0LnhtaWlfY3RybDEgPSBrc3o5NDc3X3htaWlfY3RybDEsXG4rXHRcdC5zdXBwb3J0c19taWlcdD0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLFxuK1x0XHRcdFx0ICAgZmFsc2UsIHRydWUsIGZhbHNlfSxcbitcdFx0LnN1cHBvcnRzX3JtaWlcdD0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLFxuK1x0XHRcdFx0ICAgZmFsc2UsIHRydWUsIGZhbHNlfSxcbitcdFx0LnN1cHBvcnRzX3JnbWlpID0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLFxuK1x0XHRcdFx0ICAgZmFsc2UsIHRydWUsIGZhbHNlfSxcbitcdFx0LmludGVybmFsX3BoeVx0PSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSxcbitcdFx0XHRcdCAgIHRydWUsIGZhbHNlLCBmYWxzZX0sXG4rXHRcdC5nYml0X2NhcGFibGVcdD0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWV9LFxuK1x0XHQuc2dtaWlfcG9ydCA9IDcsXG4rXHR9LFxuK1xuIFx0W0tTWjk4OTNdID0ge1xuIFx0XHQuY2hpcF9pZCA9IEtTWjk4OTNfQ0hJUF9JRCxcbiBcdFx0LmRldl9uYW1lID0gXCJLU1o5ODkzXCIsXG5AQCAtMTg1Miw2ICsxODg3LDEzIEBAIHN0YXRpYyBpbnQga3N6X2NoZWNrX2RldmljZV9pZChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuIFx0XHRleHBlY3RlZF9jaGlwX2lkID0gZXhwZWN0ZWRfY2hpcF9kYXRhLVx1MDAzZWNoaXBfaWQ7XG4gXHR9XG4gXG4rXHQvKiBUaGUgS1NaOTg5N1MgaXMgb25seSB0b2xkIGFwYXJ0IGZyb20gdGhlIEtTWjk4OTdSIGF0IHJ1biB0aW1lLCBzbyBhXG4rXHQgKiBkZXZpY2UgdHJlZSBuYW1pbmcgdGhlIEtTWjk4OTcgbWF0Y2hlcyBpdCBhcyB3ZWxsLlxuK1x0ICovXG4rXHRpZiAoZXhwZWN0ZWRfY2hpcF9pZCA9PSBLU1o5ODk3X0NISVBfSUQgXHUwMDI2XHUwMDI2XG4rXHQgICAgZGV2LVx1MDAzZWNoaXBfaWQgPT0gS1NaOTg5N1NfQ0hJUF9JRClcbitcdFx0cmV0dXJuIDA7XG4rXG4gXHRpZiAoZXhwZWN0ZWRfY2hpcF9pZCAhPSBkZXYtXHUwMDNlY2hpcF9pZCkge1xuIFx0XHRkZXZfZXJyKGRldi1cdTAwM2VkZXYsXG4gXHRcdFx0XCJEZXZpY2UgdHJlZSBzcGVjaWZpZXMgY2hpcCAlcyBidXQgZm91bmQgJXMsIHBsZWFzZSBmaXggaXQhXFxuXCIsXG5AQCAtMjk2Niw3ICszMDA4LDYgQEAgc3RhdGljIGludCBrc3pfc3dpdGNoX2RldGVjdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuIFx0XHRzd2l0Y2ggKGlkMzIpIHtcbiBcdFx0Y2FzZSBLU1o5NDc3X0NISVBfSUQ6XG4gXHRcdGNhc2UgS1NaOTg5Nl9DSElQX0lEOlxuLVx0XHRjYXNlIEtTWjk4OTdfQ0hJUF9JRDpcbiBcdFx0Y2FzZSBLU1o5NTY3X0NISVBfSUQ6XG4gXHRcdGNhc2UgS1NaODU2N19DSElQX0lEOlxuIFx0XHRjYXNlIExBTjkzNzBfQ0hJUF9JRDpcbkBAIC0yOTc5LDYgKzMwMjAsMjMgQEAgc3RhdGljIGludCBrc3pfc3dpdGNoX2RldGVjdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuIFx0XHRcdGlmIChkZXYtXHUwMDNlY2hpcF9pZCAhPSBMQU45NjQ2X0NISVBfSUQpXG4gXHRcdFx0XHRkZXYtXHUwMDNlY2hpcF9pZCA9IGlkMzI7XG4gXHRcdFx0YnJlYWs7XG4rXHRcdGNhc2UgS1NaOTg5N19DSElQX0lEOlxuK1x0XHRcdC8qIE9ubHkgdGhlIEtTWjk4OTdTIGhhcyBhbiBTR01JSSBwb3J0IDc7IHRoZSBLU1o5ODk3UlxuK1x0XHRcdCAqIGhhcyBhIHNlY29uZCBSR01JSSBwb3J0IGluc3RlYWQuIFNlZSB0aGUgS1NaOTg5N1NcbitcdFx0XHQgKiBkYXRhIHNoZWV0IERTMDAwMDIzOTRDIHNlY3Rpb24gNS4yLjQuMSBhbmQgdGhlXG4rXHRcdFx0ICogS1NaOTg5N1IgZGF0YSBzaGVldCBEUzAwMDAyMzMwRCBzZWN0aW9uIDUuMi4zLjEuXG4rXHRcdFx0ICovXG4rXHRcdFx0cmV0ID0ga3N6X3JlYWQ4KGRldiwgS1NaOTg5N19SRUdfUE9SVDdfWE1JSV9DVFJMXzAsXG4rXHRcdFx0XHRcdFx1MDAyNmlkNCk7XG4rXHRcdFx0aWYgKHJldClcbitcdFx0XHRcdHJldHVybiByZXQ7XG4rXG4rXHRcdFx0aWYgKGlkNCBcdTAwMjYgS1NaOTg5N19QT1JUN19TR01JSV9TRUwpXG4rXHRcdFx0XHRkZXYtXHUwMDNlY2hpcF9pZCA9IEtTWjk4OTdTX0NISVBfSUQ7XG4rXHRcdFx0ZWxzZVxuK1x0XHRcdFx0ZGV2LVx1MDAzZWNoaXBfaWQgPSBLU1o5ODk3X0NISVBfSUQ7XG4rXG4rXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgS1NaOTg5M19DSElQX0lEOlxuIFx0XHRcdHJldCA9IGtzel9yZWFkOChkZXYsIFJFR19DSElQX0lENCxcbiBcdFx0XHRcdFx0XHUwMDI2aWQ0KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaCBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oXG5pbmRleCBjYmU5ODQ5NDU3OGMzLi4wY2ZmMzNkZjA2YTRiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmhcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oXG5AQCAtMjg0LDYgKzI4NCw3IEBAIGVudW0ga3N6X21vZGVsIHtcbiBcdEtTWjk0NzcsXG4gXHRLU1o5ODk2LFxuIFx0S1NaOTg5NyxcbitcdEtTWjk4OTdTLFxuIFx0S1NaOTg5MyxcbiBcdEtTWjk1NjMsXG4gXHRLU1o5NTY3LFxuQEAgLTg3NCw2ICs4NzUsMTAgQEAgc3RhdGljIGlubGluZSBib29sIGtzel9pc19zZ21paV9wb3J0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0KVxuICNkZWZpbmUgU0tVX0lEX0tTWjg1NjNcdFx0XHQweDNjXG4gI2RlZmluZSBTS1VfSURfS1NaOTU2M1x0XHRcdDB4MWNcbiBcbisvKiBLU1o5ODk3IHNwZWNpZmljIHJlZ2lzdGVyOiBwb3J0IDcgWE1JSSBjb250cm9sIDAgKi9cbisjZGVmaW5lIEtTWjk4OTdfUkVHX1BPUlQ3X1hNSUlfQ1RSTF8wXHQweDczMDBcbisjZGVmaW5lIEtTWjk4OTdfUE9SVDdfU0dNSUlfU0VMXHRcdEJJVCg3KVxuK1xuIC8qIERyaXZlciBzZXQgc3dpdGNoIGJyb2FkY2FzdCBzdG9ybSBwcm90ZWN0aW9uIGF0IDEwJSByYXRlLiAqL1xuICNkZWZpbmUgQlJPQURDQVNUX1NUT1JNX1BST1RfUkFURVx0MTBcbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbWljcm9jaGlwLWtzei5oIGIvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaFxuaW5kZXggMDI4NzgxYWQ0MDU5My4uZmU4ZGYxNzc0Mjg5YyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9taWNyb2NoaXAta3N6LmhcbisrKyBiL2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9taWNyb2NoaXAta3N6LmhcbkBAIC0zNCw2ICszNCw3IEBAIGVudW0ga3N6X2NoaXBfaWQge1xuIFx0S1NaOTQ3N19DSElQX0lEID0gMHgwMDk0NzcwMCxcbiBcdEtTWjk4OTZfQ0hJUF9JRCA9IDB4MDA5ODk2MDAsXG4gXHRLU1o5ODk3X0NISVBfSUQgPSAweDAwOTg5NzAwLFxuK1x0S1NaOTg5N1NfQ0hJUF9JRCA9IDB4MDA5ODk3MDEsXG4gXHRLU1o5ODkzX0NISVBfSUQgPSAweDAwOTg5MzAwLFxuIFx0S1NaOTU2M19DSElQX0lEID0gMHgwMDk1NjMwMCxcbiBcdEtTWjg1NjdfQ0hJUF9JRCA9IDB4MDA4NTY3MDAsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNToxOTo0OC40MTEzMDA0NzFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MzY4NjAwNzQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFzc2Vzc2luZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgVGhpcyBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGhpbmdlcyBvbiB3aGV0aGVyIHRoaXMgcGF0Y2ggd2FycmFudHMgdGhlIGZ1bGwgc3l6a2FsbGVyIHRyZWF0bWVudC4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGUgY2hhbmdlLiBJdCBsb29rcyBsaWtlIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHBhdGNoIHRoYXQgYWRkcyBzdXBwb3J0IGZvciB0aGUgS1NaOTg5N1Mgc3dpdGNoIGNoaXAgdG8gdGhlIE1pY3JvY2hpcCBLU1ogRFNBIHN3aXRjaCBkcml2ZXIuIEl0IHRvdWNoZXMgYGtzel9jb21tb24uY2AsIGBrc3pfY29tbW9uLmhgLCBhbmQgYSBoZWFkZXIgZmlsZS4gTm8gc3VycHJpc2VzIHRoZXJlLlxuXG5Ob3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBob3cgaXMgdGhpcyBkcml2ZXIgaW5zdGFudGlhdGVkPyBJcyB0aGlzIGFuIFNQSSwgSTJDLCBNTUlPLCBvciBhIERTQSBkcml2ZXI/IENhbiBJIHJlbGlhYmx5IHJlcHJvZHVjZSB0aGlzIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudCBsaWtlIFFFTVUsIG9yIGFyZSB3ZSBsb29raW5nIGF0IGEgaGFyZHdhcmUgZGVwZW5kZW5jeT8gVGhhdCdzIGdvaW5nIHRvIGJlIHRoZSBkZWNpZGluZyBmYWN0b3IgaW4gd2hldGhlciB0aGlzIGlzIHByYWN0aWNhbGx5IGZ1enphYmxlLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGBkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2AgZmlsZXMgdG8gdW5kZXJzdGFuZCB0aGUgZHJpdmVyJ3MgYXR0YWNobWVudCBtZWNoYW5pc20uIFRoaXMgd2lsbCB0ZWxsIG1lIGlmIEkgY2FuIGdldCBhdCB0aGlzIGZ1bmN0aW9uYWxpdHkgd2l0aG91dCBuZWVkaW5nIHRvIHNvdXJjZSBiZXNwb2tlIGhhcmR3YXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODg2LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDU6MTk6NTQuNzc5OTA0MjQ5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk4MDY5ODEzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9zcGlfZHJpdmVyfG1vZHVsZV9pMmNfZHJpdmVyfGtzel9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDU2OTQgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX05FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT04pXFx0Kz0ga3N6X3N3aXRjaC5vXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZTozOmtzel9zd2l0Y2gtb2JqcyA6PSBrc3pfY29tbW9uLm8ga3N6X2RjYi5vXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZTo0Omtzel9zd2l0Y2gtb2JqcyArPSBrc3o5NDc3Lm8ga3N6OTQ3N19hY2wubyBrc3o5NDc3X3RjX2Zsb3dlci5vXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZTo1Omtzel9zd2l0Y2gtb2JqcyArPSBrc3o4Lm9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL01ha2VmaWxlOjY6a3N6X3N3aXRjaC1vYmpzICs9IGxhbjkzN3hfbWFpbi5vXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZS03LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGU9OD1pZmRlZiBDT05GSUdfTkVUX0RTQV9NSUNST0NISVBfS1NaX1BUUFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGU6OTprc3pfc3dpdGNoLW9ianMgKz0ga3N6X3B0cC5vXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZS0xMC1lbmRpZlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZT0xMj1vYmotJChDT05GSUdfTkVUX0RTQV9NSUNST0NISVBfS1NaOTQ3N19JMkMpXFx0Kz0ga3N6OTQ3N19pMmMub1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX05FVF9EU0FfTUlDUk9DSElQX0tTWl9TUEkpXFx0XFx0Kz0ga3N6X3NwaS5vXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9NYWtlZmlsZS0xNC1vYmotJChDT05GSUdfTkVUX0RTQV9NSUNST0NISVBfS1NaODg2M19TTUkpXFx0Kz0ga3N6ODg2M19zbWkub1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTgtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RlbGF5LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTk6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RzYS9rc3pfY29tbW9uLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjAtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2V4cG9ydC5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzMtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MzQ6I2luY2x1ZGUgXFxcImtzel9jb21tb24uaFxcXCJcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzozNTojaW5jbHVkZSBcXFwia3N6X2RjYi5oXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM2LSNpbmNsdWRlIFxcXCJrc3o4X3JlZy5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDktICovXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTA6c3RhdGljIGNvbnN0IHN0cnVjdCBrc3pfZHJpdmVfc3RyZW5ndGgga3N6ODh4M19kcml2ZV9zdHJlbmd0aHNbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MS1cXHR7IDAsICA4MDAwIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYz01NT1zdHJ1Y3Qga3N6ODh4eF9zdGF0c19yYXcge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTEtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6OTI6c3RhdGljIHZvaWQga3N6X2NmZyhzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MzIgYWRkciwgdTggYml0cywgYm9vbCBzZXQpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTMte1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjk0OlxcdGtzel9ybXc4KGRldiwgYWRkciwgYml0cywgc2V0ID8gYml0cyA6IDApO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTk1LX1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05Ni1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo5NzpzdGF0aWMgdm9pZCBrc3pfcG9ydF9jZmcoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIGludCBvZmZzZXQsIHU4IGJpdHMsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTgtXFx0XFx0XFx0IGJvb2wgc2V0KVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTk5LXtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMDA6XFx0a3N6X3JtdzgoZGV2LCBkZXYtXFx1MDAzZWRldl9vcHMtXFx1MDAzZWdldF9wb3J0X2FkZHIocG9ydCwgb2Zmc2V0KSwgYml0cyxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDEtXFx0XFx0IHNldCA/IGJpdHMgOiAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExMi0gKiBQTUUgc3dpdGNoIGZ1bmN0aW9uYWxpdGllcy4gQm90aCA4LWJpdCByZWdpc3RlcnMgMTEwIGFuZCAxMTEgYXJlXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTEzOiAqIHdyaXR0ZW4gYXQgb25jZSB3aXRoIGtzel93cml0ZTE2LCB1c2luZyB0aGUgc2VyaWFsIG11bHRpcGxlIHdyaXRlXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTE0LSAqIGZ1bmN0aW9uYWxpdHkuXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTctICovXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTE4OnN0YXRpYyBpbnQga3N6OF9pbmRfd3JpdGU4KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHU4IHRhYmxlLCB1MTYgYWRkciwgdTggZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTkte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTI4LVxcdGN0cmxfYWRkciA9IElORF9BQ0NfVEFCTEUodGFibGUpIHwgYWRkcjtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMjk6XFx0cmV0ID0ga3N6X3dyaXRlMTYoZGV2LCByZWdzW1JFR19JTkRfQ1RSTF8wXSwgY3RybF9hZGRyKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzAtXFx0aWYgKCFyZXQpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTMxOlxcdFxcdHJldCA9IGtzel93cml0ZTgoZGV2LCByZWdzW1JFR19JTkRfQllURV0sIGRhdGEpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE0Ni0gKiBQTUUgc3dpdGNoIGZ1bmN0aW9uYWxpdGllcy4gQm90aCA4LWJpdCByZWdpc3RlcnMgMTEwIGFuZCAxMTEgYXJlXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTQ3OiAqIHdyaXR0ZW4gYXQgb25jZSB3aXRoIGtzel93cml0ZTE2LCB1c2luZyB0aGUgc2VyaWFsIG11bHRpcGxlIHdyaXRlXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQ4LSAqIGZ1bmN0aW9uYWxpdHkuXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNTEtICovXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTUyOnN0YXRpYyBpbnQga3N6OF9pbmRfcmVhZDgoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTggdGFibGUsIHUxNiBhZGRyLCB1OCAqdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE1My17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNjItXFx0Y3RybF9hZGRyID0gSU5EX0FDQ19UQUJMRSh0YWJsZSB8IFRBQkxFX1JFQUQpIHwgYWRkcjtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNjM6XFx0cmV0ID0ga3N6X3dyaXRlMTYoZGV2LCByZWdzW1JFR19JTkRfQ1RSTF8wXSwgY3RybF9hZGRyKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNjQtXFx0aWYgKCFyZXQpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTY1OlxcdFxcdHJldCA9IGtzel9yZWFkOChkZXYsIHJlZ3NbUkVHX0lORF9CWVRFXSwgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNjYtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNzEtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTcyOnN0YXRpYyBpbnQga3N6OF9wbWVfd3JpdGU4KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUzMiByZWcsIHU4IHZhbHVlKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE3My17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNzYtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTc3OnN0YXRpYyBpbnQga3N6OF9wbWVfcHJlYWQ4KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0LCBpbnQgb2Zmc2V0LCB1OCAqZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNzgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTgzLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjE4NDpzdGF0aWMgaW50IGtzejhfcG1lX3B3cml0ZTgoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIGludCBvZmZzZXQsIHU4IGRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jPTE5MT1zdGF0aWMgdm9pZCBrc3o4NDYzX2lycV9tYXNrKHN0cnVjdCBpcnFfZGF0YSAqZClcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xOTIte1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjE5MzpcXHRzdHJ1Y3Qga3N6X2lycSAqa2lycSA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE5NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jPTE5OD1zdGF0aWMgdm9pZCBrc3o4NDYzX2lycV91bm1hc2soc3RydWN0IGlycV9kYXRhICpkKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE5OS17XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjAwOlxcdHN0cnVjdCBrc3pfaXJxICpraXJxID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjAxLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MjA1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2NoaXAga3N6ODQ2M19pcnFfY2hpcCA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTIwOC1cXHQuaXJxX3VubWFza1xcdFxcdD0ga3N6ODQ2M19pcnFfdW5tYXNrLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjIwOTpcXHQuaXJxX2J1c19sb2NrXFx0XFx0PSBrc3pfaXJxX2J1c19sb2NrLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjIxMDpcXHQuaXJxX2J1c19zeW5jX3VubG9ja1xcdD0ga3N6X2lycV9idXNfc3luY191bmxvY2ssXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjExLX07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYz0yMjM9c3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfZG9tYWluX29wcyBrc3o4NDYzX2lycV9kb21haW5fb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjI3LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjIyODpzdGF0aWMgaW50IGtzejg0NjNfZ2lycV9zZXR1cChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTIyOS17XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjMwOlxcdHN0cnVjdCBrc3pfaXJxICpnaXJxID0gXFx1MDAyNmRldi1cXHUwMDNlZ2lycTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yMzEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yMzktXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjQwOlxcdHJldHVybiBrc3pfaXJxX2NvbW1vbl9zZXR1cChkZXYsIGdpcnEsIFxcdTAwMjZrc3o4NDYzX2lycV9kb21haW5fb3BzKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNDEtfVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI0Mi1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNDM6c3RhdGljIGludCBrc3o4NDYzX3Jlc2V0X3N3aXRjaChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI0NC17XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjQ1OlxcdGtzel9jZmcoZGV2LCBLU1o4NDYzX1JFR19TV19SRVNFVCxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNDYtXFx0XFx0S1NaODQ2M19HTE9CQUxfU09GVFdBUkVfUkVTRVQgfCBLU1o4NDYzX1BUUF9TT0ZUV0FSRV9SRVNFVCxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNDctXFx0XFx0dHJ1ZSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjQ4OlxcdGtzel9jZmcoZGV2LCBLU1o4NDYzX1JFR19TV19SRVNFVCxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNDktXFx0XFx0S1NaODQ2M19HTE9CQUxfU09GVFdBUkVfUkVTRVQgfCBLU1o4NDYzX1BUUF9TT0ZUV0FSRV9SRVNFVCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI1My1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNTQ6c3RhdGljIGludCBrc3o4X3Jlc2V0X3N3aXRjaChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI1NS17XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjU2OlxcdGlmIChrc3pfaXNfa3N6ODh4MyhkZXYpKSB7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjU3LVxcdFxcdC8qIHJlc2V0IHN3aXRjaCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI1ODpcXHRcXHRrc3pfY2ZnKGRldiwgS1NaODg2M19SRUdfU1dfUkVTRVQsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjU5LVxcdFxcdFxcdEtTWjg4NjNfR0xPQkFMX1NPRlRXQVJFX1JFU0VUIHwgS1NaODg2M19QQ1NfUkVTRVQsIHRydWUpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI2MDpcXHRcXHRrc3pfY2ZnKGRldiwgS1NaODg2M19SRUdfU1dfUkVTRVQsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjYxLVxcdFxcdFxcdEtTWjg4NjNfR0xPQkFMX1NPRlRXQVJFX1JFU0VUIHwgS1NaODg2M19QQ1NfUkVTRVQsIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI2My1cXHRcXHQvKiByZXNldCBzd2l0Y2ggKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNjQ6XFx0XFx0a3N6X3dyaXRlOChkZXYsIFJFR19QT1dFUl9NQU5BR0VNRU5UXzEsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjY1LVxcdFxcdFxcdCAgIFNXX1NPRlRXQVJFX1BPV0VSX0RPV04gXFx1MDAzY1xcdTAwM2MgU1dfUE9XRVJfTUFOQUdFTUVOVF9NT0RFX1MpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI2NjpcXHRcXHRrc3pfd3JpdGU4KGRldiwgUkVHX1BPV0VSX01BTkFHRU1FTlRfMSwgMCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjY3LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jPTI3Mj1zdGF0aWMgaW50IGtzejg4eHhfY2hhbmdlX210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgbXR1KVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI3My17XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6Mjc0OlxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNzUtXFx0aW50IGZyYW1lX3NpemU7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yODctXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6Mjg4OlxcdHJldHVybiBrc3pfcm13OChkZXYsIFJFR19TV19DVFJMXzIsIEtTWjg4NjNfTEVHQUxfUEFDS0VUX0VOQUJMRSB8XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjg5LVxcdFxcdFxcdEtTWjg4NjNfSFVHRV9QQUNLRVRfRU5BQkxFLCBjdHJsMik7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYz0yOTI9c3RhdGljIGludCBrc3o4N3h4X2NoYW5nZV9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IG10dSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yOTMte1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI5NDpcXHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2ID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjk1LVxcdHU4IGN0cmwxID0gMCwgY3RybDIgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzA4LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjMwOTpcXHRyZXQgPSBrc3pfcm13OChkZXYsIFJFR19TV19DVFJMXzEsIFNXX0hVR0VfUEFDS0VULCBjdHJsMSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzEwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zMTItXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MzEzOlxcdHJldHVybiBrc3pfcm13OChkZXYsIFJFR19TV19DVFJMXzIsIFNXX0xFR0FMX1BBQ0tFVF9ESVNBQkxFLCBjdHJsMik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzE0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jPTMyMT1zdGF0aWMgaW50IGtzejg4eHhfbWF4X210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzI1LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjMyNjpzdGF0aWMgaW50IGtzejhfcG9ydF9xdWV1ZV9zcGxpdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydCwgaW50IHF1ZXVlcylcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zMjcte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzMzLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjMzNDpcXHRpZiAoa3N6X2lzX2tzejg4eDMoZGV2KSkge1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTMzNS1cXHRcXHRtYXNrXzRxID0gS1NaODg3M19QT1JUXzRRVUVVRV9TUExJVF9FTjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM0NS1cXHRcXHQgKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzozNDY6XFx0XFx0cmV0ID0ga3N6X3JtdzgoZGV2LCBSRUdfU1dfQ1RSTF8zLCBXRUlHSFRFRF9GQUlSX1FVRVVFX0VOQUJMRSxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zNDctXFx0XFx0XFx0ICAgICAgIFdFSUdIVEVEX0ZBSVJfUVVFVUVfRU5BQkxFKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM0OS1cXHRcXHRcXHRyZXR1cm4gcmV0O1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjM1MDpcXHR9IGVsc2UgaWYgKGtzel9pc19rc3o4NDYzKGRldikpIHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zNTEtXFx0XFx0bWFza180cSA9IEtTWjg4NzNfUE9SVF80UVVFVUVfU1BMSVRfRU47XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zNjMtXFx0XFx0ICovXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MzY0OlxcdFxcdHJldCA9IGtzel9ybXc4KGRldiwgUkVHX1NXX0NUUkxfMTksXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzY1LVxcdFxcdFxcdCAgICAgICBTV19PVVRfUkFURV9MSU1JVF9RVUVVRV9CQVNFRCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM3NS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzozNzY6XFx0cmV0ID0ga3N6X3BybXc4KGRldiwgcG9ydCwgcmVnXzRxLCBtYXNrXzRxLCBkYXRhXzRxKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zNzctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM3OS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzozODA6XFx0cmV0dXJuIGtzel9wcm13OChkZXYsIHBvcnQsIHJlZ18ycSwgbWFza18ycSwgZGF0YV8ycSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzgxLX1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0zODItXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MzgzOnN0YXRpYyB2b2lkIGtzejhfcl9taWJfY250KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0LCB1MTYgYWRkciwgdTY0ICpjbnQpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMzg0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTM5OC1cXHRtdXRleF9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZWFsdV9tdXRleCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6Mzk5OlxcdGtzel93cml0ZTE2KGRldiwgcmVnc1tSRUdfSU5EX0NUUkxfMF0sIGN0cmxfYWRkcik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDAwLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDA0LVxcdGZvciAobG9vcCA9IDI7IGxvb3AgXFx1MDAzZSAwOyBsb29wLS0pIHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo0MDU6XFx0XFx0a3N6X3JlYWQ4KGRldiwgcmVnc1tSRUdfSU5EX01JQl9DSEVDS10sIFxcdTAwMjZjaGVjayk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDA2LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQwNy1cXHRcXHRpZiAoY2hlY2sgXFx1MDAyNiBtYXNrc1tNSUJfQ09VTlRFUl9WQUxJRF0pIHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo0MDg6XFx0XFx0XFx0a3N6X3JlYWQzMihkZXYsIHJlZ3NbUkVHX0lORF9EQVRBX0xPXSwgXFx1MDAyNmRhdGEpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQwOS1cXHRcXHRcXHRpZiAoY2hlY2sgXFx1MDAyNiBtYXNrc1tNSUJfQ09VTlRFUl9PVkVSRkxPV10pXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00MTctXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NDE4OnN0YXRpYyB2b2lkIGtzejg3OTVfcl9taWJfcGt0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0LCB1MTYgYWRkcixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00MTktXFx0XFx0XFx0ICAgICAgdTY0ICpkcm9wcGVkLCB1NjQgKmNudClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQzNi1cXHRtdXRleF9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZWFsdV9tdXRleCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NDM3OlxcdGtzel93cml0ZTE2KGRldiwgcmVnc1tSRUdfSU5EX0NUUkxfMF0sIGN0cmxfYWRkcik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDM4LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDQyLVxcdGZvciAobG9vcCA9IDI7IGxvb3AgXFx1MDAzZSAwOyBsb29wLS0pIHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo0NDM6XFx0XFx0a3N6X3JlYWQ4KGRldiwgcmVnc1tSRUdfSU5EX01JQl9DSEVDS10sIFxcdTAwMjZjaGVjayk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDQ0LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQ0NS1cXHRcXHRpZiAoY2hlY2sgXFx1MDAyNiBtYXNrc1tNSUJfQ09VTlRFUl9WQUxJRF0pIHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo0NDY6XFx0XFx0XFx0a3N6X3JlYWQzMihkZXYsIHJlZ3NbUkVHX0lORF9EQVRBX0xPXSwgXFx1MDAyNmRhdGEpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQ0Ny1cXHRcXHRcXHRpZiAoYWRkciBcXHUwMDNjIDIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQ2OS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo0NzA6c3RhdGljIHZvaWQga3N6ODg2M19yX21pYl9wa3Qoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIHUxNiBhZGRyLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQ3MS1cXHRcXHRcXHQgICAgICB1NjQgKmRyb3BwZWQsIHU2NCAqY250KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDgzLVxcdFxcdFxcdCAgIEtTWjg4NjNfTUlCX1BBQ0tFVF9EUk9QUEVEX1JYXzA7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NDg0OlxcdGlmIChrc3pfaXNfODg5NV9mYW1pbHkoZGV2KSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTQ4NS1cXHQgICAgY3RybF9hZGRyID09IEtTWjg4NjNfTUlCX1BBQ0tFVF9EUk9QUEVEX1JYXzApXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy00OTAtXFx0bXV0ZXhfbG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VhbHVfbXV0ZXgpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjQ5MTpcXHRrc3pfd3JpdGUxNihkZXYsIHJlZ3NbUkVHX0lORF9DVFJMXzBdLCBjdHJsX2FkZHIpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjQ5MjpcXHRrc3pfcmVhZDMyKGRldiwgcmVnc1tSRUdfSU5EX0RBVEFfTE9dLCBcXHUwMDI2ZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNDkzLVxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VhbHVfbXV0ZXgpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTA1LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjUwNjpzdGF0aWMgdm9pZCBrc3o4X3JfbWliX3BrdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydCwgdTE2IGFkZHIsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTA3LVxcdFxcdFxcdCAgIHU2NCAqZHJvcHBlZCwgdTY0ICpjbnQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MTQtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTE1OnN0YXRpYyB2b2lkIGtzejhfZnJlZXplX21pYihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydCwgYm9vbCBmcmVlemUpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTE2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUyMS1cXHRpZiAoZnJlZXplKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjUyMjpcXHRcXHRrc3pfY2ZnKGRldiwgUkVHX1NXX0NUUkxfNiwgQklUKHBvcnQpLCB0cnVlKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1MjM6XFx0a3N6X2NmZyhkZXYsIFJFR19TV19DVFJMXzYsIFNXX01JQl9DT1VOVEVSX0ZSRUVaRSwgZnJlZXplKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MjQtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MjYtXFx0aWYgKCFmcmVlemUpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTI3OlxcdFxcdGtzel9jZmcoZGV2LCBSRUdfU1dfQ1RSTF82LCBCSVQocG9ydCksIGZhbHNlKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MjgtfVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUyOS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1MzA6c3RhdGljIHZvaWQga3N6OF9wb3J0X2luaXRfY250KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0KVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTUzMS17XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTMyOlxcdHN0cnVjdCBrc3pfcG9ydF9taWIgKm1pYiA9IFxcdTAwMjZkZXYtXFx1MDAzZXBvcnRzW3BvcnRdLm1pYjtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MzMtXFx0dTY0ICpkcm9wcGVkO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTM1LVxcdC8qIEZvciBLU1o4Nzk1IGZhbWlseS4gKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1MzY6XFx0aWYgKGtzel9pc19rc3o4N3h4KGRldikpIHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01MzctXFx0XFx0LyogZmx1c2ggYWxsIGVuYWJsZWQgcG9ydCBNSUIgY291bnRlcnMgKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1Mzg6XFx0XFx0a3N6X2NmZyhkZXYsIFJFR19TV19DVFJMXzYsIEJJVChwb3J0KSwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTM5OlxcdFxcdGtzel9jZmcoZGV2LCBSRUdfU1dfQ1RSTF82LCBTV19NSUJfQ09VTlRFUl9GTFVTSCwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTQwOlxcdFxcdGtzel9jZmcoZGV2LCBSRUdfU1dfQ1RSTF82LCBCSVQocG9ydCksIGZhbHNlKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01NDEtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTYyLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjU2MzpzdGF0aWMgaW50IGtzejhfcl90YWJsZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgdGFibGUsIHUxNiBhZGRyLCB1NjQgKmRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTY0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTU3My1cXHRtdXRleF9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZWFsdV9tdXRleCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTc0OlxcdHJldCA9IGtzel93cml0ZTE2KGRldiwgcmVnc1tSRUdfSU5EX0NUUkxfMF0sIGN0cmxfYWRkcik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTc1LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01NzctXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NTc4OlxcdHJldCA9IGtzel9yZWFkNjQoZGV2LCByZWdzW1JFR19JTkRfREFUQV9ISV0sIGRhdGEpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTU3OS11bmxvY2tfYWx1Olxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTg0LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjU4NTpzdGF0aWMgaW50IGtzejhfd190YWJsZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgdGFibGUsIHUxNiBhZGRyLCB1NjQgZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy01ODYte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTk1LVxcdG11dGV4X2xvY2soXFx1MDAyNmRldi1cXHUwMDNlYWx1X211dGV4KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo1OTY6XFx0cmV0ID0ga3N6X3dyaXRlNjQoZGV2LCByZWdzW1JFR19JTkRfREFUQV9ISV0sIGRhdGEpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTU5Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNTk5LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjYwMDpcXHRyZXQgPSBrc3pfd3JpdGUxNihkZXYsIHJlZ3NbUkVHX0lORF9DVFJMXzBdLCBjdHJsX2FkZHIpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTYwMS11bmxvY2tfYWx1Olxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNjA2LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjYwNzpzdGF0aWMgaW50IGtzejhfdmFsaWRfZHluX2VudHJ5KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHU4ICpkYXRhKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTYwOC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02MTctXFx0ZG8ge1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjYxODpcXHRcXHRyZXQgPSBrc3pfcmVhZDgoZGV2LCByZWdzW1JFR19JTkRfREFUQV9DSEVDS10sIGRhdGEpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTYxOS1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNjI5LVxcdC8qIEVudHJ5IGlzIHJlYWR5IGZvciBhY2Nlc3NpbmcuICovXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NjMwOlxcdHJldHVybiBrc3pfcmVhZDgoZGV2LCByZWdzW1JFR19JTkRfREFUQV84XSwgZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNjMxLX1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02MzItXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NjMzOnN0YXRpYyBpbnQga3N6OF9yX2R5bl9tYWNfdGFibGUoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTE2IGFkZHIsIHU4ICptYWNfYWRkcixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02MzQtXFx0XFx0XFx0XFx0dTggKmZpZCwgdTggKnNyY19wb3J0LCB1MTYgKmVudHJpZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02NTItXFx0bXV0ZXhfbG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VhbHVfbXV0ZXgpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjY1MzpcXHRyZXQgPSBrc3pfd3JpdGUxNihkZXYsIHJlZ3NbUkVHX0lORF9DVFJMXzBdLCBjdHJsX2FkZHIpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTY1NC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNjY1LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjY2NjpcXHRyZXQgPSBrc3pfcmVhZDY0KGRldiwgcmVnc1tSRUdfSU5EX0RBVEFfSEldLCBcXHUwMDI2YnVmKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy02NjctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTY5OC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo2OTk6c3RhdGljIGludCBrc3o4X3Jfc3RhX21hY190YWJsZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MTYgYWRkcixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy03MDAtXFx0XFx0XFx0XFx0c3RydWN0IGFsdV9zdHJ1Y3QgKmFsdSwgYm9vbCAqdmFsaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy03MzgtXFx0ICovXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6NzM5OlxcdGlmIChrc3pfaXNfa3N6ODd4eChkZXYpIHx8IGtzel9pc184ODk1X2ZhbWlseShkZXYpKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTc0MC1cXHRcXHRkYXRhX2hpIFxcdTAwM2VcXHUwMDNlPSAxO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNzUwLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjc1MTpzdGF0aWMgaW50IGtzejhfd19zdGFfbWFjX3RhYmxlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUxNiBhZGRyLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTc1Mi1cXHRcXHRcXHRcXHRzdHJ1Y3QgYWx1X3N0cnVjdCAqYWx1KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNzgzLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjc4NDpzdGF0aWMgdm9pZCBrc3o4X2Zyb21fdmxhbihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MzIgdmxhbiwgdTggKmZpZCxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy03ODUtXFx0XFx0XFx0ICAgdTggKm1lbWJlciwgdTggKnZhbGlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtNzk4LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjc5OTpzdGF0aWMgdm9pZCBrc3o4X3RvX3ZsYW4oc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTggZmlkLCB1OCBtZW1iZXIsIHU4IHZhbGlkLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTgwMC1cXHRcXHRcXHQgdTE2ICp2bGFuKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtODEzLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjgxNDpzdGF0aWMgdm9pZCBrc3o4X3Jfdmxhbl9lbnRyaWVzKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUxNiBhZGRyKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTgxNS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy04MjktXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6ODMwOnN0YXRpYyB2b2lkIGtzejhfcl92bGFuX3RhYmxlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUxNiB2aWQsIHUxNiAqdmxhbilcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy04MzEte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtODQzLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjg0NDpzdGF0aWMgdm9pZCBrc3o4X3dfdmxhbl90YWJsZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MTYgdmlkLCB1MTYgdmxhbilcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy04NDUte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtODcxLSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjg3MjpzdGF0aWMgaW50IGtzejg3OXhfZ2V0X2xvb3BiYWNrKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUxNiBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTg3My1cXHRcXHRcXHRcXHR1MTYgKnZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTg3Ny1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo4Nzg6XFx0cmV0ID0ga3N6X3ByZWFkOChkZXYsIHBvcnQsIFJFR19QT1JUX1NUQVRVU18zLCBcXHUwMDI2c3RhdDMpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTg3OS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtODk5LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjkwMDpzdGF0aWMgaW50IGtzejg3OXhfc2V0X2xvb3BiYWNrKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIHUxNiBwb3J0LCB1MTYgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTkwMS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05MDYtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6OTA3OlxcdHJldHVybiBrc3pfcHJtdzgoZGV2LCBwb3J0LCBSRUdfUE9SVF9TVEFUVVNfMywgUE9SVF9QSFlfTE9PUEJBQ0ssXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTA4LVxcdFxcdFxcdCBzdGF0Myk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05MTAtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6OTExOnN0YXRpYyBpbnQga3N6ODd4eF9hcHBseV9sb3dfbG9zc19wcmVzZXQoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgYm9vbCBlbmFibGUpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTEyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTkyMS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo5MjI6XFx0aWYgKCFrc3pfaXNfa3N6ODd4eChkZXYpKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTkyMy1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05NTctICovXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6OTU4OnN0YXRpYyBpbnQga3N6OF9yX3BoeV9jdHJsKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0LCB1MTYgKnZhbClcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy05NTkte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtOTY1LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjk2NjpcXHRyZXQgPSBrc3pfcHJlYWQ4KGRldiwgcG9ydCwgcmVnc1tQX0xJTktfU1RBVFVTXSwgXFx1MDAyNnJlZ192YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTk2Ny1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTk3Mi1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzo5NzM6XFx0cmV0ID0ga3N6X3ByZWFkOChkZXYsIHBvcnQsIFJFR19QT1JUX0xJTktfTURfQ1RSTCwgXFx1MDAyNnJlZ192YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTk3NC1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEwMjMtICovXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTAyNDpzdGF0aWMgaW50IGtzejhfcl9waHlfYm1jcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MTYgcG9ydCwgdTE2ICp2YWwpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTAyNS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDMxLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEwMzI6XFx0cmV0ID0ga3N6X3ByZWFkOChkZXYsIHBvcnQsIHJlZ3NbUF9ORUdfUkVTVEFSVF9DVFJMXSwgXFx1MDAyNnJlc3RhcnQpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEwMzMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEwMzUtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTAzNjpcXHRyZXQgPSBrc3pfcHJlYWQ4KGRldiwgcG9ydCwgcmVnc1tQX1NQRUVEX1NUQVRVU10sIFxcdTAwMjZzcGVlZCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTAzNy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTAzOS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMDQwOlxcdHJldCA9IGtzel9wcmVhZDgoZGV2LCBwb3J0LCByZWdzW1BfRk9SQ0VfQ1RSTF0sIFxcdTAwMjZjdHJsKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDQxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDQ2LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEwNDc6XFx0aWYgKGtzel9pc19rc3o4OHgzKGRldikpIHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMDQ4LVxcdFxcdGlmIChyZXN0YXJ0IFxcdTAwMjYgS1NaODg3M19QT1JUX1BIWV9MT09QQkFDSylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEwODgtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTA4OTpzdGF0aWMgaW50IGtzejhfcl9waHkoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgdTE2IHBoeSwgdTE2IHJlZywgdTE2ICp2YWwpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTA5MC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTA2LVxcdGNhc2UgTUlJX0JNU1I6XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTEwNzpcXHRcXHRyZXQgPSBrc3pfcHJlYWQ4KGRldiwgcCwgcmVnc1tQX0xJTktfU1RBVFVTXSwgXFx1MDAyNmxpbmspO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExMDgtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExMjQtXFx0Y2FzZSBNSUlfUEhZU0lEMjpcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMTI1OlxcdFxcdGlmIChrc3pfaXNfa3N6ODh4MyhkZXYpKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExMjYtXFx0XFx0XFx0ZGF0YSA9IEtTWjg4NjNfSURfTE87XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTMwLVxcdGNhc2UgTUlJX0FEVkVSVElTRTpcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMTMxOlxcdFxcdHJldCA9IGtzel9wcmVhZDgoZGV2LCBwLCByZWdzW1BfTE9DQUxfQ1RSTF0sIFxcdTAwMjZjdHJsKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTMyLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTQ3LVxcdGNhc2UgTUlJX0xQQTpcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMTQ4OlxcdFxcdHJldCA9IGtzel9wcmVhZDgoZGV2LCBwLCByZWdzW1BfUkVNT1RFX1NUQVRVU10sIFxcdTAwMjZsaW5rKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTQ5LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTY2LVxcdGNhc2UgUEhZX1JFR19MSU5LX01EOlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjExNjc6XFx0XFx0cmV0ID0ga3N6X3ByZWFkOChkZXYsIHAsIFJFR19QT1JUX0xJTktfTURfQ1RSTCwgXFx1MDAyNnZhbDEpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExNjgtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExNzAtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTE3MTpcXHRcXHRyZXQgPSBrc3pfcHJlYWQ4KGRldiwgcCwgUkVHX1BPUlRfTElOS19NRF9SRVNVTFQsIFxcdTAwMjZ2YWwyKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTcyLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMTk0LVxcdGNhc2UgUEhZX1JFR19LU1o4N1hYX1NIT1JUX0NBQkxFOlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjExOTU6XFx0XFx0aWYgKCFrc3pfaXNfa3N6ODd4eChkZXYpKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTExOTYtXFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTIwMC1cXHRjYXNlIFBIWV9SRUdfS1NaODdYWF9MUEZfQlc6XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTIwMTpcXHRcXHRpZiAoIWtzel9pc19rc3o4N3h4KGRldikpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTIwMi1cXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMjA1LVxcdGNhc2UgUEhZX1JFR19LU1o4N1hYX0VRX0lOSVQ6XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTIwNjpcXHRcXHRpZiAoIWtzel9pc19rc3o4N3h4KGRldikpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTIwNy1cXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYz0xMjIwPXN0YXRpYyBpbnQga3N6OF9waHlfcmVhZDE2KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IGFkZHIsIGludCByZWcpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTIyMS17XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTIyMjpcXHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2ID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTIyMy1cXHR1MTYgdmFsID0gMHhmZmZmO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTI0NS0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMjQ2OnN0YXRpYyBpbnQga3N6OF93X3BoeV9jdHJsKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0LCB1MTYgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEyNDcte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTI1OS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMjYwOlxcdHJldCA9IGtzel9wcm13OChkZXYsIHBvcnQsIFJFR19QT1JUX0xJTktfTURfQ1RSTCwgUE9SVF9GT1JDRV9MSU5LIHxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMjYxLVxcdFxcdFxcdFBPUlRfUE9XRVJfU0FWSU5HIHwgUE9SVF9QSFlfUkVNT1RFX0xPT1BCQUNLLCByZWdfdmFsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEyOTktICovXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTMwMDpzdGF0aWMgaW50IGtzejhfd19waHlfYm1jcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MTYgcG9ydCwgdTE2IHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzAxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzMTMtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTMxNDpcXHRyZXQgPSBrc3pfcHJtdzgoZGV2LCBwb3J0LCByZWdzW1BfU1BFRURfU1RBVFVTXSwgUE9SVF9IUF9NRElYLCBzcGVlZCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTMxNS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTMxOC1cXHRjdHJsID0gMDtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMzE5OlxcdGlmIChrc3pfaXNfa3N6ODh4MyhkZXYpKSB7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTMyMC1cXHRcXHRpZiAoKHZhbCBcXHUwMDI2IEJNQ1JfQU5FTkFCTEUpKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTMzNi1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMzM3OlxcdHJldCA9IGtzel9wcm13OChkZXYsIHBvcnQsIHJlZ3NbUF9GT1JDRV9DVFJMXSwgUE9SVF9GT1JDRV8xMDBfTUJJVCB8XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTMzOC1cXHRcXHQgLyogUE9SVF9BVVRPX05FR19FTkFCTEUgYW5kIFBPUlRfQVVUT19ORUdfRElTQUJMRSBhcmUgdGhlIHNhbWVcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzNjYtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTM2NzpcXHRpZiAoa3N6X2lzX2tzejg4eDMoZGV2KSkge1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzNjgtXFx0XFx0cmVzdGFydF9tYXNrIHw9IEtTWjg4NzNfUE9SVF9QSFlfTE9PUEJBQ0s7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xMzc3LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjEzNzg6XFx0cmV0dXJuIGtzel9wcm13OChkZXYsIHBvcnQsIHJlZ3NbUF9ORUdfUkVTVEFSVF9DVFJMXSwgcmVzdGFydF9tYXNrLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzNzktXFx0XFx0XFx0IHJlc3RhcnQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTM4MS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxMzgyOnN0YXRpYyBpbnQga3N6OF93X3BoeShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCB1MTYgcGh5LCB1MTYgcmVnLCB1MTYgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTEzODMte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTM5Ny1cXHRjYXNlIE1JSV9BRFZFUlRJU0U6XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTM5ODpcXHRcXHRyZXQgPSBrc3pfcHJlYWQ4KGRldiwgcCwgcmVnc1tQX0xPQ0FMX0NUUkxdLCBcXHUwMDI2Y3RybCk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTM5OS1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQxOS1cXHRcXHRpZiAoZGF0YSAhPSBjdHJsKSB7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTQyMDpcXHRcXHRcXHRyZXQgPSBrc3pfcHdyaXRlOChkZXYsIHAsIHJlZ3NbUF9MT0NBTF9DVFJMXSwgZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQyMS1cXHRcXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQyNi1cXHRcXHRpZiAodmFsIFxcdTAwMjYgUEhZX1NUQVJUX0NBQkxFX0RJQUcpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTQyNzpcXHRcXHRcXHRrc3pfcG9ydF9jZmcoZGV2LCBwLCBSRUdfUE9SVF9MSU5LX01EX0NUUkwsIFBPUlRfU1RBUlRfQ0FCTEVfRElBRywgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQyOC1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE0MzUtXFx0Y2FzZSBQSFlfUkVHX0tTWjg3WFhfU0hPUlRfQ0FCTEU6XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MTQzNjpcXHRcXHRpZiAoIWtzel9pc19rc3o4N3h4KGRldikpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMTQzNy1cXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNDQ0LVxcdGNhc2UgUEhZX1JFR19LU1o4N1hYX0xQRl9CVzpcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNDQ1OlxcdFxcdGlmICgha3N6X2lzX2tzejg3eHgoZGV2KSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNDQ2LVxcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTE0NTctXFx0Y2FzZSBQSFlfUkVHX0tTWjg3WFhfRVFfSU5JVDpcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoxNDU4OlxcdFxcdGlmICgha3N6X2lzX2tzejg3eHgoZGV2KSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0xNDU5LVxcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jPTE0Nzc9c3RhdGljIGludCBrc3o4X3BoeV93cml0ZTE2KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IGFkZHIsIGludCByZWcsIHUxNiB2YWwpXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA1OjE5OjU0Ljg3Nzk4MjU5MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIzNTc3MzQ0NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBrc3pfc3dpdGNoL2tzel9jb21tb24gRHJpdmVyIExhbmRzY2FwZSoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBkcml2ZXJzIHRoYXQgYXJlIGhvb2tlZCBpbnRvIHRoZSBga3N6X3N3aXRjaGAgb3IgYGtzel9jb21tb25gIG1vZHVsZXMuIEZyb20gd2hhdCBJIGNhbiBzZWUsIHdlIGhhdmUgYGtzel9zcGkuY2AsIGBrc3o5NDc3X2kyYy5jYCwgYW5kIGBrc3o4ODYzX3NtaS5jYCBsaXN0ZWQgYXMgdGhlIGtleSBwbGF5ZXJzLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byByb2xsIHVwIG15IHNsZWV2ZXMgYW5kIHBlcmZvcm0gYSBkZWVwIGRpdmUgaW50byBlYWNoIG9mIHRob3NlIGZpbGVzOiBga3N6X3NwaS5jYCwgYGtzejk0NzdfaTJjLmNgLCBhbmQgYGtzejg4NjNfc21pLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGVpciBzcGVjaWZpYyByb2xlcyBhbmQgaG93IHRoZXkgY29udHJpYnV0ZSB0byB0aGUgb3ZlcmFsbCBzd2l0Y2ggZnVuY3Rpb25hbGl0eS4gQW5kIEkgY2FuJ3QgZm9yZ2V0IGBLY29uZmlnYCwgd2hpY2ggaXMgZXNzZW50aWFsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGVzZSBkcml2ZXJzIGFyZSBjb25maWd1cmVkIGFuZCBpbnRlZ3JhdGVkIGludG8gdGhlIGJyb2FkZXIga2VybmVsIGJ1aWxkIHByb2Nlc3MuIFRpbWUgdG8gZ2V0IHRvIHdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MzM2LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDU6MTk6NTcuMjM1NzIwMjUzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODYzMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0bWVudWNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiTWljcm9jaGlwIEtTWjhYWFgvS1NaOVhYWC9MQU45MzdYIHNlcmllcyBzd2l0Y2ggc3VwcG9ydFxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gTkVUX0RTQVxcbiAgIDU6XFx0XFx0c2VsZWN0IE5FVF9EU0FfVEFHX0tTWlxcbiAgIDY6XFx0XFx0c2VsZWN0IE5FVF9EU0FfVEFHX05PTkVcXG4gICA3OlxcdFxcdHNlbGVjdCBORVRfSUVFRTgwMjFRX0hFTFBFUlNcXG4gICA4OlxcdFxcdHNlbGVjdCBEQ0JcXG4gICA5OlxcdFxcdHNlbGVjdCBQQ1NfWFBDU1xcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBUaGlzIGRyaXZlciBhZGRzIHN1cHBvcnQgZm9yIE1pY3JvY2hpcCBLU1o4LCBLU1o5IGFuZFxcbiAgMTI6XFx0XFx0ICBMQU45MzdYIHNlcmllcyBzd2l0Y2ggY2hpcHMsIGJlaW5nIEtTWjg4NjMvODg3MyxcXG4gIDEzOlxcdFxcdCAgS1NaODg5NS84ODY0LCBLU1o4Nzk0Lzg3OTUvODc2NSxcXG4gIDE0OlxcdFxcdCAgS1NaOTQ3Ny85ODk3Lzk4OTYvOTU2Ny84NTY3LCBLU1o5ODkzLzk1NjMvODU2MyBhbmRcXG4gIDE1OlxcdFxcdCAgTEFOOTM3MC85MzcxLzkzNzIvOTM3My85Mzc0LlxcbiAgMTY6XFx0XFxuICAxNzpcXHRjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaOTQ3N19JMkNcXG4gIDE4OlxcdFxcdHRyaXN0YXRlIFxcXCJLU1ogc2VyaWVzIEkyQyBjb25uZWN0ZWQgc3dpdGNoIGRyaXZlclxcXCJcXG4gIDE5OlxcdFxcdGRlcGVuZHMgb24gTkVUX0RTQV9NSUNST0NISVBfS1NaX0NPTU1PTiBcXHUwMDI2XFx1MDAyNiBJMkNcXG4gIDIwOlxcdFxcdHNlbGVjdCBSRUdNQVBfSTJDXFxuICAyMTpcXHRcXHRoZWxwXFxuICAyMjpcXHRcXHQgIFNlbGVjdCB0byBlbmFibGUgc3VwcG9ydCBmb3IgcmVnaXN0ZXJpbmcgc3dpdGNoZXMgY29uZmlndXJlZCB0aHJvdWdoIEkyQy5cXG4gIDIzOlxcdFxcbiAgMjQ6XFx0Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9TUElcXG4gIDI1OlxcdFxcdHRyaXN0YXRlIFxcXCJLU1ogc2VyaWVzIFNQSSBjb25uZWN0ZWQgc3dpdGNoIGRyaXZlclxcXCJcXG4gIDI2OlxcdFxcdGRlcGVuZHMgb24gTkVUX0RTQV9NSUNST0NISVBfS1NaX0NPTU1PTiBcXHUwMDI2XFx1MDAyNiBTUElcXG4gIDI3OlxcdFxcdHNlbGVjdCBSRUdNQVBfU1BJXFxuICAyODpcXHRcXHRoZWxwXFxuICAyOTpcXHRcXHQgIFNlbGVjdCB0byBlbmFibGUgc3VwcG9ydCBmb3IgcmVnaXN0ZXJpbmcgc3dpdGNoZXMgY29uZmlndXJlZCB0aHJvdWdoIFNQSS5cXG4gIDMwOlxcdFxcbiAgMzE6XFx0Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9QVFBcXG4gIDMyOlxcdFxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIHRoZSBQVFAgY2xvY2sgb24gdGhlIEtTWjk1NjMvTEFOOTM3eCBFdGhlcm5ldCBTd2l0Y2hcXFwiXFxuICAzMzpcXHRcXHRkZXBlbmRzIG9uIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT04gXFx1MDAyNlxcdTAwMjYgUFRQXzE1ODhfQ0xPQ0tcXG4gIDM0OlxcdFxcdGRlcGVuZHMgb24gTkVUX0RTQV9NSUNST0NISVBfS1NaX0NPTU1PTj1tIHx8IFBUUF8xNTg4X0NMT0NLPXlcXG4gIDM1OlxcdFxcdGhlbHBcXG4gIDM2OlxcdFxcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciB0aW1lc3RhbXBpbmcgXFx1MDAyNiBQVFAgY2xvY2sgbWFuaXB1bGF0aW9uIGluXFxuICAzNzpcXHRcXHQgIEtTWjg1NjMvS1NaOTU2My9MQU45Mzd4IHNlcmllcyBvZiBzd2l0Y2hlcy4gS1NaOTU2My9LU1o4NTYzIHN1cHBvcnRzXFxuICAzODpcXHRcXHQgIG9ubHkgb25lIHN0ZXAgdGltZXN0YW1waW5nLiBMQU45Mzd4IHN3aXRjaCBzdXBwb3J0cyBib3RoIG9uZSBzdGVwIGFuZFxcbiAgMzk6XFx0XFx0ICB0d28gc3RlcCB0aW1lc3RhbXBpbmcuXFxuICA0MDpcXHRcXG4gIDQxOlxcdGNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1o4ODYzX1NNSVxcbiAgNDI6XFx0XFx0dHJpc3RhdGUgXFxcIktTWiBzZXJpZXMgU01JIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXFxcIlxcbiAgNDM6XFx0XFx0ZGVwZW5kcyBvbiBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OXFxuICA0NDpcXHRcXHRzZWxlY3QgTURJT19CSVRCQU5HXFxuICA0NTpcXHRcXHRoZWxwXFxuICA0NjpcXHRcXHQgIFNlbGVjdCB0byBlbmFibGUgc3VwcG9ydCBmb3IgcmVnaXN0ZXJpbmcgc3dpdGNoZXMgY29uZmlndXJlZCB0aHJvdWdoXFxuICA0NzpcXHRcXHQgIE1pY3JvY2hpcCBTTUkuIEl0IHN1cHBvcnRzIHRoZSBLU1o4ODYzIGFuZCBLU1o4ODczIHN3aXRjaC5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDU6MTk6NTcuMjM1ODA4MzIzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzcwOTEyMjUxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIERTQSBTd2l0Y2ggRnV6emluZyBGZWFzaWJpbGl0eSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTWljcm9jaGlwIEtTWiBEU0Egc3dpdGNoZXMgYXJlIEV0aGVybmV0IHN3aXRjaGVzIG1hbmFnZWQgdGhyb3VnaCBpbnRlcmZhY2VzIGxpa2UgSTJDLCBTUEksIG9yIFNNSSwgYW5kIHRoZXkgY29ubmVjdCB0byBwaHlzaWNhbCBFdGhlcm5ldCBvciBhcmUgZGVzY3JpYmVkIGluIGRldmljZSB0cmVlcywgb2Z0ZW4gdXNlZCBpbiBlbWJlZGRlZCBzeXN0ZW1zLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IGNhbiB0aGVzZSBEU0Egc3dpdGNoZXMsIGFuZCBzcGVjaWZpY2FsbHkgdGhlaXIgSTJDL1NQSSBpbnRlcmZhY2VzLCBiZSBwcm9iZWQgYW5kIGZ1enplZCBlZmZlY3RpdmVseSB3aXRoaW4gYSBzdGFuZGFyZCBzeXprYWxsZXIgc2V0dXA/IFRoYXQncyB0aGUgY29yZSBvZiB0aGUgcHJvYmxlbS5cblxuQWxyaWdodCwgdGltZSB0byBjaGVjayB0aGUgc3l6a2FsbGVyIGd1aWRlbGluZXMsIHNwZWNpZmljYWxseSBzZWN0aW9ucyAyIGFuZCAzLiBTZWN0aW9uIDIgaGlnaGxpZ2h0cyB3aGF0J3MgdHlwaWNhbGx5ICpub3QqIGZ1enplZCB3ZWxsLiBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUgaXMgdGhlIHJlZCBmbGFnIGhlcmU6IHRoaW5ncyBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBzcGVjaWFsaXplZCBOSUNzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBvciBjb21wbGV4IGVtdWxhdGlvbiB0aGF0IGlzbid0IHN0YW5kYXJkIGluIFFFTVUsIG9yIGRyaXZlcnMgd2hvc2UgZXhlY3V0aW9uIHBhdGhzIGFyZSBvbmx5IGhpdCBkdXJpbmcgaG90LXVucGx1ZyBldmVudHMuXG5cblNlY3Rpb24gMyBnaXZlcyB1cyBzb21lIGhvcGUsIHRob3VnaC4gSXQgZm9jdXNlcyBvbiBcIlJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHMsXCIgbWVhbmluZyBkcml2ZXJzIGFjY2Vzc2libGUgdGhyb3VnaCB2aXJ0dWFsIGJ1c2VzIHN1Y2ggYXMgdmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjayBpbnRlcmZhY2VzLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gU28sIHRoZSBrZXkgcXVlc3Rpb24gaXM6IGRvZXMgdGhlIE1pY3JvY2hpcCBLU1ogc3dpdGNoIGRyaXZlciBmaXQgdGhpcyBcInJlYWNoYWJsZVwiIGNhdGVnb3J5LCBvciBpcyBpdCBmdW5kYW1lbnRhbGx5IHRpZWQgdG8gc29tZSBmb3JtIG9mIFwic3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCI/XG5cbk5vdyBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgdGhlIHByb2JpbmcgcHJvY2Vzcy4gQ2FuIHRoaXMgZHJpdmVyIGJlIHRyaWdnZXJlZCB0aHJvdWdoIHNvbWV0aGluZyBsaWtlIGEgdmlydHVhbCBidXMsIGEgZGV2aWNlIHRyZWUgZW50cnkgdGhhdOKAmXMgZW11bGF0ZWQgYnkgUUVNVSwgb3IgdGhyb3VnaCBzeXNmcz8gSSBuZWVkIHRvIGFuYWx5emUgaG93IHRoZSBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9gIGRpcmVjdG9yeSBpcyBhY3R1YWxseSBpbml0aWFsaXplZCBhbmQgcHJvYmVkLiBUaGF0J3MgdGhlIGNydWNpYWwgZGF0YSBwb2ludCB0aGF0IHdpbGwgZGV0ZXJtaW5lIGlmIGl0J3MgZmVhc2libGUgdG8gZnV6eiB0aGlzIGNvZGUgaW4gYSBzdGFuZGFyZCBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk1ODMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNToyMDowMC45NDQ5MzM4ODNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA3NTczNjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlXy4qZHJpdmVyXFxcXCh8cHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYz0yMTM9c3RhdGljIGludCBrc3o4NDYzX2lycV9kb21haW5fbWFwKHN0cnVjdCBpcnFfZG9tYWluICpkLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjE3LVxcdGlycV9zZXRfY2hpcF9hbmRfaGFuZGxlcihpcnEsIFxcdTAwMjZrc3o4NDYzX2lycV9jaGlwLCBoYW5kbGVfbGV2ZWxfaXJxKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyMTg6XFx0aXJxX3NldF9ub3Byb2JlKGlycSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjE5LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jPTEwMD1zdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9jb25maWcga3N6ODg2M19yZWdtYXBfY29uZmlnW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmMtMTMyLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYzoxMzM6c3RhdGljIGludCBrc3o4ODYzX3NtaV9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jLTEzNC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmMtMTU4LVxcdFxcdGlmIChJU19FUlIoZGV2LVxcdTAwM2VyZWdtYXBbaV0pKSB7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jOjE1OTpcXHRcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYy0xNjAtXFx0XFx0XFx0XFx0XFx0ICAgICBQVFJfRVJSKGRldi1cXHUwMDNlcmVnbWFwW2ldKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYz0yMTE9c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBrc3o4ODYzX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmM6MjEyOlxcdC5wcm9iZVxcdD0ga3N6ODg2M19zbWlfcHJvYmUsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jLTIxMy1cXHQucmVtb3ZlXFx0PSBrc3o4ODYzX3NtaV9yZW1vdmUsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmMtMjIwLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYzoyMjE6bWRpb19tb2R1bGVfZHJpdmVyKGtzejg4NjNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmMtMjIyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jPTE1PUtTWl9SRUdNQVBfVEFCTEUoa3N6OTQ3Nywgbm90X3VzZWQsIDE2LCAwLCAwKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtMTYtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jOjE3OnN0YXRpYyBpbnQga3N6OTQ3N19pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmkyYylcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtMTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTM5LVxcdFxcdGlmIChJU19FUlIoZGV2LVxcdTAwM2VyZWdtYXBbaV0pKSB7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jOjQwOlxcdFxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKFxcdTAwMjZpMmMtXFx1MDAzZWRldiwgUFRSX0VSUihkZXYtXFx1MDAzZXJlZ21hcFtpXSksXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTQxLVxcdFxcdFxcdFxcdFxcdCAgICAgXFxcIkZhaWxlZCB0byBpbml0aWFsaXplIHJlZ21hcCVpXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jPTEzMz1zdGF0aWMgc3RydWN0IGkyY19kcml2ZXIga3N6OTQ3N19pMmNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTEzOC1cXHR9LFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzoxMzk6XFx0LnByb2JlID0ga3N6OTQ3N19pMmNfcHJvYmUsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jLTE0MC1cXHQucmVtb3ZlXFx0PSBrc3o5NDc3X2kyY19yZW1vdmUsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtMTQ0LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzoxNDU6bW9kdWxlX2kyY19kcml2ZXIoa3N6OTQ3N19pMmNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtMTQ2LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9MjQ5Mj1zdGF0aWMgaW50IGtzel9pcnFfZG9tYWluX21hcChzdHJ1Y3QgaXJxX2RvbWFpbiAqZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI0OTYtXFx0aXJxX3NldF9jaGlwX2FuZF9oYW5kbGVyKGlycSwgXFx1MDAyNmtzel9pcnFfY2hpcCwgaGFuZGxlX2xldmVsX2lycSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MjQ5NzpcXHRpcnFfc2V0X25vcHJvYmUoaXJxKTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0yNDk4LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9Mzk1Mj1pbnQga3N6X3N3aXRjaF9yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzk5Ny1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzozOTk4OlxcdC8qIFVwZGF0ZSB0aGUgY29tcGF0aWJsZSBpbmZvIHdpdGggdGhlIHByb2JlZCBvbmUgKi9cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zOTk5LVxcdGRldi1cXHUwMDNlaW5mbyA9IGluZm87XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9wdHAuYz0xMjIwPXN0YXRpYyBpbnQga3N6X3B0cF9pcnFfZG9tYWluX21hcChzdHJ1Y3QgaXJxX2RvbWFpbiAqZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jLTEyMjQtXFx0aXJxX3NldF9jaGlwX2FuZF9oYW5kbGVyKGlycSwgXFx1MDAyNmtzel9wdHBfaXJxX2NoaXAsIGhhbmRsZV9sZXZlbF9pcnEpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3B0cC5jOjEyMjU6XFx0aXJxX3NldF9ub3Byb2JlKGlycSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfcHRwLmMtMTIyNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jPTEzND1LU1o4NDYzX1JFR01BUF9UQUJMRShrc3o4NDYzLCBLU1o4NDYzX1NQSV9BRERSX1NISUZULCAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMTM2LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jOjEzNzpzdGF0aWMgaW50IGtzel9zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYy0xMzgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMTc3LVxcdFxcdGlmIChJU19FUlIoZGV2LVxcdTAwM2VyZWdtYXBbaV0pKSB7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM6MTc4OlxcdFxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKFxcdTAwMjZzcGktXFx1MDAzZWRldiwgUFRSX0VSUihkZXYtXFx1MDAzZXJlZ21hcFtpXSksXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMTc5LVxcdFxcdFxcdFxcdFxcdCAgICAgXFxcIkZhaWxlZCB0byBpbml0aWFsaXplIHJlZ21hcCVpXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM9MzQ5PXN0YXRpYyBzdHJ1Y3Qgc3BpX2RyaXZlciBrc3pfc3BpX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTM1NS1cXHQuaWRfdGFibGUgPSBrc3pfc3BpX2lkcyxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzozNTY6XFx0LnByb2JlXFx0PSBrc3pfc3BpX3Byb2JlLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTM1Ny1cXHQucmVtb3ZlXFx0PSBrc3pfc3BpX3JlbW92ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTM2MC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzozNjE6bW9kdWxlX3NwaV9kcml2ZXIoa3N6X3NwaV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jLTM2Mi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDU6MjA6MDAuOTk1Njk4MTM5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzI3MTI2MTQxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIEtTWiBEcml2ZXIgTGFuZHNjYXBlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgS1NaIGRyaXZlcnM6IGBrc3o5NDc3X2kyY19kcml2ZXJgLCBga3N6X3NwaV9kcml2ZXJgLCBhbmQgYGtzejg4NjNfZHJpdmVyYC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBjYW4gdGhlc2UgSTJDIG9yIFNQSSBkZXZpY2VzIGJlIGVmZmVjdGl2ZWx5IHByb2JlZCBhbmQgdGVzdGVkIHVzaW5nIHRvb2xzIGxpa2Ugc3l6a2FsbGVyLCBvciBldmVuIGZyb20gdXNlcnNwYWNlIGRpcmVjdGx5PyBUaGF0J3MgYSBjcml0aWNhbCBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyB0aGVpciByb2J1c3RuZXNzLiBBbmQgdGhlbiBpdCBoaXRzIG1lIOKAkyBjYW4gSSBpbnN0YW50aWF0ZSBhbiBJMkMgZGV2aWNlLCBzcGVjaWZpY2FsbHksIGJ5IGxldmVyYWdpbmcgdGhhdCBgL3N5cy9idXMvaTJjL2RldmljZXMvaTJjLSovbmV3X2RldmljZWAgc3lzZnMgaW50ZXJmYWNlPyBUaGlzIHdvdWxkIGJlIGluY3JlZGlibHkgdmFsdWFibGUgZm9yIHN0cmVhbWxpbmVkIHRlc3RpbmcgYW5kIGRlYnVnZ2luZywgaWYgcG9zc2libGUuXG5cbk15IG5leHQgc3RlcCBpcyBjbGVhci4gSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGUgYGtzejk0NzdfaTJjYCBkZXZpY2UsIGZvciBpbnN0YW5jZSwgaXMgYW1lbmFibGUgdG8gaW5zdGFudGlhdGlvbiB2aWEgdGhlIGBuZXdfZGV2aWNlYCBzeXNmcyBpbnRlcmZhY2UsIG9yIGlmIGl0IGhhcyB2ZXJ5IHNwZWNpZmljIGRlcGVuZGVuY2llcyBvbiBEZXZpY2UgVHJlZSAoRFQpIG9yIHBsYXRmb3JtLWxldmVsIHNldHVwIHRoYXQgd291bGQgY29tcGxpY2F0ZSBkaXJlY3QgbWFuaXB1bGF0aW9uLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZS4gSSdsbCBzdGFydCBieSBleGFtaW5pbmcgdGhlIGBrc3o5NDc3X2kyY19wcm9iZWAgZnVuY3Rpb24sIHNwZWNpZmljYWxseSBpbiBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jYCwgdG8gdW5kZXJzdGFuZCB0aGUgZHJpdmVyJ3MgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgYW5kIHByb2JlIGJlaGF2aW9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjQ3OSwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNToyMDowNC4yNjY5NjIzMzFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTA4NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdC8qXFxuICAgMzpcXHQgKiBNaWNyb2NoaXAgS1NaOTQ3NyBzZXJpZXMgcmVnaXN0ZXIgYWNjZXNzIHRocm91Z2ggSTJDXFxuICAgNDpcXHQgKlxcbiAgIDU6XFx0ICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjQgTWljcm9jaGlwIFRlY2hub2xvZ3kgSW5jLlxcbiAgIDY6XFx0ICovXFxuICAgNzpcXHRcXG4gICA4OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9pMmMuaFxcdTAwM2VcXG4gICA5OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXJuZWwuaFxcdTAwM2VcXG4gIDEwOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4gIDExOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZWdtYXAuaFxcdTAwM2VcXG4gIDEyOlxcdFxcbiAgMTM6XFx0I2luY2x1ZGUgXFxcImtzel9jb21tb24uaFxcXCJcXG4gIDE0OlxcdFxcbiAgMTU6XFx0S1NaX1JFR01BUF9UQUJMRShrc3o5NDc3LCBub3RfdXNlZCwgMTYsIDAsIDApO1xcbiAgMTY6XFx0XFxuICAxNzpcXHRzdGF0aWMgaW50IGtzejk0NzdfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpXFxuICAxODpcXHR7XFxuICAxOTpcXHRcXHRjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSAqY2hpcDtcXG4gIDIwOlxcdFxcdHN0cnVjdCBkZXZpY2UgKmRkZXYgPSBcXHUwMDI2aTJjLVxcdTAwM2VkZXY7XFxuICAyMTpcXHRcXHRzdHJ1Y3QgcmVnbWFwX2NvbmZpZyByYztcXG4gIDIyOlxcdFxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXY7XFxuICAyMzpcXHRcXHRpbnQgaSwgcmV0O1xcbiAgMjQ6XFx0XFxuICAyNTpcXHRcXHRjaGlwID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRkZXYpO1xcbiAgMjY6XFx0XFx0aWYgKCFjaGlwKVxcbiAgMjc6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuICAyODpcXHRcXG4gIDI5OlxcdFxcdGRldiA9IGtzel9zd2l0Y2hfYWxsb2MoXFx1MDAyNmkyYy1cXHUwMDNlZGV2LCBjaGlwLCBpMmMpO1xcbiAgMzA6XFx0XFx0aWYgKCFkZXYpXFxuICAzMTpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gIDMyOlxcdFxcbiAgMzM6XFx0XFx0LyogU2F2ZSBjaGlwIGlkIHRvIGRvIHNwZWNpYWwgaW5pdGlhbGl6YXRpb24gd2hlbiBwcm9iaW5nLiAqL1xcbiAgMzQ6XFx0XFx0ZGV2LVxcdTAwM2VjaGlwX2lkID0gY2hpcC1cXHUwMDNlY2hpcF9pZDtcXG4gIDM1OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBfX0tTWl9OVU1fUkVHTUFQUzsgaSsrKSB7XFxuICAzNjpcXHRcXHRcXHRyYyA9IGtzejk0NzdfcmVnbWFwX2NvbmZpZ1tpXTtcXG4gIDM3OlxcdFxcdFxcdHJjLmxvY2tfYXJnID0gXFx1MDAyNmRldi1cXHUwMDNlcmVnbWFwX211dGV4O1xcbiAgMzg6XFx0XFx0XFx0ZGV2LVxcdTAwM2VyZWdtYXBbaV0gPSBkZXZtX3JlZ21hcF9pbml0X2kyYyhpMmMsIFxcdTAwMjZyYyk7XFxuICAzOTpcXHRcXHRcXHRpZiAoSVNfRVJSKGRldi1cXHUwMDNlcmVnbWFwW2ldKSkge1xcbiAgNDA6XFx0XFx0XFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXFx1MDAyNmkyYy1cXHUwMDNlZGV2LCBQVFJfRVJSKGRldi1cXHUwMDNlcmVnbWFwW2ldKSxcXG4gIDQxOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgXFxcIkZhaWxlZCB0byBpbml0aWFsaXplIHJlZ21hcCVpXFxcXG5cXFwiLFxcbiAgNDI6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBrc3o5NDc3X3JlZ21hcF9jb25maWdbaV0udmFsX2JpdHMpO1xcbiAgNDM6XFx0XFx0XFx0fVxcbiAgNDQ6XFx0XFx0fVxcbiAgNDU6XFx0XFxuICA0NjpcXHRcXHRpZiAoaTJjLVxcdTAwM2VkZXYucGxhdGZvcm1fZGF0YSlcXG4gIDQ3OlxcdFxcdFxcdGRldi1cXHUwMDNlcGRhdGEgPSBpMmMtXFx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhO1xcbiAgNDg6XFx0XFxuICA0OTpcXHRcXHRkZXYtXFx1MDAzZWlycSA9IGkyYy1cXHUwMDNlaXJxO1xcbiAgNTA6XFx0XFxuICA1MTpcXHRcXHRyZXQgPSBrc3pfc3dpdGNoX3JlZ2lzdGVyKGRldik7XFxuICA1MjpcXHRcXG4gIDUzOlxcdFxcdC8qIE1haW4gRFNBIGRyaXZlciBtYXkgbm90IGJlIHN0YXJ0ZWQgeWV0LiAqL1xcbiAgNTQ6XFx0XFx0aWYgKHJldClcXG4gIDU1OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuICA1NjpcXHRcXG4gIDU3OlxcdFxcdGkyY19zZXRfY2xpZW50ZGF0YShpMmMsIGRldik7XFxuICA1ODpcXHRcXG4gIDU5OlxcdFxcdHJldHVybiAwO1xcbiAgNjA6XFx0fVxcbiAgNjE6XFx0XFxuICA2MjpcXHRzdGF0aWMgdm9pZCBrc3o5NDc3X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmkyYylcXG4gIDYzOlxcdHtcXG4gIDY0OlxcdFxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoaTJjKTtcXG4gIDY1OlxcdFxcbiAgNjY6XFx0XFx0aWYgKGRldilcXG4gIDY3OlxcdFxcdFxcdGtzel9zd2l0Y2hfcmVtb3ZlKGRldik7XFxuICA2ODpcXHR9XFxuICA2OTpcXHRcXG4gIDcwOlxcdHN0YXRpYyB2b2lkIGtzejk0NzdfaTJjX3NodXRkb3duKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpXFxuICA3MTpcXHR7XFxuICA3MjpcXHRcXHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2ID0gaTJjX2dldF9jbGllbnRkYXRhKGkyYyk7XFxuICA3MzpcXHRcXG4gIDc0OlxcdFxcdGlmICghZGV2KVxcbiAgNzU6XFx0XFx0XFx0cmV0dXJuO1xcbiAgNzY6XFx0XFxuICA3NzpcXHRcXHRrc3pfc3dpdGNoX3NodXRkb3duKGRldik7XFxuICA3ODpcXHRcXG4gIDc5OlxcdFxcdGkyY19zZXRfY2xpZW50ZGF0YShpMmMsIE5VTEwpO1xcbiAgODA6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNToyMDowNC4yNjcwNTc1NzFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE5MjYyMzI1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBDaGlwIE1hdGNoIGluIGtzejk0NzdfaTJjLmMqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBmaXJzdCB0aGluZyBJJ20gZG9pbmcgaXMgZ3JhYmJpbmcgdGhlIG1hdGNoaW5nIGRhdGEgZm9yIHRoZSBkZXZpY2UsIGxpa2VseSB0byBpZGVudGlmeSB0aGUgc3BlY2lmaWMgY2hpcCB1c2luZyBgZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRkZXYpO2AuIFRoYXQncyBzdGFuZGFyZCBwcmFjdGljZSwgYW5kIGZyb20gdGhlcmUgSSdtIGdvaW5nIHRvIHdhbnQgdG8gdW5kZXJzdGFuZCB3aGF0IGlzIGJlaW5nIGRvbmUgd2l0aCB0aGF0IGRhdGEuIEl0IHNlZW1zIGxpa2UgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUgYGtzejk0NzdfaTJjLmNgIGZpbGUsIHNwZWNpZmljYWxseSBsaW5lcyA4MCB0aHJvdWdoIDE1MC4gVGhhdCBzZWN0aW9uIGlzIHByb2JhYmx5IHdoZXJlIHRoZSBjaGlwLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIG9yIGNvbmZpZ3VyYXRpb24gaXMgaGFuZGxlZCwgb3IgcGVyaGFwcyBpdCdzIGludm9sdmVkIHdpdGggSTJDIGNvbW11bmljYXRpb24gc2V0dXAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgaGFwcGVucyBiYXNlZCBvbiB0aGUgbWF0Y2ggZGF0YSByZXR1cm5lZCBhbmQgZGV0ZXJtaW5lIGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBkZXZpY2UuIExldCdzIHNlZSB3aGF0IGludGVyZXN0aW5nIHRpZGJpdHMgYXJlIGhpZGluZyBpbiB0aGF0IHNlY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MTE3LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNToyMDowNi40NTk2ODQyNDVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMwMTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA4MCxcbiAgXCJMaW5lQ291bnRcIjogNzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA4MDpcXHR9XFxuICA4MTpcXHRcXG4gIDgyOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBrc3o5NDc3X2kyY19pZFtdID0ge1xcbiAgODM6XFx0XFx0eyAubmFtZSA9IFxcXCJrc3o5NDc3LXN3aXRjaFxcXCIgfSxcXG4gIDg0OlxcdFxcdHsgfVxcbiAgODU6XFx0fTtcXG4gIDg2OlxcdFxcbiAgODc6XFx0TU9EVUxFX0RFVklDRV9UQUJMRShpMmMsIGtzejk0NzdfaTJjX2lkKTtcXG4gIDg4OlxcdFxcbiAgODk6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQga3N6OTQ3N19kdF9pZHNbXSA9IHtcXG4gIDkwOlxcdFxcdHtcXG4gIDkxOlxcdFxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o5NDc3XFxcIixcXG4gIDkyOlxcdFxcdFxcdC5kYXRhID0gXFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaOTQ3N11cXG4gIDkzOlxcdFxcdH0sXFxuICA5NDpcXHRcXHR7XFxuICA5NTpcXHRcXHRcXHQuY29tcGF0aWJsZSA9IFxcXCJtaWNyb2NoaXAsa3N6OTg5NlxcXCIsXFxuICA5NjpcXHRcXHRcXHQuZGF0YSA9IFxcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0tTWjk4OTZdXFxuICA5NzpcXHRcXHR9LFxcbiAgOTg6XFx0XFx0e1xcbiAgOTk6XFx0XFx0XFx0LmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGtzejk4OTdcXFwiLFxcbiAxMDA6XFx0XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o5ODk3XVxcbiAxMDE6XFx0XFx0fSxcXG4gMTAyOlxcdFxcdHtcXG4gMTAzOlxcdFxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o5ODkzXFxcIixcXG4gMTA0OlxcdFxcdFxcdC5kYXRhID0gXFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaOTg5M11cXG4gMTA1OlxcdFxcdH0sXFxuIDEwNjpcXHRcXHR7XFxuIDEwNzpcXHRcXHRcXHQuY29tcGF0aWJsZSA9IFxcXCJtaWNyb2NoaXAsa3N6OTU2M1xcXCIsXFxuIDEwODpcXHRcXHRcXHQuZGF0YSA9IFxcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0tTWjk1NjNdXFxuIDEwOTpcXHRcXHR9LFxcbiAxMTA6XFx0XFx0e1xcbiAxMTE6XFx0XFx0XFx0LmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGtzejg1NjNcXFwiLFxcbiAxMTI6XFx0XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tLU1o4NTYzXVxcbiAxMTM6XFx0XFx0fSxcXG4gMTE0OlxcdFxcdHtcXG4gMTE1OlxcdFxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxrc3o4NTY3XFxcIixcXG4gMTE2OlxcdFxcdFxcdC5kYXRhID0gXFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbS1NaODU2N11cXG4gMTE3OlxcdFxcdH0sXFxuIDExODpcXHRcXHR7XFxuIDExOTpcXHRcXHRcXHQuY29tcGF0aWJsZSA9IFxcXCJtaWNyb2NoaXAsa3N6OTU2N1xcXCIsXFxuIDEyMDpcXHRcXHRcXHQuZGF0YSA9IFxcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0tTWjk1NjddXFxuIDEyMTpcXHRcXHR9LFxcbiAxMjI6XFx0XFx0e1xcbiAxMjM6XFx0XFx0XFx0LmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGxhbjk2NDZcXFwiLFxcbiAxMjQ6XFx0XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tMQU45NjQ2XVxcbiAxMjU6XFx0XFx0fSxcXG4gMTI2OlxcdFxcdHt9LFxcbiAxMjc6XFx0fTtcXG4gMTI4OlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGtzejk0NzdfZHRfaWRzKTtcXG4gMTI5OlxcdFxcbiAxMzA6XFx0c3RhdGljIERFRklORV9TSU1QTEVfREVWX1BNX09QUyhrc3pfaTJjX3BtX29wcyxcXG4gMTMxOlxcdFxcdFxcdFxcdFxcdGtzel9zd2l0Y2hfc3VzcGVuZCwga3N6X3N3aXRjaF9yZXN1bWUpO1xcbiAxMzI6XFx0XFxuIDEzMzpcXHRzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIga3N6OTQ3N19pMmNfZHJpdmVyID0ge1xcbiAxMzQ6XFx0XFx0LmRyaXZlciA9IHtcXG4gMTM1OlxcdFxcdFxcdC5uYW1lXFx0PSBcXFwia3N6OTQ3Ny1zd2l0Y2hcXFwiLFxcbiAxMzY6XFx0XFx0XFx0Lm9mX21hdGNoX3RhYmxlID0ga3N6OTQ3N19kdF9pZHMsXFxuIDEzNzpcXHRcXHRcXHQucG0gPSBcXHUwMDI2a3N6X2kyY19wbV9vcHMsXFxuIDEzODpcXHRcXHR9LFxcbiAxMzk6XFx0XFx0LnByb2JlID0ga3N6OTQ3N19pMmNfcHJvYmUsXFxuIDE0MDpcXHRcXHQucmVtb3ZlXFx0PSBrc3o5NDc3X2kyY19yZW1vdmUsXFxuIDE0MTpcXHRcXHQuc2h1dGRvd24gPSBrc3o5NDc3X2kyY19zaHV0ZG93bixcXG4gMTQyOlxcdFxcdC5pZF90YWJsZSA9IGtzejk0NzdfaTJjX2lkLFxcbiAxNDM6XFx0fTtcXG4gMTQ0OlxcdFxcbiAxNDU6XFx0bW9kdWxlX2kyY19kcml2ZXIoa3N6OTQ3N19pMmNfZHJpdmVyKTtcXG4gMTQ2OlxcdFxcbiAxNDc6XFx0TU9EVUxFX0FVVEhPUihcXFwiVHJpc3RyYW0gSGEgXFx1MDAzY1RyaXN0cmFtLkhhQG1pY3JvY2hpcC5jb21cXHUwMDNlXFxcIik7XFxuIDE0ODpcXHRNT0RVTEVfREVTQ1JJUFRJT04oXFxcIk1pY3JvY2hpcCBLU1o5NDc3IFNlcmllcyBTd2l0Y2ggSTJDIGFjY2VzcyBEcml2ZXJcXFwiKTtcXG4gMTQ5OlxcdE1PRFVMRV9MSUNFTlNFKFxcXCJHUEwgdjJcXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDU6MjA6MDYuNDU5ODE2MDQ1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI2ODkyNTM2NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIERyaXZlciBJbml0aWFsaXphdGlvbiBpbiB0aGUgS2VybmVsKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcHJvYmUgZnVuY3Rpb24sIGBrc3o5NDc3X2kyY19wcm9iZWAuIEkgc2VlIGl0IHN0YXJ0cyBieSBncmFiYmluZyBgY2hpcGAgdXNpbmcgYGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZGV2KWAuIEhtbSwgaWYgdGhlcmUncyBubyBtYXRjaCBkYXRhIOKAkyBwYXJ0aWN1bGFybHkgaWYgdGhpcyBkZXZpY2Ugd2FzIGluc3RhbnRpYXRlZCB0aHJvdWdoIEkyQyB2aWEgYSBzeXNmcyBcIm5ld19kZXZpY2VcIiBjYWxsIOKAkyB0aGVuIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGRldilgIHdpbGwgcmV0dXJuIGBOVUxMYC4gQW5kIHRoYXQncyBjcml0aWNhbCBiZWNhdXNlIHRoZSBmdW5jdGlvbiB0aGVuIGltbWVkaWF0ZWx5IGV4aXRzIHdpdGggYC1FSU5WQUxgLiBObyBPRiBtYXRjaCBkYXRhLCBubyBpbml0aWFsaXphdGlvbiwgc2ltcGxlIGFzIHRoYXQuIEkgc3VzcGVjdGVkIGFzIG11Y2guIEknbSBub3RpbmcgdGhpcyBpcyBieSBkZXNpZ24gZm9yIHRoaXMgZHJpdmVyLiBJIGFtIGdvaW5nIHRvIGNvbXBhcmUgdGhpcyBJMkMgZHJpdmVyIHRvIGl0cyBTUEkgZXF1aXZhbGVudC4gTGV0J3Mgc2VlIGhvdyB0aGF0IG9uZSBpcyBoYW5kbGluZyBpbml0aWFsaXphdGlvbiBhbmQgbWF0Y2hpbmcgaW4gYGtzel9zcGkuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NTUzLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDU6MjA6MDkuMTQ5MDczMzAyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjA0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMDAsXG4gIFwiTGluZUNvdW50XCI6IDcwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzMDA6XFx0XFx0XFx0LmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGxhbjkzNzJcXFwiLFxcbiAzMDE6XFx0XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tMQU45MzcyXVxcbiAzMDI6XFx0XFx0fSxcXG4gMzAzOlxcdFxcdHtcXG4gMzA0OlxcdFxcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxsYW45MzczXFxcIixcXG4gMzA1OlxcdFxcdFxcdC5kYXRhID0gXFx1MDAyNmtzel9zd2l0Y2hfY2hpcHNbTEFOOTM3M11cXG4gMzA2OlxcdFxcdH0sXFxuIDMwNzpcXHRcXHR7XFxuIDMwODpcXHRcXHRcXHQuY29tcGF0aWJsZSA9IFxcXCJtaWNyb2NoaXAsbGFuOTM3NFxcXCIsXFxuIDMwOTpcXHRcXHRcXHQuZGF0YSA9IFxcdTAwMjZrc3pfc3dpdGNoX2NoaXBzW0xBTjkzNzRdXFxuIDMxMDpcXHRcXHR9LFxcbiAzMTE6XFx0XFx0e1xcbiAzMTI6XFx0XFx0XFx0LmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLGxhbjk2NDZcXFwiLFxcbiAzMTM6XFx0XFx0XFx0LmRhdGEgPSBcXHUwMDI2a3N6X3N3aXRjaF9jaGlwc1tMQU45NjQ2XVxcbiAzMTQ6XFx0XFx0fSxcXG4gMzE1OlxcdFxcdHt9LFxcbiAzMTY6XFx0fTtcXG4gMzE3OlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGtzel9kdF9pZHMpO1xcbiAzMTg6XFx0XFxuIDMxOTpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHNwaV9kZXZpY2VfaWQga3N6X3NwaV9pZHNbXSA9IHtcXG4gMzIwOlxcdFxcdHsgXFxcImtzejg0NjNcXFwiIH0sXFxuIDMyMTpcXHRcXHR7IFxcXCJrc3o4NzY1XFxcIiB9LFxcbiAzMjI6XFx0XFx0eyBcXFwia3N6ODc5NFxcXCIgfSxcXG4gMzIzOlxcdFxcdHsgXFxcImtzejg3OTVcXFwiIH0sXFxuIDMyNDpcXHRcXHR7IFxcXCJrc3o4ODYzXFxcIiB9LFxcbiAzMjU6XFx0XFx0eyBcXFwia3N6ODg2NFxcXCIgfSxcXG4gMzI2OlxcdFxcdHsgXFxcImtzejg4NzNcXFwiIH0sXFxuIDMyNzpcXHRcXHR7IFxcXCJrc3o4ODk1XFxcIiB9LFxcbiAzMjg6XFx0XFx0eyBcXFwia3N6OTQ3N1xcXCIgfSxcXG4gMzI5OlxcdFxcdHsgXFxcImtzejk4OTZcXFwiIH0sXFxuIDMzMDpcXHRcXHR7IFxcXCJrc3o5ODk3XFxcIiB9LFxcbiAzMzE6XFx0XFx0eyBcXFwia3N6OTg5M1xcXCIgfSxcXG4gMzMyOlxcdFxcdHsgXFxcImtzejk1NjNcXFwiIH0sXFxuIDMzMzpcXHRcXHR7IFxcXCJrc3o4NTYzXFxcIiB9LFxcbiAzMzQ6XFx0XFx0eyBcXFwia3N6ODU2N1xcXCIgfSxcXG4gMzM1OlxcdFxcdHsgXFxcImtzejk1NjdcXFwiIH0sXFxuIDMzNjpcXHRcXHR7IFxcXCJsYW45MzcwXFxcIiB9LFxcbiAzMzc6XFx0XFx0eyBcXFwibGFuOTM3MVxcXCIgfSxcXG4gMzM4OlxcdFxcdHsgXFxcImxhbjkzNzJcXFwiIH0sXFxuIDMzOTpcXHRcXHR7IFxcXCJsYW45MzczXFxcIiB9LFxcbiAzNDA6XFx0XFx0eyBcXFwibGFuOTM3NFxcXCIgfSxcXG4gMzQxOlxcdFxcdHsgXFxcImxhbjk2NDZcXFwiIH0sXFxuIDM0MjpcXHRcXHR7IH0sXFxuIDM0MzpcXHR9O1xcbiAzNDQ6XFx0TU9EVUxFX0RFVklDRV9UQUJMRShzcGksIGtzel9zcGlfaWRzKTtcXG4gMzQ1OlxcdFxcbiAzNDY6XFx0c3RhdGljIERFRklORV9TSU1QTEVfREVWX1BNX09QUyhrc3pfc3BpX3BtX29wcyxcXG4gMzQ3OlxcdFxcdFxcdFxcdFxcdGtzel9zd2l0Y2hfc3VzcGVuZCwga3N6X3N3aXRjaF9yZXN1bWUpO1xcbiAzNDg6XFx0XFxuIDM0OTpcXHRzdGF0aWMgc3RydWN0IHNwaV9kcml2ZXIga3N6X3NwaV9kcml2ZXIgPSB7XFxuIDM1MDpcXHRcXHQuZHJpdmVyID0ge1xcbiAzNTE6XFx0XFx0XFx0Lm5hbWVcXHQ9IFxcXCJrc3otc3dpdGNoXFxcIixcXG4gMzUyOlxcdFxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IGtzel9kdF9pZHMsXFxuIDM1MzpcXHRcXHRcXHQucG0gPSBcXHUwMDI2a3N6X3NwaV9wbV9vcHMsXFxuIDM1NDpcXHRcXHR9LFxcbiAzNTU6XFx0XFx0LmlkX3RhYmxlID0ga3N6X3NwaV9pZHMsXFxuIDM1NjpcXHRcXHQucHJvYmVcXHQ9IGtzel9zcGlfcHJvYmUsXFxuIDM1NzpcXHRcXHQucmVtb3ZlXFx0PSBrc3pfc3BpX3JlbW92ZSxcXG4gMzU4OlxcdFxcdC5zaHV0ZG93biA9IGtzel9zcGlfc2h1dGRvd24sXFxuIDM1OTpcXHR9O1xcbiAzNjA6XFx0XFxuIDM2MTpcXHRtb2R1bGVfc3BpX2RyaXZlcihrc3pfc3BpX2RyaXZlcik7XFxuIDM2MjpcXHRcXG4gMzYzOlxcdE1PRFVMRV9BTElBUyhcXFwic3BpOmxhbjkzN3hcXFwiKTtcXG4gMzY0OlxcdE1PRFVMRV9BVVRIT1IoXFxcIlRyaXN0cmFtIEhhIFxcdTAwM2NUcmlzdHJhbS5IYUBtaWNyb2NoaXAuY29tXFx1MDAzZVxcXCIpO1xcbiAzNjU6XFx0TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJNaWNyb2NoaXAga3N6IFNlcmllcyBTd2l0Y2ggU1BJIERyaXZlclxcXCIpO1xcbiAzNjY6XFx0TU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNToyMDowOS4xNDkyMDE3ODJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzczOTQ2NjM2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYGtzel9zcGlfcHJvYmVgIGZ1bmN0aW9uIGFuZCBzZWUgd2hhdCBpdCdzIGFsbCBhYm91dC4gQXMgYW4gZXhwZXJ0IGluIG15IGZpZWxkLCBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgYSBmZXcgdGhpbmdzLCBiYXNlZCBvbiB0aGUgbmFtaW5nIGNvbnZlbnRpb24gYW5kIHRoZSBjb250ZXh0IG9mIFNQSSBwcm9iaW5nLiBJJ20gZXhwZWN0aW5nIHRoaXMgdG8gYmUgdGhlIGNvcmUgaW5pdGlhbGl6YXRpb24gYW5kIGRldGVjdGlvbiByb3V0aW5lIGZvciB0aGUgc3BlY2lmaWMgU1BJIGRldmljZSwgbGlrZWx5IGhhbmRsaW5nIGhhcmR3YXJlIHNldHVwIGFuZCBkcml2ZXIgYmluZGluZy4gVGhlIG5hbWUgXCJwcm9iZVwiIGl0c2VsZiBpbXBsaWVzIGEgcHJvY2VzcyBvZiBkaXNjb3ZlcnkgYW5kIGNvbmZpZ3VyYXRpb24sIHNvIEknbGwgYmUgbG9va2luZyBmb3IgYWN0aW9ucyBsaWtlOlxuXG4qICAgKipEZXZpY2UgSWRlbnRpZmljYXRpb246KiogVGhlIGZ1bmN0aW9uIHdpbGwgbGlrZWx5IHN0YXJ0IGJ5IGlkZW50aWZ5aW5nIHRoZSBkZXZpY2UsIHBvdGVudGlhbGx5IHRocm91Z2ggYSBjaGlwIElEIHJlYWQgb3IgYSBzcGVjaWZpYyByZWdpc3RlciBpbnRlcnJvZ2F0aW9uIG92ZXIgdGhlIFNQSSBidXMuIEknbGwgYmUgd2F0Y2hpbmcgdG8gc2VlIGhvdyBpdCBoYW5kbGVzIGRpZmZlcmVudCBkZXZpY2UgcmV2aXNpb25zIG9yIHZhcmlhbnRzLiBBbnkgZXJyb3IgaGFuZGxpbmcgcmVsYXRlZCB0byBkZXZpY2UgaWRlbnRpZmljYXRpb24gd2lsbCBiZSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcuXG4qICAgKipSZXNvdXJjZSBBbGxvY2F0aW9uOioqIEknbSBndWVzc2luZyBpdCB3aWxsIGFsbG9jYXRlIG5lY2Vzc2FyeSByZXNvdXJjZXMsIHN1Y2ggYXMgbWVtb3J5IGJ1ZmZlcnMgZm9yIFNQSSB0cmFuc2FjdGlvbnMgb3IgaW50ZXJydXB0IHJlcXVlc3QgbGluZXMsIGlmIGFwcGxpY2FibGUuIEdvb2QgcmVzb3VyY2UgbWFuYWdlbWVudCBpcyBrZXksIHNvIEknbGwgYmUgc2NydXRpbml6aW5nIHRoaXMgcGFydC5cbiogICAqKkRyaXZlciBCaW5kaW5nOioqIFRoZXJlIHdpbGwgYmUgc3RlcHMgdG8gYmluZCB0aGUgZGV2aWNlIHRvIHRoZSBkcml2ZXIncyBkYXRhIHN0cnVjdHVyZXMuIFRoaXMgcHJvYmFibHkgaW52b2x2ZXMgc2V0dGluZyB1cCB0aGUgZGV2aWNlJ3MgcHJpdmF0ZSBkYXRhLCBhc3NvY2lhdGluZyBpdCB3aXRoIHRoZSBTUEkgZGV2aWNlIHN0cnVjdHVyZSBhbmQgcmVnaXN0ZXJpbmcgaXQgd2l0aGluIHRoZSBMaW51eCBrZXJuZWwgZnJhbWV3b3JrLlxuKiAgICoqSW5pdGlhbGl6YXRpb246KiogSSdtIGFzc3VtaW5nIHRoYXQgaXQgd2lsbCBpbml0aWFsaXplIHRoZSBkZXZpY2UgZm9yIG9wZXJhdGlvbiwgd2hpY2ggY291bGQgbWVhbiBzZW5kaW5nIGNvbmZpZ3VyYXRpb24gY29tbWFuZHMgb3Igc2V0dGluZyB1cCBvcGVyYXRpb25hbCBtb2RlcyB2aWEgdGhlIFNQSSBidXMuIEknbGwgYmUgbG9va2luZyBmb3IgdGhlIHNwZWNpZmljIHNlcXVlbmNlIG9mIFNQSSB0cmFuc2ZlcnMgYW5kIGFueSBkZWxheXMgaW52b2x2ZWQsIGFzIHRpbWluZyBpcyBjcnVjaWFsIGZvciBTUEkgY29tbXVuaWNhdGlvbi5cbiogICAqKkVycm9yIEhhbmRsaW5nOioqIEEgcm9idXN0IGBwcm9iZWAgZnVuY3Rpb24gbmVlZHMgc29saWQgZXJyb3IgaGFuZGxpbmcuIEknbGwgYmUgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBob3cgaXQgZGVhbHMgd2l0aCBwb3RlbnRpYWwgaXNzdWVzIGxpa2UgY29tbXVuaWNhdGlvbiBmYWlsdXJlcywgaW52YWxpZCBkZXZpY2UgcmVzcG9uc2VzLCBvciByZXNvdXJjZSBhbGxvY2F0aW9uIGVycm9ycy4gVGhlIHF1YWxpdHkgb2YgZXJyb3IgcmVwb3J0aW5nLCBsb2dnaW5nLCBhbmQgcmVjb3Zlcnkgd2lsbCBiZSBjcml0aWNhbCBpbiBhIHJlYWwtd29ybGQgc2NlbmFyaW8uXG4qICAgKipPcHRpb25hbCBIYXJkd2FyZSBDaGVja3M6KiogSXQgaXMgYWxzbyBwbGF1c2libGUgaXQgaW5jbHVkZXMgc29tZSBiYXNpYyBoZWFsdGggY2hlY2tzIGFuZCB2YWxpZGF0aW9uIHRoYXQgaGFyZHdhcmUgaXMgaW4gYSB3b3JraW5nIHN0YXRlLlxuXG5Fc3NlbnRpYWxseSwgSSdtIGV4cGVjdGluZyB0aGlzIGBrc3pfc3BpX3Byb2JlYCBmdW5jdGlvbiB0byBiZSB0aGUgZ2F0ZXdheSBmb3IgdGhlIGRldmljZSdzIGludGVncmF0aW9uIGludG8gdGhlIHN5c3RlbS4gTXkgZXhwZXJ0aXNlIHdpbGwgYWxsb3cgbWUgdG8gcXVpY2tseSBldmFsdWF0ZSBpdHMgcXVhbGl0eSwgZWZmaWNpZW5jeSwgYW5kIG92ZXJhbGwgYXBwcm9hY2ggdG8gU1BJIGRldmljZSBtYW5hZ2VtZW50LiBJJ20gcmVhZHkgdG8gZGlnIGluIGFuZCB1bmRlcnN0YW5kIGhvdyB0aGlzIGZ1bmN0aW9uIGNvbnRyaWJ1dGVzIHRvIHRoZSBncmVhdGVyIGRyaXZlciBmcmFtZXdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2OTYwLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNToyMDoxMi44ODg2NzA2NDlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODc5NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTM1LFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTM1OlxcdFxcdFxcdCAgICAgS1NaODQ2M19TUElfQUREUl9BTElHTik7XFxuIDEzNjpcXHRcXG4gMTM3OlxcdHN0YXRpYyBpbnQga3N6X3NwaV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxcbiAxMzg6XFx0e1xcbiAxMzk6XFx0XFx0Y29uc3Qgc3RydWN0IHJlZ21hcF9jb25maWcgKnJlZ21hcF9jb25maWc7XFxuIDE0MDpcXHRcXHRjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSAqY2hpcDtcXG4gMTQxOlxcdFxcdHN0cnVjdCBkZXZpY2UgKmRkZXYgPSBcXHUwMDI2c3BpLVxcdTAwM2VkZXY7XFxuIDE0MjpcXHRcXHRzdHJ1Y3QgcmVnbWFwX2NvbmZpZyByYztcXG4gMTQzOlxcdFxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXY7XFxuIDE0NDpcXHRcXHRpbnQgaSwgcmV0ID0gMDtcXG4gMTQ1OlxcdFxcbiAxNDY6XFx0XFx0Y2hpcCA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZGV2KTtcXG4gMTQ3OlxcdFxcdGlmICghY2hpcClcXG4gMTQ4OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAxNDk6XFx0XFxuIDE1MDpcXHRcXHRkZXYgPSBrc3pfc3dpdGNoX2FsbG9jKFxcdTAwMjZzcGktXFx1MDAzZWRldiwgY2hpcCwgc3BpKTtcXG4gMTUxOlxcdFxcdGlmICghZGV2KVxcbiAxNTI6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIDE1MzpcXHRcXG4gMTU0OlxcdFxcdC8qIFNhdmUgY2hpcCBpZCB0byBkbyBzcGVjaWFsIGluaXRpYWxpemF0aW9uIHdoZW4gcHJvYmluZy4gKi9cXG4gMTU1OlxcdFxcdGRldi1cXHUwMDNlY2hpcF9pZCA9IGNoaXAtXFx1MDAzZWNoaXBfaWQ7XFxuIDE1NjpcXHRcXHRpZiAoY2hpcC1cXHUwMDNlY2hpcF9pZCA9PSBLU1o4OFgzX0NISVBfSUQpXFxuIDE1NzpcXHRcXHRcXHRyZWdtYXBfY29uZmlnID0ga3N6ODg2M19yZWdtYXBfY29uZmlnO1xcbiAxNTg6XFx0XFx0ZWxzZSBpZiAoY2hpcC1cXHUwMDNlY2hpcF9pZCA9PSBLU1o4NDYzX0NISVBfSUQpXFxuIDE1OTpcXHRcXHRcXHRyZWdtYXBfY29uZmlnID0ga3N6ODQ2M19yZWdtYXBfY29uZmlnO1xcbiAxNjA6XFx0XFx0ZWxzZSBpZiAoY2hpcC1cXHUwMDNlY2hpcF9pZCA9PSBLU1o4Nzk1X0NISVBfSUQgfHxcXG4gMTYxOlxcdFxcdFxcdCBjaGlwLVxcdTAwM2VjaGlwX2lkID09IEtTWjg3OTRfQ0hJUF9JRCB8fFxcbiAxNjI6XFx0XFx0XFx0IGNoaXAtXFx1MDAzZWNoaXBfaWQgPT0gS1NaODc2NV9DSElQX0lEKVxcbiAxNjM6XFx0XFx0XFx0cmVnbWFwX2NvbmZpZyA9IGtzejg3OTVfcmVnbWFwX2NvbmZpZztcXG4gMTY0OlxcdFxcdGVsc2UgaWYgKGNoaXAtXFx1MDAzZWNoaXBfaWQgPT0gS1NaODg5NV9DSElQX0lEIHx8XFxuIDE2NTpcXHRcXHRcXHQgY2hpcC1cXHUwMDNlY2hpcF9pZCA9PSBLU1o4ODY0X0NISVBfSUQpXFxuIDE2NjpcXHRcXHRcXHRyZWdtYXBfY29uZmlnID0ga3N6ODg2M19yZWdtYXBfY29uZmlnO1xcbiAxNjc6XFx0XFx0ZWxzZVxcbiAxNjg6XFx0XFx0XFx0cmVnbWFwX2NvbmZpZyA9IGtzejk0NzdfcmVnbWFwX2NvbmZpZztcXG4gMTY5OlxcdFxcbiAxNzA6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIF9fS1NaX05VTV9SRUdNQVBTOyBpKyspIHtcXG4gMTcxOlxcdFxcdFxcdHJjID0gcmVnbWFwX2NvbmZpZ1tpXTtcXG4gMTcyOlxcdFxcdFxcdHJjLmxvY2tfYXJnID0gXFx1MDAyNmRldi1cXHUwMDNlcmVnbWFwX211dGV4O1xcbiAxNzM6XFx0XFx0XFx0cmMud3JfdGFibGUgPSBjaGlwLVxcdTAwM2V3cl90YWJsZTtcXG4gMTc0OlxcdFxcdFxcdHJjLnJkX3RhYmxlID0gY2hpcC1cXHUwMDNlcmRfdGFibGU7XFxuIDE3NTpcXHRcXHRcXHRkZXYtXFx1MDAzZXJlZ21hcFtpXSA9IGRldm1fcmVnbWFwX2luaXRfc3BpKHNwaSwgXFx1MDAyNnJjKTtcXG4gMTc2OlxcdFxcbiAxNzc6XFx0XFx0XFx0aWYgKElTX0VSUihkZXYtXFx1MDAzZXJlZ21hcFtpXSkpIHtcXG4gMTc4OlxcdFxcdFxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKFxcdTAwMjZzcGktXFx1MDAzZWRldiwgUFRSX0VSUihkZXYtXFx1MDAzZXJlZ21hcFtpXSksXFxuIDE3OTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgIFxcXCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSByZWdtYXAlaVxcXFxuXFxcIixcXG4gMTgwOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgcmVnbWFwX2NvbmZpZ1tpXS52YWxfYml0cyk7XFxuIDE4MTpcXHRcXHRcXHR9XFxuIDE4MjpcXHRcXHR9XFxuIDE4MzpcXHRcXG4gMTg0OlxcdFxcdGlmIChzcGktXFx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhKVxcbiAxODU6XFx0XFx0XFx0ZGV2LVxcdTAwM2VwZGF0YSA9IHNwaS1cXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGE7XFxuIDE4NjpcXHRcXG4gMTg3OlxcdFxcdC8qIHNldHVwIHNwaSAqL1xcbiAxODg6XFx0XFx0c3BpLVxcdTAwM2Vtb2RlID0gU1BJX01PREVfMztcXG4gMTg5OlxcdFxcdHJldCA9IHNwaV9zZXR1cChzcGkpO1xcbiAxOTA6XFx0XFx0aWYgKHJldClcXG4gMTkxOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDE5MjpcXHRcXG4gMTkzOlxcdFxcdGRldi1cXHUwMDNlaXJxID0gc3BpLVxcdTAwM2VpcnE7XFxuIDE5NDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDU6MjA6MTIuODg4NzYwMTU5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYyOTA1MTIzNjQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBicmVha2luZyBkb3duIHRoaXMgY29kZSBzbmlwcGV0OlxuXG4qKkRlYnVnZ2luZyBDaGlwIElkZW50aWZpY2F0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBiaXQgb2YgY29kZSBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoaXMgY2hlY2s6IGBjaGlwID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRkZXYpOyBpZiAoIWNoaXApIHJldHVybiAtRUlOVkFMO2AuIFRoaXMgaXMgc3RhbmRhcmQgcHJhY3RpY2UgaW4gZGV2aWNlIGRyaXZlcnMg4oCTIGdldCB0aGUgbWF0Y2hpbmcgZGF0YSBmb3IgdGhlIGRldmljZSwgYW5kIGJhaWwgb3V0IGlmIHdlIGRvbid0IGhhdmUgYSB2YWxpZCBtYXRjaC4gTm8gc3VycHJpc2VzIHRoZXJlLiBCdXQsIEkgbmVlZCB0byB1bmRlcnN0YW5kICpob3cqIHRoZSBgY2hpcGAgc3RydWN0dXJlIGlzIHBvcHVsYXRlZC4gV2hlcmUgZG9lcyBgZGV2LVx1MDAzZWNoaXBfaWRgIGNvbWUgZnJvbSwgc2luY2UgaXQgaXMgbGlrZWx5IHRoYXQgdGhlIGBjaGlwYCB2YXJpYWJsZSBjb250YWlucyBpbmZvcm1hdGlvbiB0aGF0IGluZGljYXRlcyB0aGUgc3BlY2lmaWMgdHlwZSBvZiBzd2l0Y2g/XG5cbk15IG5leHQgc3RlcCBpcyB0byB0cmFjZSBiYWNrIHRoZSBvcmlnaW4gb2YgdGhhdCBjaGlwIElELiBJJ20gZ29pbmcgdG8gaGVhZCBkaXJlY3RseSB0byB0aGUgYGtzel9zd2l0Y2hfcmVnaXN0ZXJgIGFuZCBga3N6X3N3aXRjaF9kZXRlY3RgIGZ1bmN0aW9ucywgd2hpY2gsIGdpdmVuIHRoZSBjb250ZXh0LCBJJ20gYmV0dGluZyByZXNpZGUgaW4gYGtzel9jb21tb24uY2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNydWNpYWwgY29udGV4dCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyBgY2hpcGAgaXMgZGV0ZXJtaW5lZCwgd2hhdCBpdHMgY29udGVudHMgYXJlIGFuZCB3aGF0IGlzIGV4cGVjdGVkIG9mIG1lIGdvaW5nIGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NTM4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNToyMToxNS43OTM4ODg0MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY0NTA0NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3N6X3N3aXRjaF9kZXRlY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yOTM2PXZvaWQga3N6X3BoeWxpbmtfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI5NDctXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6Mjk0ODpzdGF0aWMgaW50IGtzel9zd2l0Y2hfZGV0ZWN0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjk0OS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0zOTUyPWludCBrc3pfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zOTg5LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjM5OTA6XFx0cmV0ID0ga3N6X3N3aXRjaF9kZXRlY3QoZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zOTkxLVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA1OjIxOjE1Ljg0MDM0NjA4N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNzE3MjQzOTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEludmVzdGlnYXRpb24gaW50byBEU0EgU3dpdGNoIERyaXZlcnMqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gaG93IERTQSBzd2l0Y2ggZHJpdmVycyBmdW5jdGlvbiB3aXRoaW4gdGhlIGtlcm5lbC4gTXkgZ29hbCBpcyB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBkcml2ZXJzIGludGVyZmFjZSB3aXRoIHRoZSBoYXJkd2FyZSwgc3BlY2lmaWNhbGx5IHRoZSBldGhlcm5ldCBzd2l0Y2ggY2hpcHMgd2UgY29tbW9ubHkgc2VlLCBsaWtlIHRoZSBvbmVzIGZyb20gTWFydmVsbCwgTWljcm9jaGlwIEtTWiwgQnJvYWRjb20gU3RhcmZpZ2h0ZXIsIGFuZCBvdGhlcnMuIFRoZXNlIGNoaXBzLCBhcyBJIGtub3cgd2VsbCwgYXJlIHR5cGljYWxseSBjb25uZWN0ZWQgdG8gdGhlIHBoeXNpY2FsIGV0aGVybmV0IGludGVyZmFjZXMgdmlhIHByb3RvY29scyBsaWtlIE1ESU8sIFNQSSwgb3IgSTJDIG9uIGVtYmVkZGVkIHN5c3RlbXMgb3IgZGVkaWNhdGVkIGhhcmR3YXJlLlxuXG5Ob3csIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCBpZiB0aGVyZSdzIGFueSB2aXJ0dWFsIGVtdWxhdGlvbiBhdmFpbGFibGUgZm9yIGEgc3BlY2lmaWMgY2hpcCwgbGV0J3Mgc2F5IGEgTWljcm9jaGlwIEtTWiBzd2l0Y2gsIGZvciB0ZXN0aW5nIHB1cnBvc2VzLiBJZGVhbGx5LCBzb21ldGhpbmcgbGlrZSBRRU1VIHdvdWxkIGJlIHBlcmZlY3QuIEknbSBjaGVja2luZyBzcGVjaWZpY2FsbHkgZm9yIHNvbWV0aGluZyBsaWtlIGEgS1NaOTg5NyBvciBLU1o5ODk3Uy4gU2FkbHksIHRoZSBxdWljayBhbnN3ZXIgaXMgbm8sIFFFTVUgZG9lc24ndCBzZWVtIHRvIGVtdWxhdGUgYW55IEtTWiBzd2l0Y2hlcy5cblxuQWxyaWdodCwgc28gdGhlIG5leHQgdGhpbmcgSSdtIGNvbnNpZGVyaW5nIGlzIHdoZXRoZXIgSSBjYW4gY3JlYXRlIGEgRFNBIHN3aXRjaCBmb3IgdGVzdGluZyBpbiB1c2VyIHNwYWNlIHdpdGhvdXQgbmVlZGluZyB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuIElzIHRoZXJlIGEgdmlydHVhbCBEU0Egb3IgbW9jayBEU0EgY29tcG9uZW50IHdpdGhpbiB0aGUga2VybmVsIHRoYXQgY291bGQgZmFjaWxpdGF0ZSB0aGlzPyBUbyBnZXQgc3RhcnRlZCwgSSdtIGdvaW5nIHRvIHJ1biBhIGBncmVwYCBmb3IgRFNBIGRyaXZlcnMgdG8gc2VlIHdoYXQncyBvdXQgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MTU2LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA1OjIxOjE4LjU1NzU5MjE2MVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAyNzcxOTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHNhX3JlZ2lzdGVyX3N3aXRjaFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2FcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM9MzMwOD1pbnQgYjUzX3N3aXRjaF9yZWdpc3RlcihzdHJ1Y3QgYjUzX2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMzMyNi1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzozMzI3OlxcdHJldHVybiBkc2FfcmVnaXN0ZXJfc3dpdGNoKGRldi1cXHUwMDNlZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTMzMjgtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9NTc9c3RydWN0IGRzYV9sb29wX3BkYXRhIHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1ODpcXHQvKiBNdXN0IGJlIGZpcnN0LCBzdWNoIHRoYXQgZHNhX3JlZ2lzdGVyX3N3aXRjaCgpIGNhbiBhY2Nlc3MgdGhpc1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU5LVxcdCAqIHdpdGhvdXQgZ29yeSBwb2ludGVyIG1hbmlwdWxhdGlvbnNcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTM1NT1zdGF0aWMgaW50IGRzYV9sb29wX2Rydl9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zODgtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Mzg5OlxcdHJldCA9IGRzYV9yZWdpc3Rlcl9zd2l0Y2goZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5MC1cXHRpZiAoIXJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jPTE5MzM9c3RhdGljIGludCBoZWxsY3JlZWtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jLTIwMjYtXFxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmM6MjAyNzpcXHRyZXQgPSBkc2FfcmVnaXN0ZXJfc3dpdGNoKGhlbGxjcmVlay1cXHUwMDNlZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jLTIwMjgtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jPTc0Nj1zdGF0aWMgaW50IGtzODk5NV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTgyMy1cXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM6ODI0OlxcdGVyciA9IGRzYV9yZWdpc3Rlcl9zd2l0Y2goa3MtXFx1MDAzZWRzKTtcXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtODI1LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM9MTQwND1zdGF0aWMgaW50IGxhbjkzMDNfcmVnaXN0ZXJfc3dpdGNoKHN0cnVjdCBsYW45MzAzICpjaGlwKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTE0MTYtXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjE0MTc6XFx0cmV0dXJuIGRzYV9yZWdpc3Rlcl9zd2l0Y2goY2hpcC1cXHUwMDNlZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xNDE4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jPTE2Nzg9aW50IGdzd2lwX3Byb2JlX2NvbW1vbihzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdiwgdTMyIHZlcnNpb24pXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNzAzLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE3MDQ6XFx0ZXJyID0gZHNhX3JlZ2lzdGVyX3N3aXRjaChwcml2LVxcdTAwM2Vkcyk7XFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTcwNS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9Mzk1Mj1pbnQga3N6X3N3aXRjaF9yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtNDA4NS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzo0MDg2OlxcdHJldCA9IGRzYV9yZWdpc3Rlcl9zd2l0Y2goZGV2LVxcdTAwM2Vkcyk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtNDA4Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9MTU1PW10NzUzMF9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMTctXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjE4OlxcdHJldHVybiBkc2FfcmVnaXN0ZXJfc3dpdGNoKHByaXYtXFx1MDAzZWRzKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMTktfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM9MzA9bXQ3OTg4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy02My1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzo2NDpcXHRyZXR1cm4gZHNhX3JlZ2lzdGVyX3N3aXRjaChwcml2LVxcdTAwM2Vkcyk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNjUtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzYyOC5jPTU2NT1zdGF0aWMgaW50IG10NzYyOF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzYyOC5jLTYwNi1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NjI4LmM6NjA3OlxcdHJldHVybiBkc2FfcmVnaXN0ZXJfc3dpdGNoKGRzKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NjI4LmMtNjA4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTYwNjAuYz0zMDQ9c3RhdGljIGludCBtdjg4ZTYwNjBfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNjA2MC5jLTMzNS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2MDYwLmM6MzM2OlxcdHJldHVybiBkc2FfcmVnaXN0ZXJfc3dpdGNoKGRzKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2MDYwLmMtMzM3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTM5ODA9c3RhdGljIGludCBtdjg4ZTZ4eHhfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzk5NS1cXHQgKiBkZXBlbmRzIG9uIHRoZSBwaHlzaWNhbCBzd2l0Y2ggdG9wb2xvZ3kuIFdlIG5lZWQgdG8gbGV0IERTQSBmaWd1cmVcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozOTk2OlxcdCAqIHRoYXQgb3V0IGFuZCB0aGVyZWZvcmUgd2UgY2Fubm90IHNldCB0aGlzIGF0IGRzYV9yZWdpc3Rlcl9zd2l0Y2goKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5OTctXFx0ICogdGltZS5cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTcyNTE9c3RhdGljIGludCBtdjg4ZTZ4eHhfcmVnaXN0ZXJfc3dpdGNoKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcyNzYtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzI3NzpcXHRyZXR1cm4gZHNhX3JlZ2lzdGVyX3N3aXRjaChkcyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzI3OC19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYz0yMDkxPXN0YXRpYyBpbnQgbXhsODYyeHhfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmMtMjEzMC1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYzoyMTMxOlxcdGVyciA9IGRzYV9yZWdpc3Rlcl9zd2l0Y2goZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jLTIxMzItXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmM9MjQzNT1zdGF0aWMgaW50IG5ldGNfc3dpdGNoX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtMjQ3OC1cXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzoyNDc5OlxcdGVyciA9IGRzYV9yZWdpc3Rlcl9zd2l0Y2goZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTI0ODAtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYz0yMzkwPWludCBmZWxpeF9yZWdpc3Rlcl9zd2l0Y2goc3RydWN0IGRldmljZSAqZGV2LCByZXNvdXJjZV9zaXplX3Qgc3dpdGNoX2Jhc2UsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmMtMjQyOC1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmM6MjQyOTpcXHRlcnIgPSBkc2FfcmVnaXN0ZXJfc3dpdGNoKGRzKTtcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmMtMjQzMC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYz0xMDMxPXN0YXRpYyBpbnQgYXI5MzMxX3N3X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmMtMTA3OC1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jOjEwNzk6XFx0cmV0ID0gZHNhX3JlZ2lzdGVyX3N3aXRjaChkcyk7XFxuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYy0xMDgwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYz0yMDU5PXFjYThrX3N3X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTIxMjAtXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM6MjEyMTpcXHRyZXR1cm4gZHNhX3JlZ2lzdGVyX3N3aXRjaChwcml2LVxcdTAwM2Vkcyk7XFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtMjEyMi19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmM9MjM1PWludCBydGw4M3h4X3JlZ2lzdGVyX3N3aXRjaChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jLTI1MS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmM6MjUyOlxcdHJldCA9IGRzYV9yZWdpc3Rlcl9zd2l0Y2goZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYy0yNTMtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYz0xMjA3PXN0YXRpYyBpbnQgYTVwc3dfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmMtMTI2Mi1cXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jOjEyNjM6XFx0cmV0ID0gZHNhX3JlZ2lzdGVyX3N3aXRjaChkcyk7XFxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYy0xMjY0LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jPTMyMzc9c3RhdGljIGludCBzamExMTA1X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYy0zMzQwLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jOjMzNDE6XFx0cmV0dXJuIGRzYV9yZWdpc3Rlcl9zd2l0Y2gocHJpdi1cXHUwMDNlZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jLTMzNDItfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3ZpdGVzc2UtdnNjNzN4eC1jb3JlLmM9MjMzMz1pbnQgdnNjNzN4eF9wcm9iZShzdHJ1Y3QgdnNjNzN4eCAqdnNjKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3ZpdGVzc2UtdnNjNzN4eC1jb3JlLmMtMjM4NC1cXHR2c2MtXFx1MDAzZWRzLVxcdTAwM2VwaHlsaW5rX21hY19vcHMgPSBcXHUwMDI2dnNjNzN4eF9waHlsaW5rX21hY19vcHM7XFxuZHJpdmVycy9uZXQvZHNhL3ZpdGVzc2UtdnNjNzN4eC1jb3JlLmM6MjM4NTpcXHRyZXQgPSBkc2FfcmVnaXN0ZXJfc3dpdGNoKHZzYy1cXHUwMDNlZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS92aXRlc3NlLXZzYzczeHgtY29yZS5jLTIzODYtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3hyczcwMHgveHJzNzAweC5jPTgxOD1pbnQgeHJzNzAweF9zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IHhyczcwMHggKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveHJzNzAweC94cnM3MDB4LmMtODQxLVxcbmRyaXZlcnMvbmV0L2RzYS94cnM3MDB4L3hyczcwMHguYzo4NDI6XFx0cmV0dXJuIGRzYV9yZWdpc3Rlcl9zd2l0Y2gocHJpdi1cXHUwMDNlZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS94cnM3MDB4L3hyczcwMHguYy04NDMtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTQ5MTQ9c3RhdGljIGludCB5dDkyMXhfbWRpb19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNDk1OC1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NDk1OTpcXHRyZXR1cm4gZHNhX3JlZ2lzdGVyX3N3aXRjaChkcyk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTQ5NjAtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNToyMToxOC42MDc4NzYyMDdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjAzNzE4OTIxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgQW5hbHlzaXM6IE1pY3JvY2hpcCBLU1ogU3dpdGNoIERyaXZlcioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhlIGBkc2FfbG9vcC5jYCBkcml2ZXIgaXMgYSBtb2NrIGRyaXZlciwgZm9yIERTQSB0ZXN0aW5nIG9ubHksIGFuZCBub3QgcmVsZXZhbnQgaGVyZS4gVGhlIHJlYWwgZm9jdXMgaXMgb24gdGhlIE1pY3JvY2hpcCBLU1ogc3dpdGNoIGRyaXZlciBsb2NhdGVkIGluIGBkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2AuIE15IHRhc2sgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgY29kZSBpcyBmdXp6YWJsZSBieSBzeXprYWxsZXIuXG5cbkZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIHRoaXMgZHJpdmVyIHJlbGllcyBvbiBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0J3MgaW5hY2Nlc3NpYmxlIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCwgYmVjYXVzZSB0aGF0IHdvdWxkIG1lYW4gaXQncyBub3QgZnV6emFibGUuIEknbSBmb2N1c2luZyBvbiB0aGUgY3JpdGVyaWEgZm9yICpub3QqIGZ1enppbmcsIHNwZWNpZmljYWxseSBcIlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZS5cIlxuXG5MZXQncyB2ZXJpZnk6XG5cbjEuICBNeSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LlxuMi4gIFRoZSBjb2RlIGluIHF1ZXN0aW9uIGlzIGluIGBkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2Ag4oCTIHNwZWNpZmljYWxseSBga3N6X2NvbW1vbi5jYCwgYGtzel9jb21tb24uaGAsIGFuZCBgaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaGAuXG4zLiAgVGhpcyBjb2RlIGludHJvZHVjZXMgc3VwcG9ydCBmb3IgdGhlIGBLU1o5ODk3U2Agc3dpdGNoIGNoaXAsIGRpc3Rpbmd1aXNoaW5nIGl0IGZyb20gb3RoZXIgS1NaIG1vZGVscyB2aWEgYSByZWdpc3RlciByZWFkLCBgS1NaOTg5N19SRUdfUE9SVDdfWE1JSV9DVFJMXzBgICgweDczMDApLlxuNC4gIENydWNpYWxseSwgdGhpcyBkcml2ZXIgaXMgZGVzaWduZWQgZm9yIE1pY3JvY2hpcCdzICpwaHlzaWNhbCogRXRoZXJuZXQgc3dpdGNoIGNoaXBzLCB3aGljaCBjb25uZWN0IHRocm91Z2ggU1BJIG9yIEkyQy5cbjUuICBJbiB0eXBpY2FsIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIGVudmlyb25tZW50cywgdGhlcmUncyBubyBNaWNyb2NoaXAgS1NaIHN3aXRjaCBoYXJkd2FyZSBlbXVsYXRpb24gYXZhaWxhYmxlLCBhbmQgSSBjYW4ndCBkeW5hbWljYWxseSBwcm9iZSBvciBhdHRhY2ggdGhpcyBoYXJkd2FyZSB3aXRob3V0IHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIG9yIGEgZGV2aWNlIHRyZWUuXG5cblRoZXJlZm9yZSwgdGhpcyBjb25maXJtcyB0aGF0IHRoZSBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSBpbiBteSBmdXp6aW5nIHNldHVwLiBJJ20gY29uZmlkZW50IGFib3V0IHRoYXQuXG5cbkxldCdzIGNyb3NzLWNoZWNrIGV2ZXJ5dGhpbmcgdG8gYmUgY2VydGFpbi5cblxuKiAgIElzIGBXb3J0aEZ1enppbmdgIGZhbHNlPyBZZXMuXG4qICAgVGhlIHJlbGV2YW50IGBFbmFibGVDb25maWdzYCBhcmUgbGlrZWx5IGBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OYCwgYE5FVF9EU0FfTUlDUk9DSElQX0tTWjk0NzdfSTJDYCwgYW5kIGBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfU1BJYCwgb3IgcG9zc2libHkgZW1wdHkuXG4qICAgYEZvY3VzU3ltYm9sc2AgaXMgZW1wdHksIHdoaWNoIGlzbid0IGEgZmFjdG9yIGhlcmUuXG4qICAgTXkgcmVhc29uaW5nIGlzIGNvbmNpc2U6IHRoZSBkcml2ZXIgaXMgZm9yIHBoeXNpY2FsIE1pY3JvY2hpcCBLU1ogc3dpdGNoZXMgKGluY2x1ZGluZyBkZXRlY3RpbmcgdGhlIEtTWjk4OTdTIHZhcmlhbnQpIHRoYXQgaW50ZXJmYWNlIHZpYSBTUEkvSTJDLCB3aGljaCByZXF1aXJlIGhhcmR3YXJlIHRoYXQgZG9lc24ndCBleGlzdCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIHRodXMgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIuXG5cbk9rYXksIEknbSByZWFkeSB0byBwcmVwYXJlIHRoZSB0b29sIGNhbGwgdG8gYHNldC1yZXN1bHRzYC4gVGhlIGNvZGUgaXMgKm5vdCogZnV6emFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMDAyLCJPdXRwdXRUb2tlbnMiOjE2OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNToyMToyNC42NDUwNjg0N1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NTY2MzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OXCIsXG4gICAgXCJORVRfRFNBX01JQ1JPQ0hJUF9LU1o5NDc3X0kyQ1wiLFxuICAgIFwiTkVUX0RTQV9NSUNST0NISVBfS1NaX1NQSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBNaWNyb2NoaXAgS1NaOTg5N1Mgc3dpdGNoIHZhcmlhbnQgdG8gdGhlIE1pY3JvY2hpcCBLU1ogRFNBIHN3aXRjaCBkcml2ZXIgKGtzel9jb21tb24uYykuIFRoaXMgZHJpdmVyIGNvbnRyb2xzIHBoeXNpY2FsIEV0aGVybmV0IHN3aXRjaCBJQ3MgaW50ZXJmYWNlZCB2aWEgU1BJIG9yIEkyQy4gQmVjYXVzZSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSBsYWNrIGVtdWxhdGlvbiBmb3IgdGhlc2UgcGh5c2ljYWwgc3dpdGNoIGNoaXBzLCB0aGUgbW9kaWZpZWQgaGFyZHdhcmUtc3BlY2lmaWMgZGV0ZWN0aW9uIGFuZCBjaGlwIGRhdGEgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT05cIixcbiAgICBcIk5FVF9EU0FfTUlDUk9DSElQX0tTWjk0NzdfSTJDXCIsXG4gICAgXCJORVRfRFNBX01JQ1JPQ0hJUF9LU1pfU1BJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIE1pY3JvY2hpcCBLU1o5ODk3UyBzd2l0Y2ggdmFyaWFudCB0byB0aGUgTWljcm9jaGlwIEtTWiBEU0Egc3dpdGNoIGRyaXZlciAoa3N6X2NvbW1vbi5jKS4gVGhpcyBkcml2ZXIgY29udHJvbHMgcGh5c2ljYWwgRXRoZXJuZXQgc3dpdGNoIElDcyBpbnRlcmZhY2VkIHZpYSBTUEkgb3IgSTJDLiBCZWNhdXNlIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpIGxhY2sgZW11bGF0aW9uIGZvciB0aGVzZSBwaHlzaWNhbCBzd2l0Y2ggY2hpcHMsIHRoZSBtb2RpZmllZCBoYXJkd2FyZS1zcGVjaWZpYyBkZXRlY3Rpb24gYW5kIGNoaXAgZGF0YSBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA1OjIxOjI0LjcyNDY0MzkwNFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzYwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowfpcx5[1] Phase: Running StartedAt: 2026-09-04 05:21:35 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfpcx5[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-04 05:21:35 +0000 UTC FinishedAt: 2026-09-04 05:21:40 +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,}