Name: series-workflowlszmf Phase: Succeeded StartedAt: 2026-08-06 20:39:09 +0000 UTC FinishedAt: 2026-08-06 22:00:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlszmf[0] Phase: Succeeded StartedAt: 2026-08-06 20:39:09 +0000 UTC FinishedAt: 2026-08-06 21:17:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlszmf[0].run-triage Phase: Succeeded StartedAt: 2026-08-06 20:39:09 +0000 UTC FinishedAt: 2026-08-06 21:17:58 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "series_id": "fa3e749f-4dd5-4959-a61d-f10f3225492c" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "vfio_ap_mdev_open_device", "vfio_ap_mdev_close_device", "vfio_ap_mdev_set_kvm", "vfio_ap_mdev_unset_kvm" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmZpb19hcF9tZGV2X29wZW5fZGV2aWNlJiMzNDssCiAgICAmIzM0O3ZmaW9fYXBfbWRldl9jbG9zZV9kZXZpY2UmIzM0OywKICAgICYjMzQ7dmZpb19hcF9tZGV2X3NldF9rdm0mIzM0OywKICAgICYjMzQ7dmZpb19hcF9tZGV2X3Vuc2V0X2t2bSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBsb2NraW5nIHNlbWFudGljcyBhbmQgc3RhdGUgbWFuYWdlbWVudCBpbiB0aGUgVkZJTyBBUCBkcml2ZXIgd2hlbiBhIG1lZGlhdGVkIGRldmljZSBpcyBhdHRhY2hlZCB0byBvciBkZXRhY2hlZCBmcm9tIGEgS1ZNIGd1ZXN0LiBUaGUgdmZpb19hcCBkcml2ZXIgY2FuIGJlIGxvYWRlZCBhbmQgbWRldnMgY2FuIGJlIGNyZWF0ZWQgYW5kIG9wZW5lZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IHdpdGhvdXQgcmVxdWlyaW5nIHBoeXNpY2FsIEFQIGhhcmR3YXJlLCBtYWtpbmcgdGhpcyBjb2RlIHJlYWNoYWJsZSBhbmQgZnV6emFibGUgdmlhIHN5c2ZzIGFuZCBWRklPIGlvY3Rscy4gKE5vdGU6IFZGSU9fQVAgY29uZmlnIGlzIHJlcXVpcmVkIGJ1dCBvbWl0dGVkIGZyb20gRW5hYmxlQ29uZmlncyBhcyBpdCBpcyBzMzkweCBzcGVjaWZpYyBhbmQgcmVqZWN0ZWQgYnkgdGhlIHRvb2wpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZWZiZmY4ZGM0ZWQ3NjYxYjg3ZWU4NWFmMzIxZWMzM2FjYzQ5YTAyNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDYgMjE6MTQ6MzIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jIGIvZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jXG5pbmRleCA0NGIzYTFkY2MxYjM2Li45OWEwZWZkOTk5ZWY5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmNcbkBAIC00OCwxNSAmIzQzOzQ4LDE5IEBAIHN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9yZXNldF9xdWV1ZShzdHJ1Y3QgdmZpb19hcF9xdWV1ZSAqcSk7XG4gICogMS4gbWF0cml4X2Rldi1cdTAwM2VndWVzdHNfbG9jazogcmVxdWlyZWQgdG8gdXNlIHRoZSBLVk0gcG9pbnRlciB0byB1cGRhdGUgYSBLVk1cbiAgKlx0XHRcdCAgICAgICBndWVzdCYjMzk7cyBBUENCLlxuICAqIDIuIGt2bS1cdTAwM2Vsb2NrOlx0ICAgICAgIHJlcXVpcmVkIHRvIHVwZGF0ZSBhIGd1ZXN0JiMzOTtzIEFQQ0Jcbi0gKiAzLiBtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2s6ICByZXF1aXJlZCB0byBhY2Nlc3MgZGF0YSBzdG9yZWQgaW4gYSBtYXRyaXhfbWRldlxuJiM0MzsgKiAzLiBrdm0tXHUwMDNlYXJjaC5jcnlwdG8ucHFhcF9ob29rX3J3c2VtOiByZXF1aXJlZCB0byB1cGRhdGUgcHFhcF9ob29rIGFuZFxuJiM0MzsgKlx0XHRcdFx0XHRzZXJpYWxpemUgYWdhaW5zdCBQUUFQIGludGVyY2VwdHNcbiYjNDM7ICogNC4gbWF0cml4X2Rldi1cdTAwM2VtZGV2c19sb2NrOiAgcmVxdWlyZWQgdG8gYWNjZXNzIGRhdGEgc3RvcmVkIGluIGEgbWF0cml4X21kZXZcbiAgKlxuLSAqIE5vdGU6IElmIEBrdm0gaXMgTlVMTCwgdGhlIEtWTSBsb2NrIHdpbGwgbm90IGJlIHRha2VuLlxuJiM0MzsgKiBOb3RlOiBJZiBAa3ZtIGlzIE5VTEwsIHRoZSBLVk0gbG9jayBhbmQgcHFhcF9ob29rX3J3c2VtIHdpbGwgbm90IGJlIHRha2VuLlxuICAqL1xuIHN0YXRpYyBpbmxpbmUgdm9pZCBnZXRfdXBkYXRlX2xvY2tzX2Zvcl9rdm0oc3RydWN0IGt2bSAqa3ZtKVxuIHtcbiBcdG11dGV4X2xvY2soXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VndWVzdHNfbG9jayk7XG4tXHRpZiAoa3ZtKVxuJiM0MztcdGlmIChrdm0pIHtcbiBcdFx0bXV0ZXhfbG9jayhcdTAwMjZrdm0tXHUwMDNlbG9jayk7XG4mIzQzO1x0XHRkb3duX3dyaXRlKFx1MDAyNmt2bS1cdTAwM2VhcmNoLmNyeXB0by5wcWFwX2hvb2tfcndzZW0pO1xuJiM0MztcdH1cbiBcdG11dGV4X2xvY2soXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VtZGV2c19sb2NrKTtcbiB9XG4gXG5AQCAtNjgsMTYgJiM0Mzs3MiwxOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2V0X3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtKHN0cnVjdCBrdm0gKmt2bSlcbiAgKlxuICAqIFRoZSBwcm9wZXIgdW5sb2NraW5nIG9yZGVyIGlzOlxuICAqIDEuIG1hdHJpeF9kZXYtXHUwMDNlbWRldnNfbG9ja1xuLSAqIDIuIGt2bS1cdTAwM2Vsb2NrXG4tICogMy4gbWF0cml4X2Rldi1cdTAwM2VndWVzdHNfbG9ja1xuJiM0MzsgKiAyLiBrdm0tXHUwMDNlYXJjaC5jcnlwdG8ucHFhcF9ob29rX3J3c2VtXG4mIzQzOyAqIDMuIGt2bS1cdTAwM2Vsb2NrXG4mIzQzOyAqIDQuIG1hdHJpeF9kZXYtXHUwMDNlZ3Vlc3RzX2xvY2tcbiAgKlxuLSAqIE5vdGU6IElmIEBrdm0gaXMgTlVMTCwgdGhlIEtWTSBsb2NrIHdpbGwgbm90IGJlIHJlbGVhc2VkLlxuJiM0MzsgKiBOb3RlOiBJZiBAa3ZtIGlzIE5VTEwsIHRoZSBLVk0gbG9jayBhbmQgcHFhcF9ob29rX3J3c2VtIHdpbGwgbm90IGJlIHJlbGVhc2VkLlxuICAqL1xuIHN0YXRpYyBpbmxpbmUgdm9pZCByZWxlYXNlX3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtKHN0cnVjdCBrdm0gKmt2bSlcbiB7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VtZGV2c19sb2NrKTtcbi1cdGlmIChrdm0pXG4mIzQzO1x0aWYgKGt2bSkge1xuJiM0MztcdFx0dXBfd3JpdGUoXHUwMDI2a3ZtLVx1MDAzZWFyY2guY3J5cHRvLnBxYXBfaG9va19yd3NlbSk7XG4gXHRcdG11dGV4X3VubG9jayhcdTAwMjZrdm0tXHUwMDNlbG9jayk7XG4mIzQzO1x0fVxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlZ3Vlc3RzX2xvY2spO1xuIH1cbiBcbkBAIC0xODIxLDI2ICYjNDM7MTgyOCwxNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqdmZpb19hcF9tZGV2X2F0dHJfZ3JvdXBzW10gPSB7XG4gc3RhdGljIGludCB2ZmlvX2FwX21kZXZfc2V0X2t2bShzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2LFxuIFx0XHRcdFx0c3RydWN0IGt2bSAqa3ZtKVxuIHtcbi1cdHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbTtcbi1cbiBcdGlmIChrdm0tXHUwMDNlYXJjaC5jcnlwdG8uY3J5Y2JkKSB7XG4tXHRcdGRvd25fd3JpdGUoXHUwMDI2a3ZtLVx1MDAzZWFyY2guY3J5cHRvLnBxYXBfaG9va19yd3NlbSk7XG4tXHRcdGt2bS1cdTAwM2VhcmNoLmNyeXB0by5wcWFwX2hvb2sgPSBcdTAwMjZtYXRyaXhfbWRldi1cdTAwM2VwcWFwX2hvb2s7XG4tXHRcdHVwX3dyaXRlKFx1MDAyNmt2bS1cdTAwM2VhcmNoLmNyeXB0by5wcWFwX2hvb2tfcndzZW0pO1xuLVxuIFx0XHRnZXRfdXBkYXRlX2xvY2tzX2Zvcl9rdm0oa3ZtKTtcbi1cbi1cdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShtLCBcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZW1kZXZfbGlzdCwgbm9kZSkge1xuLVx0XHRcdGlmIChtICE9IG1hdHJpeF9tZGV2IFx1MDAyNlx1MDAyNiBtLVx1MDAzZWt2bSA9PSBrdm0pIHtcbi1cdFx0XHRcdHJlbGVhc2VfdXBkYXRlX2xvY2tzX2Zvcl9rdm0oa3ZtKTtcbi1cdFx0XHRcdHJldHVybiAtRVBFUk07XG4tXHRcdFx0fVxuJiM0MztcdFx0aWYgKGt2bS1cdTAwM2VhcmNoLmNyeXB0by5wcWFwX2hvb2spIHtcbiYjNDM7XHRcdFx0cmVsZWFzZV91cGRhdGVfbG9ja3NfZm9yX2t2bShrdm0pO1xuJiM0MztcdFx0XHRyZXR1cm4gLUVQRVJNO1xuIFx0XHR9XG4mIzQzO1x0XHRrdm0tXHUwMDNlYXJjaC5jcnlwdG8ucHFhcF9ob29rID0gXHUwMDI2bWF0cml4X21kZXYtXHUwMDNlcHFhcF9ob29rO1xuIFxuIFx0XHRrdm1fZ2V0X2t2bShrdm0pO1xuIFx0XHRtYXRyaXhfbWRldi1cdTAwM2Vrdm0gPSBrdm07XG4gXHRcdHZmaW9fYXBfbWRldl91cGRhdGVfZ3Vlc3RfYXBjYihtYXRyaXhfbWRldik7XG4tXG4gXHRcdHJlbGVhc2VfdXBkYXRlX2xvY2tzX2Zvcl9rdm0oa3ZtKTtcbiBcdH1cbiBcbkBAIC0xODgzLDE4ICYjNDM7MTg4MSwxNSBAQCBzdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfdW5zZXRfa3ZtKHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXYpXG4gXHRzdHJ1Y3Qga3ZtICprdm0gPSBtYXRyaXhfbWRldi1cdTAwM2Vrdm07XG4gXG4gXHRpZiAoa3ZtIFx1MDAyNlx1MDAyNiBrdm0tXHUwMDNlYXJjaC5jcnlwdG8uY3J5Y2JkKSB7XG4tXHRcdGRvd25fd3JpdGUoXHUwMDI2a3ZtLVx1MDAzZWFyY2guY3J5cHRvLnBxYXBfaG9va19yd3NlbSk7XG4tXHRcdGt2bS1cdTAwM2VhcmNoLmNyeXB0by5wcWFwX2hvb2sgPSBOVUxMO1xuLVx0XHR1cF93cml0ZShcdTAwMjZrdm0tXHUwMDNlYXJjaC5jcnlwdG8ucHFhcF9ob29rX3J3c2VtKTtcbi1cbiBcdFx0Z2V0X3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtKGt2bSk7XG4mIzQzO1x0XHRrdm0tXHUwMDNlYXJjaC5jcnlwdG8ucHFhcF9ob29rID0gTlVMTDtcbiBcbiBcdFx0a3ZtX2FyY2hfY3J5cHRvX2NsZWFyX21hc2tzKGt2bSk7XG4gXHRcdHZmaW9fYXBfbWRldl9yZXNldF9xdWV1ZXMobWF0cml4X21kZXYpO1xuLVx0XHRrdm1fcHV0X2t2bShrdm0pO1xuIFx0XHRtYXRyaXhfbWRldi1cdTAwM2Vrdm0gPSBOVUxMO1xuIFxuIFx0XHRyZWxlYXNlX3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtKGt2bSk7XG4mIzQzO1x0XHRrdm1fcHV0X2t2bShrdm0pO1xuIFx0fVxuIH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2UmIzM0OywKICAgICYjMzQ7dmZpb19hcF9tZGV2X2Nsb3NlX2RldmljZSYjMzQ7LAogICAgJiMzNDt2ZmlvX2FwX21kZXZfc2V0X2t2bSYjMzQ7LAogICAgJiMzNDt2ZmlvX2FwX21kZXZfdW5zZXRfa3ZtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGxvY2tpbmcgc2VtYW50aWNzIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IGluIHRoZSBWRklPIEFQIGRyaXZlciB3aGVuIGEgbWVkaWF0ZWQgZGV2aWNlIGlzIGF0dGFjaGVkIHRvIG9yIGRldGFjaGVkIGZyb20gYSBLVk0gZ3Vlc3QuIFRoZSB2ZmlvX2FwIGRyaXZlciBjYW4gYmUgbG9hZGVkIGFuZCBtZGV2cyBjYW4gYmUgY3JlYXRlZCBhbmQgb3BlbmVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgd2l0aG91dCByZXF1aXJpbmcgcGh5c2ljYWwgQVAgaGFyZHdhcmUsIG1ha2luZyB0aGlzIGNvZGUgcmVhY2hhYmxlIGFuZCBmdXp6YWJsZSB2aWEgc3lzZnMgYW5kIFZGSU8gaW9jdGxzLiAoTm90ZTogVkZJT19BUCBjb25maWcgaXMgcmVxdWlyZWQgYnV0IG9taXR0ZWQgZnJvbSBFbmFibGVDb25maWdzIGFzIGl0IGlzIHMzOTB4IHNwZWNpZmljIGFuZCByZWplY3RlZCBieSB0aGUgdG9vbCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlZmJmZjhkYzRlZDc2NjFiODdlZTg1YWYzMjFlYzMzYWNjNDlhMDI1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBBdWcgNiAyMToxNDozMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYyBiL2RyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYwppbmRleCA0NGIzYTFkY2MxYjM2Li45OWEwZWZkOTk5ZWY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jCkBAIC00OCwxNSAmIzQzOzQ4LDE5IEBAIHN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9yZXNldF9xdWV1ZShzdHJ1Y3QgdmZpb19hcF9xdWV1ZSAqcSk7CiAgKiAxLiBtYXRyaXhfZGV2LSZndDtndWVzdHNfbG9jazogcmVxdWlyZWQgdG8gdXNlIHRoZSBLVk0gcG9pbnRlciB0byB1cGRhdGUgYSBLVk0KICAqCQkJICAgICAgIGd1ZXN0JiMzOTtzIEFQQ0IuCiAgKiAyLiBrdm0tJmd0O2xvY2s6CSAgICAgICByZXF1aXJlZCB0byB1cGRhdGUgYSBndWVzdCYjMzk7cyBBUENCCi0gKiAzLiBtYXRyaXhfZGV2LSZndDttZGV2c19sb2NrOiAgcmVxdWlyZWQgdG8gYWNjZXNzIGRhdGEgc3RvcmVkIGluIGEgbWF0cml4X21kZXYKJiM0MzsgKiAzLiBrdm0tJmd0O2FyY2guY3J5cHRvLnBxYXBfaG9va19yd3NlbTogcmVxdWlyZWQgdG8gdXBkYXRlIHBxYXBfaG9vayBhbmQKJiM0MzsgKgkJCQkJc2VyaWFsaXplIGFnYWluc3QgUFFBUCBpbnRlcmNlcHRzCiYjNDM7ICogNC4gbWF0cml4X2Rldi0mZ3Q7bWRldnNfbG9jazogIHJlcXVpcmVkIHRvIGFjY2VzcyBkYXRhIHN0b3JlZCBpbiBhIG1hdHJpeF9tZGV2CiAgKgotICogTm90ZTogSWYgQGt2bSBpcyBOVUxMLCB0aGUgS1ZNIGxvY2sgd2lsbCBub3QgYmUgdGFrZW4uCiYjNDM7ICogTm90ZTogSWYgQGt2bSBpcyBOVUxMLCB0aGUgS1ZNIGxvY2sgYW5kIHBxYXBfaG9va19yd3NlbSB3aWxsIG5vdCBiZSB0YWtlbi4KICAqLwogc3RhdGljIGlubGluZSB2b2lkIGdldF91cGRhdGVfbG9ja3NfZm9yX2t2bShzdHJ1Y3Qga3ZtICprdm0pCiB7CiAJbXV0ZXhfbG9jaygmYW1wO21hdHJpeF9kZXYtJmd0O2d1ZXN0c19sb2NrKTsKLQlpZiAoa3ZtKQomIzQzOwlpZiAoa3ZtKSB7CiAJCW11dGV4X2xvY2soJmFtcDtrdm0tJmd0O2xvY2spOwomIzQzOwkJZG93bl93cml0ZSgmYW1wO2t2bS0mZ3Q7YXJjaC5jcnlwdG8ucHFhcF9ob29rX3J3c2VtKTsKJiM0MzsJfQogCW11dGV4X2xvY2soJmFtcDttYXRyaXhfZGV2LSZndDttZGV2c19sb2NrKTsKIH0KIApAQCAtNjgsMTYgJiM0Mzs3MiwxOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2V0X3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtKHN0cnVjdCBrdm0gKmt2bSkKICAqCiAgKiBUaGUgcHJvcGVyIHVubG9ja2luZyBvcmRlciBpczoKICAqIDEuIG1hdHJpeF9kZXYtJmd0O21kZXZzX2xvY2sKLSAqIDIuIGt2bS0mZ3Q7bG9jawotICogMy4gbWF0cml4X2Rldi0mZ3Q7Z3Vlc3RzX2xvY2sKJiM0MzsgKiAyLiBrdm0tJmd0O2FyY2guY3J5cHRvLnBxYXBfaG9va19yd3NlbQomIzQzOyAqIDMuIGt2bS0mZ3Q7bG9jawomIzQzOyAqIDQuIG1hdHJpeF9kZXYtJmd0O2d1ZXN0c19sb2NrCiAgKgotICogTm90ZTogSWYgQGt2bSBpcyBOVUxMLCB0aGUgS1ZNIGxvY2sgd2lsbCBub3QgYmUgcmVsZWFzZWQuCiYjNDM7ICogTm90ZTogSWYgQGt2bSBpcyBOVUxMLCB0aGUgS1ZNIGxvY2sgYW5kIHBxYXBfaG9va19yd3NlbSB3aWxsIG5vdCBiZSByZWxlYXNlZC4KICAqLwogc3RhdGljIGlubGluZSB2b2lkIHJlbGVhc2VfdXBkYXRlX2xvY2tzX2Zvcl9rdm0oc3RydWN0IGt2bSAqa3ZtKQogewogCW11dGV4X3VubG9jaygmYW1wO21hdHJpeF9kZXYtJmd0O21kZXZzX2xvY2spOwotCWlmIChrdm0pCiYjNDM7CWlmIChrdm0pIHsKJiM0MzsJCXVwX3dyaXRlKCZhbXA7a3ZtLSZndDthcmNoLmNyeXB0by5wcWFwX2hvb2tfcndzZW0pOwogCQltdXRleF91bmxvY2soJmFtcDtrdm0tJmd0O2xvY2spOwomIzQzOwl9CiAJbXV0ZXhfdW5sb2NrKCZhbXA7bWF0cml4X2Rldi0mZ3Q7Z3Vlc3RzX2xvY2spOwogfQogCkBAIC0xODIxLDI2ICYjNDM7MTgyOCwxNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqdmZpb19hcF9tZGV2X2F0dHJfZ3JvdXBzW10gPSB7CiBzdGF0aWMgaW50IHZmaW9fYXBfbWRldl9zZXRfa3ZtKHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXYsCiAJCQkJc3RydWN0IGt2bSAqa3ZtKQogewotCXN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbTsKLQogCWlmIChrdm0tJmd0O2FyY2guY3J5cHRvLmNyeWNiZCkgewotCQlkb3duX3dyaXRlKCZhbXA7a3ZtLSZndDthcmNoLmNyeXB0by5wcWFwX2hvb2tfcndzZW0pOwotCQlrdm0tJmd0O2FyY2guY3J5cHRvLnBxYXBfaG9vayA9ICZhbXA7bWF0cml4X21kZXYtJmd0O3BxYXBfaG9vazsKLQkJdXBfd3JpdGUoJmFtcDtrdm0tJmd0O2FyY2guY3J5cHRvLnBxYXBfaG9va19yd3NlbSk7Ci0KIAkJZ2V0X3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtKGt2bSk7Ci0KLQkJbGlzdF9mb3JfZWFjaF9lbnRyeShtLCAmYW1wO21hdHJpeF9kZXYtJmd0O21kZXZfbGlzdCwgbm9kZSkgewotCQkJaWYgKG0gIT0gbWF0cml4X21kZXYgJmFtcDsmYW1wOyBtLSZndDtrdm0gPT0ga3ZtKSB7Ci0JCQkJcmVsZWFzZV91cGRhdGVfbG9ja3NfZm9yX2t2bShrdm0pOwotCQkJCXJldHVybiAtRVBFUk07Ci0JCQl9CiYjNDM7CQlpZiAoa3ZtLSZndDthcmNoLmNyeXB0by5wcWFwX2hvb2spIHsKJiM0MzsJCQlyZWxlYXNlX3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtKGt2bSk7CiYjNDM7CQkJcmV0dXJuIC1FUEVSTTsKIAkJfQomIzQzOwkJa3ZtLSZndDthcmNoLmNyeXB0by5wcWFwX2hvb2sgPSAmYW1wO21hdHJpeF9tZGV2LSZndDtwcWFwX2hvb2s7CiAKIAkJa3ZtX2dldF9rdm0oa3ZtKTsKIAkJbWF0cml4X21kZXYtJmd0O2t2bSA9IGt2bTsKIAkJdmZpb19hcF9tZGV2X3VwZGF0ZV9ndWVzdF9hcGNiKG1hdHJpeF9tZGV2KTsKLQogCQlyZWxlYXNlX3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtKGt2bSk7CiAJfQogCkBAIC0xODgzLDE4ICYjNDM7MTg4MSwxNSBAQCBzdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfdW5zZXRfa3ZtKHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXYpCiAJc3RydWN0IGt2bSAqa3ZtID0gbWF0cml4X21kZXYtJmd0O2t2bTsKIAogCWlmIChrdm0gJmFtcDsmYW1wOyBrdm0tJmd0O2FyY2guY3J5cHRvLmNyeWNiZCkgewotCQlkb3duX3dyaXRlKCZhbXA7a3ZtLSZndDthcmNoLmNyeXB0by5wcWFwX2hvb2tfcndzZW0pOwotCQlrdm0tJmd0O2FyY2guY3J5cHRvLnBxYXBfaG9vayA9IE5VTEw7Ci0JCXVwX3dyaXRlKCZhbXA7a3ZtLSZndDthcmNoLmNyeXB0by5wcWFwX2hvb2tfcndzZW0pOwotCiAJCWdldF91cGRhdGVfbG9ja3NfZm9yX2t2bShrdm0pOwomIzQzOwkJa3ZtLSZndDthcmNoLmNyeXB0by5wcWFwX2hvb2sgPSBOVUxMOwogCiAJCWt2bV9hcmNoX2NyeXB0b19jbGVhcl9tYXNrcyhrdm0pOwogCQl2ZmlvX2FwX21kZXZfcmVzZXRfcXVldWVzKG1hdHJpeF9tZGV2KTsKLQkJa3ZtX3B1dF9rdm0oa3ZtKTsKIAkJbWF0cml4X21kZXYtJmd0O2t2bSA9IE5VTEw7CiAKIAkJcmVsZWFzZV91cGRhdGVfbG9ja3NfZm9yX2t2bShrdm0pOwomIzQzOwkJa3ZtX3B1dF9rdm0oa3ZtKTsKIAl9CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM0MgoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDQ3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipWRklPIEFQIExvY2tpbmcgQ2hhbmdlcyAtIFdvcnRoIEZ1enppbmc/KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jYC4gSXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogdGhleSYjMzk7cmUgYWRkaW5nIHdyaXRlIGxvY2tzIChgZG93bl93cml0ZWAsIGB1cF93cml0ZWApIGFyb3VuZCB0aGUgYGt2bS0mZ3Q7YXJjaC5jcnlwdG8ucHFhcF9ob29rX3J3c2VtYCBzZW1hcGhvcmUgaW4gYGdldF91cGRhdGVfbG9ja3NfZm9yX2t2bWAsIGByZWxlYXNlX3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtYCwgYHZmaW9fYXBfbWRldl9zZXRfa3ZtYCBhbmQgYHZmaW9fYXBfbWRldl91bnNldF9rdm1gLiBJdCYjMzk7cyBhbGwgYWJvdXQgc3luY2hyb25pemluZyBhY2Nlc3MgdG8gYGt2bS0mZ3Q7YXJjaC5jcnlwdG8ucHFhcF9ob29rYCwgd2hpY2ggbWFrZXMgc2Vuc2UuCgpSaWdodCwgc28gdGhpcyBpcyBWRklPIEFQIG9uIHMzOTB4LiBJIGtub3cgdGhpcyBjb2RlLCBpdCYjMzk7cyBhYm91dCBwYXNzaW5nIHRocm91Z2ggY3J5cHRvZ3JhcGhpYyBoYXJkd2FyZSB0byBLVk0gZ3Vlc3RzLiBBbmQgYmVjYXVzZSBpdCYjMzk7cyBzMzkwLXNwZWNpZmljIGFuZCAqcmVsaWVzIG9uIHBoeXNpY2FsIEFQIGNhcmRzKiwgbXkgaW5pdGlhbCBndXQgZmVlbGluZyBpcyB0aGF0IGl0JiMzOTtzIGdvaW5nIHRvIGJlIGEgcGFpbiB0byBmdXp6LiBTdGFuZGFyZCBRRU1VIGRvZXNuJiMzOTt0IHJlYWxseSBlbXVsYXRlIHRoaXMgc3R1ZmYsIGRvZXMgaXQ/IEl0JiMzOTtzIG5vdCBsaWtlIGEgZ2VuZXJpYyBQQ0llIGRldmljZS4gSSYjMzk7ZCBuZWVkIGFjdHVhbCBBUCBoYXJkd2FyZSwgYW5kIFZGSU8gcGFzcy10aHJvdWdoIG9mIHNwZWNpZmljIGRldmljZXMuCgpCdXQsIGhhbmcgb24sIHN5emthbGxlciAqZG9lcyogc3VwcG9ydCBzMzkweCwgd2hpY2ggaXMgZW5jb3VyYWdpbmcuIFRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIGl0IHN1cHBvcnRzIFZGSU8gQVAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJiMzOTtzIGFueSBzdXBwb3J0IG9yIGRlZmluaXRpb25zIGZvciBWRklPIEFQIHdpdGhpbiBzeXprYWxsZXImIzM5O3MgZnJhbWV3b3JrLiBMZXQgbWUgY2hlY2sgdGhlIGRvY3VtZW50YXRpb24uCgpPa2F5LCBsZXQmIzM5O3Mgc2VlLCB3aGF0IGRvZXMgdGhlIHByb21wdCBzYXk/IFRoaXMgcHJvbXB0IHNheXMgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgUUVNVS4gVkZJTyBBUCAqcmVxdWlyZXMqIHBoeXNpY2FsIEFQIGNhcmRzLiBTbyB0aGF0IGlzIHRoZSByZWxldmFudCBpbmZvcm1hdGlvbi4gUUVNVSAqZG9lcyogZW11bGF0ZSBhIGxvdCBvZiBzdHVmZiwgYnV0IGl0JiMzOTtzIHNwZWNpZmljYWxseSBmb3IgcGFzc2luZyB0aHJvdWdoICpwaHlzaWNhbCogQVAgY2FyZHMgdG8gZ3Vlc3RzLgoKU28sIGluIGNvbmNsdXNpb24sIGJhc2VkIG9uIG15IHVuZGVyc3RhbmRpbmcsIHRoaXMgaXMgcHJvYmFibHkgKm5vdCogd29ydGggZnV6emluZyB1bmxlc3Mgc3l6a2FsbGVyIGhhcyBzb21lIHNwZWNpZmljLCBhbmQgcHJvYmFibHkgdmVyeSBhZHZhbmNlZCwgc3VwcG9ydCBmb3IgZW11bGF0aW5nIG9yIHNpbXVsYXRpbmcgQVAgY2FyZCBwYXNzLXRocm91Z2guIFdpdGhvdXQgdGhhdCwgaXQmIzM5O3MganVzdCBub3QgZ29pbmcgdG8gaGFwcGVuIGluIGEgc3RhbmRhcmQgZnV6emluZyBzZXR1cC4gSSBuZWVkIHRvIGxvb2sgaW50byBzeXprYWxsZXImIzM5O3MgVkZJTyBBUCBjYXBhYmlsaXRpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmZpb19hcF9tZGV2X3NldF9rdm0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTE4MTM9c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKnZmaW9fYXBfbWRldl9hdHRyX2dyb3Vwc1tdID0ge1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xODE4LS8qKlxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE4MTk6ICogdmZpb19hcF9tZGV2X3NldF9rdm0gLSBzZXRzIGFsbCBkYXRhIGZvciBAbWF0cml4X21kZXYgdGhhdCBhcmUgbmVlZGVkXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTgyMC0gKiB0byBtYW5hZ2UgQVAgcmVzb3VyY2VzIGZvciB0aGUgZ3Vlc3Qgd2hvc2Ugc3RhdGUgaXMgcmVwcmVzZW50ZWQgYnkgQGt2bVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xODI3LSAqL1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE4Mjg6c3RhdGljIGludCB2ZmlvX2FwX21kZXZfc2V0X2t2bShzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2LFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE4MjktXHRcdFx0XHRzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTIwNDg9c3RhdGljIGludCB2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMDU1LVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIwNTY6XHRyZXR1cm4gdmZpb19hcF9tZGV2X3NldF9rdm0obWF0cml4X21kZXYsIHZkZXYtXHUwMDNla3ZtKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMDU3LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzgyCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMTQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gVkZJTyBBUCBNRGV2KioKCk9rYXksIHNvIGB2ZmlvX2FwX21kZXZfc2V0X2t2bWAgaXMgY2FsbGVkIGZyb20gYHZmaW9fYXBfbWRldl9vcGVuX2RldmljZWAuIE1ha2VzIHNlbnNlLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGNhbGwgY2hhaW4uIElzIGB2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2VgIHRoZSBlbnRyeSBwb2ludD8gWWVzLCBpdCYjMzk7cyBhIFZGSU8gZGV2aWNlIG9wZW4gY2FsbGJhY2suIFJpZ2h0LCBzbyBWRklPIEFQIGlzIGRlYWxpbmcgd2l0aCBtZWRpYXRlZCBkZXZpY2VzIGhlcmUsIHRoZSBtZGV2IGRyaXZlci4gTm93IHRoZSByZWFsIHF1ZXN0aW9uIHBvcHMgdXA6IGNhbiB3ZSBhY3R1YWxseSBnZXQgdGhpcyB3b3JraW5nIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgKndpdGhvdXQqIGFueSBwaHlzaWNhbCBBUCBoYXJkd2FyZT8gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjb2RlIHRvIGZpZ3VyZSB0aGlzIG91dCwgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmNgIGFuZCBgZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgaGVhcnQgb2YgdGhpcyBzaG91bGQgYmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmZpb19hcF9tZGV2X29wZW5fZGV2aWNlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yMDMwPXN0YXRpYyBpbnQgdmZpb19hcF9tZGV2X3Jlc2V0X3FsaXN0KHN0cnVjdCBsaXN0X2hlYWQgKnFsaXN0KVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMDQ3LVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIwNDg6c3RhdGljIGludCB2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICp2ZGV2KVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIwNDkte1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yMzU2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZmaW9fYXBfbWF0cml4X2Rldl9vcHMgPSB7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjM1Ny1cdC5pbml0ID0gdmZpb19hcF9tZGV2X2luaXRfZGV2LFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIzNTg6XHQub3Blbl9kZXZpY2UgPSB2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2UsXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjM1OS1cdC5jbG9zZV9kZXZpY2UgPSB2ZmlvX2FwX21kZXZfY2xvc2VfZGV2aWNlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0NzUKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nIGFzIGFuIGV4cGVydCBpbiBWRklPIGFuZCBBUCBkZXZpY2VzOgoKKipWRklPIEFQIG1kZXYgQ3JlYXRpb24gRGVlcCBEaXZlKioKCkFscmlnaHQsIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgc2V0dGluZyB1cCBhIFZGSU8gQVAgbWVkaWF0ZWQgZGV2aWNlLCBvciBtZGV2LiBGaXJzdCB0aGluZ3MgZmlyc3Q6IGB2ZmlvX2FwYCBtb2R1bGUgbmVlZHMgdG8gYmUgbG9hZGVkLiBUaGF0JiMzOTtzIGZ1bmRhbWVudGFsLiBUaGVuLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBtYXRyaXggZGV2aWNlIGlzIHByZXNlbnQuIEkmIzM5O20gcHJldHR5IGNlcnRhaW4gdGhhdCB0aGUgbWF0cml4IGRldmljZSBpcyB0aGUga2V5IGVuYWJsZXIgaGVyZS4gTm93LCB3aGVyZSBpcyB0aGF0IG1hdHJpeCBkZXZpY2UgaW5zdGFudGlhdGVkPyBSaWdodCwgaXQmIzM5O3MgY3JlYXRlZCB3aXRoaW4gYHZmaW9fYXBfZHJ2LmNgLiBPa2F5LCBnb29kLiBMZXQmIzM5O3MgZGlnIGludG8gdGhhdCBzb3VyY2UgZmlsZSBhbmQgc2VlIGV4YWN0bHkgKmhvdyogaXQmIzM5O3MgYnJvdWdodCBpbnRvIGV4aXN0ZW5jZS4gVW5kZXJzdGFuZGluZyBpdHMgY3JlYXRpb24gcHJvY2VzcyB3aWxsIGJlIGNydWNpYWwgZm9yIGFueSB0cm91Ymxlc2hvb3Rpbmcgb3IgYWR2YW5jZWQgY29uZmlndXJhdGlvbnMgSSBtaWdodCBuZWVkIHRvIHBlcmZvcm0gZG93biB0aGUgbGluZS4gSXQmIzM5O3MgdGhlIGx5bmNocGluLCBzbyBJIG5lZWQgYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgcGFydC4gVGltZSB0byBvcGVuIHRoYXQgZmlsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FwX21hdHJpeF9tZGV2X2NyZWF0ZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc3NgoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHdoYXQgd2UmIzM5O3JlIGxvb2tpbmcgYXQsIHN1bW1hcml6ZWQgZnJvbSB0aGF0IHByb21wdDoKCioqSW52ZXN0aWdhdGluZyBgdmZpb19hcF9kcnYuY2AgZm9yIGBtYXRyaXhfZGV2YCoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IG15IGJlYXJpbmdzLiBMZXQmIzM5O3Mgc3RhcnQgYnkgemVyb2luZyBpbiBvbiBgZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jYC4gVGhlIGNvcmUgcXVlc3Rpb24gaXMgYWx3YXlzIGhvdyBzb21ldGhpbmcgbGlrZSBgbWF0cml4X2RldmAgaXMgdXNlZC4gSSYjMzk7bSBnb2luZyB0byBzY2FuIHRoZSBjb2RlIGZvciB0aGF0IHZhcmlhYmxlLCBzZWUgaG93IGl0JiMzOTtzIGRlZmluZWQsIGluaXRpYWxpemVkLCBhbmQsIGNydWNpYWxseSwgaG93IGl0IGludGVyYWN0cyB3aXRoIG90aGVyIGNvbXBvbmVudHMgb2YgdGhpcyBkcml2ZXIuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGFueSBkYXRhIHN0cnVjdHVyZXMgcmVsYXRlZCB0byB0aGUgaGFyZHdhcmUgb3IgdGhlIFZGSU8gaW50ZXJmYWNlLiBJIGV4cGVjdCB0byBiZSBhYmxlIHRvIHVuZGVyc3RhbmQgdGhlIGJhc2ljIGNvbnRyb2wgZmxvdyB0aHJvdWdoIHRoaXMuIEkgd2lsbCBsb29rIGZvciBob3cgdGhpcyBkcml2ZXIgaGFuZGxlcyB0aGUgQVAgZGV2aWNlIGFuZCBjb21tdW5pY2F0ZXMgd2l0aCB0aGUgc3lzdGVtLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBtYXRyaXhfZGV2YCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZSBvZiBWRklPLCBlc3BlY2lhbGx5IGFzIGl0IHJlbGF0ZXMgdG8gY3J5cHRvZ3JhcGhpYyBhY2NlbGVyYXRpb24gb24gczM5MCBzeXN0ZW1zLiBJIHdpbGwgYWxzbyBiZSBvbiB0aGUgbG9va291dCBmb3IgcG90ZW50aWFsIGFyZWFzIGZvciBvcHRpbWl6YXRpb24sIG9yIHBvaW50cyB0aGF0IGNvdWxkIGJlIGltcHJvdmVkIGluIHRlcm1zIG9mIGNsYXJpdHkgb3IgZXJyb3IgaGFuZGxpbmcsIGdpdmVuIG15IGZhbWlsaWFyaXR5IHdpdGggdGhlIGFyY2hpdGVjdHVyZSBhbmQgY3J5cHRvZ3JhcGhpYyBwcmltaXRpdmVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYXRyaXhfZGV2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3Q9OD13aWxsIGJlIHVzZWQgdG8gZGVub3RlIGluc3RhbmNlcyBvZiB0aGUgc3RydWN0dXJlcyBoZXJlaW4gZGVzY3JpYmVkOlxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtMTEtXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0OjEyOiAgc3RydWN0IGFwX21hdHJpeF9kZXYgKm1hdHJpeF9kZXY7XG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0LTEzLSAgc3RydWN0IGFwX21hdHJpeF9tZGV2ICptYXRyaXhfbWRldjtcbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0PTE2PVRoZSBNYXRyaXggRGV2aWNlcyBMb2NrIChkcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oKVxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtMjAtXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0OjIxOiAgc3RydWN0IGFwX21hdHJpeF9kZXYge1xuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdC0yMi0gIFx0Li4uXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdC0yNy1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3Q6Mjg6VGhlIE1hdHJpeCBEZXZpY2VzIExvY2sgKG1hdHJpeF9kZXYtXHUwMDNlbWRldnNfbG9jaykgaXMgaW1wbGVtZW50ZWQgYXMgYSBnbG9iYWxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3Q6Mjk6bXV0ZXggY29udGFpbmVkIHdpdGhpbiB0aGUgc2luZ2xlIG9iamVjdCBvZiBzdHJ1Y3QgYXBfbWF0cml4X2Rldi4gVGhpcyBsb2NrXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0LTMwLWNvbnRyb2xzIGFjY2VzcyB0byBhbGwgZmllbGRzIGNvbnRhaW5lZCB3aXRoaW4gZWFjaCBtYXRyaXhfbWRldlxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdDozMToobWF0cml4X2Rldi1cdTAwM2VtZGV2X2xpc3QpLiBUaGlzIGxvY2sgbXVzdCBiZSBoZWxkIHdoaWxlIHJlYWRpbmcgZnJvbSwgd3JpdGluZyB0b1xuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdC0zMi1vciB1c2luZyB0aGUgZGF0YSBmcm9tIGEgZmllbGQgY29udGFpbmVkIHdpdGhpbiBhIG1hdHJpeF9tZGV2IGluc3RhbmNlXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdD01ND1UaGUgR3Vlc3RzIExvY2sgKGRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmgpXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdC01OC1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3Q6NTk6ICBzdHJ1Y3QgYXBfbWF0cml4X2RldiB7XG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0LTYwLSAgXHQuLi5cbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0LTY1LVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdDo2NjpUaGUgR3Vlc3RzIExvY2sgKG1hdHJpeF9kZXYtXHUwMDNlZ3Vlc3RzX2xvY2spIGNvbnRyb2xzIGFjY2VzcyB0byB0aGVcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3Q6Njc6bWF0cml4X21kZXYgaW5zdGFuY2VzIChtYXRyaXhfZGV2LVx1MDAzZW1kZXZfbGlzdCkgdGhhdCByZXByZXNlbnQgbWVkaWF0ZWQgZGV2aWNlc1xuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdC02OC10aGF0IGhvbGQgdGhlIHN0YXRlIGZvciB0aGUgbWVkaWF0ZWQgZGV2aWNlcyB0aGF0IGhhdmUgYmVlbiBhdHRhY2hlZCB0byBhXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0PTY5PUtWTSBndWVzdC4gVGhpcyBsb2NrIG11c3QgYmUgaGVsZDpcbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0LTc0LVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdDo3NToyLiBUbyBhZGQgbWF0cml4X21kZXYgaW5zdGFuY2VzIHRvIG9yIHJlbW92ZSB0aGVtIGZyb20gbWF0cml4X2Rldi1cdTAwM2VtZGV2X2xpc3QuXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0LTc2LSAgIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGVuc3VyZSB0aGUgcHJvcGVyIGxvY2tpbmcgb3JkZXIgd2hlbiB0aGUgbGlzdCBpcyBwZXJ1c2VkXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdD04OT1wb2ludGVyIGlzIG5vdCB1c2VkIHRvIHBsdWcvdW5wbHVnIGRldmljZXMgcGFzc2VkIHRocm91Z2ggdG8gdGhlIEtWTSBndWVzdDtcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3Q6OTA6aG93ZXZlciwgaW4gdGhpcyBjYXNlLCB0aGUgTWF0cml4IERldmljZXMgTG9jayAobWF0cml4X2Rldi1cdTAwM2VtZGV2c19sb2NrKSBtdXN0IGJlXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0LTkxLWhlbGQgaW4gb3JkZXIgdG8gYWNjZXNzIHRoZSBLVk0gcG9pbnRlciBzaW5jZSBpdCBpcyBzZXQgYW5kIGNsZWFyZWQgdW5kZXIgdGhlXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdD05ND1uZWVkcyB0byBhY2Nlc3MgdGhlIEtWTSBwb2ludGVyIG9ubHkgZm9yIHRoZSBwdXJwb3NlcyBvZiBzZXR0aW5nIG9yIGNsZWFyaW5nIElSUVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdDo5NTpyZXNvdXJjZXMsIHNvIG9ubHkgdGhlIG1hdHJpeF9kZXYtXHUwMDNlbWRldnNfbG9jayBuZWVkcyB0byBiZSBoZWxkLlxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdC05Ni1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM9MjQ9TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMIHYyXCYjMzQ7KTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0yNS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoyNjpzdHJ1Y3QgYXBfbWF0cml4X2RldiAqbWF0cml4X2RldjtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0yNy1kZWJ1Z19pbmZvX3QgKnZmaW9fYXBfZGJmX2luZm87XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jPTMzPXN0YXRpYyBERVZJQ0VfQVRUUl9STyhmZWF0dXJlcyk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMzQtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MzU6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKm1hdHJpeF9kZXZfYXR0cnNbXSA9IHtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0zNi1cdFx1MDAyNmRldl9hdHRyX2ZlYXR1cmVzLmF0dHIsXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTM4LX07XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6Mzk6QVRUUklCVVRFX0dST1VQUyhtYXRyaXhfZGV2KTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy00MC1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM9NTg9c3RhdGljIHN0cnVjdCBhcF9kcml2ZXIgdmZpb19hcF9kcnYgPSB7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTY2LVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjY3OnN0YXRpYyB2b2lkIHZmaW9fYXBfbWF0cml4X2Rldl9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy02OC17XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6Njk6XHRzdHJ1Y3QgYXBfbWF0cml4X2RldiAqbWF0cml4X2RldjtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy03MC1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzo3MTpcdG1hdHJpeF9kZXYgPSBjb250YWluZXJfb2YoZGV2LCBzdHJ1Y3QgYXBfbWF0cml4X2RldiwgZGV2aWNlKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzo3MjpcdGtmcmVlKG1hdHJpeF9kZXYpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTczLX1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM9Nzk9c3RhdGljIHN0cnVjdCBkZXZpY2VfZHJpdmVyIG1hdHJpeF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTgyLVx0LnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlLFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjgzOlx0LmRldl9ncm91cHMgPSBtYXRyaXhfZGV2X2dyb3VwcyxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy04NC19O1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTg1LVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjg2OnN0YXRpYyBpbnQgdmZpb19hcF9tYXRyaXhfZGV2X2NyZWF0ZSh2b2lkKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTg3LXtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtOTgtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6OTk6XHRtYXRyaXhfZGV2ID0ga3phbGxvY19vYmooKm1hdHJpeF9kZXYpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjEwMDpcdGlmICghbWF0cml4X2Rldikge1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTEwMS1cdFx0cmV0ID0gLUVOT01FTTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTA2LVx0aWYgKHRlc3RfZmFjaWxpdHkoMTIpKSB7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTA3Olx0XHRyZXQgPSBhcF9xY2koXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VpbmZvKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xMDgtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTExMS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxMTI6XHRtdXRleF9pbml0KFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlbWRldnNfbG9jayk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTEzOlx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VtZGV2X2xpc3QpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjExNDpcdG11dGV4X2luaXQoXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VndWVzdHNfbG9jayk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTE1LVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjExNjpcdGRldl9zZXRfbmFtZShcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZWRldmljZSwgXCYjMzQ7JXNcJiMzNDssIFZGSU9fQVBfREVWX05BTUUpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjExNzpcdG1hdHJpeF9kZXYtXHUwMDNlZGV2aWNlLnBhcmVudCA9IHJvb3RfZGV2aWNlO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjExODpcdG1hdHJpeF9kZXYtXHUwMDNlZGV2aWNlLmJ1cyA9IFx1MDAyNm1hdHJpeF9idXM7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTE5Olx0bWF0cml4X2Rldi1cdTAwM2VkZXZpY2UucmVsZWFzZSA9IHZmaW9fYXBfbWF0cml4X2Rldl9yZWxlYXNlO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjEyMDpcdG1hdHJpeF9kZXYtXHUwMDNldmZpb19hcF9kcnYgPSBcdTAwMjZ2ZmlvX2FwX2RydjtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xMjEtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTIyOlx0cmV0ID0gZGV2aWNlX3JlZ2lzdGVyKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlZGV2aWNlKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xMjMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xMzItbWF0cml4X2Rydl9lcnI6XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTMzOlx0ZGV2aWNlX2RlbChcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZWRldmljZSk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTM0LW1hdHJpeF9yZWdfZXJyOlxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjEzNTpcdHB1dF9kZXZpY2UoXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VkZXZpY2UpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTEzNi1tYXRyaXhfYWxsb2NfZXJyOlxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xNDItXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTQzOnN0YXRpYyB2b2lkIHZmaW9fYXBfbWF0cml4X2Rldl9kZXN0cm95KHZvaWQpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTQ0LXtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxNDU6XHRzdHJ1Y3QgZGV2aWNlICpyb290X2RldmljZSA9IG1hdHJpeF9kZXYtXHUwMDNlZGV2aWNlLnBhcmVudDtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xNDYtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTQ3LVx0ZHJpdmVyX3VucmVnaXN0ZXIoXHUwMDI2bWF0cml4X2RyaXZlcik7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTQ4Olx0ZGV2aWNlX3VucmVnaXN0ZXIoXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VkZXZpY2UpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE0OS1cdGJ1c191bnJlZ2lzdGVyKFx1MDAyNm1hdHJpeF9idXMpO1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYz0xNjc9c3RhdGljIGludCBfX2luaXQgdmZpb19hcF9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE3OC1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxNzk6XHRyZXQgPSB2ZmlvX2FwX21hdHJpeF9kZXZfY3JlYXRlKCk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTgwLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTg0LVx0aWYgKHJldCkge1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjE4NTpcdFx0dmZpb19hcF9tYXRyaXhfZGV2X2Rlc3Ryb3koKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xODYtXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE5MS1cdFx0YXBfZHJpdmVyX3VucmVnaXN0ZXIoXHUwMDI2dmZpb19hcF9kcnYpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjE5MjpcdFx0dmZpb19hcF9tYXRyaXhfZGV2X2Rlc3Ryb3koKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xOTMtXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jPTIwMD1zdGF0aWMgdm9pZCBfX2V4aXQgdmZpb19hcF9leGl0KHZvaWQpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTIwMy1cdGFwX2RyaXZlcl91bnJlZ2lzdGVyKFx1MDAyNnZmaW9fYXBfZHJ2KTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoyMDQ6XHR2ZmlvX2FwX21hdHJpeF9kZXZfZGVzdHJveSgpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTIwNS1cdGRlYnVnX3VucmVnaXN0ZXIodmZpb19hcF9kYmZfaW5mbyk7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTM3PXN0YXRpYyBzdHJ1Y3QgdmZpb19hcF9xdWV1ZSAqdmZpb19hcF9maW5kX3F1ZXVlKGludCBhcHFuKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzozODpzdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX2FwX21hdHJpeF9kZXZfb3BzO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTM5LXN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9yZXNldF9xdWV1ZShzdHJ1Y3QgdmZpb19hcF9xdWV1ZSAqcSk7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTQ3LSAqIFRoZSBwcm9wZXIgbG9ja2luZyBvcmRlciBpczpcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo0ODogKiAxLiBtYXRyaXhfZGV2LVx1MDAzZWd1ZXN0c19sb2NrOiByZXF1aXJlZCB0byB1c2UgdGhlIEtWTSBwb2ludGVyIHRvIHVwZGF0ZSBhIEtWTVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTQ5LSAqXHRcdFx0ICAgICAgIGd1ZXN0JiMzOTtzIEFQQ0IuXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTUyLSAqXHRcdFx0XHRcdHNlcmlhbGl6ZSBhZ2FpbnN0IFBRQVAgaW50ZXJjZXB0c1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjUzOiAqIDQuIG1hdHJpeF9kZXYtXHUwMDNlbWRldnNfbG9jazogIHJlcXVpcmVkIHRvIGFjY2VzcyBkYXRhIHN0b3JlZCBpbiBhIG1hdHJpeF9tZGV2XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNTQtICpcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9NTc9c3RhdGljIGlubGluZSB2b2lkIGdldF91cGRhdGVfbG9ja3NfZm9yX2t2bShzdHJ1Y3Qga3ZtICprdm0pXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNTgte1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjU5Olx0bXV0ZXhfbG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZWd1ZXN0c19sb2NrKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy02MC1cdGlmIChrdm0pIHtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNjMtXHR9XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6NjQ6XHRtdXRleF9sb2NrKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlbWRldnNfbG9jayk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNjUtfVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy03My0gKiBUaGUgcHJvcGVyIHVubG9ja2luZyBvcmRlciBpczpcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo3NDogKiAxLiBtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2tcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy03NS0gKiAyLiBrdm0tXHUwMDNlYXJjaC5jcnlwdG8ucHFhcF9ob29rX3J3c2VtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNzYtICogMy4ga3ZtLVx1MDAzZWxvY2tcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo3NzogKiA0LiBtYXRyaXhfZGV2LVx1MDAzZWd1ZXN0c19sb2NrXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNzgtICpcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9ODE9c3RhdGljIGlubGluZSB2b2lkIHJlbGVhc2VfdXBkYXRlX2xvY2tzX2Zvcl9rdm0oc3RydWN0IGt2bSAqa3ZtKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTgyLXtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo4MzpcdG11dGV4X3VubG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTg0LVx0aWYgKGt2bSkge1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy04Ny1cdH1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo4ODpcdG11dGV4X3VubG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZWd1ZXN0c19sb2NrKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy04OS19XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTk4LSAqIFRoZSBwcm9wZXIgbG9ja2luZyBvcmRlciBpczpcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo5OTogKiAxLiBtYXRyaXhfZGV2LVx1MDAzZWd1ZXN0c19sb2NrOiByZXF1aXJlZCB0byB1c2UgdGhlIEtWTSBwb2ludGVyIHRvIHVwZGF0ZSBhIEtWTVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTEwMC0gKlx0XHRcdCAgICAgICBndWVzdCYjMzk7cyBBUENCLlxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTEwMS0gKiAyLiBtYXRyaXhfbWRldi1cdTAwM2Vrdm0tXHUwMDNlbG9jazogIHJlcXVpcmVkIHRvIHVwZGF0ZSBhIGd1ZXN0JiMzOTtzIEFQQ0JcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoxMDI6ICogMy4gbWF0cml4X2Rldi1cdTAwM2VtZGV2c19sb2NrOiAgcmVxdWlyZWQgdG8gYWNjZXNzIGRhdGEgc3RvcmVkIGluIGEgbWF0cml4X21kZXZcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xMDMtICpcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MTA3PXN0YXRpYyBpbmxpbmUgdm9pZCBnZXRfdXBkYXRlX2xvY2tzX2Zvcl9tZGV2KHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXYpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTA4LXtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoxMDk6XHRtdXRleF9sb2NrKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlZ3Vlc3RzX2xvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTExMC1cdGlmIChtYXRyaXhfbWRldiBcdTAwMjZcdTAwMjYgbWF0cml4X21kZXYtXHUwMDNla3ZtKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTExMS1cdFx0bXV0ZXhfbG9jayhcdTAwMjZtYXRyaXhfbWRldi1cdTAwM2Vrdm0tXHUwMDNlbG9jayk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTEyOlx0bXV0ZXhfbG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTExMy19XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTEyMi0gKiBUaGUgcHJvcGVyIHVubG9ja2luZyBvcmRlciBpczpcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoxMjM6ICogMS4gbWF0cml4X2Rldi1cdTAwM2VtZGV2c19sb2NrXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTI0LSAqIDIuIG1hdHJpeF9tZGV2LVx1MDAzZWt2bS1cdTAwM2Vsb2NrXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTI1OiAqIDMuIG1hdHJpeF9kZXYtXHUwMDNlZ3Vlc3RzX2xvY2tcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xMjYtICpcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MTMwPXN0YXRpYyBpbmxpbmUgdm9pZCByZWxlYXNlX3VwZGF0ZV9sb2Nrc19mb3JfbWRldihzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2KVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTEzMS17XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTMyOlx0bXV0ZXhfdW5sb2NrKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlbWRldnNfbG9jayk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTMzLVx0aWYgKG1hdHJpeF9tZGV2IFx1MDAyNlx1MDAyNiBtYXRyaXhfbWRldi1cdTAwM2Vrdm0pXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTM0LVx0XHRtdXRleF91bmxvY2soXHUwMDI2bWF0cml4X21kZXYtXHUwMDNla3ZtLVx1MDAzZWxvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjEzNTpcdG11dGV4X3VubG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZWd1ZXN0c19sb2NrKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xMzYtfVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xNDUtICogVGhlIHByb3BlciBsb2NraW5nIG9yZGVyIGlzOlxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE0NjogKiAxLiBtYXRyaXhfZGV2LVx1MDAzZWd1ZXN0c19sb2NrOiByZXF1aXJlZCB0byB1c2UgdGhlIEtWTSBwb2ludGVyIHRvIHVwZGF0ZSBhIEtWTVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE0Ny0gKlx0XHRcdCAgICAgICBndWVzdCYjMzk7cyBBUENCLlxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE0OC0gKiAyLiBtYXRyaXhfbWRldi1cdTAwM2Vrdm0tXHUwMDNlbG9jazogIHJlcXVpcmVkIHRvIHVwZGF0ZSBhIGd1ZXN0JiMzOTtzIEFQQ0JcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoxNDk6ICogMy4gbWF0cml4X2Rldi1cdTAwM2VtZGV2c19sb2NrOiAgcmVxdWlyZWQgdG8gYWNjZXNzIGRhdGEgc3RvcmVkIGluIGEgbWF0cml4X21kZXZcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xNTAtICpcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MTU3PXN0YXRpYyBzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKmdldF91cGRhdGVfbG9ja3NfYnlfYXBxbihpbnQgYXBxbilcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTYwLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE2MTpcdG11dGV4X2xvY2soXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VndWVzdHNfbG9jayk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTYyLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE2MzpcdGxpc3RfZm9yX2VhY2hfZW50cnkobWF0cml4X21kZXYsIFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlbWRldl9saXN0LCBub2RlKSB7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTY0LVx0XHRpZiAodGVzdF9iaXRfaW52KEFQX1FJRF9DQVJEKGFwcW4pLCBtYXRyaXhfbWRldi1cdTAwM2VtYXRyaXguYXBtKSBcdTAwMjZcdTAwMjZcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTY4LVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE2OTpcdFx0XHRtdXRleF9sb2NrKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlbWRldnNfbG9jayk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTcwLVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xNzQtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTc1Olx0bXV0ZXhfbG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE3Ni1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTg3LSAqIFRoZSBwcm9wZXIgbG9ja2luZyBvcmRlciBpczpcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoxODg6ICogMS4gcS1cdTAwM2VtYXRyaXhfZGV2LVx1MDAzZWd1ZXN0c19sb2NrOiByZXF1aXJlZCB0byB1c2UgdGhlIEtWTSBwb2ludGVyIHRvIHVwZGF0ZSBhXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTg5LSAqXHRcdFx0XHQgIEtWTSBndWVzdCYjMzk7cyBBUENCLlxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE5MC0gKiAyLiBxLVx1MDAzZW1hdHJpeF9tZGV2LVx1MDAzZWt2bS1cdTAwM2Vsb2NrOiAgcmVxdWlyZWQgdG8gdXBkYXRlIGEgZ3Vlc3QmIzM5O3MgQVBDQlxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE5MTogKiAzLiBtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2s6XHQgIHJlcXVpcmVkIHRvIGFjY2VzcyBkYXRhIHN0b3JlZCBpbiBtYXRyaXhfbWRldlxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE5Mi0gKlxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0xOTY9c3RhdGljIGlubGluZSB2b2lkIGdldF91cGRhdGVfbG9ja3NfZm9yX3F1ZXVlKHN0cnVjdCB2ZmlvX2FwX3F1ZXVlICpxKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE5Ny17XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTk4Olx0bXV0ZXhfbG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZWd1ZXN0c19sb2NrKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xOTktXHRpZiAocS1cdTAwM2VtYXRyaXhfbWRldiBcdTAwMjZcdTAwMjYgcS1cdTAwM2VtYXRyaXhfbWRldi1cdTAwM2Vrdm0pXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjAwLVx0XHRtdXRleF9sb2NrKFx1MDAyNnEtXHUwMDNlbWF0cml4X21kZXYtXHUwMDNla3ZtLVx1MDAzZWxvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIwMTpcdG11dGV4X2xvY2soXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VtZGV2c19sb2NrKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMDItfVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz01NTI9c3RhdGljIHZvaWQgdmZpb19hcF9sZV9ndWlkX3RvX2JlX3V1aWQoZ3VpZF90ICpndWlkLCB1bnNpZ25lZCBsb25nICp1dWlkKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy01ODEtICogICBDaGVjayB2ZmlvX2FwX3NldGlycSgpIGFuZCB2ZmlvX2FwX2NscmlycSgpIGZvciBvdGhlciBwb3NzaWJsZSBSQy5cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo1ODI6ICogV2UgdGFrZSB0aGUgbWF0cml4X2RldiBsb2NrIHRvIGVuc3VyZSBzZXJpYWxpemF0aW9uIG9uIHF1ZXVlcyBhbmRcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy01ODMtICogbWVkaWF0ZWQgZGV2aWNlIGFjY2Vzcy5cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9NTg4PXN0YXRpYyBpbnQgaGFuZGxlX3BxYXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy02MDctXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6NjA4Olx0bXV0ZXhfbG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTYwOS1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNjQ3LVx0dmNwdS1cdTAwM2VydW4tXHUwMDNlcy5yZWdzLmdwcnNbMV0gXHUwMDNlXHUwMDNlPSAzMjtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo2NDg6XHRtdXRleF91bmxvY2soXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VtZGV2c19sb2NrKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy02NDktXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9Njc4PXN0YXRpYyBib29sIHZmaW9fYXBfbWRldl9maWx0ZXJfY2RvbXMoc3RydWN0IGFwX21hdHJpeF9tZGV2ICptYXRyaXhfbWRldilcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNjgzLVx0Yml0bWFwX2FuZChtYXRyaXhfbWRldi1cdTAwM2VzaGFkb3dfYXBjYi5hZG0sIG1hdHJpeF9tZGV2LVx1MDAzZW1hdHJpeC5hZG0sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6Njg0Olx0XHQgICAodW5zaWduZWQgbG9uZyAqKW1hdHJpeF9kZXYtXHUwMDNlaW5mby5hZG0sIEFQX0RPTUFJTlMpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTY4NS1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9NzI3PXN0YXRpYyBib29sIHZmaW9fYXBfbWRldl9maWx0ZXJfbWF0cml4KHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXYsXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTczNS1cdGJpdG1hcF9jb3B5KHByZXZfc2hhZG93X2FxbSwgbWF0cml4X21kZXYtXHUwMDNlc2hhZG93X2FwY2IuYXFtLCBBUF9ET01BSU5TKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo3MzY6XHR2ZmlvX2FwX21hdHJpeF9pbml0KFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlaW5mbywgXHUwMDI2bWF0cml4X21kZXYtXHUwMDNlc2hhZG93X2FwY2IpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTczNy1cdGJpdG1hcF9jbGVhcihhcG1fZmlsdGVyZWQsIDAsIEFQX0RFVklDRVMpO1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy03NDQtXHRiaXRtYXBfYW5kKG1hdHJpeF9tZGV2LVx1MDAzZXNoYWRvd19hcGNiLmFwbSwgbWF0cml4X21kZXYtXHUwMDNlbWF0cml4LmFwbSxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo3NDU6XHRcdCAgICh1bnNpZ25lZCBsb25nICopbWF0cml4X2Rldi1cdTAwM2VpbmZvLmFwbSwgQVBfREVWSUNFUyk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNzQ2LVx0Yml0bWFwX2FuZChtYXRyaXhfbWRldi1cdTAwM2VzaGFkb3dfYXBjYi5hcW0sIG1hdHJpeF9tZGV2LVx1MDAzZW1hdHJpeC5hcW0sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6NzQ3Olx0XHQgICAodW5zaWduZWQgbG9uZyAqKW1hdHJpeF9kZXYtXHUwMDNlaW5mby5hcW0sIEFQX0RPTUFJTlMpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTc0OC1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9NzgzPXN0YXRpYyBpbnQgdmZpb19hcF9tZGV2X2luaXRfZGV2KHN0cnVjdCB2ZmlvX2RldmljZSAqdmRldilcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNzg4LVx0bWF0cml4X21kZXYtXHUwMDNlbWRldiA9IHRvX21kZXZfZGV2aWNlKHZkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo3ODk6XHR2ZmlvX2FwX21hdHJpeF9pbml0KFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlaW5mbywgXHUwMDI2bWF0cml4X21kZXYtXHUwMDNlbWF0cml4KTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy03OTAtXHRtYXRyaXhfbWRldi1cdTAwM2VwcWFwX2hvb2sgPSBoYW5kbGVfcHFhcDtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo3OTE6XHR2ZmlvX2FwX21hdHJpeF9pbml0KFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlaW5mbywgXHUwMDI2bWF0cml4X21kZXYtXHUwMDNlc2hhZG93X2FwY2IpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTc5Mi1cdGhhc2hfaW5pdChtYXRyaXhfbWRldi1cdTAwM2VxdGFibGUucXVldWVzKTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9Nzk3PXN0YXRpYyBpbnQgdmZpb19hcF9tZGV2X3Byb2JlKHN0cnVjdCBtZGV2X2RldmljZSAqbWRldilcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtODAyLVx0bWF0cml4X21kZXYgPSB2ZmlvX2FsbG9jX2RldmljZShhcF9tYXRyaXhfbWRldiwgdmRldiwgXHUwMDI2bWRldi1cdTAwM2VkZXYsXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6ODAzOlx0XHRcdFx0XHRcdTAwMjZ2ZmlvX2FwX21hdHJpeF9kZXZfb3BzKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy04MDQtXHRpZiAoSVNfRVJSKG1hdHJpeF9tZGV2KSlcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtODEyLVx0ZGV2X3NldF9kcnZkYXRhKFx1MDAyNm1kZXYtXHUwMDNlZGV2LCBtYXRyaXhfbWRldik7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6ODEzOlx0bXV0ZXhfbG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjgxNDpcdGxpc3RfYWRkKFx1MDAyNm1hdHJpeF9tZGV2LVx1MDAzZW5vZGUsIFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlbWRldl9saXN0KTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo4MTU6XHRtdXRleF91bmxvY2soXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VtZGV2c19sb2NrKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy04MTYtXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9ODY3PXN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9yZW1vdmUoc3RydWN0IG1kZXZfZGV2aWNlICptZGV2KVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy04NzItXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6ODczOlx0bXV0ZXhfbG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZWd1ZXN0c19sb2NrKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo4NzQ6XHRtdXRleF9sb2NrKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlbWRldnNfbG9jayk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtODc1LVx0dmZpb19hcF9tZGV2X3Jlc2V0X3F1ZXVlcyhtYXRyaXhfbWRldik7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTg3Ny1cdGxpc3RfZGVsKFx1MDAyNm1hdHJpeF9tZGV2LVx1MDAzZW5vZGUpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjg3ODpcdG11dGV4X3VubG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjg3OTpcdG11dGV4X3VubG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZWd1ZXN0c19sb2NrKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy04ODAtXHR2ZmlvX3B1dF9kZXZpY2UoXHUwMDI2bWF0cml4X21kZXYtXHUwMDNldmRldik7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTkyOT1zdGF0aWMgaW50IHZmaW9fYXBfbWRldl92ZXJpZnlfbm9fc2hhcmluZyhzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKmFzc2lnbmVlLFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy05MzYtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6OTM3Olx0bGlzdF9mb3JfZWFjaF9lbnRyeShhc3NpZ25lZF90bywgXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VtZGV2X2xpc3QsIG5vZGUpIHtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy05MzgtXHRcdC8qXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTE1Njg9c3RhdGljIHNzaXplX3QgY29udHJvbF9kb21haW5zX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xNTc2LVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE1Nzc6XHRtdXRleF9sb2NrKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlbWRldnNfbG9jayk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTU3OC1cdGZvcl9lYWNoX3NldF9iaXRfaW52KGlkLCBtYXRyaXhfbWRldi1cdTAwM2VtYXRyaXguYWRtLCBtYXhfZG9taWQgJiM0MzsgMSlcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xNTc5LVx0XHRuY2hhcnMgJiM0Mzs9IHN5c2ZzX2VtaXRfYXQoYnVmLCBuY2hhcnMsIFwmIzM0OyUwNGx4XFxuXCYjMzQ7LCBpZCk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTU4MDpcdG11dGV4X3VubG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE1ODEtXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTE2MTU9c3RhdGljIHNzaXplX3QgbWF0cml4X3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTYyMC1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoxNjIxOlx0bXV0ZXhfbG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE2MjItXHRuY2hhcnMgPSB2ZmlvX2FwX21kZXZfbWF0cml4X3Nob3coXHUwMDI2bWF0cml4X21kZXYtXHUwMDNlbWF0cml4LCBidWYpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE2MjM6XHRtdXRleF91bmxvY2soXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VtZGV2c19sb2NrKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xNjI0LVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0xNjI5PXN0YXRpYyBzc2l6ZV90IGd1ZXN0X21hdHJpeF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTYzNC1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoxNjM1Olx0bXV0ZXhfbG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE2MzYtXHRuY2hhcnMgPSB2ZmlvX2FwX21kZXZfbWF0cml4X3Nob3coXHUwMDI2bWF0cml4X21kZXYtXHUwMDNlc2hhZG93X2FwY2IsIGJ1Zik7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTYzNzpcdG11dGV4X3VubG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE2MzgtXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTE4NjA9c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X2RtYV91bm1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKnZkZXYsIHU2NCBpb3ZhLFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xODY1LVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE4NjY6XHRtdXRleF9sb2NrKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlbWRldnNfbG9jayk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTg2Ny1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTg2OS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoxODcwOlx0bXV0ZXhfdW5sb2NrKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlbWRldnNfbG9jayk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTg3MS19XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTE4OTY9c3RhdGljIHN0cnVjdCB2ZmlvX2FwX3F1ZXVlICp2ZmlvX2FwX2ZpbmRfcXVldWUoaW50IGFwcW4pXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE5MDQtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTkwNTpcdGlmIChxdWV1ZS1cdTAwM2VhcF9kZXYuZGV2aWNlLmRyaXZlciA9PSBcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZXZmaW9fYXBfZHJ2LVx1MDAzZWRyaXZlcilcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xOTA2LVx0XHRxID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNnF1ZXVlLVx1MDAzZWFwX2Rldi5kZXZpY2UpO1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yMjU5PXN0YXRpYyBzc2l6ZV90IHZmaW9fYXBfbWRldl9pb2N0bChzdHJ1Y3QgdmZpb19kZXZpY2UgKnZkZXYsXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIyNjUtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjI2NjpcdG11dGV4X2xvY2soXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VtZGV2c19sb2NrKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMjY3LVx0c3dpdGNoIChjbWQpIHtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjI4My1cdH1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyMjg0Olx0bXV0ZXhfdW5sb2NrKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlbWRldnNfbG9jayk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjI4NS1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjI4OT1zdGF0aWMgc3RydWN0IGFwX21hdHJpeF9tZGV2ICp2ZmlvX2FwX21kZXZfZm9yX3F1ZXVlKHN0cnVjdCB2ZmlvX2FwX3F1ZXVlICpxKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMjk0LVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIyOTU6XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KG1hdHJpeF9tZGV2LCBcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZW1kZXZfbGlzdCwgbm9kZSkge1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIyOTYtXHRcdGlmICh0ZXN0X2JpdF9pbnYoYXBpZCwgbWF0cml4X21kZXYtXHUwMDNlbWF0cml4LmFwbSkgXHUwMDI2XHUwMDI2XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTIzMDQ9c3RhdGljIHNzaXplX3Qgc3RhdHVzX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMzEzLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIzMTQ6XHRtdXRleF9sb2NrKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlbWRldnNfbG9jayk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjMxNS1cdHEgPSBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2YXBkZXYtXHUwMDNlZGV2aWNlKTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjMzOS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyMzQwOlx0bXV0ZXhfdW5sb2NrKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlbWRldnNfbG9jayk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjM0MS1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjM1Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCB2ZmlvX3F1ZXVlX2F0dHJfZ3JvdXAgPSB7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIzNTUtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjM1NjpzdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX2FwX21hdHJpeF9kZXZfb3BzID0ge1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIzNTctXHQuaW5pdCA9IHZmaW9fYXBfbWRldl9pbml0X2Rldixcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjM4Mj1pbnQgdmZpb19hcF9tZGV2X3JlZ2lzdGVyKHZvaWQpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIzODktXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjM5MDpcdG1hdHJpeF9kZXYtXHUwMDNlbWRldl90eXBlLnN5c2ZzX25hbWUgPSBWRklPX0FQX01ERVZfVFlQRV9IV1ZJUlQ7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjM5MTpcdG1hdHJpeF9kZXYtXHUwMDNlbWRldl90eXBlLnByZXR0eV9uYW1lID0gVkZJT19BUF9NREVWX05BTUVfSFdWSVJUO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIzOTI6XHRtYXRyaXhfZGV2LVx1MDAzZW1kZXZfdHlwZXMgPSBcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZW1kZXZfdHlwZTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyMzkzOlx0cmV0ID0gbWRldl9yZWdpc3Rlcl9wYXJlbnQoXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VwYXJlbnQsIFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlZGV2aWNlLFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIzOTQtXHRcdFx0XHQgICBcdTAwMjZ2ZmlvX2FwX21hdHJpeF9kcml2ZXIsXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjM5NTpcdFx0XHRcdCAgIFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlbWRldl90eXBlcywgMSk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjM5Ni1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTI0MDU9dm9pZCB2ZmlvX2FwX21kZXZfdW5yZWdpc3Rlcih2b2lkKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI0MDYte1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI0MDc6XHRtZGV2X3VucmVnaXN0ZXJfcGFyZW50KFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlcGFyZW50KTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNDA4LVx0bWRldl91bnJlZ2lzdGVyX2RyaXZlcihcdTAwMjZ2ZmlvX2FwX21hdHJpeF9kcml2ZXIpO1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yNDY1PXZvaWQgdmZpb19hcF9tZGV2X3JlbW92ZV9xdWV1ZShzdHJ1Y3QgYXBfZGV2aWNlICphcGRldilcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjQ5OC1cdCAqL1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI0OTk6XHRpZiAodGVzdF9iaXRfaW52KGFwaWQsICh1bnNpZ25lZCBsb25nICopbWF0cml4X2Rldi1cdTAwM2VpbmZvLmFwbSkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjUwMDpcdCAgICB0ZXN0X2JpdF9pbnYoYXBxaSwgKHVuc2lnbmVkIGxvbmcgKiltYXRyaXhfZGV2LVx1MDAzZWluZm8uYXFtKSkge1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI1MDEtXHRcdHZmaW9fYXBfbWRldl9yZXNldF9xdWV1ZShxKTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjUyOD1pbnQgdmZpb19hcF9tZGV2X3Jlc291cmNlX2luX3VzZSh1bnNpZ25lZCBsb25nICphcG0sIHVuc2lnbmVkIGxvbmcgKmFxbSlcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjUzMS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNTMyOlx0bXV0ZXhfbG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZWd1ZXN0c19sb2NrKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNTMzOlx0bXV0ZXhfbG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI1MzQtXHRyZXQgPSB2ZmlvX2FwX21kZXZfdmVyaWZ5X25vX3NoYXJpbmcoTlVMTCwgYXBtLCBhcW0pO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI1MzU6XHRtdXRleF91bmxvY2soXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VtZGV2c19sb2NrKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNTM2Olx0bXV0ZXhfdW5sb2NrKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlZ3Vlc3RzX2xvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI1MzctXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTI1OTM9c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X2NmZ19yZW1vdmUodW5zaWduZWQgbG9uZyAqYXBfcmVtb3ZlLFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNjAyLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI2MDM6XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KG1hdHJpeF9tZGV2LCBcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZW1kZXZfbGlzdCwgbm9kZSkge1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI2MDQtXHRcdG11dGV4X2xvY2soXHUwMDI2bWF0cml4X21kZXYtXHUwMDNla3ZtLVx1MDAzZWxvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI2MDU6XHRcdG11dGV4X2xvY2soXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VtZGV2c19sb2NrKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNjA2LVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNjIwLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI2MjE6XHRcdG11dGV4X3VubG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI2MjItXHRcdG11dGV4X3VubG9jayhcdTAwMjZtYXRyaXhfbWRldi1cdTAwM2Vrdm0tXHUwMDNlbG9jayk7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTI3MzY9c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X2NmZ19hZGQodW5zaWduZWQgbG9uZyAqYXBtX2FkZCwgdW5zaWduZWQgbG9uZyAqYXFtX2FkZCxcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjc0MC1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNzQxOlx0aWYgKGxpc3RfZW1wdHkoXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VtZGV2X2xpc3QpKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI3NDItXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjc0NS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNzQ2Olx0bGlzdF9mb3JfZWFjaF9lbnRyeShtYXRyaXhfbWRldiwgXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VtZGV2X2xpc3QsIG5vZGUpIHtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNzQ3LVx0XHRiaXRtYXBfYW5kKG1hdHJpeF9tZGV2LVx1MDAzZWFwbV9hZGQsXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTI3OTk9dm9pZCB2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkKHN0cnVjdCBhcF9jb25maWdfaW5mbyAqY3VyX2NmZ19pbmZvLFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yODA0LVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI4MDU6XHRtdXRleF9sb2NrKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlZ3Vlc3RzX2xvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI4MDYtXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI4MDgtXHR2ZmlvX2FwX21kZXZfb25fY2ZnX2FkZChjdXJfY2ZnX2luZm8sIHByZXZfY2ZnX2luZm8pO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI4MDk6XHRtZW1jcHkoXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VpbmZvLCBjdXJfY2ZnX2luZm8sIHNpemVvZigqY3VyX2NmZ19pbmZvKSk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjgxMC1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyODExOlx0bXV0ZXhfdW5sb2NrKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlZ3Vlc3RzX2xvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI4MTItfVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yODE0PXN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9ob3RfcGx1Z19jZmcoc3RydWN0IGFwX21hdHJpeF9tZGV2ICptYXRyaXhfbWRldilcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjgxOS1cdG11dGV4X2xvY2soXHUwMDI2bWF0cml4X21kZXYtXHUwMDNla3ZtLVx1MDAzZWxvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI4MjA6XHRtdXRleF9sb2NrKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlbWRldnNfbG9jayk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjgyMS1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjgzOS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyODQwOlx0bXV0ZXhfdW5sb2NrKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlbWRldnNfbG9jayk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjg0MS1cdG11dGV4X3VubG9jayhcdTAwMjZtYXRyaXhfbWRldi1cdTAwM2Vrdm0tXHUwMDNlbG9jayk7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTI4NDQ9dm9pZCB2ZmlvX2FwX29uX3NjYW5fY29tcGxldGUoc3RydWN0IGFwX2NvbmZpZ19pbmZvICpuZXdfY29uZmlnX2luZm8sXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI4NDgtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6Mjg0OTpcdG11dGV4X2xvY2soXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VndWVzdHNfbG9jayk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjg1MC1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyODUxOlx0bGlzdF9mb3JfZWFjaF9lbnRyeShtYXRyaXhfbWRldiwgXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VtZGV2X2xpc3QsIG5vZGUpIHtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yODUyLVx0XHRpZiAoYml0bWFwX2VtcHR5KG1hdHJpeF9tZGV2LVx1MDAzZWFwbV9hZGQsIEFQX0RFVklDRVMpIFx1MDAyNlx1MDAyNlxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yODYyLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI4NjM6XHRtdXRleF91bmxvY2soXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VndWVzdHNfbG9jayk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjg2NC19XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaC0yOS0vKipcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmg6MzA6ICogc3RydWN0IGFwX21hdHJpeF9kZXYgLSBDb250YWlucyB0aGUgZGF0YSBmb3IgdGhlIG1hdHJpeCBkZXZpY2UuXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oLTMxLSAqXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaC00Ni0gKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmg6NDc6c3RydWN0IGFwX21hdHJpeF9kZXYge1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaC00OC1cdHN0cnVjdCBkZXZpY2UgZGV2aWNlO1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmgtNTgtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oOjU5OmV4dGVybiBzdHJ1Y3QgYXBfbWF0cml4X2RldiAqbWF0cml4X2RldjtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmgtNjAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MzI4CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMTY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gVkZJTy1BUCBEZXZpY2UgQ3JlYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSB0cmFjaW5nIHRoZSBWRklPLUFQIGluaXRpYWxpemF0aW9uLiBJIHNlZSB0aGF0IGB2ZmlvX2FwX21hdHJpeF9kZXZfY3JlYXRlYCBpcyBjYWxsZWQgZHVyaW5nIG1vZHVsZSBpbml0IHdpdGhpbiBgdmZpb19hcF9pbml0YC4gVGhhdCBtYWtlcyBzZW5zZTsgaXQmIzM5O3MgcmVnaXN0ZXJpbmcgYSBtYXRyaXggZGV2aWNlLCB0aGUgZm91bmRhdGlvbmFsIGVsZW1lbnQuIFRoZW4sIGB2ZmlvX2FwX21kZXZfcHJvYmVgIGdldHMgY2FsbGVkIHdoZW4gYSBuZXcgbWRldiBpcyBjcmVhdGVkLiBJIGhhdmUgdG8gcGF1c2UgaGVyZS4gSSB3b25kZXIsIGNhbiB0aGVzZSBtZGV2cywgdGhlc2Ugc29mdHdhcmUgcmVwcmVzZW50YXRpb25zLCBldmVuICpiZSogY3JlYXRlZCB3aXRoaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gT2ggcmlnaHQsIHRoZXkmIzM5O3JlIGp1c3Qgc29mdHdhcmUgZGV2aWNlcywgY3JlYXRlZCB0aHJvdWdoIHN5c2ZzLCBzbyBsb2dpY2FsbHksIHllcy4KCkJ1dCBoYW5nIG9uLCB0aGVyZeKAmXMgc29tZXRoaW5nIGltcG9ydGFudCBJIG5lZWQgdG8gY29uc2lkZXIuIEkmIzM5O20gZm9jdXNpbmcgYmFjayBvbiBgdmZpb19hcF9tYXRyaXhfZGV2X2NyZWF0ZWAuIEl0IGxvb2tzIGxpa2UgaXQgY2FsbHMgYGFwX3FjaSgmYW1wO21hdHJpeF9kZXYtJmd0O2luZm8pYCB1bmRlciB0aGUgY29uZGl0aW9uIHRoYXQgYHRlc3RfZmFjaWxpdHkoMTIpYCBldmFsdWF0ZXMgdG8gdHJ1ZS4gRmFjaWxpdHkgMTIgaXMgQVAgUXVlcnkgQ29uZmlndXJhdGlvbiBJbmZvcm1hdGlvbi4gTm93LCB0aGUgbmV4dCBxdWVzdGlvbiBpcyBpZiB0aGF0IGZhY2lsaXR5IGlzIG5vdCBhdmFpbGFibGUsIHdpbGwgdGhpcyB3aG9sZSBwcm9jZXNzIGp1c3QgZmFsbCBhcGFydD8gSSBuZWVkIHRvIGNoZWNrIHRoZSBjb2RlIGluIGB2ZmlvX2FwX21hdHJpeF9kZXZfY3JlYXRlYCB0byBlbnN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FwX3FjaSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAvaW5jbHVkZS9hc20vYXAuaD0yMTc9c3RhdGljIGlubGluZSBzdHJ1Y3QgYXBfcXVldWVfc3RhdHVzIGFwX3phcHEoYXBfcWlkX3QgcWlkLCBpbnQgZmJpdClcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vYXAuaC0yMzYtICogc3RydWN0IGFwX2NvbmZpZ19pbmZvIC0gY29udmVuaWVuY2Ugc3RydWN0IGZvciBBUCBjcnlwdG9cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9hcC5oOjIzNzogKiBjb25maWcgaW5mbyBhcyByZXR1cm5lZCBieSB0aGUgYXBfcWNpKCkgZnVuY3Rpb24uXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vYXAuaC0yMzgtICovXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vYXAuaD0yMzk9c3RydWN0IGFwX2NvbmZpZ19pbmZvIHtcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vYXAuaC0yNjEtLyoqXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vYXAuaDoyNjI6ICogYXBfcWNpKCk6IEdldCBBUCBjb25maWd1cmF0aW9uIGRhdGFcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9hcC5oLTI2My0gKlxuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9hcC5oLTI2NS0gKi9cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9hcC5oOjI2NjpzdGF0aWMgaW5saW5lIGludCBhcF9xY2koc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjb25maWcpXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vYXAuaC0yNjcte1xuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz0zMTAxPXN0YXRpYyBpbnQga3ZtX3MzOTBfYXB4YV9pbnN0YWxsZWQodm9pZClcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzEwNS1cdGlmIChhcF9pbnN0cnVjdGlvbnNfYXZhaWxhYmxlKCkpIHtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzozMTA2Olx0XHRpZiAoYXBfcWNpKFx1MDAyNmluZm8pID09IDApXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzEwNy1cdFx0XHRyZXR1cm4gaW5mby5hcHhhO1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTA3PXN0YXRpYyBzdHJ1Y3QgYXBfY29uZmlnX2luZm8gcWNpWzJdO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMDg6c3RhdGljIHN0cnVjdCBhcF9jb25maWdfaW5mbyAqY29uc3QgYXBfcWNpX2luZm8gPSBcdTAwMjZxY2lbMF07XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEwOTpzdGF0aWMgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjb25zdCBhcF9xY2lfaW5mb19vbGQgPSBcdTAwMjZxY2lbMV07XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTExMC1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTIwOT1zdGF0aWMgaW50IGFwX2ludGVycnVwdHNfYXZhaWxhYmxlKHZvaWQpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMTQtLyoqXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIxNTogKiBhcF9xY2lfYXZhaWxhYmxlKCk6IFRlc3QgaWYgQVAgY29uZmlndXJhdGlvblxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMTYtICogaW5mb3JtYXRpb24gY2FuIGJlIHF1ZXJpZWQgdmlhIFFDSSBzdWJmdW5jdGlvbi5cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIxOS0gKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjIwOnN0YXRpYyBpbnQgYXBfcWNpX2F2YWlsYWJsZSh2b2lkKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMjEte1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjQxPXN0YXRpYyBpbmxpbmUgaW50IGFwX3FhY3RfYXZhaWxhYmxlKHZvaWQpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0Mi17XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI0MzpcdHJldHVybiBhcF9xY2lfaW5mby1cdTAwM2VxYWN0O1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDQtfVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjUxPWludCBhcF9zYl9hdmFpbGFibGUodm9pZClcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjUyLXtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjUzOlx0cmV0dXJuIGFwX3FjaV9pbmZvLVx1MDAzZWFwc2I7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI1NC19XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yNzA9c3RhdGljIHZvaWQgX19pbml0IGFwX2luaXRfcWNpX2luZm8odm9pZClcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjcxLXtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjcyOlx0aWYgKCFhcF9xY2lfYXZhaWxhYmxlKCkgfHxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjczOlx0ICAgIGFwX3FjaShhcF9xY2lfaW5mbykpIHtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjc0LVx0XHRBUF9EQkZfSU5GTyhcJiMzNDslcyBRQ0kgbm90IHN1cHBvcnRlZFxcblwmIzM0OywgX19mdW5jX18pO1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjc2LVx0fVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNzc6XHRtZW1jcHkoYXBfcWNpX2luZm9fb2xkLCBhcF9xY2lfaW5mbywgc2l6ZW9mKCphcF9xY2lfaW5mbykpO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNzgtXHRBUF9EQkZfSU5GTyhcJiMzNDslcyBzdWNjZXNzZnVsIGZldGNoZWQgaW5pdGlhbCBxY2kgaW5mb1xcblwmIzM0OywgX19mdW5jX18pO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNzktXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI4MDpcdGlmIChhcF9xY2lfaW5mby1cdTAwM2VhcHhhKSB7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI4MTpcdFx0aWYgKGFwX3FjaV9pbmZvLVx1MDAzZW5hKSB7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI4MjpcdFx0XHRhcF9tYXhfYWRhcHRlcl9pZCA9IGFwX3FjaV9pbmZvLVx1MDAzZW5hO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yODMtXHRcdFx0QVBfREJGX0lORk8oXCYjMzQ7JXMgbmV3IGFwX21heF9hZGFwdGVyX2lkIGlzICVkXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjg1LVx0XHR9XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI4NjpcdFx0aWYgKGFwX3FjaV9pbmZvLVx1MDAzZW5kKSB7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI4NzpcdFx0XHRhcF9tYXhfZG9tYWluX2lkID0gYXBfcWNpX2luZm8tXHUwMDNlbmQ7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI4OC1cdFx0XHRBUF9EQkZfSU5GTyhcJiMzNDslcyBuZXcgYXBfbWF4X2RvbWFpbl9pZCBpcyAlZFxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTMxMD1zdGF0aWMgaW5saW5lIGludCBhcF90ZXN0X2NvbmZpZ19jYXJkX2lkKHVuc2lnbmVkIGludCBpZClcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTMxMy1cdFx0cmV0dXJuIDA7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjMxNDpcdGlmIChhcF9xY2lfaW5mby1cdTAwM2VmbGFncylcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MzE1Olx0XHRyZXR1cm4gYXBfdGVzdF9jb25maWcoYXBfcWNpX2luZm8tXHUwMDNlYXBtLCBpZCk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTMxNi1cdHJldHVybiAxO1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MzI3PWludCBhcF90ZXN0X2NvbmZpZ191c2FnZV9kb21haW4odW5zaWduZWQgaW50IGRvbWFpbilcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTMzMC1cdFx0cmV0dXJuIDA7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjMzMTpcdGlmIChhcF9xY2lfaW5mby1cdTAwM2VmbGFncylcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MzMyOlx0XHRyZXR1cm4gYXBfdGVzdF9jb25maWcoYXBfcWNpX2luZm8tXHUwMDNlYXFtLCBkb21haW4pO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0zMzMtXHRyZXR1cm4gMTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTM0NT1pbnQgYXBfdGVzdF9jb25maWdfY3RybF9kb21haW4odW5zaWduZWQgaW50IGRvbWFpbilcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMzQ2LXtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MzQ3Olx0aWYgKCFhcF9xY2lfaW5mbyB8fCBkb21haW4gXHUwMDNlIGFwX21heF9kb21haW5faWQpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTM0OC1cdFx0cmV0dXJuIDA7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjM0OTpcdHJldHVybiBhcF90ZXN0X2NvbmZpZyhhcF9xY2lfaW5mby1cdTAwM2VhZG0sIGRvbWFpbik7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTM1MC19XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xMzQ5PXN0YXRpYyBzc2l6ZV90IGFwX2NvbnRyb2xfZG9tYWluX21hc2tfc2hvdyhjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY2hhciAqYnVmKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzUwLXtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM1MTpcdGlmICghYXBfcWNpX2luZm8tXHUwMDNlZmxhZ3MpXHQvKiBRQ0kgbm90IHN1cHBvcnRlZCAqL1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzUyLVx0XHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwmIzM0O25vdCBzdXBwb3J0ZWRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM1NC1cdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXCYjMzQ7MHglMDh4JTA4eCUwOHglMDh4JTA4eCUwOHglMDh4JTA4eFxcblwmIzM0OyxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM1NTpcdFx0XHQgIGFwX3FjaV9pbmZvLVx1MDAzZWFkbVswXSwgYXBfcWNpX2luZm8tXHUwMDNlYWRtWzFdLFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzU2Olx0XHRcdCAgYXBfcWNpX2luZm8tXHUwMDNlYWRtWzJdLCBhcF9xY2lfaW5mby1cdTAwM2VhZG1bM10sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNTc6XHRcdFx0ICBhcF9xY2lfaW5mby1cdTAwM2VhZG1bNF0sIGFwX3FjaV9pbmZvLVx1MDAzZWFkbVs1XSxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM1ODpcdFx0XHQgIGFwX3FjaV9pbmZvLVx1MDAzZWFkbVs2XSwgYXBfcWNpX2luZm8tXHUwMDNlYWRtWzddKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM1OS19XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xMzYzPXN0YXRpYyBzc2l6ZV90IGFwX3VzYWdlX2RvbWFpbl9tYXNrX3Nob3coY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMsIGNoYXIgKmJ1ZilcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM2NC17XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNjU6XHRpZiAoIWFwX3FjaV9pbmZvLVx1MDAzZWZsYWdzKVx0LyogUUNJIG5vdCBzdXBwb3J0ZWQgKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM2Ni1cdFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcJiMzNDtub3Qgc3VwcG9ydGVkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzNjgtXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwmIzM0OzB4JTA4eCUwOHglMDh4JTA4eCUwOHglMDh4JTA4eCUwOHhcXG5cJiMzNDssXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNjk6XHRcdFx0ICBhcF9xY2lfaW5mby1cdTAwM2VhcW1bMF0sIGFwX3FjaV9pbmZvLVx1MDAzZWFxbVsxXSxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM3MDpcdFx0XHQgIGFwX3FjaV9pbmZvLVx1MDAzZWFxbVsyXSwgYXBfcWNpX2luZm8tXHUwMDNlYXFtWzNdLFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzcxOlx0XHRcdCAgYXBfcWNpX2luZm8tXHUwMDNlYXFtWzRdLCBhcF9xY2lfaW5mby1cdTAwM2VhcW1bNV0sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNzI6XHRcdFx0ICBhcF9xY2lfaW5mby1cdTAwM2VhcW1bNl0sIGFwX3FjaV9pbmZvLVx1MDAzZWFxbVs3XSk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzNzMtfVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTM3Nz1zdGF0aWMgc3NpemVfdCBhcF9hZGFwdGVyX21hc2tfc2hvdyhjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY2hhciAqYnVmKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzc4LXtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM3OTpcdGlmICghYXBfcWNpX2luZm8tXHUwMDNlZmxhZ3MpXHQvKiBRQ0kgbm90IHN1cHBvcnRlZCAqL1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzgwLVx0XHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwmIzM0O25vdCBzdXBwb3J0ZWRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM4Mi1cdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXCYjMzQ7MHglMDh4JTA4eCUwOHglMDh4JTA4eCUwOHglMDh4JTA4eFxcblwmIzM0OyxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM4MzpcdFx0XHQgIGFwX3FjaV9pbmZvLVx1MDAzZWFwbVswXSwgYXBfcWNpX2luZm8tXHUwMDNlYXBtWzFdLFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzg0Olx0XHRcdCAgYXBfcWNpX2luZm8tXHUwMDNlYXBtWzJdLCBhcF9xY2lfaW5mby1cdTAwM2VhcG1bM10sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzODU6XHRcdFx0ICBhcF9xY2lfaW5mby1cdTAwM2VhcG1bNF0sIGFwX3FjaV9pbmZvLVx1MDAzZWFwbVs1XSxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM4NjpcdFx0XHQgIGFwX3FjaV9pbmZvLVx1MDAzZWFwbVs2XSwgYXBfcWNpX2luZm8tXHUwMDNlYXBtWzddKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM4Ny19XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xNzQ3PXN0YXRpYyBzc2l6ZV90IGZlYXR1cmVzX3Nob3coY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMsIGNoYXIgKmJ1Zilcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3NTAtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE3NTE6XHRpZiAoIWFwX3FjaV9pbmZvLVx1MDAzZWZsYWdzKVx0LyogUUNJIG5vdCBzdXBwb3J0ZWQgKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTc1Mi1cdFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcJiMzNDstXFxuXCYjMzQ7KTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTc1My1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTc1NDpcdGlmIChhcF9xY2lfaW5mby1cdTAwM2VhcHNjKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzU1LVx0XHRuICYjNDM7PSBzeXNmc19lbWl0X2F0KGJ1ZiwgbiwgXCYjMzQ7QVBTQyBcJiMzNDspO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxNzU2Olx0aWYgKGFwX3FjaV9pbmZvLVx1MDAzZWFweGEpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3NTctXHRcdG4gJiM0Mzs9IHN5c2ZzX2VtaXRfYXQoYnVmLCBuLCBcJiMzNDtBUFhBIFwmIzM0Oyk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE3NTg6XHRpZiAoYXBfcWNpX2luZm8tXHUwMDNlcWFjdClcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTc1OS1cdFx0biAmIzQzOz0gc3lzZnNfZW1pdF9hdChidWYsIG4sIFwmIzM0O1FBQ1QgXCYjMzQ7KTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTc2MDpcdGlmIChhcF9xY2lfaW5mby1cdTAwM2VyYzhhKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzYxLVx0XHRuICYjNDM7PSBzeXNmc19lbWl0X2F0KGJ1ZiwgbiwgXCYjMzQ7UkM4QSBcJiMzNDspO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxNzYyOlx0aWYgKGFwX3FjaV9pbmZvLVx1MDAzZWFwc2IpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3NjMtXHRcdG4gJiM0Mzs9IHN5c2ZzX2VtaXRfYXQoYnVmLCBuLCBcJiMzNDtBUFNCIFwmIzM0Oyk7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xOTIzPXN0YXRpYyBpbnQgX19kcnZfbm90aWZ5X2NvbmZpZ19jaGFuZ2VkKHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYsIHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTI4LVx0XHRpZiAoYXBfZHJ2LVx1MDAzZW9uX2NvbmZpZ19jaGFuZ2VkKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxOTI5Olx0XHRcdGFwX2Rydi1cdTAwM2Vvbl9jb25maWdfY2hhbmdlZChhcF9xY2lfaW5mbywgYXBfcWNpX2luZm9fb2xkKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTkzMC1cdFx0bW9kdWxlX3B1dChkcnYtXHUwMDNlb3duZXIpO1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTk0ND1zdGF0aWMgaW50IF9fZHJ2X25vdGlmeV9zY2FuX2NvbXBsZXRlKHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYsIHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTQ5LVx0XHRpZiAoYXBfZHJ2LVx1MDAzZW9uX3NjYW5fY29tcGxldGUpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE5NTA6XHRcdFx0YXBfZHJ2LVx1MDAzZW9uX3NjYW5fY29tcGxldGUoYXBfcWNpX2luZm8sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE5NTE6XHRcdFx0XHRcdFx0IGFwX3FjaV9pbmZvX29sZCk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE5NTItXHRcdG1vZHVsZV9wdXQoZHJ2LVx1MDAzZW93bmVyKTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTIzMTE9c3RhdGljIGJvb2wgYXBfZ2V0X2NvbmZpZ3VyYXRpb24odm9pZClcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMxMi17XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzMTM6XHRpZiAoIWFwX3FjaV9pbmZvLVx1MDAzZWZsYWdzKVx0LyogUUNJIG5vdCBzdXBwb3J0ZWQgKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMxNC1cdFx0cmV0dXJuIGZhbHNlO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzE1LVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzE2Olx0bWVtY3B5KGFwX3FjaV9pbmZvX29sZCwgYXBfcWNpX2luZm8sIHNpemVvZigqYXBfcWNpX2luZm8pKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjMxNzpcdGFwX3FjaShhcF9xY2lfaW5mbyk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMTgtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzMTk6XHRyZXR1cm4gbWVtY21wKGFwX3FjaV9pbmZvLCBhcF9xY2lfaW5mb19vbGQsXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMjAtXHRcdCAgICAgIHNpemVvZihzdHJ1Y3QgYXBfY29uZmlnX2luZm8pKSAhPSAwO1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjMyOT1zdGF0aWMgYm9vbCBhcF9jb25maWdfaGFzX25ld19hcHModm9pZClcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMzMtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzMzQ6XHRpZiAoIWFwX3FjaV9pbmZvLVx1MDAzZWZsYWdzKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzM1LVx0XHRyZXR1cm4gZmFsc2U7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMzYtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzMzc6XHRiaXRtYXBfYW5kbm90KG0sICh1bnNpZ25lZCBsb25nICopYXBfcWNpX2luZm8tXHUwMDNlYXBtLFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzM4Olx0XHQgICAgICAodW5zaWduZWQgbG9uZyAqKWFwX3FjaV9pbmZvX29sZC1cdTAwM2VhcG0sIEFQX0RFVklDRVMpO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzM5LVx0aWYgKCFiaXRtYXBfZW1wdHkobSwgQVBfREVWSUNFUykpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yMzUxPXN0YXRpYyBib29sIGFwX2NvbmZpZ19oYXNfbmV3X2RvbXModm9pZClcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzNTQtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzNTU6XHRpZiAoIWFwX3FjaV9pbmZvLVx1MDAzZWZsYWdzKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzU2LVx0XHRyZXR1cm4gZmFsc2U7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzNTctXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzNTg6XHRiaXRtYXBfYW5kbm90KG0sICh1bnNpZ25lZCBsb25nICopYXBfcWNpX2luZm8tXHUwMDNlYXFtLFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzU5Olx0XHQgICAgICAodW5zaWduZWQgbG9uZyAqKWFwX3FjaV9pbmZvX29sZC1cdTAwM2VhcW0sIEFQX0RPTUFJTlMpO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzYwLVx0aWYgKCFiaXRtYXBfZW1wdHkobSwgQVBfRE9NQUlOUykpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jPTg2PXN0YXRpYyBpbnQgdmZpb19hcF9tYXRyaXhfZGV2X2NyZWF0ZSh2b2lkKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xMDYtXHRpZiAodGVzdF9mYWNpbGl0eSgxMikpIHtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxMDc6XHRcdHJldCA9IGFwX3FjaShcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZWluZm8pO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTEwOC1cdFx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ5OTgKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAyOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgVkZJTyBBUCBEZXZpY2UgQ3JlYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYHZmaW9fYXBfbWF0cml4X2Rldl9jcmVhdGVgIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgdGhhdCBgdGVzdF9mYWNpbGl0eSgxMilgIGNoZWNrLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgaWYgZmFjaWxpdHkgMTIgd2FzbiYjMzk7dCBwcmVzZW50LCB0aGUgd2hvbGUgdGhpbmcgd291bGQgZXJyb3Igb3V0LiBCdXQgaGFuZyBvbiwgaXQgZG9lc24mIzM5O3QhIEl0IGp1c3QgKnNraXBzKiB0aGUgYGFwX3FjaWAgY2FsbC4gQW5kIHNpbmNlIHRoZSBgbWF0cml4X2Rldi0mZ3Q7aW5mb2Agc3RydWN0IHdhcyBga3phbGxvY19vYmpgJiMzOTtkLCBpdCYjMzk7bGwganVzdCBiZSB6ZXJvZWQgb3V0LiBUaGF0IG1lYW5zIHRoZSBkZXZpY2UgY3JlYXRpb24gKnN1Y2NlZWRzKiBldmVuIHdpdGhvdXQgdGhlIGZhY2lsaXR5LiBTbywgdGhlIG1hdHJpeCBkZXZpY2UgZ2V0cyByZWdpc3RlcmVkLCBldmVuIGluIHRoaXMgJiMzNDtwYXJ0aWFsJiMzNDsgc3RhdGUuIEludGVyZXN0aW5nLgoKTm93LCBjYW4gd2UgYWN0dWFsbHkgY3JlYXRlIGFuIG1kZXYgb24gdG9wIG9mIHRoaXM/IEkgbmVlZCB0byBjaGVjayB0aGUgYHZmaW9fYXBfbWRldl9wcm9iZWAgYW5kIGB2ZmlvX2FwX21kZXZfaW5pdF9kZXZgIGZ1bmN0aW9ucyB0byBzZWUgd2hhdCBoYXBwZW5zIHRoZXJlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgUUVNVSBtaWdodCBub3QgYmUgZnVsbHkgZW11bGF0aW5nIHRoZSBBUCBpbnN0cnVjdGlvbnMgYnkgZGVmYXVsdCwgYnV0IEtWTSBjYW4gcGFzcyB0aGVtIHRocm91Z2guIFRoYXQmIzM5O3MgdGhlIGRpZmZlcmVuY2UuCgpBbmQgd2FpdCwgaXNuJiMzOTt0IHN5emthbGxlciBvZnRlbiBydW4gd2l0aCBLVk0gb24gczM5MHg/IFllcywgaXQgaXMhIFNvIGl0ICpzaG91bGQqIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gaW50ZXJhY3Qgd2l0aCB0aGVzZSBkZXZpY2VzLCBhdCBsZWFzdCBpbiBhIHBhc3N0aHJvdWdoIGNvbmZpZ3VyYXRpb24uIFdoaWNoIGJyaW5ncyBtZSB0byB0aGUgY29yZSBxdWVzdGlvbjogZG9lcyBzeXprYWxsZXIgaGF2ZSBleGlzdGluZyBkZXNjcmlwdGlvbnMgb3IgZnV6emluZyBjb3ZlcmFnZSBmb3IgYHZmaW9fYXBgPyBJIG5lZWQgdG8gY2hlY2sgdGhlIHN5emthbGxlciBjb2RlIGJhc2UgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgZGVmaW5pdGlvbnMgb3IgdGVzdCBjYXNlcyByZWxhdGVkIHRvIHRoZSBWRklPIEFQIHN1YnN5c3RlbS4gVGhhdCYjMzk7cyB0aGUga2V5IHRvIGV4cGxvaXRpbmcgYW55IHZ1bG5lcmFiaWxpdGllcyBoZXJlLiBJJiMzOTttIGdvaW5nIHRvIGZpbmQgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2ZmlvX2FwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNTAzIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0PTY9VGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIGxvY2tzIHRoYXQgYXJlIHBlcnRpbmVudCB0byB0aGUgc2VjdXJlIG9wZXJhdGlvblxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdDo3Om9mIHRoZSB2ZmlvX2FwIGRldmljZSBkcml2ZXIuIFRocm91Z2hvdXQgdGhpcyBkb2N1bWVudCwgdGhlIGZvbGxvd2luZyB2YXJpYWJsZXNcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtOC13aWxsIGJlIHVzZWQgdG8gZGVub3RlIGluc3RhbmNlcyBvZiB0aGUgc3RydWN0dXJlcyBoZXJlaW4gZGVzY3JpYmVkOlxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtMTUtXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0OjE2OlRoZSBNYXRyaXggRGV2aWNlcyBMb2NrIChkcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oKVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdC0xNy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0PTMyPW9yIHVzaW5nIHRoZSBkYXRhIGZyb20gYSBmaWVsZCBjb250YWluZWQgd2l0aGluIGEgbWF0cml4X21kZXYgaW5zdGFuY2VcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3Q6MzM6cmVwcmVzZW50aW5nIG9uZSBvZiB0aGUgdmZpb19hcCBkZXZpY2UgZHJpdmVyJiMzOTtzIG1lZGlhdGVkIGRldmljZXMuXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0LTM0LVxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3Q9NDY9VGhlIEtWTSBMb2NrIChrdm0tXHUwMDNlbG9jaykgY29udHJvbHMgYWNjZXNzIHRvIHRoZSBzdGF0ZSBkYXRhIGZvciBhIEtWTSBndWVzdC4gVGhpc1xuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdDo0Nzpsb2NrIG11c3QgYmUgaGVsZCBieSB0aGUgdmZpb19hcCBkZXZpY2UgZHJpdmVyIHdoaWxlIG9uZSBvciBtb3JlIEFQIGFkYXB0ZXJzLFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdC00OC1kb21haW5zIG9yIGNvbnRyb2wgZG9tYWlucyBhcmUgYmVpbmcgcGx1Z2dlZCBpbnRvIG9yIHVucGx1Z2dlZCBmcm9tIHRoZSBndWVzdC5cbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0PTUyPWJlZW4gYXR0YWNoZWQgdG8gdGhlIEtWTSBndWVzdC5cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtNTMtXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0OjU0OlRoZSBHdWVzdHMgTG9jayAoZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaClcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtNTUtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0PTY5PUtWTSBndWVzdC4gVGhpcyBsb2NrIG11c3QgYmUgaGVsZDpcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtNzAtXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0OjcxOjEuIFRvIGNvbnRyb2wgYWNjZXNzIHRvIHRoZSBLVk0gcG9pbnRlciAobWF0cml4X21kZXYtXHUwMDNla3ZtKSB3aGlsZSB0aGUgdmZpb19hcFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdC03Mi0gICBkZXZpY2UgZHJpdmVyIGlzIHVzaW5nIGl0IHRvIHBsdWcvdW5wbHVnIEFQIGRldmljZXMgcGFzc2VkIHRocm91Z2ggdG8gdGhlIEtWTVxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtNzktXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0OjgwOiAgIEZvciBleGFtcGxlLCB3aGVuIGEgcXVldWUgZGV2aWNlIGlzIHJlbW92ZWQgZnJvbSB0aGUgdmZpb19hcCBkZXZpY2UgZHJpdmVyLFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdC04MS0gICBpZiB0aGUgYWRhcHRlciBpcyBwYXNzZWQgdGhyb3VnaCB0byBhIEtWTSBndWVzdCwgaXQgd2lsbCBoYXZlIHRvIGJlXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q9MTg4PVRoZSBkZXNpZ24gaW50cm9kdWNlcyB0aHJlZSBuZXcgb2JqZWN0czpcbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0xOTAtMS4gQVAgbWF0cml4IGRldmljZVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MTkxOjIuIFZGSU8gQVAgZGV2aWNlIGRyaXZlciAodmZpb19hcC5rbylcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTE5Mi0zLiBWRklPIEFQIG1lZGlhdGVkIHBhc3MtdGhyb3VnaCBkZXZpY2Vcbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdD0xOTQ9VGhlIFZGSU8gQVAgZGV2aWNlIGRyaXZlclxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMTk1LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjE5NjpUaGUgVkZJTyBBUCAodmZpb19hcCkgZGV2aWNlIGRyaXZlciBzZXJ2ZXMgdGhlIGZvbGxvd2luZyBwdXJwb3NlczpcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTE5Ny1cbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0xOTktXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoyMDA6Mi4gU2V0cyB1cCB0aGUgVkZJTyBtZWRpYXRlZCBkZXZpY2UgaW50ZXJmYWNlcyB0byBtYW5hZ2UgYSB2ZmlvX2FwIG1lZGlhdGVkXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0yMDEtICAgZGV2aWNlIGFuZCBjcmVhdGVzIHRoZSBzeXNmcyBpbnRlcmZhY2VzIGZvciBhc3NpZ25pbmcgYWRhcHRlcnMsIHVzYWdlXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q9MjExPXJlc2VydmVkOjpcbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0yMzEtICB8ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgfFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MjMyOiAgfCAgICAgIGFwX2J1cyAgICAgICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tIFx1MDAzZSAgdmZpb19hcCBkcml2ZXIgIHxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTIzMy0gIHwgICAgICAgICAgICAgICAgICB8ICAgICAgIDggcHJvYmUgICAgICAgIHwgICAgICAgICAgICAgICAgICB8XG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMjQzLVx0IHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MjQ0Olx0IHwgfCA5IGNyZWF0ZSB2ZmlvX2FwLXBhc3N0aHJvdWdoIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMjQ1LVx0IHwgJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q9MjQ5PVRoZSBwcm9jZXNzIGZvciByZXNlcnZpbmcgYW4gQVAgcXVldWUgZm9yIHVzZSBieSBhIEtWTSBndWVzdCBpczpcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTI1MC1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjI1MToxLiBUaGUgYWRtaW5pc3RyYXRvciBsb2FkcyB0aGUgdmZpb19hcCBkZXZpY2UgZHJpdmVyXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0yNTItMi4gVGhlIHZmaW8tYXAgZHJpdmVyIGR1cmluZyBpdHMgaW5pdGlhbGl6YXRpb24gd2lsbCByZWdpc3RlciBhIHNpbmdsZSAmIzM5O21hdHJpeCYjMzk7XG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0yNTMtICAgZGV2aWNlIHdpdGggdGhlIGRldmljZSBjb3JlLiBUaGlzIHdpbGwgc2VydmUgYXMgdGhlIHBhcmVudCBkZXZpY2UgZm9yXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoyNTQ6ICAgYWxsIHZmaW9fYXAgbWVkaWF0ZWQgZGV2aWNlcyB1c2VkIHRvIGNvbmZpZ3VyZSBhbiBBUCBtYXRyaXggZm9yIGEgZ3Vlc3QuXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoyNTU6My4gVGhlIC9zeXMvZGV2aWNlcy92ZmlvX2FwL21hdHJpeCBkZXZpY2UgaXMgY3JlYXRlZCBieSB0aGUgZGV2aWNlIGNvcmVcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjI1Njo0LiBUaGUgdmZpb19hcCBkZXZpY2UgZHJpdmVyIHdpbGwgcmVnaXN0ZXIgd2l0aCB0aGUgQVAgYnVzIGZvciBBUCBxdWV1ZSBkZXZpY2VzXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoyNTc6ICAgb2YgdHlwZSAxMCBhbmQgaGlnaGVyIChDRVg0IGFuZCBuZXdlcikuIFRoZSBkcml2ZXIgd2lsbCBwcm92aWRlIHRoZSB2ZmlvX2FwXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0yNTgtICAgZHJpdmVyJiMzOTtzIHByb2JlIGFuZCByZW1vdmUgY2FsbGJhY2sgaW50ZXJmYWNlcy4gRGV2aWNlcyBvbGRlciB0aGFuIENFWDQgcXVldWVzXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMjYyLSAgIHN5c3RlbXMgYXJvdW5kIG9uIHdoaWNoIHRvIHRlc3QuXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoyNjM6NS4gVGhlIEFQIGJ1cyByZWdpc3RlcnMgdGhlIHZmaW9fYXAgZGV2aWNlIGRyaXZlciB3aXRoIHRoZSBkZXZpY2UgY29yZVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMjY0LTYuIFRoZSBhZG1pbmlzdHJhdG9yIGVkaXRzIHRoZSBBUCBhZGFwdGVyIGFuZCBxdWV1ZSBtYXNrcyB0byByZXNlcnZlIEFQIHF1ZXVlc1xuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MjY1OiAgIGZvciB1c2UgYnkgdGhlIHZmaW9fYXAgZGV2aWNlIGRyaXZlci5cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjI2Njo3LiBUaGUgQVAgYnVzIHJlbW92ZXMgdGhlIEFQIHF1ZXVlcyByZXNlcnZlZCBmb3IgdGhlIHZmaW9fYXAgZHJpdmVyIGZyb20gdGhlXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0yNjctICAgZGVmYXVsdCB6Y3J5cHQgY2V4NHF1ZXVlIGRyaXZlci5cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjI2ODo4LiBUaGUgQVAgYnVzIHByb2JlcyB0aGUgdmZpb19hcCBkZXZpY2UgZHJpdmVyIHRvIGJpbmQgdGhlIHF1ZXVlcyByZXNlcnZlZCBmb3JcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTI2OS0gICBpdC5cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjI3MDo5LiBUaGUgYWRtaW5pc3RyYXRvciBjcmVhdGVzIGEgcGFzc3Rocm91Z2ggdHlwZSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSB0byBiZVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMjcxLSAgIHVzZWQgYnkgYSBndWVzdFxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0PTI3OD1kZXZpY2UgY29yZSBkcml2ZXIgdG86XG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0yNzktXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoyODA6KiBSZWdpc3RlciBhbiBBUCBtZWRpYXRlZCBidXMgZHJpdmVyIHRvIGFkZCBhIHZmaW9fYXAgbWVkaWF0ZWQgZGV2aWNlIHRvIGFuZFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMjgxLSAgcmVtb3ZlIGl0IGZyb20gYSBWRklPIGdyb3VwLlxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MjgyOiogQ3JlYXRlIGFuZCBkZXN0cm95IGEgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2VcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjI4MzoqIEFkZCBhIHZmaW9fYXAgbWVkaWF0ZWQgZGV2aWNlIHRvIGFuZCByZW1vdmUgaXQgZnJvbSB0aGUgQVAgbWVkaWF0ZWQgYnVzIGRyaXZlclxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6Mjg0OiogQWRkIGEgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UgdG8gYW5kIHJlbW92ZSBpdCBmcm9tIGFuIElPTU1VIGdyb3VwXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0yODUtXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q9Mjg3PW9mIHRoZSBWRklPIEFQIG1lZGlhdGVkIGRldmljZSBkcml2ZXI6OlxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTMwMS0gICB8IHxQaHlzaWNhbCB8ICYjNDM7XHUwMDNjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOyAgICAgICAgICAgICAgfFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MzAyOiAgIHwgfCBkZXZpY2UgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgIHZmaW9fYXAua28gIHxcdTAwM2MtXHUwMDNlIG1hdHJpeFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzAzLSAgIHwgfGludGVyZmFjZXwgJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVx1MDAzZSYjNDM7ICAgICAgICAgICAgICB8ICAgIGRldmljZVxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTMwNi1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjMwNzpEdXJpbmcgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHZmaW9fYXAgbW9kdWxlLCB0aGUgbWF0cml4IGRldmljZSBpcyByZWdpc3RlcmVkXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0zMDgtd2l0aCBhbiAmIzM5O21kZXZfcGFyZW50X29wcyYjMzk7IHN0cnVjdHVyZSB0aGF0IHByb3ZpZGVzIHRoZSBzeXNmcyBhdHRyaWJ1dGVcbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdD0zMTA9bWF0cml4IGRldmljZS5cbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0zMjYtXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDozMjc6ICAgICAgL3N5cy9kZXZpY2VzL3ZmaW9fYXAvbWF0cml4L21kZXZfc3VwcG9ydGVkX3R5cGVzL3ZmaW9fYXAtcGFzc3Rocm91Z2hcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTMyOC1cbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0zNDMtXHQqIGF2YWlsYWJsZV9pbnN0YW5jZXM6XG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDozNDQ6XHQgICAgdGhlIG51bWJlciBvZiB2ZmlvX2FwIG1lZGlhdGVkIHBhc3N0aHJvdWdoIGRldmljZXNcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTM0NS1cdCAgICB0aGF0IGNhbiBiZSBjcmVhdGVkXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzUxLSAgICBmcmFtZXdvcmssIHRoZSBzeXNmcyBhdHRyaWJ1dGUgZmlsZXMgaWRlbnRpZmllZCBpbiB0aGUgJiMzOTttZGV2X2F0dHJfZ3JvdXBzJiMzOTtcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjM1MjogICAgc3RydWN0dXJlIHdpbGwgYmUgY3JlYXRlZCBpbiB0aGUgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UmIzM5O3MgZGlyZWN0b3J5LiBUaGVcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjM1MzogICAgc3lzZnMgYXR0cmlidXRlcyBmb3IgYSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSBhcmU6XG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0zNTQtXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzU2LSAgICAgIFdyaXRlLW9ubHkgYXR0cmlidXRlcyBmb3IgYXNzaWduaW5nL3VuYXNzaWduaW5nIGFuIEFQIGFkYXB0ZXIgdG8vZnJvbSB0aGVcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjM1NzogICAgICB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZS4gVG8gYXNzaWduL3VuYXNzaWduIGFuIGFkYXB0ZXIsIHRoZSBBUElEIG9mIHRoZVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzU4LSAgICAgIGFkYXB0ZXIgaXMgZWNob2VkIGludG8gdGhlIHJlc3BlY3RpdmUgYXR0cmlidXRlIGZpbGUuXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzYwLSAgICAgIFdyaXRlLW9ubHkgYXR0cmlidXRlcyBmb3IgYXNzaWduaW5nL3VuYXNzaWduaW5nIGFuIEFQIHVzYWdlIGRvbWFpbiB0by9mcm9tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDozNjE6ICAgICAgdGhlIHZmaW9fYXAgbWVkaWF0ZWQgZGV2aWNlLiBUbyBhc3NpZ24vdW5hc3NpZ24gYSBkb21haW4sIHRoZSBkb21haW5cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTM2Mi0gICAgICBudW1iZXIgb2YgdGhlIHVzYWdlIGRvbWFpbiBpcyBlY2hvZWQgaW50byB0aGUgcmVzcGVjdGl2ZSBhdHRyaWJ1dGVcbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0zNjUtICAgICAgQSByZWFkLW9ubHkgZmlsZSBmb3IgZGlzcGxheWluZyB0aGUgQVBRTnMgZGVyaXZlZCBmcm9tIHRoZSBDYXJ0ZXNpYW5cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjM2NjogICAgICBwcm9kdWN0IG9mIHRoZSBhZGFwdGVyIGFuZCBkb21haW4gbnVtYmVycyBhc3NpZ25lZCB0byB0aGUgdmZpb19hcCBtZWRpYXRlZFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzY3LSAgICAgIGRldmljZS5cbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0zNzEtICAgICAgZmllbGRzIHJlc3BlY3RpdmVseSBvZiB0aGUgS1ZNIGd1ZXN0JiMzOTtzIENSWUNCLiBUaGlzIG1heSBkaWZmZXIgZnJvbSB0aGVcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjM3MjogICAgICB0aGUgQVBRTnMgYXNzaWduZWQgdG8gdGhlIHZmaW9fYXAgbWVkaWF0ZWQgZGV2aWNlIGlmIGFueSBBUFFOIGRvZXMgbm90XG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDozNzM6ICAgICAgcmVmZXJlbmNlIGEgcXVldWUgZGV2aWNlIGJvdW5kIHRvIHRoZSB2ZmlvX2FwIGRldmljZSBkcml2ZXIgKGkuZS4sIHRoZVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzc0LSAgICAgIHF1ZXVlIGlzIG5vdCBpbiB0aGUgaG9zdCYjMzk7cyBBUCBjb25maWd1cmF0aW9uKS5cbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0zNzYtICAgICAgV3JpdGUtb25seSBhdHRyaWJ1dGVzIGZvciBhc3NpZ25pbmcvdW5hc3NpZ25pbmcgYW4gQVAgY29udHJvbCBkb21haW5cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjM3NzogICAgICB0by9mcm9tIHRoZSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZS4gVG8gYXNzaWduL3VuYXNzaWduIGEgY29udHJvbCBkb21haW4sXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0zNzgtICAgICAgdGhlIElEIG9mIHRoZSBkb21haW4gdG8gYmUgYXNzaWduZWQvdW5hc3NpZ25lZCBpcyBlY2hvZWQgaW50byB0aGVcbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0zODEtICAgICAgQSByZWFkLW9ubHkgZmlsZSBmb3IgZGlzcGxheWluZyB0aGUgY29udHJvbCBkb21haW4gbnVtYmVycyBhc3NpZ25lZCB0byB0aGVcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjM4MjogICAgICB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZS5cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTM4My0gICAgYXBfY29uZmlnOlxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzg0LSAgICAgIEEgcmVhZC93cml0ZSBmaWxlIHRoYXQsIHdoZW4gd3JpdHRlbiB0bywgYWxsb3dzIGFsbCB0aHJlZSBvZiB0aGVcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjM4NTogICAgICB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSYjMzk7cyBhcCBtYXRyaXggbWFza3MgdG8gYmUgcmVwbGFjZWQgaW4gb25lIHNob3QuXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0zODYtICAgICAgVGhyZWUgbWFza3MgYXJlIGdpdmVuLCBvbmUgZm9yIGFkYXB0ZXJzLCBvbmUgZm9yIGRvbWFpbnMsIGFuZCBvbmUgZm9yXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNDE2LSAgY3JlYXRlOlxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6NDE3OiAgICBhbGxvY2F0ZXMgdGhlIGFwX21hdHJpeF9tZGV2IHN0cnVjdHVyZSB1c2VkIGJ5IHRoZSB2ZmlvX2FwIGRyaXZlciB0bzpcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTQxOC1cbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC00MjQtICAgICAgcmVmZXJlbmNpbmcgcXVldWUgZGV2aWNlcyB0aGF0IGRvIG5vdCBleGlzdCwgb3IgYXJlIG5vdCBib3VuZCB0byB0aGVcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjQyNTogICAgICB2ZmlvX2FwIGRldmljZSBkcml2ZXIuXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC00MjYtXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC00MjctICByZW1vdmU6XG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo0Mjg6ICAgIGRlYWxsb2NhdGVzIHRoZSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSYjMzk7cyBhcF9tYXRyaXhfbWRldiBzdHJ1Y3R1cmUuXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC00MjktICAgIFRoaXMgd2lsbCBiZSBhbGxvd2VkIG9ubHkgaWYgYSBydW5uaW5nIGd1ZXN0IGlzIG5vdCB1c2luZyB0aGUgbWRldi5cbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC00MzctICAgIGFuZCBjb25maWd1cmVzIHRoZSBndWVzdCYjMzk7cyBhY2Nlc3MgdG8gdGhlIEFQIG1hdHJpeCBkZWZpbmVkIHZpYSB0aGVcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjQzODogICAgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UmIzM5O3Mgc3lzZnMgYXR0cmlidXRlIGZpbGVzLlxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNDM5LVxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0PTQ1MT1jb25maWd1cmVkIHZpYSBpdHMgQVBDQiBieTpcbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC00NTMtKiBTZXR0aW5nIHRoZSBiaXRzIGluIHRoZSBBUE0gY29ycmVzcG9uZGluZyB0byB0aGUgQVBJRHMgYXNzaWduZWQgdG8gdGhlXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo0NTQ6ICB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSB2aWEgaXRzICYjMzk7YXNzaWduX2FkYXB0ZXImIzM5OyBpbnRlcmZhY2UuXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC00NTUtKiBTZXR0aW5nIHRoZSBiaXRzIGluIHRoZSBBUU0gY29ycmVzcG9uZGluZyB0byB0aGUgZG9tYWlucyBhc3NpZ25lZCB0byB0aGVcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjQ1NjogIHZmaW9fYXAgbWVkaWF0ZWQgZGV2aWNlIHZpYSBpdHMgJiMzOTthc3NpZ25fZG9tYWluJiMzOTsgaW50ZXJmYWNlLlxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNDU3LSogU2V0dGluZyB0aGUgYml0cyBpbiB0aGUgQURNIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGRvbWFpbiBkSURzIGFzc2lnbmVkIHRvIHRoZVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6NDU4OiAgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UgdmlhIGl0cyAmIzM5O2Fzc2lnbl9jb250cm9sX2RvbWFpbnMmIzM5OyBpbnRlcmZhY2UuXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC00NTktXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q9NDYxPWlzIG5vdCBib3VuZCB0byB0aGUgZGV2aWNlIGRyaXZlciBmYWNpbGl0YXRpbmcgaXRzIHBhc3MtdGhyb3VnaC4gQ29uc2VxdWVudGx5LFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6NDYyOmFuIEFQUU4gdGhhdCBkb2VzIG5vdCByZWZlcmVuY2UgYSBxdWV1ZSBkZXZpY2UgYm91bmQgdG8gdGhlIHZmaW9fYXAgZGV2aWNlXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC00NjMtZHJpdmVyIHdpbGwgbm90IGJlIGFzc2lnbmVkIHRvIGEgS1ZNIGd1ZXN0JiMzOTtzIG1hdHJpeC4gVGhlIEFQIGFyY2hpdGVjdHVyZSxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0PTQ2ND1ob3dldmVyLCBkb2VzIG5vdCBwcm92aWRlIGEgbWVhbnMgdG8gZmlsdGVyIGluZGl2aWR1YWwgQVBRTnMgZnJvbSB0aGUgZ3Vlc3QmIzM5O3NcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjQ2NTptYXRyaXgsIHNvIHRoZSBhZGFwdGVycywgZG9tYWlucyBhbmQgY29udHJvbCBkb21haW5zIGFzc2lnbmVkIHRvIHZmaW9fYXBcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTQ2Ni1tZWRpYXRlZCBkZXZpY2UgdmlhIGl0cyBzeXNmcyAmIzM5O2Fzc2lnbl9hZGFwdGVyJiMzOTssICYjMzk7YXNzaWduX2RvbWFpbiYjMzk7IGFuZFxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0PTQ2OD1jb25maWd1cmF0aW9uIHRvIGEgZ3Vlc3Q6XG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNDc0LSogRWFjaCBBUFFOIGRlcml2ZWQgZnJvbSB0aGUgQ2FydGVzaWFuIHByb2R1Y3Qgb2YgdGhlIEFQSURzIGFuZCBBUFFJcyBhc3NpZ25lZFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6NDc1OiAgdG8gdGhlIHZmaW9fYXAgbWRldiBpcyBleGFtaW5lZCBhbmQgaWYgYW55IG9uZSBvZiB0aGVtIGRvZXMgbm90IHJlZmVyZW5jZSBhXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo0NzY6ICBxdWV1ZSBkZXZpY2UgYm91bmQgdG8gdGhlIHZmaW9fYXAgZGV2aWNlIGRyaXZlciwgdGhlIGFkYXB0ZXIgd2lsbCBub3QgYmVcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTQ3Ny0gIHBsdWdnZWQgaW50byB0aGUgZ3Vlc3QgKGkuZS4sIHRoZSBiaXQgY29ycmVzcG9uZGluZyB0byBpdHMgQVBJRCB3aWxsIG5vdCBiZVxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0PTU2Mz1UaGVzZSBhcmUgdGhlIHN0ZXBzOlxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNTY0LVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6NTY1OjEuIEluc3RhbGwgdGhlIHZmaW9fYXAgbW9kdWxlIG9uIHRoZSBsaW51eCBob3N0LiBUaGUgZGVwZW5kZW5jeSBjaGFpbiBmb3IgdGhlXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo1NjY6ICAgdmZpb19hcCBtb2R1bGUgaXM6XG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC01NjctICAgKiBpb21tdVxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTU3NC1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjU3NTogICBUbyBidWlsZCB0aGUgdmZpb19hcCBtb2R1bGUsIHRoZSBrZXJuZWwgYnVpbGQgbXVzdCBiZSBjb25maWd1cmVkIHdpdGggdGhlXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC01NzYtICAgZm9sbG93aW5nIEtjb25maWcgZWxlbWVudHMgc2VsZWN0ZWQ6XG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNTgyLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6NTgzOiAgIElmIHVzaW5nIG1ha2UgbWVudWNvbmZpZyBzZWxlY3QgdGhlIGZvbGxvd2luZyB0byBidWlsZCB0aGUgdmZpb19hcCBtb2R1bGU6OlxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNTg0LVxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTU5Ny0gICBxdWV1ZSBkZXZpY2UgZHJpdmVycy4gQWxsIHJlbWFpbmluZyBBUFFOcyBhcmUgYXZhaWxhYmxlIGZvciB1c2UgYnlcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjU5ODogICBhbnkgb3RoZXIgZGV2aWNlIGRyaXZlci4gVGhlIHZmaW9fYXAgZGV2aWNlIGRyaXZlciBpcyBjdXJyZW50bHkgdGhlIG9ubHlcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTU5OS0gICBub24tZGVmYXVsdCBkZXZpY2UgZHJpdmVyLiBUaGUgbG9jYXRpb24gb2YgdGhlIHN5c2ZzIGZpbGVzIGNvbnRhaW5pbmcgdGhlXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNjE4LSAgIEFsbCBvdGhlciBBUFFOcyBhcmUgYXZhaWxhYmxlIHRvIHRoZSBub24tZGVmYXVsdCBkZXZpY2UgZHJpdmVycyBzdWNoIGFzIHRoZVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6NjE5OiAgIHZmaW9fYXAgZHJpdmVyLlxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNjIwLVxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTY0Ni0gICBtYXRjaCBpcyBkZXRlY3RlZCwgIG9ubHkgdGhlIGRlZmF1bHQgQVAgcXVldWUgZGV2aWNlIGRyaXZlcnMgd2lsbCBiZSBwcm9iZWQ7XG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo2NDc6ICAgb3RoZXJ3aXNlLCB0aGUgdmZpb19hcCBkZXZpY2UgZHJpdmVyIHdpbGwgYmUgcHJvYmVkLlxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNjQ4LVxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTcwOC0gICAqKk5vdGU6KipcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjcwOTogICBDaGFuZ2luZyBhIG1hc2sgc3VjaCB0aGF0IG9uZSBvciBtb3JlIEFQUU5zIHdpbGwgYmUgdGFrZW4gZnJvbSBhIHZmaW9fYXBcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTcxMC0gICBtZWRpYXRlZCBkZXZpY2UgKHNlZSBiZWxvdykgd2lsbCBmYWlsIHdpdGggYW4gZXJyb3IgKEVCVVNZKS4gQSBtZXNzYWdlXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNzEyLSAgIGNvbW1hbmQuIFRoZSBvdXRwdXQgaWRlbnRpZmllcyBlYWNoIEFQUU4gZmxhZ2dlZCBhcyAmIzM5O2luIHVzZSYjMzk7IGFuZCBpZGVudGlmaWVzXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo3MTM6ICAgdGhlIHZmaW9fYXAgbWVkaWF0ZWQgZGV2aWNlIHRvIHdoaWNoIGl0IGlzIGFzc2lnbmVkOyBmb3IgZXhhbXBsZTpcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTcxNC1cbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdD03MTg9U2VjdXJpbmcgdGhlIEFQUU5zIGZvciBvdXIgZXhhbXBsZVxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTcyMC0gICBUbyBzZWN1cmUgdGhlIEFQIHF1ZXVlcyAwNS4wMDA0LCAwNS4wMDQ3LCAwNS4wMGFiLCAwNS4wMGZmLCAwNi4wMDA0LCAwNi4wMDQ3LFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6NzIxOiAgIDA2LjAwYWIsIGFuZCAwNi4wMGZmIGZvciB1c2UgYnkgdGhlIHZmaW9fYXAgZGV2aWNlIGRyaXZlciwgdGhlIGNvcnJlc3BvbmRpbmdcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTcyMi0gICBBUFFOcyBjYW4gYmUgcmVtb3ZlZCBmcm9tIHRoZSBkZWZhdWx0IG1hc2tzIHVzaW5nIGVpdGhlciBvZiB0aGUgZm9sbG93aW5nXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNzM3LSAgIFRoaXMgd2lsbCByZXN1bHQgaW4gQVAgcXVldWVzIDA1LjAwMDQsIDA1LjAwNDcsIDA1LjAwYWIsIDA1LjAwZmYsIDA2LjAwMDQsXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo3Mzg6ICAgMDYuMDA0NywgMDYuMDBhYiwgYW5kIDA2LjAwZmYgZ2V0dGluZyBib3VuZCB0byB0aGUgdmZpb19hcCBkZXZpY2UgZHJpdmVyLiBUaGVcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjczOTogICBzeXNmcyBkaXJlY3RvcnkgZm9yIHRoZSB2ZmlvX2FwIGRldmljZSBkcml2ZXIgd2lsbCBub3cgY29udGFpbiBzeW1ib2xpYyBsaW5rc1xuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNzQwLSAgIHRvIHRoZSBBUCBxdWV1ZSBkZXZpY2VzIGJvdW5kIHRvIGl0Ojpcbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03NDMtICAgICAuLi4gW2RyaXZlcnNdXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo3NDQ6ICAgICAuLi4uLi4gW3ZmaW9fYXBdXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03NDUtICAgICAuLi4uLi4uLi4gWzA1LjAwMDRdXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNzU0LSAgIEtlZXAgaW4gbWluZCB0aGF0IG9ubHkgdHlwZSAxMCBhbmQgbmV3ZXIgYWRhcHRlcnMgKGkuZS4sIENFWDQgYW5kIGxhdGVyKVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6NzU1OiAgIGNhbiBiZSBib3VuZCB0byB0aGUgdmZpb19hcCBkZXZpY2UgZHJpdmVyLiBUaGUgcmVhc29uIGZvciB0aGlzIGlzIHRvXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03NTYtICAgc2ltcGxpZnkgdGhlIGltcGxlbWVudGF0aW9uIGJ5IG5vdCBuZWVkbGVzc2x5IGNvbXBsaWNhdGluZyB0aGUgZGVzaWduIGJ5XG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNzYwLSAgIFRoZSBhZG1pbmlzdHJhdG9yLCB0aGVyZWZvcmUsIG11c3QgdGFrZSBjYXJlIHRvIHNlY3VyZSBvbmx5IEFQIHF1ZXVlcyB0aGF0XG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo3NjE6ICAgY2FuIGJlIGJvdW5kIHRvIHRoZSB2ZmlvX2FwIGRldmljZSBkcml2ZXIuIFRoZSBkZXZpY2UgdHlwZSBmb3IgYSBnaXZlbiBBUFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNzYyLSAgIHF1ZXVlIGRldmljZSBjYW4gYmUgcmVhZCBmcm9tIHRoZSBwYXJlbnQgY2FyZCYjMzk7cyBzeXNmcyBkaXJlY3RvcnkuIEZvciBleGFtcGxlLFxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTc2Ny0gICBUaGUgaHd0eXBlIG11c3QgYmUgMTAgb3IgaGlnaGVyIChDRVg0IG9yIG5ld2VyKSBpbiBvcmRlciB0byBiZSBib3VuZCB0byB0aGVcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0Ojc2ODogICB2ZmlvX2FwIGRldmljZSBkcml2ZXIuXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03NjktXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03NzAtMy4gQ3JlYXRlIHRoZSBtZWRpYXRlZCBkZXZpY2VzIG5lZWRlZCB0byBjb25maWd1cmUgdGhlIEFQIG1hdHJpeGVzIGZvciB0aGVcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0Ojc3MTogICB0aHJlZSBndWVzdHMgYW5kIHRvIHByb3ZpZGUgYW4gaW50ZXJmYWNlIHRvIHRoZSB2ZmlvX2FwIGRyaXZlciBmb3JcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTc3Mi0gICB1c2UgYnkgdGhlIGd1ZXN0czo6XG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03NzMtXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo3NzQ6ICAgICAvc3lzL2RldmljZXMvdmZpb19hcC9tYXRyaXgvXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03NzUtICAgICAtLS0gW21kZXZfc3VwcG9ydGVkX3R5cGVzXVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6Nzc2OiAgICAgLS0tLS0tIFt2ZmlvX2FwLXBhc3N0aHJvdWdoXSAocGFzc3Rocm91Z2ggdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UgdHlwZSlcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTc3Ny0gICAgIC0tLS0tLS0tLSBjcmVhdGVcbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03OTUtXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo3OTY6ICAgICAvc3lzL2RldmljZXMvdmZpb19hcC9tYXRyaXgvXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03OTctICAgICAtLS0gW21kZXZfc3VwcG9ydGVkX3R5cGVzXVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6Nzk4OiAgICAgLS0tLS0tIFt2ZmlvX2FwLXBhc3N0aHJvdWdoXVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNzk5LSAgICAgLS0tLS0tLS0tIFtkZXZpY2VzXVxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTgyNi1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjgyNzogICBOb3RlICoqKioqOiBUaGUgdmZpb19hcCBtZGV2cyBkbyBub3QgcGVyc2lzdCBhY3Jvc3MgcmVib290cyB1bmxlc3MgdGhlXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC04MjgtICAgICAgICAgICAgICAgbWRldmN0bCB0b29sIGlzIHVzZWQgdG8gY3JlYXRlIGFuZCBwZXJzaXN0IHRoZW0uXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtODc5LVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6ODgwOiAgICAgLSBNdXN0IG9ubHkgYmUgYXZhaWxhYmxlIHRvIHRoZSB2ZmlvX2FwIGRldmljZSBkcml2ZXIgYXMgc3BlY2lmaWVkIGluIHRoZVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtODgxLSAgICAgICBzeXNmcyAvc3lzL2J1cy9hcC9hcG1hc2sgYW5kIC9zeXMvYnVzL2FwL2FxbWFzayBhdHRyaWJ1dGUgZmlsZXMuIElmIGV2ZW5cbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC04ODQtXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo4ODU6ICAgICAtIE11c3QgTk9UIGJlIGFzc2lnbmVkIHRvIGFub3RoZXIgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UuIElmIGV2ZW4gb25lIEFQUU5cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0Ojg4NjogICAgICAgaXMgYXNzaWduZWQgdG8gYW5vdGhlciB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSwgdGhlIG9wZXJhdGlvbiB3aWxsXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC04ODctICAgICAgIHRlcm1pbmF0ZSB3aXRoIGFuIGVycm9yIChFQlVTWSkuXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTA1LVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6OTA2OiAgICAgLSBNdXN0IG9ubHkgYmUgYXZhaWxhYmxlIHRvIHRoZSB2ZmlvX2FwIGRldmljZSBkcml2ZXIgYXMgc3BlY2lmaWVkIGluIHRoZVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTA3LSAgICAgICBzeXNmcyAvc3lzL2J1cy9hcC9hcG1hc2sgYW5kIC9zeXMvYnVzL2FwL2FxbWFzayBhdHRyaWJ1dGUgZmlsZXMuIElmIGV2ZW5cbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC05MTAtXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5MTE6ICAgICAtIE11c3QgTk9UIGJlIGFzc2lnbmVkIHRvIGFub3RoZXIgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UuIElmIGV2ZW4gb25lIEFQUU5cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjkxMjogICAgICAgaXMgYXNzaWduZWQgdG8gYW5vdGhlciB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSwgdGhlIG9wZXJhdGlvbiB3aWxsXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC05MTMtICAgICAgIHRlcm1pbmF0ZSB3aXRoIGFuIGVycm9yIChFQlVTWSkuXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTI4LSAgICAgL3Vzci9iaW4vcWVtdS1zeXN0ZW0tczM5MHggLi4uIC1jcHUgaG9zdCxhcD1vbixhcHFjaT1vbixhcGZ0PW9uLGFwcWk9b24gXFxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjkyOTpcdC1kZXZpY2UgdmZpby1hcCxzeXNmc2Rldj0vc3lzL2RldmljZXMvdmZpb19hcC9tYXRyaXgvJHV1aWQxIC4uLlxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTMwLVxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTkzMy0gICAgIC91c3IvYmluL3FlbXUtc3lzdGVtLXMzOTB4IC4uLiAtY3B1IGhvc3QsYXA9b24sYXBxY2k9b24sYXBmdD1vbixhcHFpPW9uIFxcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5MzQ6XHQtZGV2aWNlIHZmaW8tYXAsc3lzZnNkZXY9L3N5cy9kZXZpY2VzL3ZmaW9fYXAvbWF0cml4LyR1dWlkMiAuLi5cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTkzNS1cbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC05MzgtICAgICAvdXNyL2Jpbi9xZW11LXN5c3RlbS1zMzkweCAuLi4gLWNwdSBob3N0LGFwPW9uLGFwcWNpPW9uLGFwZnQ9b24sYXBxaT1vbiBcXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6OTM5Olx0LWRldmljZSB2ZmlvLWFwLHN5c2ZzZGV2PS9zeXMvZGV2aWNlcy92ZmlvX2FwL21hdHJpeC8kdXVpZDMgLi4uXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC05NDAtXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5NDE6V2hlbiB0aGUgZ3Vlc3QgaXMgc2h1dCBkb3duLCB0aGUgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2VzIG1heSBiZSByZW1vdmVkLlxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTQyLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6OTQzOlVzaW5nIG91ciBleGFtcGxlIGFnYWluLCB0byByZW1vdmUgdGhlIHZmaW9fYXAgbWVkaWF0ZWQgZGV2aWNlICR1dWlkMTo6XG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC05NDQtXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5NDU6ICAgL3N5cy9kZXZpY2VzL3ZmaW9fYXAvbWF0cml4L1xuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTQ2LSAgICAgIC0tLSBbbWRldl9zdXBwb3J0ZWRfdHlwZXNdXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5NDc6ICAgICAgLS0tLS0tIFt2ZmlvX2FwLXBhc3N0aHJvdWdoXVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTQ4LSAgICAgIC0tLS0tLS0tLSBbZGV2aWNlc11cbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdD05NTg9YWxsIG9mIHRoZSBzdGVwcyBzdGFydGluZyB3aXRoIHN0ZXAgMyB3aWxsIGhhdmUgdG8gYmUgcGVyZm9ybWVkIGFnYWluLiBOb3RlXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5NTk6dGhhdCB0aGUgcmVtb3ZlIHdpbGwgZmFpbCBpZiBhIGd1ZXN0IHVzaW5nIHRoZSB2ZmlvX2FwIG1kZXYgaXMgc3RpbGwgcnVubmluZy5cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTk2MC1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0Ojk2MTpJdCBpcyBub3QgbmVjZXNzYXJ5IHRvIHJlbW92ZSBhIHZmaW9fYXAgbWRldiwgYnV0IG9uZSBtYXkgd2FudCB0b1xuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTYyLXJlbW92ZSBpdCBpZiBubyBndWVzdCB3aWxsIHVzZSBpdCBkdXJpbmcgdGhlIHJlbWFpbmluZyBsaWZldGltZSBvZiB0aGUgbGludXhcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0Ojk2Mzpob3N0LiBJZiB0aGUgdmZpb19hcCBtZGV2IGlzIHJlbW92ZWQsIG9uZSBtYXkgd2FudCB0byBhbHNvIHJlY29uZmlndXJlXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC05NjQtdGhlIHBvb2wgb2YgYWRhcHRlcnMgYW5kIHF1ZXVlcyByZXNlcnZlZCBmb3IgdXNlIGJ5IHRoZSBkZWZhdWx0IGRyaXZlcnMuXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q9OTY4PUFuIGFkYXB0ZXIsIGRvbWFpbiBvciBjb250cm9sIGRvbWFpbiBtYXkgYmUgaG90IHBsdWdnZWQgaW50byBhIHJ1bm5pbmcgS1ZNXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5Njk6Z3Vlc3QgYnkgYXNzaWduaW5nIGl0IHRvIHRoZSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSBiZWluZyB1c2VkIGJ5IHRoZSBndWVzdCBpZlxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTcwLXRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OlxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTk3Ni0gIGFkYXB0ZXIgYmVpbmcgYXNzaWduZWQgYW5kIHRoZSBBUFFJcyBvZiB0aGUgZG9tYWlucyBhc3NpZ25lZCBtdXN0IHJlZmVyZW5jZSBhXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5Nzc6ICBxdWV1ZSBkZXZpY2UgYm91bmQgdG8gdGhlIHZmaW9fYXAgZGV2aWNlIGRyaXZlci5cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTk3OC1cbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC05ODAtICBjb21wcmlzZWQgb2YgdGhlIEFQUUkgb2YgdGhlIGRvbWFpbiBiZWluZyBhc3NpZ25lZCBhbmQgdGhlIEFQSURzIG9mIHRoZVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6OTgxOiAgYWRhcHRlcnMgYXNzaWduZWQgbXVzdCByZWZlcmVuY2UgYSBxdWV1ZSBkZXZpY2UgYm91bmQgdG8gdGhlIHZmaW9fYXAgZGV2aWNlXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC05ODItICBkcml2ZXIuXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q9OTg0PUFuIGFkYXB0ZXIsIGRvbWFpbiBvciBjb250cm9sIGRvbWFpbiBtYXkgYmUgaG90IHVucGx1Z2dlZCBmcm9tIGEgcnVubmluZyBLVk1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0Ojk4NTpndWVzdCBieSB1bmFzc2lnbmluZyBpdCBmcm9tIHRoZSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSBiZWluZyB1c2VkIGJ5IHRoZVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTg2LWd1ZXN0LlxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0PTk5MD1PdmVyLXByb3Zpc2lvbmluZyBpcyBkZWZpbmVkIGhlcmVpbiBhcyB0aGUgYXNzaWdubWVudCBvZiBhZGFwdGVycyBvciBkb21haW5zIHRvXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5OTE6YSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSB0aGF0IGRvIG5vdCByZWZlcmVuY2UgQVAgZGV2aWNlcyBpbiB0aGUgaG9zdCYjMzk7cyBBUFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTkyLWNvbmZpZ3VyYXRpb24uIFRoZSBpZGVhIGhlcmUgaXMgdGhhdCB3aGVuIHRoZSBhZGFwdGVyIG9yIGRvbWFpbiBiZWNvbWVzXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdD05OTM9YXZhaWxhYmxlLCBpdCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgaG90LXBsdWdnZWQgaW50byB0aGUgS1ZNIGd1ZXN0IHVzaW5nXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5OTQ6dGhlIHZmaW9fYXAgbWVkaWF0ZWQgZGV2aWNlIHRvIHdoaWNoIGl0IGlzIGFzc2lnbmVkIGFzIGxvbmcgYXMgZWFjaCBuZXcgQVBRTlxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6OTk1OnJlc3VsdGluZyBmcm9tIHBsdWdnaW5nIGl0IGluIHJlZmVyZW5jZXMgYSBxdWV1ZSBkZXZpY2UgYm91bmQgdG8gdGhlIHZmaW9fYXBcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTk5Ni1kZXZpY2UgZHJpdmVyLlxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0PTk5OD1Ecml2ZXIgRmVhdHVyZXNcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTk5OS09PT09PT09PT09PT09PT1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjEwMDA6VGhlIHZmaW9fYXAgZHJpdmVyIGV4cG9zZXMgYSBzeXNmcyBmaWxlIGNvbnRhaW5pbmcgc3VwcG9ydGVkIGZlYXR1cmVzLlxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMTAwMS1UaGlzIGV4aXN0cyBzbyB0aGlyZCBwYXJ0eSB0b29scyAobGlrZSBMaWJ2aXJ0IGFuZCBtZGV2Y3RsKSBjYW4gcXVlcnkgdGhlXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q9MTAzMT1pbnRlcnZlbnRpb24gYnkgYSBzeXN0ZW0gYWRtaW5pc3RyYXRvci4gQmVmb3JlIGEgS1ZNIGd1ZXN0IGNhbiBiZSBtaWdyYXRlZCxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjEwMzI6dGhlIHZmaW9fYXAgbWVkaWF0ZWQgZGV2aWNlIG11c3QgYmUgcmVtb3ZlZC4gVW5mb3J0dW5hdGVseSwgaXQgY2FuIG5vdCBiZVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MTAzMzpyZW1vdmVkIG1hbnVhbGx5IChpLmUuLCBlY2hvIDEgXHUwMDNlIC9zeXMvZGV2aWNlcy92ZmlvX2FwL21hdHJpeC8kVVVJRC9yZW1vdmUpIHdoaWxlXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0xMDM0LXRoZSBtZGV2IGlzIGluIHVzZSBieSBhIEtWTSBndWVzdC4gSWYgdGhlIGd1ZXN0IGlzIGJlaW5nIGVtdWxhdGVkIGJ5IFFFTVUsXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdD0xMDM1PWl0cyBtZGV2IGNhbiBiZSBob3QgdW5wbHVnZ2VkIGZyb20gdGhlIGd1ZXN0IGluIG9uZSBvZiB0d28gd2F5czpcbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0xMDU5LVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MTA2MDogICAgICBGb3IgZXhhbXBsZSwgdG8gaG90IHVucGx1ZyB0aGUgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UgaWRlbnRpZmllZCBvbiB0aGVcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTEwNjEtICAgICAgcWVtdSBjb21tYW5kIGxpbmUgd2l0aCAmIzM5O2lkPWhvc3RkZXYwJiMzOTsgZnJvbSB0aGUgZ3Vlc3QgbmFtZWQgJiMzOTtteS1ndWVzdCYjMzk7OlxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTEwNjYtXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoxMDY3OjIuIEEgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UgY2FuIGJlIGhvdCB1bnBsdWdnZWQgYnkgYXR0YWNoaW5nIHRoZSBxZW11IG1vbml0b3JcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTEwNjgtICAgdG8gdGhlIGd1ZXN0IGFuZCB1c2luZyB0aGUgZm9sbG93aW5nIHFlbXUgbW9uaXRvciBjb21tYW5kOlxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTEwNzEtXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoxMDcyOiAgICAgIEZvciBleGFtcGxlLCB0byBob3QgdW5wbHVnIHRoZSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSB0aGF0IHdhcyBzcGVjaWZpZWRcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTEwNzMtICAgICAgb24gdGhlIHFlbXUgY29tbWFuZCBsaW5lIHdpdGggJiMzOTtpZD1ob3N0ZGV2MCYjMzk7IHdoZW4gdGhlIGd1ZXN0IHdhcyBzdGFydGVkOlxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0PTEwNzc9QWZ0ZXIgbGl2ZSBtaWdyYXRpb24gb2YgdGhlIEtWTSBndWVzdCBjb21wbGV0ZXMsIGFuIEFQIGNvbmZpZ3VyYXRpb24gY2FuIGJlXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoxMDc4OnJlc3RvcmVkIHRvIHRoZSBLVk0gZ3Vlc3QgYnkgaG90IHBsdWdnaW5nIGEgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2Ugb24gdGhlIHRhcmdldFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMTA3OS1zeXN0ZW0gaW50byB0aGUgZ3Vlc3QgaW4gb25lIG9mIHR3byB3YXlzOlxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTExMDQtXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoxMTA1OiAgICAgIEZvciBleGFtcGxlLCB0byBob3QgcGx1ZyB0aGUgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2VcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTExMDYtICAgICAgNjIxNzc4ODMtZjFiYi00N2YwLTkxNGQtMzJhMjJlM2E4ODA0IGludG8gdGhlIGd1ZXN0IG5hbWVkICYjMzk7bXktZ3Vlc3QmIzM5OyB3aXRoXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMTExMC0gICAgICBcJiMzNDtkZXZpY2VfYWRkIHZmaW8tYXAsXFxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjExMTE6ICAgICAgc3lzZnNkZXY9L3N5cy9kZXZpY2VzL3ZmaW9fYXAvbWF0cml4LzYyMTc3ODgzLWYxYmItNDdmMC05MTRkLTMyYTIyZTNhODgwNCxcXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMTExMi0gICAgICBpZD1ob3N0ZGV2MFwmIzM0O1xuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMTExMy1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjExMTQ6Mi4gQSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSBjYW4gYmUgaG90IHBsdWdnZWQgYnkgYXR0YWNoaW5nIHRoZSBxZW11IG1vbml0b3JcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTExMTUtICAgdG8gdGhlIGd1ZXN0IGFuZCB1c2luZyB0aGUgZm9sbG93aW5nIHFlbXUgbW9uaXRvciBjb21tYW5kOlxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTExMTgtXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoxMTE5OiAgICAgIEZvciBleGFtcGxlLCB0byBwbHVnIHRoZSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMTEyMC0gICAgICA2MjE3Nzg4My1mMWJiLTQ3ZjAtOTE0ZC0zMmEyMmUzYTg4MDQgaW50byB0aGUgZ3Vlc3Qgd2l0aCB0aGUgZGV2aWNlLWlkXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMTEyMy0gICAgICAgICAoUUVNVSkgZGV2aWNlLWFkZCBcJiMzNDt2ZmlvLWFwLFxcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoxMTI0OiAgICAgICAgIHN5c2ZzZGV2PS9zeXMvZGV2aWNlcy92ZmlvX2FwL21hdHJpeC82MjE3Nzg4My1mMWJiLTQ3ZjAtOTE0ZC0zMmEyMmUzYTg4MDQsXFxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTExMjUtICAgICAgICAgaWQ9aG9zdGRldjBcJiMzNDtcbi0tXG5NQUlOVEFJTkVSUz0yMzYwMz1GOlx0RG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcCpcbk1BSU5UQUlORVJTOjIzNjA0OkY6XHRkcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXAqXG5NQUlOVEFJTkVSUy0yMzYwNS1cbi0tXG5hcmNoL3MzOTAvS2NvbmZpZz04MzQ9Y29uZmlnIFZGSU9fQVBcbi0tXG5hcmNoL3MzOTAvS2NvbmZpZy04NDUtXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbmFyY2gvczM5MC9LY29uZmlnOjg0NjpcdCAgd2lsbCBiZSBjYWxsZWQgdmZpb19hcC5cbmFyY2gvczM5MC9LY29uZmlnLTg0Ny1cbi0tXG5hcmNoL3MzOTAva3ZtL3ByaXYuYz01NzA9Ym9vbCBrdm1fczM5MF9pc19ncGFfaW5fbWVtc2xvdChzdHJ1Y3Qga3ZtICprdm0sIGdwYV90IGdwYSlcbi0tXG5hcmNoL3MzOTAva3ZtL3ByaXYuYy01NzMtfVxuYXJjaC9zMzkwL2t2bS9wcml2LmM6NTc0OkVYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVMoa3ZtX3MzOTBfaXNfZ3BhX2luX21lbXNsb3QsIFwmIzM0O3ZmaW9fYXBcJiMzNDspO1xuYXJjaC9zMzkwL2t2bS9wcml2LmMtNTc1LSNlbmRpZlxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vTWFrZWZpbGU9MzQ9b2JqLSQoQ09ORklHX1BLRVlfVVYpICYjNDM7PSBwa2V5LXV2Lm9cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL01ha2VmaWxlLTM2LSMgYWRqdW5jdCBwcm9jZXNzb3IgbWF0cml4XG5kcml2ZXJzL3MzOTAvY3J5cHRvL01ha2VmaWxlOjM3OnZmaW9fYXAtb2JqcyA6PSB2ZmlvX2FwX2Rydi5vIHZmaW9fYXBfb3BzLm9cbmRyaXZlcnMvczM5MC9jcnlwdG8vTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX1ZGSU9fQVApICYjNDM7PSB2ZmlvX2FwLm9cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZGVidWcuaC0xOS0jZGVmaW5lIFZGSU9fQVBfREJGKC4uLilcdFx0XHRcdFx0XFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kZWJ1Zy5oOjIwOlx0ZGVidWdfc3ByaW50Zl9ldmVudCh2ZmlvX2FwX2RiZl9pbmZvLCAjI19fVkFfQVJHU19fKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2RlYnVnLmgtMjEtI2RlZmluZSBWRklPX0FQX0RCRl9FUlIoLi4uKVx0XHRcdFx0XHRcXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2RlYnVnLmg6MjI6XHRkZWJ1Z19zcHJpbnRmX2V2ZW50KHZmaW9fYXBfZGJmX2luZm8sIERCRl9FUlIsICMjX19WQV9BUkdTX18pXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZGVidWcuaC0yMy0jZGVmaW5lIFZGSU9fQVBfREJGX1dBUk4oLi4uKVx0XHRcdFx0XHRcXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2RlYnVnLmg6MjQ6XHRkZWJ1Z19zcHJpbnRmX2V2ZW50KHZmaW9fYXBfZGJmX2luZm8sIERCRl9XQVJOLCAjI19fVkFfQVJHU19fKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2RlYnVnLmgtMjUtI2RlZmluZSBWRklPX0FQX0RCRl9JTkZPKC4uLilcdFx0XHRcdFx0XFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kZWJ1Zy5oOjI2Olx0ZGVidWdfc3ByaW50Zl9ldmVudCh2ZmlvX2FwX2RiZl9pbmZvLCBEQkZfSU5GTywgIyNfX1ZBX0FSR1NfXylcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kZWJ1Zy5oLTI3LSNkZWZpbmUgVkZJT19BUF9EQkZfREJHKC4uLilcdFx0XHRcdFx0XFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kZWJ1Zy5oOjI4Olx0ZGVidWdfc3ByaW50Zl9ldmVudCh2ZmlvX2FwX2RiZl9pbmZvLCBEQkZfREVCVUcsICMjX19WQV9BUkdTX18pXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZGVidWcuaC0yOS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kZWJ1Zy5oOjMwOmV4dGVybiBkZWJ1Z19pbmZvX3QgKnZmaW9fYXBfZGJmX2luZm87XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZGVidWcuaC0zMS1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTUtI2luY2x1ZGUgXHUwMDNjYXNtL2ZhY2lsaXR5LmhcdTAwM2VcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxNjojaW5jbHVkZSBcJiMzNDt2ZmlvX2FwX3ByaXZhdGUuaFwmIzM0O1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjE3OiNpbmNsdWRlIFwmIzM0O3ZmaW9fYXBfZGVidWcuaFwmIzM0O1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE4LVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjE5OiNkZWZpbmUgVkZJT19BUF9ST09UX05BTUUgXCYjMzQ7dmZpb19hcFwmIzM0O1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTIwLSNkZWZpbmUgVkZJT19BUF9ERVZfTkFNRSBcJiMzNDttYXRyaXhcJiMzNDtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM9MjY9c3RydWN0IGFwX21hdHJpeF9kZXYgKm1hdHJpeF9kZXY7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6Mjc6ZGVidWdfaW5mb190ICp2ZmlvX2FwX2RiZl9pbmZvO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTI4LVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYz00ND1zdGF0aWMgc3RydWN0IGFwX2RldmljZV9pZCBhcF9xdWV1ZV9pZHNbXSA9IHtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtNTctXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6NTg6c3RhdGljIHN0cnVjdCBhcF9kcml2ZXIgdmZpb19hcF9kcnYgPSB7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6NTk6XHQucHJvYmUgPSB2ZmlvX2FwX21kZXZfcHJvYmVfcXVldWUsXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6NjA6XHQucmVtb3ZlID0gdmZpb19hcF9tZGV2X3JlbW92ZV9xdWV1ZSxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzo2MTpcdC5pbl91c2UgPSB2ZmlvX2FwX21kZXZfcmVzb3VyY2VfaW5fdXNlLFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjYyOlx0Lm9uX2NvbmZpZ19jaGFuZ2VkID0gdmZpb19hcF9vbl9jZmdfY2hhbmdlZCxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzo2MzpcdC5vbl9zY2FuX2NvbXBsZXRlID0gdmZpb19hcF9vbl9zY2FuX2NvbXBsZXRlLFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTY0LVx0LmlkcyA9IGFwX3F1ZXVlX2lkcyxcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtNjYtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6Njc6c3RhdGljIHZvaWQgdmZpb19hcF9tYXRyaXhfZGV2X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTY4LXtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM9Nzk9c3RhdGljIHN0cnVjdCBkZXZpY2VfZHJpdmVyIG1hdHJpeF9kcml2ZXIgPSB7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6ODA6XHQubmFtZSA9IFwmIzM0O3ZmaW9fYXBcJiMzNDssXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtODEtXHQuYnVzID0gXHUwMDI2bWF0cml4X2J1cyxcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtODUtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6ODY6c3RhdGljIGludCB2ZmlvX2FwX21hdHJpeF9kZXZfY3JlYXRlKHZvaWQpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtODcte1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xMTgtXHRtYXRyaXhfZGV2LVx1MDAzZWRldmljZS5idXMgPSBcdTAwMjZtYXRyaXhfYnVzO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjExOTpcdG1hdHJpeF9kZXYtXHUwMDNlZGV2aWNlLnJlbGVhc2UgPSB2ZmlvX2FwX21hdHJpeF9kZXZfcmVsZWFzZTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxMjA6XHRtYXRyaXhfZGV2LVx1MDAzZXZmaW9fYXBfZHJ2ID0gXHUwMDI2dmZpb19hcF9kcnY7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTIxLVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xNDItXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTQzOnN0YXRpYyB2b2lkIHZmaW9fYXBfbWF0cml4X2Rldl9kZXN0cm95KHZvaWQpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTQ0LXtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTUyLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjE1MzpzdGF0aWMgaW50IF9faW5pdCB2ZmlvX2FwX2RiZl9pbmZvX2luaXQodm9pZClcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xNTQte1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjE1NTpcdHZmaW9fYXBfZGJmX2luZm8gPSBkZWJ1Z19yZWdpc3RlcihcJiMzNDt2ZmlvX2FwXCYjMzQ7LCAxLCAxLFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE1Ni1cdFx0XHRcdFx0ICBEQkZfTUFYX1NQUklOVEZfQVJHUyAqIHNpemVvZihsb25nKSk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTU3LVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjE1ODpcdGlmICghdmZpb19hcF9kYmZfaW5mbylcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xNTktXHRcdHJldHVybiAtRU5PRU5UO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE2MC1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxNjE6XHRkZWJ1Z19yZWdpc3Rlcl92aWV3KHZmaW9fYXBfZGJmX2luZm8sIFx1MDAyNmRlYnVnX3NwcmludGZfdmlldyk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTYyOlx0ZGVidWdfc2V0X2xldmVsKHZmaW9fYXBfZGJmX2luZm8sIERCRl9XQVJOKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xNjMtXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE2Ni1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxNjc6c3RhdGljIGludCBfX2luaXQgdmZpb19hcF9pbml0KHZvaWQpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTY4LXtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTcwLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjE3MTpcdHJldCA9IHZmaW9fYXBfZGJmX2luZm9faW5pdCgpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE3Mi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE3OC1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxNzk6XHRyZXQgPSB2ZmlvX2FwX21hdHJpeF9kZXZfY3JlYXRlKCk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTgwLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTgyLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjE4MzpcdHJldCA9IGFwX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZ2ZmlvX2FwX2RydiwgVEhJU19NT0RVTEUsIFZGSU9fQVBfRFJWX05BTUUpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE4NC1cdGlmIChyZXQpIHtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxODU6XHRcdHZmaW9fYXBfbWF0cml4X2Rldl9kZXN0cm95KCk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTg2LVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xODgtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTg5Olx0cmV0ID0gdmZpb19hcF9tZGV2X3JlZ2lzdGVyKCk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTkwLVx0aWYgKHJldCkge1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjE5MTpcdFx0YXBfZHJpdmVyX3VucmVnaXN0ZXIoXHUwMDI2dmZpb19hcF9kcnYpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjE5MjpcdFx0dmZpb19hcF9tYXRyaXhfZGV2X2Rlc3Ryb3koKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xOTMtXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE5OS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoyMDA6c3RhdGljIHZvaWQgX19leGl0IHZmaW9fYXBfZXhpdCh2b2lkKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTIwMS17XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MjAyOlx0dmZpb19hcF9tZGV2X3VucmVnaXN0ZXIoKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoyMDM6XHRhcF9kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZ2ZmlvX2FwX2Rydik7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MjA0Olx0dmZpb19hcF9tYXRyaXhfZGV2X2Rlc3Ryb3koKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoyMDU6XHRkZWJ1Z191bnJlZ2lzdGVyKHZmaW9fYXBfZGJmX2luZm8pO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTIwNi19XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMjA3LVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjIwODptb2R1bGVfaW5pdCh2ZmlvX2FwX2luaXQpO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NDQ5CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIGZvciBWRklPLUFQIEV4cGxvaXRhdGlvbiB2aWEgU3l6a2FsbGVyKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgb2JzZXJ2YXRpb24gaXMgdGhhdCB0aGUgYHZmaW9fYXBgIG1vZHVsZSBzZWVtcyB0byByZWdpc3RlciBhIG1hdHJpeCBkZXZpY2UsIGFuZCB0aGVuIGFuIG1kZXYgZHJpdmVyLiBUaGF0JiMzOTtzIHRoZSBzZXR1cC4gQW5kIFN5emthbGxlciwgd2hpY2ggSSYjMzk7bSB2ZXJ5IGZhbWlsaWFyIHdpdGgsIGNhbiBjcmVhdGUgdGhlc2UgbWRldnMsIHdoaWNoIGltbWVkaWF0ZWx5IHJhaXNlcyBhIGNyaXRpY2FsIHF1ZXN0aW9uOiBDYW4gd2UgcmVhY2ggYW5kIGV4cGxvaXQgYHZmaW9fYXBgIGZ1bmN0aW9uYWxpdHkgZXZlbiB3aXRob3V0IHRoZSBwcmVzZW5jZSBvZiBwaHlzaWNhbCBBUCBoYXJkd2FyZT8KCk15IGh5cG90aGVzaXMgcmVzdHMgb24gdGhhdCBpbml0aWFsIHF1ZXN0aW9uLiBJJiMzOTttIGdvaW5nIHRvIGRpZyBhIGxpdHRsZSBkZWVwZXIsIEkmIzM5O20gZ29pbmcgdG8gY29uc2lkZXIgdGhlIGB2ZmlvX2FwX21hdHJpeF9kZXZfY3JlYXRlYCBmdW5jdGlvbi4gSSBzZWUgdGhhdCBpdCBhcHBlYXJzIHRvIHN1Y2NlZWQgZXZlbiBpZiB0aGUgYHRlc3RfZmFjaWxpdHkoMTIpYCBjaGVjayBmYWlscy4gVGhhdCYjMzk7cyBhIGtleSBvYnNlcnZhdGlvbiwgc29tZXRoaW5nIHRoYXQgbWF5IGJlIGltcG9ydGFudC4gVGhlIGRyaXZlciB0aGVuIHJlZ2lzdGVycyBpdHNlbGYgd2hpY2ggbG9va3MgdmVyeSBpbnRlcmVzdGluZy4gU28sIGNhbiBTeXprYWxsZXIgY3JlYXRlIGEgYHZmaW9fYXBgIG1kZXYuIFRoaXMgaXMgdGhlIGNydWNpYWwgbmV4dCBzdGVwLgoKSSBrbm93IFN5emthbGxlciBoYXMgZGVzY3JpcHRpb25zIGZvciBtZGV2cyBpbiBmaWxlcyBsaWtlIGBzeXMvbGludXgvc3lzZnNfbWRldi50eHRgLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIFN5emthbGxlciBoYXMgZGVzY3JpcHRpb25zIGZvciBgdmZpb19hcGAgc3BlY2lmaWNhbGx5LCBiZWNhdXNlIGlmIGl0IGRvZXMsIGl0JiMzOTtzIHZlcnkgbGlrZWx5IHdlIGhhdmUgYSBwb3RlbnRpYWwgYXR0YWNrIHZlY3RvciB0byBpbnZlc3RpZ2F0ZS4gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQgbXkgc2VhcmNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZmaW9fYXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtzeXMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk5MzgKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAzOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFBhdGNoJiMzOTtzIFdvcnRoaW5lc3MgZm9yIEZ1enppbmcqKgoKT2theSwgc28gdGhlIHByb21wdCBqdXN0IHRocmV3IGEgY3VydmViYWxsLiBJdCYjMzk7cyByZW1pbmRpbmcgbWUgdGhhdCBJIGFic29sdXRlbHkgKmNhbm5vdCogdXNlIG15IHVzdWFsIGBncmVwcGVyYCBvbiBhbnl0aGluZyB0aGF0JiMzOTtzIGBzeXMvKmAgb3IgaGFzIGBzeXpfYCBpbiBpdCBiZWNhdXNlIHRoYXQmIzM5O3MgYWxsIFN5emthbGxlciBwc2V1ZG8tc3lzY2FsbCBzdHVmZiBhbmQgd29uJiMzOTt0IGJlIGluIHRoZSBhY3R1YWwga2VybmVsLiBGaW5lLiBNYWtlcyBzZW5zZS4gQnV0IHdhaXQgYSBzZWMuLi4gSSBkb24mIzM5O3Qgc2VlIHRoaXMgYHN5ei1ncmVwcGVyYCBpbiBteSBhdmFpbGFibGUgdG9vbHMuIEd1ZXNzIEkmIzM5O2xsIGhhdmUgdG8gdXNlIG15IGJyYWluIGluc3RlYWQhCgpMZXQmIzM5O3MgdGhpbmsuIFRoZSBwYXRjaCBtb2RpZmllcyBgdmZpb19hcF9tZGV2X3NldF9rdm1gIGFuZCBgdmZpb19hcF9tZGV2X3Vuc2V0X2t2bWAuIFRob3NlIGFyZSwgaWYgSSByZW1lbWJlciBjb3JyZWN0bHksIHJlbGF0ZWQgdG8gVkZJTyBkZXZpY2Ugc2V0dXAgYW5kIHRlYXJkb3duIOKAkyB3aGVuIGEgVkZJTyBkZXZpY2UgaXMgb3BlbmVkIG9yIGNsb3NlZC4gVGhlIHJlYWwgcXVlc3Rpb24gaXMsIGNhbiBTeXprYWxsZXIgKmFjdHVhbGx5KiBjcmVhdGUgYW5kIGludGVyYWN0IHdpdGggYSBWRklPIEFQIGRldmljZSBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQ/CgpJZiBTeXprYWxsZXIgY2FuIGdlbmVyYXRlIHRoZSBjb2RlIHRvIGNyZWF0ZSBhbiBtZGV2LCBpdCBjYW4gb3BlbiBpdCBhcyB3ZWxsLiBUaGF0IGRlcGVuZHMgb24gd2hldGhlciB0aGUgYHZmaW9fYXBgIGRyaXZlciBpcyBlbmFibGVkIGluIHR5cGljYWwgY29uZmlndXJhdGlvbnMuCgpOb3csIHRoZSBwcm9tcHQgYnJpbmdzIHVwIHRoZSAmIzM0O1dvcnRoRnV6emluZz1mYWxzZSYjMzQ7IHNjZW5hcmlvOiB1bnJlYWNoYWJsZSBjb2RlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSXQgZXhwbGljaXRseSBtZW50aW9ucyB0aGluZ3MgbGlrZSBVU0IgZ2FkZ2V0LCBNQUM4MDIxMSBIV3NpbSwgb3IgKnZlbmRvci1zcGVjaWZpYyogaGFyZHdhcmUgbGlrZSBQQ0llIHN3aXRjaGVzIG9yIEdQVXMgdGhhdCBuZWVkIGEgKnBoeXNpY2FsKiBjYXJkLCB3aGljaCBpc24mIzM5O3QgZW11bGF0ZWQgYnkgUUVNVS4gVGhhdCYjMzk7cyB0aGUga2V5LgoKVkZJTyBBUCBpcyBmb3IgcGFzc2luZyB0aHJvdWdoICpwaHlzaWNhbCogQVAgY2FyZHMsIGlzbiYjMzk7dCBpdD8gRG9lcyBpdCBuZWVkIHBoeXNpY2FsIGhhcmR3YXJlIHRvIGJlIHByZXNlbnQgdG8gZXZlbiBjcmVhdGUgYW4gbWRldj8gSSBzaG91bGQgY2hlY2sgYHZmaW9fYXBfbWRldl9wcm9iZWAgYW5kIGB2ZmlvX2FwX21kZXZfaW5pdF9kZXZgLiBUaGF0IHdpbGwgZ2l2ZSBtZSB0aGUgYW5zd2VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2ZmlvX2FwX21kZXZfcHJvYmUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jPTU4PXN0YXRpYyBzdHJ1Y3QgYXBfZHJpdmVyIHZmaW9fYXBfZHJ2ID0ge1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjU5Olx0LnByb2JlID0gdmZpb19hcF9tZGV2X3Byb2JlX3F1ZXVlLFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTYwLVx0LnJlbW92ZSA9IHZmaW9fYXBfbWRldl9yZW1vdmVfcXVldWUsXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTc4Mz1zdGF0aWMgaW50IHZmaW9fYXBfbWRldl9pbml0X2RldihzdHJ1Y3QgdmZpb19kZXZpY2UgKnZkZXYpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTc5Ni1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo3OTc6c3RhdGljIGludCB2ZmlvX2FwX21kZXZfcHJvYmUoc3RydWN0IG1kZXZfZGV2aWNlICptZGV2KVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTc5OC17XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTIzNjk9c3RhdGljIHN0cnVjdCBtZGV2X2RyaXZlciB2ZmlvX2FwX21hdHJpeF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIzNzctXHR9LFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIzNzg6XHQucHJvYmUgPSB2ZmlvX2FwX21kZXZfcHJvYmUsXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjM3OS1cdC5yZW1vdmUgPSB2ZmlvX2FwX21kZXZfcmVtb3ZlLFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yNDA1PXZvaWQgdmZpb19hcF9tZGV2X3VucmVnaXN0ZXIodm9pZClcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjQxMC1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNDExOmludCB2ZmlvX2FwX21kZXZfcHJvYmVfcXVldWUoc3RydWN0IGFwX2RldmljZSAqYXBkZXYpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjQxMi17XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaD0xNTY9dm9pZCB2ZmlvX2FwX21kZXZfdW5yZWdpc3Rlcih2b2lkKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmgtMTU3LVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaDoxNTg6aW50IHZmaW9fYXBfbWRldl9wcm9iZV9xdWV1ZShzdHJ1Y3QgYXBfZGV2aWNlICpxdWV1ZSk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oLTE1OS12b2lkIHZmaW9fYXBfbWRldl9yZW1vdmVfcXVldWUoc3RydWN0IGFwX2RldmljZSAqcXVldWUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTQ1MAoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIEkgdW5kZXJzdGFuZCB0aGUgc2l0dWF0aW9uOgoKKipQcm9iaW5nIHRoZSBDcnlwdG8gSGFyZHdhcmUgd2l0aCBWRklPLUFQKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoZSBWRklPLUFQIGltcGxlbWVudGF0aW9uIGZvciBjcnlwdG8gaGFyZHdhcmUgb24gczM5MCBzeXN0ZW1zLiBUaGUga2V5IGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gZGlzY292ZXJzIGFuZCBpbml0aWFsaXplcyB0aGUgZGV2aWNlcy4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHRoZSBgdmZpb19hcF9tZGV2X3Byb2JlYCBmdW5jdGlvbi4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQsIHRoZSBmaXJzdCBwbGFjZSB0aGUgZHJpdmVyIGdldHMgYSBzaG90IGF0IGEgbmV3IG1kZXYsIHNvIGl0JiMzOTtzIGNyaXRpY2FsIHRvIHNlZSB3aGF0IGl0JiMzOTtzIGRvaW5nLiBJJiMzOTttIGFsc28gZ29pbmcgdG8gdHJhY2sgaG93IGB2ZmlvX2FwX21kZXZfaW5pdF9kZXZgIGZpdHMgaW4gYXMgaXQgaXMgdGhlIGZvbGxvdy11cCBzdGVwLiBJ4oCZbSB0aGlua2luZyB0aGV5JiMzOTtyZSBwcm9iYWJseSBib3RoIGRlZmluZWQgaW4gYGRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIGNvbm5lY3RlZCBhbmQgdGhlIGxvZ2ljIGZsb3cuIFRoaXMgc2VlbXMgdG8gYmUgdGhlIGNvcmUgb2YgaG93IHRoZSBWRklPIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBBUCBoYXJkd2FyZSBhbmQgaG93IGl0IGhhbmRsZXMgdGhlIG1lZGlhdGVkIGRldmljZSwgYXMgd2VsbCBhcyBob3cgdGhlIGhhcmR3YXJlIGlzIGRldGVjdGVkLiBUaGlzIGlzIGEgY3J1Y2lhbCBhcmVhIHRvIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlIGFuZCBob3cgdGhlIHN5c3RlbSB2aXJ0dWFsaXplcyB0aGUgY3J5cHRvIGhhcmR3YXJlIHRvIHRoZSB1c2VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDc4MywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzgzOlx0c3RhdGljIGludCB2ZmlvX2FwX21kZXZfaW5pdF9kZXYoc3RydWN0IHZmaW9fZGV2aWNlICp2ZGV2KVxuIDc4NDpcdHtcbiA3ODU6XHRcdHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXYgPVxuIDc4NjpcdFx0XHRjb250YWluZXJfb2YodmRldiwgc3RydWN0IGFwX21hdHJpeF9tZGV2LCB2ZGV2KTtcbiA3ODc6XHRcbiA3ODg6XHRcdG1hdHJpeF9tZGV2LVx1MDAzZW1kZXYgPSB0b19tZGV2X2RldmljZSh2ZGV2LVx1MDAzZWRldik7XG4gNzg5Olx0XHR2ZmlvX2FwX21hdHJpeF9pbml0KFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlaW5mbywgXHUwMDI2bWF0cml4X21kZXYtXHUwMDNlbWF0cml4KTtcbiA3OTA6XHRcdG1hdHJpeF9tZGV2LVx1MDAzZXBxYXBfaG9vayA9IGhhbmRsZV9wcWFwO1xuIDc5MTpcdFx0dmZpb19hcF9tYXRyaXhfaW5pdChcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZWluZm8sIFx1MDAyNm1hdHJpeF9tZGV2LVx1MDAzZXNoYWRvd19hcGNiKTtcbiA3OTI6XHRcdGhhc2hfaW5pdChtYXRyaXhfbWRldi1cdTAwM2VxdGFibGUucXVldWVzKTtcbiA3OTM6XHRcbiA3OTQ6XHRcdHJldHVybiAwO1xuIDc5NTpcdH1cbiA3OTY6XHRcbiA3OTc6XHRzdGF0aWMgaW50IHZmaW9fYXBfbWRldl9wcm9iZShzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXYpXG4gNzk4Olx0e1xuIDc5OTpcdFx0c3RydWN0IGFwX21hdHJpeF9tZGV2ICptYXRyaXhfbWRldjtcbiA4MDA6XHRcdGludCByZXQ7XG4gODAxOlx0XG4gODAyOlx0XHRtYXRyaXhfbWRldiA9IHZmaW9fYWxsb2NfZGV2aWNlKGFwX21hdHJpeF9tZGV2LCB2ZGV2LCBcdTAwMjZtZGV2LVx1MDAzZWRldixcbiA4MDM6XHRcdFx0XHRcdFx0XHUwMDI2dmZpb19hcF9tYXRyaXhfZGV2X29wcyk7XG4gODA0Olx0XHRpZiAoSVNfRVJSKG1hdHJpeF9tZGV2KSlcbiA4MDU6XHRcdFx0cmV0dXJuIFBUUl9FUlIobWF0cml4X21kZXYpO1xuIDgwNjpcdFxuIDgwNzpcdFx0cmV0ID0gdmZpb19yZWdpc3Rlcl9lbXVsYXRlZF9pb21tdV9kZXYoXHUwMDI2bWF0cml4X21kZXYtXHUwMDNldmRldik7XG4gODA4Olx0XHRpZiAocmV0KVxuIDgwOTpcdFx0XHRnb3RvIGVycl9wdXRfdmRldjtcbiA4MTA6XHRcdG1hdHJpeF9tZGV2LVx1MDAzZXJlcV90cmlnZ2VyID0gTlVMTDtcbiA4MTE6XHRcdG1hdHJpeF9tZGV2LVx1MDAzZWNmZ19jaGdfdHJpZ2dlciA9IE5VTEw7XG4gODEyOlx0XHRkZXZfc2V0X2RydmRhdGEoXHUwMDI2bWRldi1cdTAwM2VkZXYsIG1hdHJpeF9tZGV2KTtcbiA4MTM6XHRcdG11dGV4X2xvY2soXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VtZGV2c19sb2NrKTtcbiA4MTQ6XHRcdGxpc3RfYWRkKFx1MDAyNm1hdHJpeF9tZGV2LVx1MDAzZW5vZGUsIFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlbWRldl9saXN0KTtcbiA4MTU6XHRcdG11dGV4X3VubG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2spO1xuIDgxNjpcdFx0cmV0dXJuIDA7XG4gODE3Olx0XG4gODE4Olx0ZXJyX3B1dF92ZGV2OlxuIDgxOTpcdFx0dmZpb19wdXRfZGV2aWNlKFx1MDAyNm1hdHJpeF9tZGV2LVx1MDAzZXZkZXYpO1xuIDgyMDpcdFx0cmV0dXJuIHJldDtcbiA4MjE6XHR9XG4gODIyOlx0XG4gODIzOlx0c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X2xpbmtfcXVldWUoc3RydWN0IGFwX21hdHJpeF9tZGV2ICptYXRyaXhfbWRldixcbiA4MjQ6XHRcdFx0XHRcdCAgICBzdHJ1Y3QgdmZpb19hcF9xdWV1ZSAqcSlcbiA4MjU6XHR7XG4gODI2Olx0XHRpZiAoIXEgfHwgdmZpb19hcF9tZGV2X2dldF9xdWV1ZShtYXRyaXhfbWRldiwgcS1cdTAwM2VhcHFuKSlcbiA4Mjc6XHRcdFx0cmV0dXJuO1xuIDgyODpcdFxuIDgyOTpcdFx0cS1cdTAwM2VtYXRyaXhfbWRldiA9IG1hdHJpeF9tZGV2O1xuIDgzMDpcdFx0aGFzaF9hZGQobWF0cml4X21kZXYtXHUwMDNlcXRhYmxlLnF1ZXVlcywgXHUwMDI2cS1cdTAwM2VtZGV2X3Fub2RlLCBxLVx1MDAzZWFwcW4pO1xuIDgzMTpcdH1cbiA4MzI6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI3MDUKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqVW5kZXJzdGFuZGluZyBtZGV2IENyZWF0aW9uIGFuZCBWRklPIEludGVyYWN0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIGhvdyB0aGlzIG1kZXYgKG1lZGlhdGVkIGRldmljZSkgaXMgYmVpbmcgY3JlYXRlZC4gSXQmIzM5O3MgYmVjb21pbmcgY2xlYXIgdGhhdCB0aGUgcHJvY2VzcyAqZG9lc24mIzM5O3QqIG5lY2Vzc2FyaWx5IGRlcGVuZCBvbiBoYXZpbmcgYW55IHByZS1leGlzdGluZyBwaHlzaWNhbCBBUCAoQWNjZWxlcmF0ZWQgUHJvY2Vzc2luZykgcXVldWVzLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLiBUaGUga2V5IGhlcmUgc2VlbXMgdG8gYmUgdGhlIGFsbG9jYXRpb24gb2YgdGhpcyBgYXBfbWF0cml4X21kZXZgIHN0cnVjdHVyZSBhbmQgaXRzIHN1YnNlcXVlbnQgcmVnaXN0cmF0aW9uLiBUaGF0JiMzOTtzIHRoZSBjb3JlIG9mIHRoZSBtZGV2IGl0c2VsZi4KClRoZSByZWFsIG1hZ2ljLCB0aGUgcGFydCB3aGVyZSB0aGUgdmlydHVhbCBkZXZpY2UgYWN0dWFsbHkgaG9va3MgaW50byBLVk0sIHNlZW1zIHRvIGhhcHBlbiBsYXRlciwgc3BlY2lmaWNhbGx5IHdoZW4gYHZmaW9fYXBfbWRldl9zZXRfa3ZtYCBpcyBjYWxsZWQuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0JiMzOTtzIHRoZSBwb2ludCB3aGVyZSB3ZSYjMzk7cmUgYWN0dWFsbHkgYXNzb2NpYXRpbmcgdGhlIHZpcnR1YWwgZGV2aWNlIHdpdGggdGhlIFZGSU8gaW5mcmFzdHJ1Y3R1cmUsIGxpbmtpbmcgaXQgdG8gYSBLVk0gaW5zdGFuY2UuCgpUbyBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhhdCBsaW5rYWdlLCBJIG5lZWQgdG8gY2hlY2sgaG93IHRoZSBkZXZpY2UgaXMgb3BlbmVkIGFuZCBjb25maWd1cmVkLiBMZXQmIzM5O3MgZGVsdmUgaW50byB0aGUgZnVuY3Rpb24gYHZmaW9fYXBfbWRldl9vcGVuX2RldmljZWAgdG8gc2VlIHByZWNpc2VseSBob3cgdGhpcyBoYXBwZW5zLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIHNvIHRvIHNwZWFrLiBVbmRlcnN0YW5kaW5nIHRoZSBmbG93IGZyb20gYWxsb2NhdGlvbiwgcmVnaXN0cmF0aW9uIHRvIG9wZW5pbmcgdGhlIGRldmljZSBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgdW5kZXJzdGFuZGluZyBvZiB0aGUgZW50aXJlIHByb2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjA0OCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyMDQ4Olx0c3RhdGljIGludCB2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICp2ZGV2KVxuMjA0OTpcdHtcbjIwNTA6XHRcdHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXYgPVxuMjA1MTpcdFx0XHRjb250YWluZXJfb2YodmRldiwgc3RydWN0IGFwX21hdHJpeF9tZGV2LCB2ZGV2KTtcbjIwNTI6XHRcbjIwNTM6XHRcdGlmICghdmRldi1cdTAwM2Vrdm0pXG4yMDU0Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuMjA1NTpcdFxuMjA1NjpcdFx0cmV0dXJuIHZmaW9fYXBfbWRldl9zZXRfa3ZtKG1hdHJpeF9tZGV2LCB2ZGV2LVx1MDAzZWt2bSk7XG4yMDU3Olx0fVxuMjA1ODpcdFxuMjA1OTpcdHN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICp2ZGV2KVxuMjA2MDpcdHtcbjIwNjE6XHRcdHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXYgPVxuMjA2MjpcdFx0XHRjb250YWluZXJfb2YodmRldiwgc3RydWN0IGFwX21hdHJpeF9tZGV2LCB2ZGV2KTtcbjIwNjM6XHRcbjIwNjQ6XHRcdHZmaW9fYXBfbWRldl91bnNldF9rdm0obWF0cml4X21kZXYpO1xuMjA2NTpcdH1cbjIwNjY6XHRcbjIwNjc6XHRzdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfcmVxdWVzdChzdHJ1Y3QgdmZpb19kZXZpY2UgKnZkZXYsIHVuc2lnbmVkIGludCBjb3VudClcbjIwNjg6XHR7XG4yMDY5Olx0XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSB2ZGV2LVx1MDAzZWRldjtcbjIwNzA6XHRcdHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXY7XG4yMDcxOlx0XG4yMDcyOlx0XHRtYXRyaXhfbWRldiA9IGNvbnRhaW5lcl9vZih2ZGV2LCBzdHJ1Y3QgYXBfbWF0cml4X21kZXYsIHZkZXYpO1xuMjA3MzpcdFxuMjA3NDpcdFx0Z2V0X3VwZGF0ZV9sb2Nrc19mb3JfbWRldihtYXRyaXhfbWRldik7XG4yMDc1Olx0XG4yMDc2Olx0XHRpZiAobWF0cml4X21kZXYtXHUwMDNla3ZtKSB7XG4yMDc3Olx0XHRcdGt2bV9hcmNoX2NyeXB0b19jbGVhcl9tYXNrcyhtYXRyaXhfbWRldi1cdTAwM2Vrdm0pO1xuMjA3ODpcdFx0XHRzaWduYWxfZ3Vlc3RfYXBfY2ZnX2NoYW5nZWQobWF0cml4X21kZXYpO1xuMjA3OTpcdFx0fVxuMjA4MDpcdFxuMjA4MTpcdFx0aWYgKG1hdHJpeF9tZGV2LVx1MDAzZXJlcV90cmlnZ2VyKSB7XG4yMDgyOlx0XHRcdGlmICghKGNvdW50ICUgMTApKVxuMjA4MzpcdFx0XHRcdGRldl9ub3RpY2VfcmF0ZWxpbWl0ZWQoZGV2LFxuMjA4NDpcdFx0XHRcdFx0XHQgICAgICAgXCYjMzQ7UmVsYXlpbmcgZGV2aWNlIHJlcXVlc3QgdG8gdXNlciAoIyV1KVxcblwmIzM0OyxcbjIwODU6XHRcdFx0XHRcdFx0ICAgICAgIGNvdW50KTtcbjIwODY6XHRcbjIwODc6XHRcdFx0ZXZlbnRmZF9zaWduYWwobWF0cml4X21kZXYtXHUwMDNlcmVxX3RyaWdnZXIpO1xuMjA4ODpcdFx0fSBlbHNlIGlmIChjb3VudCA9PSAwKSB7XG4yMDg5Olx0XHRcdGRldl9ub3RpY2UoZGV2LFxuMjA5MDpcdFx0XHRcdCAgIFwmIzM0O05vIGRldmljZSByZXF1ZXN0IHJlZ2lzdGVyZWQsIGJsb2NrZWQgdW50aWwgcmVsZWFzZWQgYnkgdXNlclxcblwmIzM0Oyk7XG4yMDkxOlx0XHR9XG4yMDkyOlx0XG4yMDkzOlx0XHRyZWxlYXNlX3VwZGF0ZV9sb2Nrc19mb3JfbWRldihtYXRyaXhfbWRldik7XG4yMDk0Olx0fVxuMjA5NTpcdFxuMjA5NjpcdHN0YXRpYyBpbnQgdmZpb19hcF9tZGV2X2dldF9kZXZpY2VfaW5mbyh1bnNpZ25lZCBsb25nIGFyZylcbjIwOTc6XHR7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzODk1CgkJCQkJCQlvdXRwdXQ6IDE2CgkJCQkJCQl0aG91Z2h0czogMzQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlYWNoaW5nIHRoZSBWRklPIEFQIExvY2tpbmcgTG9naWMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRyYWNpbmcgdGhlIGNvZGUgZmxvdy4gSXQgc2VlbXMgYHZmaW9fYXBfbWRldl9vcGVuX2RldmljZWAgY2FsbHMgYHZmaW9fYXBfbWRldl9zZXRfa3ZtYC4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQuIFRoZSBjcnVjaWFsIHBhcnQgaGVyZSBpcyBob3cgd2UgZ2V0IHRoZXJlLiBJdCYjMzk7cyB0cmlnZ2VyZWQgYnkgY3JlYXRpbmcgYW5kIG9wZW5pbmcgYSBWRklPIGRldmljZS4gU3l6a2FsbGVyLCBmcm9tIHdoYXQgSSByZWNhbGwsIGhhcyBkZXNjcmlwdGlvbnMgZm9yIFZGSU8gYW5kIGNhbiBjcmVhdGUgbWRldnMsIGFjY29yZGluZyB0byBgc3lzL2xpbnV4L3ZmaW8udHh0YCBvciBzaW1pbGFyLiBJJiMzOTttIHByZXR0eSBzdXJlIGl0IHN1cHBvcnRzIFZGSU8gYW5kIGNhbiBjcmVhdGUgdGhlc2UgbWRldnMsIHdoaWNoIG1lYW5zIGB2ZmlvX2FwX21kZXZfc2V0X2t2bWAgaXMgZGVmaW5pdGVseSByZWFjaGFibGUuCgpUaGUgcGF0Y2ggaXRzZWxmIHRhcmdldHMgYHZmaW9fYXBfbWRldl9zZXRfa3ZtYCwgYW5kIGl0cyBjb3VudGVycGFydCwgYHZmaW9fYXBfbWRldl91bnNldF9rdm1gLCBhbG9uZyB3aXRoIGBnZXRfdXBkYXRlX2xvY2tzX2Zvcl9rdm1gIGFuZCBgcmVsZWFzZV91cGRhdGVfbG9ja3NfZm9yX2t2bWAuIEdpdmVuIHRoZSBmdW5jdGlvbnMgYXJlIGV4cGxpY2l0bHkgbWVudGlvbmVkLCB0aGF0IGNvbmZpcm1zIHRoZXNlIGFyZSBhbGwgcmVhY2hhYmxlLiBTaW5jZSB0aGUgcGF0Y2ggbW9kaWZpZXMgdGhlc2UgZnVuY3Rpb25zLCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhpcyBpcyBhZGRyZXNzaW5nIGxvY2tpbmcgaXNzdWVzIG9yLCBhdCB0aGUgdmVyeSBsZWFzdCwgYWx0ZXJpbmcgdGhlIGxvY2tpbmcgYmVoYXZpb3IuCgpHaXZlbiB0aGUgbW9kaWZpY2F0aW9ucyB0byBjb3JlIGxvY2tpbmcgbG9naWMgd2l0aGluIFZGSU8gQVAsIHRoaXMgaXMgYWJzb2x1dGVseSB3b3J0aCBmdXp6aW5nLiBUaGUgcXVlc3Rpb24gdGhhdCByZW1haW5zIGlzIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBoYXJkd2FyZSByZXN0cmljdGlvbnMgdGhhdCBuZWVkIHRvIGJlIG1ldC4gVGhhbmtmdWxseSwgdGhlcmUgYXJlIG5vdDsgc2luY2UgYHZmaW9fYXBfbWRldl9wcm9iZWAgc3VjY2VlZHMgd2l0aG91dCBhIHBoeXNpY2FsIEFQLCBgdmZpb19hcF9tZGV2X29wZW5fZGV2aWNlYCBkb2VzIG5vdCBoYXZlIGFueSBmdXJ0aGVyIHJlc3RyaWN0aW9ucy4KCkhvd2V2ZXIsIGB2ZmlvX2FwX21kZXZfc2V0X2t2bWAgZG9lcyBjaGVjayBga3ZtLSZndDthcmNoLmNyeXB0by5jcnljYmRgLiBTbyBJJiMzOTttIGdvaW5nIHRvIGRpZyBkZWVwZXIgYW5kIGxvb2sgaW50byB3aGVuIGFuZCBob3cgdGhhdCBpcyBzZXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NyeWNiZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3QuaD01MzA9c3RydWN0IGt2bV9zMzkwX2NyeXB0byB7XG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtNTMzLVx0Y3J5cHRvX2hvb2sgKnBxYXBfaG9vaztcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjUzNDpcdF9fdTMyIGNyeWNiZDtcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTUzNS1cdF9fdTggYWVzX2t3O1xuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF90eXBlcy5oPTEzNz1zdHJ1Y3Qga3ZtX3MzOTBfc2llX2Jsb2NrIHtcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfdHlwZXMuaC0zMDUtI2RlZmluZSBDUllDQl9GT1JNQVQyIDB4MDAwMDAwMDNcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF90eXBlcy5oOjMwNjpcdF9fdTMyXHRjcnljYmQ7XHRcdFx0LyogMHgwMGZjICovXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfdHlwZXMuaC0zMDctXHRfX3U2NFx0Z2NyWzE2XTtcdFx0LyogMHgwMTAwICovXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTMxMjE9c3RhdGljIHZvaWQga3ZtX3MzOTBfc2V0X2NyeWNiX2Zvcm1hdChzdHJ1Y3Qga3ZtICprdm0pXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzEyMi17XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MzEyMzpcdGt2bS1cdTAwM2VhcmNoLmNyeXB0by5jcnljYmQgPSB2aXJ0X3RvX3BoeXMoa3ZtLVx1MDAzZWFyY2guY3J5cHRvLmNyeWNiKTtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMTI0LVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTMxMjUtXHQvKiBDbGVhciB0aGUgQ1JZQ0IgZm9ybWF0IGJpdHMgLSBpLmUuLCBzZXQgZm9ybWF0IDAgYnkgZGVmYXVsdCAqL1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjMxMjY6XHRrdm0tXHUwMDNlYXJjaC5jcnlwdG8uY3J5Y2JkIFx1MDAyNj0gfihDUllDQl9GT1JNQVRfTUFTSyk7XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzEyNy1cbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzEzMi1cdGlmIChrdm1fczM5MF9hcHhhX2luc3RhbGxlZCgpKVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjMxMzM6XHRcdGt2bS1cdTAwM2VhcmNoLmNyeXB0by5jcnljYmQgfD0gQ1JZQ0JfRk9STUFUMjtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMTM0LVx0ZWxzZVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjMxMzU6XHRcdGt2bS1cdTAwM2VhcmNoLmNyeXB0by5jcnljYmQgfD0gQ1JZQ0JfRk9STUFUMTtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMTM2LX1cbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9MzE1Mz12b2lkIGt2bV9hcmNoX2NyeXB0b19zZXRfbWFza3Moc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nICphcG0sXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTMxNTktXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MzE2MDpcdHN3aXRjaCAoa3ZtLVx1MDAzZWFyY2guY3J5cHRvLmNyeWNiZCBcdTAwMjYgQ1JZQ0JfRk9STUFUX01BU0spIHtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMTYxLVx0Y2FzZSBDUllDQl9GT1JNQVQyOiAvKiBBUENCMSB1c2UgMjU2IGJpdHMgKi9cbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9MzY0Mj1zdGF0aWMgdm9pZCBrdm1fczM5MF92Y3B1X2NyeXB0b19zZXR1cChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTM2NTAtXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MzY1MTpcdHZjcHUtXHUwMDNlYXJjaC5zaWVfYmxvY2stXHUwMDNlY3J5Y2JkID0gdmNwdS1cdTAwM2Vrdm0tXHUwMDNlYXJjaC5jcnlwdG8uY3J5Y2JkO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTM2NTItXHR2Y3B1LVx1MDAzZWFyY2guc2llX2Jsb2NrLVx1MDAzZWVjYjMgXHUwMDI2PSB+KEVDQjNfQUVTIHwgRUNCM19ERUEpO1xuLS1cbmFyY2gvczM5MC9rdm0vcHJpdi5jPTU5Mj1zdGF0aWMgaW50IGhhbmRsZV9wcWFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3MzOTAva3ZtL3ByaXYuYy02MzAtXHQvKiBBUFhBIG5vdCBpbnN0YWxsZWQgYW5kIEFQSUQgZ3JlYXRlciA2NCBvciBBUFFJIGdyZWF0ZXIgMTYgKi9cbmFyY2gvczM5MC9rdm0vcHJpdi5jOjYzMTpcdGlmICghKHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2guY3J5cHRvLmNyeWNiZCBcdTAwMjYgMHgwMikgXHUwMDI2XHUwMDI2IChyZWcwIFx1MDAyNiAweDAwMDBjMGYwVUwpKVxuYXJjaC9zMzkwL2t2bS9wcml2LmMtNjMyLVx0XHRyZXR1cm4ga3ZtX3MzOTBfaW5qZWN0X3Byb2dyYW1faW50KHZjcHUsIFBHTV9TUEVDSUZJQ0FUSU9OKTtcbi0tXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYz0zMTg9c3RhdGljIGludCBzaGFkb3dfY3J5Y2Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgdnNpZV9wYWdlICp2c2llX3BhZ2UpXG4tLVxuYXJjaC9zMzkwL2t2bS92c2llLmMtMzIxLVx0c3RydWN0IGt2bV9zMzkwX3NpZV9ibG9jayAqc2NiX28gPSB2c2llX3BhZ2UtXHUwMDNlc2NiX287XG5hcmNoL3MzOTAva3ZtL3ZzaWUuYzozMjI6XHRjb25zdCB1aW50MzJfdCBjcnljYmRfbyA9IFJFQURfT05DRShzY2Jfby1cdTAwM2VjcnljYmQpO1xuYXJjaC9zMzkwL2t2bS92c2llLmM6MzIzOlx0Y29uc3QgdTMyIGNyeWNiX2FkZHIgPSBjcnljYmRfbyBcdTAwMjYgMHg3ZmZmZmZmOFU7XG5hcmNoL3MzOTAva3ZtL3ZzaWUuYy0zMjQtXHR1bnNpZ25lZCBsb25nICpiMSwgKmIyO1xuLS1cbmFyY2gvczM5MC9rdm0vdnNpZS5jLTMyOS1cdGludCBrZXlfbXNrID0gdGVzdF9rdm1fZmFjaWxpdHkodmNwdS1cdTAwM2Vrdm0sIDc2KTtcbmFyY2gvczM5MC9rdm0vdnNpZS5jOjMzMDpcdGludCBmbXRfbyA9IGNyeWNiZF9vIFx1MDAyNiBDUllDQl9GT1JNQVRfTUFTSztcbmFyY2gvczM5MC9rdm0vdnNpZS5jOjMzMTpcdGludCBmbXRfaCA9IHZjcHUtXHUwMDNlYXJjaC5zaWVfYmxvY2stXHUwMDNlY3J5Y2JkIFx1MDAyNiBDUllDQl9GT1JNQVRfTUFTSztcbmFyY2gvczM5MC9rdm0vdnNpZS5jLTMzMi1cdGludCByZXQgPSAwO1xuYXJjaC9zMzkwL2t2bS92c2llLmMtMzMzLVxuYXJjaC9zMzkwL2t2bS92c2llLmM6MzM0Olx0c2NiX3MtXHUwMDNlY3J5Y2JkID0gMDtcbmFyY2gvczM5MC9rdm0vdnNpZS5jLTMzNS1cbi0tXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYy0zODgtXHR9XG5hcmNoL3MzOTAva3ZtL3ZzaWUuYzozODk6XHRzY2Jfcy1cdTAwM2VjcnljYmQgPSAodTMyKXZpcnRfdG9fcGh5cyhcdTAwMjZ2c2llX3BhZ2UtXHUwMDNlY3J5Y2IpIHwgQ1JZQ0JfRk9STUFUMjtcbmFyY2gvczM5MC9rdm0vdnNpZS5jLTM5MC1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0xODI4PXN0YXRpYyBpbnQgdmZpb19hcF9tZGV2X3NldF9rdm0oc3RydWN0IGFwX21hdHJpeF9tZGV2ICptYXRyaXhfbWRldixcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTgzMC17XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTgzMTpcdGlmIChrdm0tXHUwMDNlYXJjaC5jcnlwdG8uY3J5Y2JkKSB7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTgzMi1cdFx0Z2V0X3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtKGt2bSk7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTE4Nzk9c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X3Vuc2V0X2t2bShzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2KVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xODgyLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE4ODM6XHRpZiAoa3ZtIFx1MDAyNlx1MDAyNiBrdm0tXHUwMDNlYXJjaC5jcnlwdG8uY3J5Y2JkKSB7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTg4NC1cdFx0Z2V0X3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtKGt2bSk7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvczM5MC9zaWUuaD0yMD1zdHJ1Y3Qga3ZtX3MzOTBfc2llX2Jsb2NrIHtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9zMzkwL3NpZS5oLTIxMy0jZGVmaW5lIENSWUNCX0ZPUk1BVDJcdFx0MHgwMDAwMDAwM1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvczM5MC9zaWUuaDoyMTQ6XHRfX3UzMlx0Y3J5Y2JkO1x0XHRcdC8qIDB4MDBmYyAqL1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvczM5MC9zaWUuaC0yMTUtXHRfX3U2NFx0Z2NyWzE2XTtcdFx0LyogMHgwMTAwICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3MDIzCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogNzEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2gmIzM5O3MgSW1wYWN0IG9uIFZGSU8tQVAgYW5kIEtWTSBJbnRlZ3JhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXM6IGBrdm1fczM5MF9zZXRfY3J5Y2JfZm9ybWF0YCBzZXRzIHRoZSBgY3J5Y2JkYCBzdHJ1Y3R1cmUuIFRoYXQgZnVuY3Rpb24gaXMgY2FsbGVkIGR1cmluZyB0aGUgS1ZNIFZNIGluaXRpYWxpemF0aW9uIHZpYSBga3ZtX3MzOTBfY3J5cHRvX2luaXRgLCBhbmQgdWx0aW1hdGVseSBmcm9tIGBrdm1fYXJjaF9pbml0X3ZtYC4gVGhpcyBtZWFucyBga3ZtLSZndDthcmNoLmNyeXB0by5jcnljYmRgIGlzIHBvcHVsYXRlZCB3aGVuIGEgS1ZNIFZNIGluc3RhbmNlIGlzIGNyZWF0ZWQuIFRoYXQmIzM5O3Mga2V5IGJlY2F1c2UgYHZmaW9fYXBfbWRldl9zZXRfa3ZtYCAqc2hvdWxkKiBleGVjdXRlIGl0cyBjb3JlIGxvZ2ljIGlmIGEgYGt2bWAgcG9pbnRlciBpcyBwYXNzZWQgaW4uIFJpZ2h0LCBhbmQgYHZmaW9fYXBfbWRldl9zZXRfa3ZtYCBpcyAqY2FsbGVkKiBmcm9tIGB2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2VgIGFuZCBpdCB1c2VzIGB2ZGV2LSZndDtrdm1gLCBzbyBgdmRldi0mZ3Q7a3ZtYCBiZWNvbWVzIGFzc2lnbmVkIHdoZW4gYSBWRklPIGRldmljZSBpcyBjb25uZWN0ZWQgdG8gYSBLVk0gaW5zdGFuY2UuIFNvLCB1c2luZyBTeXprYWxsZXIsIHdoaWNoIGNhbiBvcGVuIHRoZSBWRklPIGRldmljZSBhbmQgdXNlcyBpb2N0bHMgbGlrZSBgS1ZNX0RFVl9WRklPX0dST1VQX0FERGAsIHdlIGNhbiByZWFjaCB0aGlzIGNvZGUgcGF0aCBhbmQgdGVzdCBpdCB3aXRoaW4gYSB2aXJ0dWFsaXplZCBzZXR1cC4gR29vZC4KCk5vdywgbGV0JiMzOTtzIHJldmlzaXQgdGhlIHBhdGNoIGl0c2VsZi4gSXQmIzM5O3MgYWRkaW5nIGBwcWFwX2hvb2tfcndzZW1gIHRvIGBnZXRfdXBkYXRlX2xvY2tzX2Zvcl9rdm1gIGFuZCBhbHNvIGByZWxlYXNlX3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtYC4gVGhlIHBhdGNoIG1vZGlmaWVzIGB2ZmlvX2FwX21kZXZfc2V0X2t2bWAgaW4gYSB3YXkgdGhhdCBzdWdnZXN0cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBsb2NraW5nIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IGxvZ2ljLiBUaGUgcHJldmlvdXMgY2hlY2tzIGZvciBgY3J5Y2JkYCBhcmUgZ29uZS4gVGhpcyBpbmRpY2F0ZXMgYSBzaWduaWZpY2FudCBjaGFuZ2UgaW4gaG93IHRoZSBgcHFhcF9ob29rYCBpcyBoYW5kbGVkLiAgU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byBiZSBlbnN1cmluZyB0aGF0IHRoZSBob29rIGlzIG9ubHkgc2V0IHdoZW4gbm90IGFscmVhZHkgc2V0IGZvciBhbm90aGVyIGRldmljZSBhdHRhY2hlZCB0byB0aGUgc2FtZSBLVk0gaW5zdGFuY2UuIFRoZSBgbGlzdF9mb3JfZWFjaF9lbnRyeWAgbG9vcCBpcyByZW1vdmVkLCBhbmQgcmVwbGFjZWQgd2l0aCBhIGNoZWNrIG9mIGBrdm0tJmd0O2FyY2guY3J5cHRvLnBxYXBfaG9va2AuIFNvIHRoYXQmIzM5O3Mgbm93IGEgc2luZ2xlIGNoZWNrLgoKVGhpcyBpcyBhbGwgKmRlZmluaXRlbHkqIHdvcnRoIGZ1enppbmcuIFRoZSBsb2NrIGNoYW5nZXMsIHRoZSBzdGF0ZSBtYW5hZ2VtZW50IHR3ZWFrcyDigJMgdGhlc2UgYXJlIHJpcGUgZm9yIGNvbmN1cnJlbmN5IGJ1Z3Mgb3IgdW5leHBlY3RlZCBiZWhhdmlvci4gV2UmIzM5O2xsIG5lZWQgdG8gZm9jdXMgb24gaW50ZXJhY3Rpb25zIGJldHdlZW4gbXVsdGlwbGUgVkZJTyBBUCBkZXZpY2VzLCBLVk0sIGFuZCB0aGUgQVAgaGFyZHdhcmUuCgpBcyBmb3IgY29uZmlndXJhdGlvbiwgd2UgbmVlZCB0byBlbnN1cmUgdGhhdCBgQ09ORklHX1ZGSU9fQVBgIGlzIGVuYWJsZWQuIExldCYjMzk7cyBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGluIGBhcmNoL3MzOTAvS2NvbmZpZ2AgdG8gYmUgc3VyZS4gQWxyaWdodCwgbm93IHdlIGtub3cgd2hhdCB0byB0ZXN0LCBhbmQgdGhlIGNvbmZpZ3VyYXRpb25zIHJlcXVpcmVkLiBUaW1lIHRvIHNldCB1cCB0aGUgZnV6emluZyBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFZGSU9fQVAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL0tjb25maWc9ODIzPWNvbmZpZyBWRklPX0NDV1xuLS1cbmFyY2gvczM5MC9LY29uZmlnLTgzMy1cbmFyY2gvczM5MC9LY29uZmlnOjgzNDpjb25maWcgVkZJT19BUFxuYXJjaC9zMzkwL0tjb25maWctODM1LVx0ZGVmX3RyaXN0YXRlIG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg0MjIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgdGV4dCwgcmVuZGVyZWQgYXMgYSBmaXJzdC1wZXJzb24gZXhwZXJ0IHN1bW1hcnk6CgoqKkRpdmluZyBpbnRvIHRoZSBzMzkwIEFyY2hpdGVjdHVyZSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IHRoZSBgYXJjaC9zMzkwL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSA4MzQuIEkmIzM5O20gZ29pbmcgdG8gYXNzdW1lIHRoaXMgc2VjdGlvbiBsaWtlbHkgcmVsYXRlcyB0byBzb21lIGZlYXR1cmUgb3IgY29uZmlndXJhdGlvbiBvcHRpb24gd2l0aGluIHRoZSBzMzkwIGFyY2hpdGVjdHVyZS4gR2l2ZW4gdGhlIGNvbnRleHQgb2YgYSBLY29uZmlnIGZpbGUsIGl0JiMzOTtzIHByb2JhYmx5IGRlZmluaW5nIGEgY29uZGl0aW9uYWwgYnVpbGQgb3B0aW9uLCBhIGhhcmR3YXJlIGZlYXR1cmUgc2V0dGluZywgb3IgbWF5YmUgZXZlbiBhIGRyaXZlciBjb25maWd1cmF0aW9uIHJlbGF0ZWQgdG8gdGhlIElCTSBtYWluZnJhbWUgYXJjaGl0ZWN0dXJlLiBJJiMzOTtsbCBuZWVkIHRvIGNhcmVmdWxseSBleGFtaW5lIHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcywgZGVmYXVsdCB2YWx1ZXMsIGFuZCBoZWxwIHRleHQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBpdGVtLiBJdCBjb3VsZCBiZSBzb21ldGhpbmcgc3RyYWlnaHRmb3J3YXJkLCBvciBpdCBtaWdodCByZXF1aXJlIGEgZGVlcGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGhhcmR3YXJlIGNhcGFiaWxpdGllcywgZmlybXdhcmUgaW50ZXJhY3Rpb25zLCBvciBzcGVjaWZpYyBrZXJuZWwgc3Vic3lzdGVtcyB3aXRoaW4gdGhlIHMzOTAgZW52aXJvbm1lbnQuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL3MzOTAvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDgzMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgODMwOlx0XG4gODMxOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuIDgzMjpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgdmZpb19jY3cuXG4gODMzOlx0XG4gODM0Olx0Y29uZmlnIFZGSU9fQVBcbiA4MzU6XHRcdGRlZl90cmlzdGF0ZSBuXG4gODM2Olx0XHRwcm9tcHQgXCYjMzQ7VkZJTyBzdXBwb3J0IGZvciBBUCBkZXZpY2VzXCYjMzQ7XG4gODM3Olx0XHRkZXBlbmRzIG9uIEtWTVxuIDgzODpcdFx0ZGVwZW5kcyBvbiBWRklPXG4gODM5Olx0XHRkZXBlbmRzIG9uIEFQXG4gODQwOlx0XHRzZWxlY3QgVkZJT19NREVWXG4gODQxOlx0XHRoZWxwXG4gODQyOlx0XHQgIFRoaXMgZHJpdmVyIGdyYW50cyBhY2Nlc3MgdG8gQWRqdW5jdCBQcm9jZXNzb3IgKEFQKSBkZXZpY2VzXG4gODQzOlx0XHQgIHZpYSB0aGUgVkZJTyBtZWRpYXRlZCBkZXZpY2UgaW50ZXJmYWNlLlxuIDg0NDpcdFxuIDg0NTpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4gODQ2Olx0XHQgIHdpbGwgYmUgY2FsbGVkIHZmaW9fYXAuXG4gODQ3Olx0XG4gODQ4Olx0ZW5kbWVudVxuIDg0OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODk0MAoJCQkJCQkJb3V0cHV0OiAxNgoJCQkJCQkJdGhvdWdodHM6IDQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOgoKKipWRklPLUFQIENvbmZpZ3VyYXRpb24gQ29udW5kcnVtKioKClJpZ2h0LCBzbyB0byBnZXQgdGhpcyB3b3JraW5nLCBpdCBzZWVtcyB0aGF0IGBDT05GSUdfVkZJT19BUGAgaXMgYWJzb2x1dGVseSBlc3NlbnRpYWwuIE9rYXksIG9idmlvdXMgc3RhcnQuIEJ1dCwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaXRzIGRlcGVuZGVuY2llcyB0byBwcm9wZXJseSBjb25maWd1cmUgZXZlcnl0aGluZy4gSXQgbG9va3MgbGlrZSBpdCBkaXJlY3RseSBkZXBlbmRzIG9uIGBLVk1gLCBgVkZJT2AsIGFuZCBgQVBgLiBUaGF0JiMzOTtzIGEgcmVhc29uYWJsZSBzZXQsIEkgY2FuIHdvcmsgd2l0aCB0aGF0LCBtYWtlcyBzZW5zZSB0byBtZS4gVGhlIGludGVyZXN0aW5nIHBhcnQgaXMgYEFQYC4gSXMgYEFQYCByZWZlcnJpbmcgdG8gYENPTkZJR19aQ1JZUFRgPyBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGRlZmluaXRpb24gaW4gdGhlIGtlcm5lbCBjb25maWcuLi4gTGV0IG1lIGdvIGFuZCBkaWcgdGhhdCB1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEFQJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvYm9vdGNvbmZpZy5yc3Q9Mjg3PXRvIGluaXRyZCBpbWFnZSwgdXNlciBjYW4gbm90aWNlIGl0IGJlZm9yZSBib290LlxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvYm9vdGNvbmZpZy5yc3QtMjg5LVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9ib290Y29uZmlnLnJzdDoyOTA6Qm9vdGNvbmZpZyBBUElzXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2Jvb3Rjb25maWcucnN0LTI5MS09PT09PT09PT09PT09PT1cbi0tXG5hcmNoL202OGsvS2NvbmZpZy5tYWNoaW5lPTI5PWNvbmZpZyBNQUNcbi0tXG5hcmNoL202OGsvS2NvbmZpZy5tYWNoaW5lLTQwLVxuYXJjaC9tNjhrL0tjb25maWcubWFjaGluZTo0MTpjb25maWcgQVBPTExPXG5hcmNoL202OGsvS2NvbmZpZy5tYWNoaW5lLTQyLVx0Ym9vbCBcJiMzNDtBcG9sbG8gc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvNDR4L0tjb25maWc9MjkxPWNvbmZpZyA0NzZGUEVcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzQ0eC9LY29uZmlnLTI5NC1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvNDR4L0tjb25maWc6Mjk1OmNvbmZpZyBBUE04MjF4eFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy80NHgvS2NvbmZpZy0yOTYtXHRib29sXG4tLVxuYXJjaC9zMzkwL0tjb25maWc9Nzg1PWNvbmZpZyBFQURNX1NDSFxuLS1cbmFyY2gvczM5MC9LY29uZmlnLTc5NS1cbmFyY2gvczM5MC9LY29uZmlnOjc5Njpjb25maWcgQVBcbmFyY2gvczM5MC9LY29uZmlnLTc5Ny1cdGRlZl90cmlzdGF0ZSB5XG4tLVxuYXJjaC9zMzkwL0tjb25maWctODA4LVxuYXJjaC9zMzkwL0tjb25maWc6ODA5OmNvbmZpZyBBUF9ERUJVR1xuYXJjaC9zMzkwL0tjb25maWctODEwLVx0ZGVmX2Jvb2wgblxuLS1cbmFyY2gvczM5MC9LY29uZmlnPTg4NT1jb25maWcgQ01NX0lVQ1Zcbi0tXG5hcmNoL3MzOTAvS2NvbmZpZy04OTItXG5hcmNoL3MzOTAvS2NvbmZpZzo4OTM6Y29uZmlnIEFQUExEQVRBX0JBU0VcbmFyY2gvczM5MC9LY29uZmlnLTg5NC1cdGRlZl9ib29sIG5cbi0tXG5hcmNoL3MzOTAvS2NvbmZpZy05MDgtXG5hcmNoL3MzOTAvS2NvbmZpZzo5MDk6Y29uZmlnIEFQUExEQVRBX01FTVxuYXJjaC9zMzkwL0tjb25maWctOTEwLVx0ZGVmX3RyaXN0YXRlIG1cbi0tXG5hcmNoL3MzOTAvS2NvbmZpZy05MjUtXG5hcmNoL3MzOTAvS2NvbmZpZzo5MjY6Y29uZmlnIEFQUExEQVRBX09TXG5hcmNoL3MzOTAvS2NvbmZpZy05MjctXHRkZWZfdHJpc3RhdGUgbVxuLS1cbmFyY2gvczM5MC9LY29uZmlnLTk0MC1cbmFyY2gvczM5MC9LY29uZmlnOjk0MTpjb25maWcgQVBQTERBVEFfTkVUX1NVTVxuYXJjaC9zMzkwL0tjb25maWctOTQyLVx0ZGVmX3RyaXN0YXRlIG1cbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTI3NDE9Y29uZmlnIFg4Nl9BUE1fQk9PVFxuLS1cbmFyY2gveDg2L0tjb25maWctMjc0NC1cbmFyY2gveDg2L0tjb25maWc6Mjc0NTptZW51Y29uZmlnIEFQTVxuYXJjaC94ODYvS2NvbmZpZy0yNzQ2LVx0dHJpc3RhdGUgXCYjMzQ7QVBNIChBZHZhbmNlZCBQb3dlciBNYW5hZ2VtZW50KSBCSU9TIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTI3OTk9aWYgQVBNXG5hcmNoL3g4Ni9LY29uZmlnLTI4MDAtXG5hcmNoL3g4Ni9LY29uZmlnOjI4MDE6Y29uZmlnIEFQTV9JR05PUkVfVVNFUl9TVVNQRU5EXG5hcmNoL3g4Ni9LY29uZmlnLTI4MDItXHRib29sIFwmIzM0O0lnbm9yZSBVU0VSIFNVU1BFTkRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTI4MDctXG5hcmNoL3g4Ni9LY29uZmlnOjI4MDg6Y29uZmlnIEFQTV9ET19FTkFCTEVcbmFyY2gveDg2L0tjb25maWctMjgwOS1cdGJvb2wgXCYjMzQ7RW5hYmxlIFBNIGF0IGJvb3QgdGltZVwmIzM0O1xuLS1cbmFyY2gveDg2L0tjb25maWctMjgyNC1cbmFyY2gveDg2L0tjb25maWc6MjgyNTpjb25maWcgQVBNX0NQVV9JRExFXG5hcmNoL3g4Ni9LY29uZmlnLTI4MjYtXHRkZXBlbmRzIG9uIENQVV9JRExFXG4tLVxuYXJjaC94ODYvS2NvbmZpZy0yODM2LVxuYXJjaC94ODYvS2NvbmZpZzoyODM3OmNvbmZpZyBBUE1fRElTUExBWV9CTEFOS1xuYXJjaC94ODYvS2NvbmZpZy0yODM4LVx0Ym9vbCBcJiMzNDtFbmFibGUgY29uc29sZSBibGFua2luZyB1c2luZyBBUE1cJiMzNDtcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTI4NDktXG5hcmNoL3g4Ni9LY29uZmlnOjI4NTA6Y29uZmlnIEFQTV9BTExPV19JTlRTXG5hcmNoL3g4Ni9LY29uZmlnLTI4NTEtXHRib29sIFwmIzM0O0FsbG93IGludGVycnVwdHMgZHVyaW5nIEFQTSBCSU9TIGNhbGxzXCYjMzQ7XG4tLVxuZHJpdmVycy9jaGFyL0tjb25maWc9MjEzPWNvbmZpZyBYSUxJTlhfSFdJQ0FQXG4tLVxuZHJpdmVycy9jaGFyL0tjb25maWctMjIyLVxuZHJpdmVycy9jaGFyL0tjb25maWc6MjIzOmNvbmZpZyBBUFBMSUNPTVxuZHJpdmVycy9jaGFyL0tjb25maWctMjI0LVx0dHJpc3RhdGUgXCYjMzQ7QXBwbGljb20gaW50ZWxsaWdlbnQgZmllbGRidXMgY2FyZCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvcWNvbS9LY29uZmlnPTI5MD1jb25maWcgUUNPTV9DTEtfUlBNSFxuLS1cbmRyaXZlcnMvY2xrL3Fjb20vS2NvbmZpZy0yOTgtXG5kcml2ZXJzL2Nsay9xY29tL0tjb25maWc6Mjk5OmNvbmZpZyBBUFFfR0NDXzgwODRcbmRyaXZlcnMvY2xrL3Fjb20vS2NvbmZpZy0zMDAtXHR0cmlzdGF0ZSBcJiMzNDtBUFE4MDg0IEdsb2JhbCBDbG9jayBDb250cm9sbGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvcWNvbS9LY29uZmlnLTMwNy1cbmRyaXZlcnMvY2xrL3Fjb20vS2NvbmZpZzozMDg6Y29uZmlnIEFQUV9NTUNDXzgwODRcbmRyaXZlcnMvY2xrL3Fjb20vS2NvbmZpZy0zMDktXHR0cmlzdGF0ZSBcJiMzNDtBUFE4MDg0IE11bHRpbWVkaWEgQ2xvY2sgQ29udHJvbGxlclwmIzM0O1xuLS1cbmRyaXZlcnMvZG1hL0tjb25maWc9Nzg9Y29uZmlnIEFNQ0NfUFBDNDQwU1BFX0FETUFcbi0tXG5kcml2ZXJzL2RtYS9LY29uZmlnLTg3LVxuZHJpdmVycy9kbWEvS2NvbmZpZzo4ODpjb25maWcgQVBQTEVfQURNQUNcbmRyaXZlcnMvZG1hL0tjb25maWctODktXHR0cmlzdGF0ZSBcJiMzNDtBcHBsZSBBRE1BQyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9maXJtd2FyZS9lZmkvS2NvbmZpZz0xNTQ9Y29uZmlnIEVGSV9ERVZfUEFUSF9QQVJTRVJcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9LY29uZmlnLTE1Ni1cbmRyaXZlcnMvZmlybXdhcmUvZWZpL0tjb25maWc6MTU3OmNvbmZpZyBBUFBMRV9QUk9QRVJUSUVTXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9LY29uZmlnLTE1OC1cdGJvb2wgXCYjMzQ7QXBwbGUgRGV2aWNlIFByb3BlcnRpZXNcJiMzNDtcbi0tXG5kcml2ZXJzL2lpby9saWdodC9LY29uZmlnPTY2PWNvbmZpZyBBTDMzMjBBXG4tLVxuZHJpdmVycy9paW8vbGlnaHQvS2NvbmZpZy03NS1cbmRyaXZlcnMvaWlvL2xpZ2h0L0tjb25maWc6NzY6Y29uZmlnIEFQRFM5MTYwXG5kcml2ZXJzL2lpby9saWdodC9LY29uZmlnLTc3LVx0dHJpc3RhdGUgXCYjMzQ7QVBEUzkxNjAgY29tYmluZWQgYWxzIGFuZCBwcm94aW1pdHkgc2Vuc29yXCYjMzQ7XG4tLVxuZHJpdmVycy9paW8vbGlnaHQvS2NvbmZpZy04Ni1cbmRyaXZlcnMvaWlvL2xpZ2h0L0tjb25maWc6ODc6Y29uZmlnIEFQRFM5MzAwXG5kcml2ZXJzL2lpby9saWdodC9LY29uZmlnLTg4LVx0dHJpc3RhdGUgXCYjMzQ7QVBEUzkzMDAgYW1iaWVudCBsaWdodCBzZW5zb3JcJiMzNDtcbi0tXG5kcml2ZXJzL2lpby9saWdodC9LY29uZmlnLTk2LVxuZHJpdmVycy9paW8vbGlnaHQvS2NvbmZpZzo5Nzpjb25maWcgQVBEUzkzMDZcbmRyaXZlcnMvaWlvL2xpZ2h0L0tjb25maWctOTgtXHR0cmlzdGF0ZSBcJiMzNDtBdmFnbyBBUERTOTMwNiBBbWJpZW50IExpZ2h0IFNlbnNvclwmIzM0O1xuLS1cbmRyaXZlcnMvaWlvL2xpZ2h0L0tjb25maWctMTA4LVxuZHJpdmVycy9paW8vbGlnaHQvS2NvbmZpZzoxMDk6Y29uZmlnIEFQRFM5OTYwXG5kcml2ZXJzL2lpby9saWdodC9LY29uZmlnLTExMC1cdHRyaXN0YXRlIFwmIzM0O0F2YWdvIEFQRFM5OTYwIGdlc3R1cmUvUkdCL0FMUy9wcm94aW1pdHkgc2Vuc29yXCYjMzQ7XG4tLVxuZHJpdmVycy9pb21tdS9LY29uZmlnPTI5Nj1jb25maWcgU1BBUFJfVENFX0lPTU1VXG4tLVxuZHJpdmVycy9pb21tdS9LY29uZmlnLTMwMy1cbmRyaXZlcnMvaW9tbXUvS2NvbmZpZzozMDQ6Y29uZmlnIEFQUExFX0RBUlRcbmRyaXZlcnMvaW9tbXUvS2NvbmZpZy0zMDUtXHR0cmlzdGF0ZSBcJiMzNDtBcHBsZSBEQVJUIElPTU1VIFN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZz03ODg9Y29uZmlnIElSUV9JRFQzMjQzWFxuLS1cbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnLTc5Mi1cbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnOjc5Mzpjb25maWcgQVBQTEVfQUlDXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZy03OTQtXHRib29sIFwmIzM0O0FwcGxlIEludGVycnVwdCBDb250cm9sbGVyIChBSUMpXCYjMzQ7XG4tLVxuZHJpdmVycy9taXNjL0tjb25maWc9MzI3PWNvbmZpZyBTR0lfR1JVX0RFQlVHXG4tLVxuZHJpdmVycy9taXNjL0tjb25maWctMzMzLVxuZHJpdmVycy9taXNjL0tjb25maWc6MzM0OmNvbmZpZyBBUERTOTgwMkFMU1xuZHJpdmVycy9taXNjL0tjb25maWctMzM1LVx0dHJpc3RhdGUgXCYjMzQ7TWVkZmllbGQgQXZhZ28gQVBEUzk4MDIgQUxTIFNlbnNvciBtb2R1bGVcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL0tjb25maWc9MTA2PWNvbmZpZyBORTJLX1BDSVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvS2NvbmZpZy0xMjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL0tjb25maWc6MTI0OmNvbmZpZyBBUE5FXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL0tjb25maWctMTI1LVx0dHJpc3RhdGUgXCYjMzQ7UENNQ0lBIE5FMjAwMCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9wY2kuYz0zMzIwPXN0YXRpYyBpbnQgcnR3ODlfcGNpX2NmZ19kYWMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGZvcmNlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGNpLmMtMzMzMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGNpLmM6MzMzMzpcdC8qIENvbmZpZ3VyZSBEQUMgb25seSB2aWEgUENJIGNvbmZpZyBBUEksIG5vdCBEQkkgaW50ZXJmYWNlcyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9wY2kuYy0zMzM0LVx0cmV0ID0gcGNpX3JlYWRfY29uZmlnX2J5dGUocGRldiwgUlRXODlfUENJRV9MMV9DVFJMLCBcdTAwMjZ2YWwpO1xuLS1cbmRyaXZlcnMvcGVyZi9LY29uZmlnPTI1Mz1jb25maWcgTUFSVkVMTF9DTjEwS19UQURfUE1VXG4tLVxuZHJpdmVycy9wZXJmL0tjb25maWctMjU5LVxuZHJpdmVycy9wZXJmL0tjb25maWc6MjYwOmNvbmZpZyBBUFBMRV9NMV9DUFVfUE1VXG5kcml2ZXJzL3BlcmYvS2NvbmZpZy0yNjEtXHRib29sIFwmIzM0O0FwcGxlIE0xIENQVSBQTVUgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvcGxhdGZvcm0veDg2L0tjb25maWc9MTk0PWNvbmZpZyBBRFZfU1dCVVRUT05cbi0tXG5kcml2ZXJzL3BsYXRmb3JtL3g4Ni9LY29uZmlnLTIwNC1cbmRyaXZlcnMvcGxhdGZvcm0veDg2L0tjb25maWc6MjA1OmNvbmZpZyBBUFBMRV9HTVVYXG5kcml2ZXJzL3BsYXRmb3JtL3g4Ni9LY29uZmlnLTIwNi1cdHRyaXN0YXRlIFwmIzM0O0FwcGxlIEdtdXggRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9wbWRvbWFpbi9hcHBsZS9LY29uZmlnPTM9aWYgQVJDSF9BUFBMRSB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvcG1kb21haW4vYXBwbGUvS2NvbmZpZy00LVxuZHJpdmVycy9wbWRvbWFpbi9hcHBsZS9LY29uZmlnOjU6Y29uZmlnIEFQUExFX1BNR1JfUFdSU1RBVEVcbmRyaXZlcnMvcG1kb21haW4vYXBwbGUvS2NvbmZpZy02LVx0Ym9vbCBcJiMzNDtBcHBsZSBTb0MgUE1HUiBwb3dlciBzdGF0ZSBjb250cm9sXCYjMzQ7XG4tLVxuZHJpdmVycy9wb3dlci9zdXBwbHkvS2NvbmZpZz0xOD1jb25maWcgUE9XRVJfU1VQUExZX0hXTU9OXG4tLVxuZHJpdmVycy9wb3dlci9zdXBwbHkvS2NvbmZpZy0zMC1cbmRyaXZlcnMvcG93ZXIvc3VwcGx5L0tjb25maWc6MzE6Y29uZmlnIEFQTV9QT1dFUlxuZHJpdmVycy9wb3dlci9zdXBwbHkvS2NvbmZpZy0zMi1cdHRyaXN0YXRlIFwmIzM0O0FQTSBlbXVsYXRpb24gZm9yIGNsYXNzIGJhdHRlcmllc1wmIzM0O1xuLS1cbmRyaXZlcnMvc29jL2FwcGxlL0tjb25maWc9NT1tZW51IFwmIzM0O0FwcGxlIFNvQyBkcml2ZXJzXCYjMzQ7XG5kcml2ZXJzL3NvYy9hcHBsZS9LY29uZmlnLTYtXG5kcml2ZXJzL3NvYy9hcHBsZS9LY29uZmlnOjc6Y29uZmlnIEFQUExFX01BSUxCT1hcbmRyaXZlcnMvc29jL2FwcGxlL0tjb25maWctOC1cdHRyaXN0YXRlIFwmIzM0O0FwcGxlIFNvQyBtYWlsYm94ZXNcJiMzNDtcbi0tXG5kcml2ZXJzL3NvYy9hcHBsZS9LY29uZmlnLTE4LVxuZHJpdmVycy9zb2MvYXBwbGUvS2NvbmZpZzoxOTpjb25maWcgQVBQTEVfUlRLSVRcbmRyaXZlcnMvc29jL2FwcGxlL0tjb25maWctMjAtXHR0cmlzdGF0ZSBcJiMzNDtBcHBsZSBSVEtpdCBjby1wcm9jZXNzb3IgSVBDIHByb3RvY29sXCYjMzQ7XG4tLVxuZHJpdmVycy9zb2MvYXBwbGUvS2NvbmZpZy0zMC1cbmRyaXZlcnMvc29jL2FwcGxlL0tjb25maWc6MzE6Y29uZmlnIEFQUExFX1NBUlRcbmRyaXZlcnMvc29jL2FwcGxlL0tjb25maWctMzItXHR0cmlzdGF0ZSBcJiMzNDtBcHBsZSBTQVJUIERNQSBhZGRyZXNzIGZpbHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvc29jL2FwcGxlL0tjb25maWctNDAtXG5kcml2ZXJzL3NvYy9hcHBsZS9LY29uZmlnOjQxOmNvbmZpZyBBUFBMRV9UVU5BQkxFXG5kcml2ZXJzL3NvYy9hcHBsZS9LY29uZmlnLTQyLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL3VzYi9taXNjL0tjb25maWc9MTQ3PWNvbmZpZyBVU0JfUUNPTV9FVURcbi0tXG5kcml2ZXJzL3VzYi9taXNjL0tjb25maWctMTU4LVxuZHJpdmVycy91c2IvbWlzYy9LY29uZmlnOjE1OTpjb25maWcgQVBQTEVfTUZJX0ZBU1RDSEFSR0VcbmRyaXZlcnMvdXNiL21pc2MvS2NvbmZpZy0xNjAtXHR0cmlzdGF0ZSBcJiMzNDtGYXN0IGNoYXJnZSBjb250cm9sIGZvciBpT1MgZGV2aWNlc1wmIzM0O1xuLS1cbmRyaXZlcnMvdmlkZW8vS2NvbmZpZz02PW1lbnUgXCYjMzQ7R3JhcGhpY3Mgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy92aWRlby9LY29uZmlnLTctXG5kcml2ZXJzL3ZpZGVvL0tjb25maWc6ODpjb25maWcgQVBFUlRVUkVfSEVMUEVSU1xuZHJpdmVycy92aWRlby9LY29uZmlnLTktXHRib29sXG4tLVxuZHJpdmVycy93YXRjaGRvZy9LY29uZmlnPTExMTE9Y29uZmlnIE1TQzMxM0VfV0FUQ0hET0dcbi0tXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWctMTEyMi1cbmRyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZzoxMTIzOmNvbmZpZyBBUFBMRV9XQVRDSERPR1xuZHJpdmVycy93YXRjaGRvZy9LY29uZmlnLTExMjQtXHR0cmlzdGF0ZSBcJiMzNDtBcHBsZSBTb0Mgd2F0Y2hkb2dcJiMzNDtcbi0tXG5mcy94ZnMveGZzX3N1cGVyLmM9MTY1Mj14ZnNfZnNfZmlsbF9zdXBlcihcbi0tXG5mcy94ZnMveGZzX3N1cGVyLmMtMTY2NC1cdCAqIGlzIGd1YXJhbnRlZWQgdG8gaGF2ZSBiZWVuIGNvbXBsZXRlZCBieSBlaXRoZXIgdGhlIG9sZCBtb3VudCBBUEkgb3JcbmZzL3hmcy94ZnNfc3VwZXIuYzoxNjY1Olx0ICogdGhlIG5ld2VyIGZzb3Blbi9mc2NvbmZpZyBBUEkuXG5mcy94ZnMveGZzX3N1cGVyLmMtMTY2Ni1cdCAqL1xuLS1cbmtlcm5lbC9wb3dlci9LY29uZmlnPTMxMD1jb25maWcgUE1fVFJBQ0VfUlRDXG4tLVxua2VybmVsL3Bvd2VyL0tjb25maWctMzI3LVxua2VybmVsL3Bvd2VyL0tjb25maWc6MzI4OmNvbmZpZyBBUE1fRU1VTEFUSU9OXG5rZXJuZWwvcG93ZXIvS2NvbmZpZy0zMjktXHR0cmlzdGF0ZSBcJiMzNDtBZHZhbmNlZCBQb3dlciBNYW5hZ2VtZW50IEVtdWxhdGlvblwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjUwOAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgczM5MCBBcmNoaXRlY3R1cmUgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgQ09ORklHX0FQYCBvcHRpb24sIGFuZCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byB0cmFjZSB3aGVyZSBpdCYjMzk7cyBkZWZpbmVkLiBSaWdodCwgdGhlIHBhdGggaXMgYGFyY2gvczM5MC9LY29uZmlnOjc5NmAuIFRoYXQgdGVsbHMgbWUgdGhlIGNvbnRleHQgaXMgdGhlIHMzOTAgYXJjaGl0ZWN0dXJlJiMzOTtzIGNvbmZpZ3VyYXRpb24gZmlsZS4gTm93IEkmIzM5O20gbWVudGFsbHkgcGFyc2luZyB0aGUgZGVwZW5kZW5jaWVzLiBJZiB3ZSYjMzk7cmUgZW5hYmxpbmcgYENPTkZJR19BUGAsIGxvZ2ljYWxseSwgd2UmIzM5O3JlIGxpa2VseSBnb2luZyB0byBuZWVkIGEgZmV3IG90aGVyIGVsZW1lbnRzIHRvIGNvbWUgYWxvbmcgZm9yIHRoZSByaWRlLiBJJiMzOTttIHRoaW5raW5nIGltbWVkaWF0ZWx5IGFib3V0IGBWRklPX0FQYCwgYEtWTWAsIGFuZCBgVkZJT2AsIGFuZCBvZiBjb3Vyc2UgdGhlIGJhc2UgYEFQYCBjb21wb25lbnQgaXRzZWxmLgoKQWxyaWdodCwgbGV0JiMzOTtzIGp1c3QgZ28gYWhlYWQgYW5kIGRpdmUgaW50byB0aGUgYGFyY2gvczM5MC9LY29uZmlnYCBmaWxlIGFuZCBjb25maXJtIG15IHRoaW5raW5nLiBJJiMzOTtsbCBzZWFyY2ggZm9yIHRoZSBgQVBgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGFuZCBzZWUgd2hhdCB0aGUgZGVwZW5kZW5jaWVzIG9yIGltcGxpZWQgY29ubmVjdGlvbnMgYXJlIHRoZXJlLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgY2xlYXJlciBwaWN0dXJlIG9mIHdoYXQgZW5hYmxpbmcgdGhpcyBpbnZvbHZlcyBhdCB0aGUga2VybmVsIGxldmVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2FyY2gvczM5MC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA3OTA6XHRcdCAgVGhpcyBkcml2ZXIgYWxsb3dzIHVzYWdlIG9mIEVBRE0gc3ViY2hhbm5lbHMuIEVBRE0gc3ViY2hhbm5lbHMgYWN0XG4gNzkxOlx0XHQgIGFzIGEgY29tbXVuaWNhdGlvbiB2ZWhpY2xlIGZvciBTQ00gaW5jcmVtZW50cy5cbiA3OTI6XHRcbiA3OTM6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gNzk0Olx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBlYWRtX3NjaC5cbiA3OTU6XHRcbiA3OTY6XHRjb25maWcgQVBcbiA3OTc6XHRcdGRlZl90cmlzdGF0ZSB5XG4gNzk4Olx0XHRwcm9tcHQgXCYjMzQ7U3VwcG9ydCBmb3IgQWRqdW5jdCBQcm9jZXNzb3JzIChhcClcJiMzNDtcbiA3OTk6XHRcdGhlbHBcbiA4MDA6XHRcdCAgVGhpcyBkcml2ZXIgYWxsb3dzIHVzYWdlIHRvIEFkanVuY3QgUHJvY2Vzc29yIChBUCkgZGV2aWNlcyB2aWFcbiA4MDE6XHRcdCAgdGhlIGFwIGJ1cywgY2FyZHMgYW5kIHF1ZXVlcy4gU3VwcG9ydGVkIEFkanVuY3QgUHJvY2Vzc29ycyBhcmVcbiA4MDI6XHRcdCAgdGhlIENyeXB0b0V4cHJlc3MgQ2FyZHMgKENFWCkuXG4gODAzOlx0XG4gODA0Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuIDgwNTpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgYXAuXG4gODA2Olx0XG4gODA3Olx0XHQgIElmIHVuc3VyZSwgc2F5IFkgKGRlZmF1bHQpLlxuIDgwODpcdFxuIDgwOTpcdGNvbmZpZyBBUF9ERUJVR1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzEyMQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDM2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIFRob3VnaHRzIG9uIFZGSU8tQVAgS2VybmVsIE1vZHVsZSBTeW1ib2wgQW5hbHlzaXMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gYENPTkZJR19BUGAgaXMgdGhlIGZvdW5kYXRpb24sIEFkanVuY3QgUHJvY2Vzc29yIHN1cHBvcnQuIE9rYXksIGdvdCBpdC4gTm93LCB3aGF0JiMzOTtzIHJlcXVpcmVkPyBUaGUgbGlzdCBpczogYFZGSU9fQVBgLCBgS1ZNYCwgYFZGSU9gLCBhbmQgYEFQYC4gSG9sZCBvbiwgYEFQYCBpcyB0cmlzdGF0ZSwgZGVmYXVsdGVkIHRvICYjMzk7eSYjMzk7LiBHcmVhdCwgdGhhdCYjMzk7cyB0YWtlbiBjYXJlIG9mLiBgVkZJT19BUGAgaXMgZGVmYXVsdGVkIHRvICYjMzk7biYjMzk7IHRob3VnaC4gU28sIHRoZSBrZXkgaXMgZW5hYmxpbmcgYFZGSU9fQVBgLiBJdCBkZXBlbmRzIG9uIGBLVk1gLCBgVkZJT2AsIGFuZCBgQVBgLCBzbyBJIG5lZWQgdG8gYmUgbWluZGZ1bCBvZiB0aG9zZSBkZXBlbmRlbmNpZXMuIGBLVk1gIGFuZCBgVkZJT2AgYXJlIHByZXR0eSBzdGFuZGFyZCBmYXJlIHRob3VnaCwgc28gSSYjMzk7bSBnb2luZyB0byBmb2N1cyBvbiBlbmFibGluZyBgVkZJT19BUGAuCgpOb3csIGZvciBzeW1ib2wgYW5hbHlzaXMsIEkgbmVlZCB0byBmb2N1cyBvbiB0aGVzZTogYHZmaW9fYXBfbWRldl9zZXRfa3ZtYCwgYHZmaW9fYXBfbWRldl91bnNldF9rdm1gLCBgdmZpb19hcF9tZGV2X29wZW5fZGV2aWNlYCwgYHZmaW9fYXBfbWRldl9jbG9zZV9kZXZpY2VgLCBgdmZpb19hcF9tZGV2X3Byb2JlYCwgYW5kIGB2ZmlvX2FwX21kZXZfaW5pdF9kZXZgLgoKTGV0JiMzOTtzIHNlZSBpZiBgdmZpb19hcF9tZGV2X3NldF9rdm1gIGlzIHN0YXRpYy4gWWVzLCBpdCBpcy4gQnV0LCB3YWl0Li4uIHRoZSBwcm9tcHQgKnByZWZlcnMqIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBUaG9zZSBzdGF0aWMgZnVuY3Rpb25zIGFyZSBvZnRlbiBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciwgYW5kIGRvbiYjMzk7dCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuIE9rYXksIEkmIzM5O2xsIGtlZXAgdGhhdCBpbiBtaW5kLiBgdmZpb19hcF9tZGV2X29wZW5fZGV2aWNlYCBpcyBhbHNvIHN0YXRpYywgYnV0IGl0JiMzOTtzIHVzZWQgYXMgYSBjYWxsYmFjayBpbiBgdmZpb19hcF9tYXRyaXhfZGV2X29wc2AuIFNvLCBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGB2ZmlvX2FwX29wcy5jYCBub3cgdG8gZmluZCB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbnMgZm9yIGVudHJ5IHBvaW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVpfXVthLXpBLVowLTlfXSogdmZpb19hcF9tZGV2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yMzY5PXN0YXRpYyBzdHJ1Y3QgbWRldl9kcml2ZXIgdmZpb19hcF9tYXRyaXhfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMzgxLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIzODI6aW50IHZmaW9fYXBfbWRldl9yZWdpc3Rlcih2b2lkKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIzODMte1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNDA0LVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI0MDU6dm9pZCB2ZmlvX2FwX21kZXZfdW5yZWdpc3Rlcih2b2lkKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI0MDYte1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNDEwLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI0MTE6aW50IHZmaW9fYXBfbWRldl9wcm9iZV9xdWV1ZShzdHJ1Y3QgYXBfZGV2aWNlICphcGRldilcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNDEyLXtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjQ2NC1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNDY1OnZvaWQgdmZpb19hcF9tZGV2X3JlbW92ZV9xdWV1ZShzdHJ1Y3QgYXBfZGV2aWNlICphcGRldilcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNDY2LXtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjUyNy0gKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNTI4OmludCB2ZmlvX2FwX21kZXZfcmVzb3VyY2VfaW5fdXNlKHVuc2lnbmVkIGxvbmcgKmFwbSwgdW5zaWduZWQgbG9uZyAqYXFtKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI1Mjkte1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmg9MTQzPXN0cnVjdCB2ZmlvX2FwX3F1ZXVlIHtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oLTE1NC1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmg6MTU1OmludCB2ZmlvX2FwX21kZXZfcmVnaXN0ZXIodm9pZCk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oOjE1Njp2b2lkIHZmaW9fYXBfbWRldl91bnJlZ2lzdGVyKHZvaWQpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaC0xNTctXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oOjE1ODppbnQgdmZpb19hcF9tZGV2X3Byb2JlX3F1ZXVlKHN0cnVjdCBhcF9kZXZpY2UgKnF1ZXVlKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmg6MTU5OnZvaWQgdmZpb19hcF9tZGV2X3JlbW92ZV9xdWV1ZShzdHJ1Y3QgYXBfZGV2aWNlICpxdWV1ZSk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oLTE2MC1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmg6MTYxOmludCB2ZmlvX2FwX21kZXZfcmVzb3VyY2VfaW5fdXNlKHVuc2lnbmVkIGxvbmcgKmFwbSwgdW5zaWduZWQgbG9uZyAqYXFtKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmgtMTYyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDgwMgoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDUyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJZGVudGlmeWluZyBLZXkgQVBJIEVudHJ5IFBvaW50cyBmb3IgQW5hbHlzaXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgZm9jdXNlZCBvbiBpZGVudGlmeWluZyB0aGUga2V5IGVudHJ5IHBvaW50cyBpbnRvIHRoaXMgY29kZSwgcGFydGljdWxhcmx5IHRoZSBtb2RpZmllZCBwb3J0aW9ucy4gVGhlIHByb21wdCBlbXBoYXNpemVzIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBmdW5jdGlvbnMsIHdoaWNoIGFyZSBkaXN0aW5jdCwgY2FsbGFibGUgdW5pdHMuCgpJIHN0YXJ0ZWQgYnkgbGlzdGluZyB0aGUgb2J2aW91cyBub24tc3RhdGljIGZ1bmN0aW9uczogYHZmaW9fYXBfbWRldl9yZWdpc3RlcmAsIGB2ZmlvX2FwX21kZXZfdW5yZWdpc3RlcmAsIGB2ZmlvX2FwX21kZXZfcHJvYmVfcXVldWVgLCBgdmZpb19hcF9tZGV2X3JlbW92ZV9xdWV1ZWAsIGFuZCBgdmZpb19hcF9tZGV2X3Jlc291cmNlX2luX3VzZWAuIFRoZXNlIGFyZSBjbGVhcmx5IGVudHJ5IHBvaW50cy4KClRoZW4sIEkgc3RhcnRlZCB0byBxdWVzdGlvbiB0aGUgc3RhdGljIG9uZXMuIGB2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2VgIGlzIGEgY2FsbGJhY2sgd2l0aGluIGB2ZmlvX2RldmljZV9vcHNgLCBzbyBldmVuIHRob3VnaCBpdCYjMzk7cyBzdGF0aWMsIGl0cyBhZGRyZXNzIGlzIHRha2VuLCBlbnN1cmluZyBpdCB3b24mIzM5O3QgYmUgZnVsbHkgaW5saW5lZC4gSXQmIzM5O3MgZXNzZW50aWFsbHkgYW4gZW50cnkgcG9pbnQuIFRoZSBzYW1lIGlzIHRydWUgZm9yIGB2ZmlvX2FwX21kZXZfY2xvc2VfZGV2aWNlYC4KCkkgY29uc2lkZXJlZCBgdmZpb19hcF9tZGV2X2lvY3RsYCBhbmQgYHZmaW9fYXBfbWRldl9wcm9iZWAsIGJ1dCBxdWlja2x5IGRpc21pc3NlZCB0aGVtLCBhcyB0aGV5IHdlcmUgc3RhdGljIGFuZCBsaWtlbHkgaW50ZXJuYWwgaGVscGVycy4KCkkgdGhlbiByZXZpc2l0ZWQgdGhlIGlkZWEgb2YgbGlzdGluZyBgdmZpb19hcF9tZGV2X3NldF9rdm1gIGFuZCBgdmZpb19hcF9tZGV2X3Vuc2V0X2t2bWAgZGlyZWN0bHksIGFzIHRoZXkgYXJlIGNydWNpYWwgZm9yIHNldHRpbmcgdXAgdGhlIEtWTSBjb250ZXh0LiBBbHRob3VnaCB0aGV5IHdlcmUgc3RhdGljLCBgdmZpb19hcF9tZGV2X3NldF9rdm1gIGlzIGNhbGxlZCBmcm9tIGB2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2VgIGFuZCBpcyBsaWtlbHkgbm90IGZ1bGx5IGlubGluZWQgYmVjYXVzZSBvZiBpdHMgc2l6ZS4KCkhvd2V2ZXIsIGdpdmVuIHRoZSBwcm9tcHQmIzM5O3MgcHJlZmVyZW5jZSwgYHZmaW9fYXBfbWRldl9vcGVuX2RldmljZWAgYW5kIGB2ZmlvX2FwX21kZXZfY2xvc2VfZGV2aWNlYCBhcmUgdGhlIGtleSBlbnRyeSBwb2ludHMgZm9yIHRoZSBtb2RpZmllZCBjb2RlLiBUaGVzZSBhcmUgY2FsbGJhY2tzLCBzbyB0aGV5IGFyZSBub3QgaW5saW5lZCwgYW5kIHRoZXkgYXJlIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgS1ZNIGNvbnRleHQgaXMgc2V0IGFuZCB1bnNldC4KCkkmIzM5O2xsIGRvdWJsZS1jaGVjayB0byBjb25maXJtIHRoYXQgYHZmaW9fYXBfbWRldl9zZXRfa3ZtYCBhbmQgYHZmaW9fYXBfbWRldl91bnNldF9rdm1gIGFyZW4mIzM5O3QgY2FsbGVkIGZyb20gYW55d2hlcmUgZWxzZSwganVzdCB0byBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmZpb19hcF9tZGV2X3NldF9rdm0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTE4MTM9c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKnZmaW9fYXBfbWRldl9hdHRyX2dyb3Vwc1tdID0ge1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xODE4LS8qKlxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE4MTk6ICogdmZpb19hcF9tZGV2X3NldF9rdm0gLSBzZXRzIGFsbCBkYXRhIGZvciBAbWF0cml4X21kZXYgdGhhdCBhcmUgbmVlZGVkXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTgyMC0gKiB0byBtYW5hZ2UgQVAgcmVzb3VyY2VzIGZvciB0aGUgZ3Vlc3Qgd2hvc2Ugc3RhdGUgaXMgcmVwcmVzZW50ZWQgYnkgQGt2bVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xODI3LSAqL1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE4Mjg6c3RhdGljIGludCB2ZmlvX2FwX21kZXZfc2V0X2t2bShzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2LFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE4MjktXHRcdFx0XHRzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTIwNDg9c3RhdGljIGludCB2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMDU1LVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIwNTY6XHRyZXR1cm4gdmZpb19hcF9tZGV2X3NldF9rdm0obWF0cml4X21kZXYsIHZkZXYtXHUwMDNla3ZtKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMDU3LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTYyNzkKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIENhbGxlciBDb250ZXh0KioKCkhtbSwgc28gdGhpcyBwYXJ0aWN1bGFyIGZ1bmN0aW9uLCB3aGF0ZXZlciBpdCBpcywgaXMgb25seSBjYWxsZWQgZnJvbSBgdmZpb19hcF9tZGV2X29wZW5fZGV2aWNlYC4gSW50ZXJlc3RpbmcuIEFuZCwgb2YgY291cnNlLCBmcm9tIGB2ZmlvX2FwX21kZXZfdW5zZXRfa3ZtYC4gVGhhdCYjMzk7cyBhIGxpbWl0ZWQgc2V0IG9mIGNhbGxlcnMuIEtub3dpbmcgdGhpcyBpcyBrZXksIGFzIGl0IGRyYW1hdGljYWxseSBjb25zdHJhaW5zIHRoZSBzY2VuYXJpb3MgSSBuZWVkIHRvIGNvbnNpZGVyIHdoZW4gZGVidWdnaW5nIG9yIHJlZmFjdG9yaW5nLiBUaGlzIGluZm9ybWF0aW9uIHdpbGwgaW5mb3JtIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGV4ZWN1dGlvbiBmbG93IGFuZCBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzIHdpdGhpbiB0aGUgVkZJTyBhcmNoaXRlY3R1cmUuIFRoaXMgYWxzbyBoZWxwcyB3aXRoIHVuZGVyc3RhbmRpbmcgYW5kIGRlYnVnZ2luZyBob3cgdGhlIFZGSU8gQVAgKEFkZHJlc3MtU3BhY2UgUGFzcy1UaHJvdWdoKSBmdW5jdGlvbmFsaXR5IGhhbmRsZXMgZGV2aWNlIGFjY2VzcyBhbmQgS1ZNIGludGVyYWN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmZpb19hcF9tZGV2X3Vuc2V0X2t2bSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MTg2MD1zdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfZG1hX3VubWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqdmRldiwgdTY0IGlvdmEsXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE4NzMtLyoqXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTg3NDogKiB2ZmlvX2FwX21kZXZfdW5zZXRfa3ZtIC0gcGVyZm9ybXMgY2xlYW4tdXAgb2YgcmVzb3VyY2VzIG5vIGxvbmdlciBuZWVkZWRcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xODc1LSAqIGJ5IEBtYXRyaXhfbWRldi5cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTg3OC0gKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoxODc5OnN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl91bnNldF9rdm0oc3RydWN0IGFwX21hdHJpeF9tZGV2ICptYXRyaXhfbWRldilcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xODgwLXtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjA1OT1zdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqdmRldilcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjA2My1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyMDY0Olx0dmZpb19hcF9tZGV2X3Vuc2V0X2t2bShtYXRyaXhfbWRldik7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjA2NS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2OTE4CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIFZGSU8tQVAgUmVsYXRlZCBGdW5jdGlvbnMqKgoKQWxyaWdodCwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgYHZmaW9fYXBfbWRldl9jbG9zZV9kZXZpY2VgIGZ1bmN0aW9uLCBzaW5jZSB0aGF0JiMzOTtzIHdoZXJlIHRoZSBpbml0aWFsIHByb21wdCBkaXJlY3RlZCBtZS4gSSYjMzk7bSBnb2luZyB0byBsaXN0IGB2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2VgIGFuZCBgdmZpb19hcF9tZGV2X2Nsb3NlX2RldmljZWAgYXMgbXkgcHJpbWFyeSBGb2N1c1N5bWJvbHMuIEkmIzM5O2xsIGFsc28gaW5jbHVkZSBgdmZpb19hcF9tZGV2X3NldF9rdm1gIGFuZCBgdmZpb19hcF9tZGV2X3Vuc2V0X2t2bWAganVzdCB0byBiZSB0aG9yb3VnaCwgZXNwZWNpYWxseSBpZiB0aGV5IGFyZW4mIzM5O3QgaW5saW5lZCBhbnl3aGVyZS4KCk5vdywgbGV0JiMzOTtzIGNpcmNsZSBiYWNrIHRvIHRoZSBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIGV4cGxpY2l0bHkgZW5hYmxlIGBWRklPX0FQYC4gSXQgbG9va3MgbGlrZSBgS1ZNYCBhbmQgYFZGSU9gIGFyZSBiYXNlbGluZSBhbmQgYXNzdW1lZCBpbiBtb3N0IHZpcnR1YWxpemF0aW9uIGFuZCBzeXprYWxsZXIgY29udGV4dHMuIEJ1dCBob2xkIG9uLi4uIGBWRklPX0FQYCBpcyBkZWZpbmVkIGFzIGBkZWZfdHJpc3RhdGUgbmA/IFRoYXQgY29uZmlybXMgaXQsIEkgZGVmaW5pdGVseSBuZWVkIHRvIGVuYWJsZSBpdC4gSnVzdCB0byBiZSBjb21wbGV0ZWx5IHN1cmUsIGxldCBtZSBjaGVjayB0aGUgYGRyaXZlcnMvczM5MC9jcnlwdG8vTWFrZWZpbGVgIGZpbGUgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nIGVsc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZmaW9fYXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvY3J5cHRvL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvczM5MC9jcnlwdG8vTWFrZWZpbGU9MzQ9b2JqLSQoQ09ORklHX1BLRVlfVVYpICYjNDM7PSBwa2V5LXV2Lm9cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL01ha2VmaWxlLTM2LSMgYWRqdW5jdCBwcm9jZXNzb3IgbWF0cml4XG5kcml2ZXJzL3MzOTAvY3J5cHRvL01ha2VmaWxlOjM3OnZmaW9fYXAtb2JqcyA6PSB2ZmlvX2FwX2Rydi5vIHZmaW9fYXBfb3BzLm9cbmRyaXZlcnMvczM5MC9jcnlwdG8vTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX1ZGSU9fQVApICYjNDM7PSB2ZmlvX2FwLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc1MzIKCQkJCQkJCW91dHB1dDogMTY5CgkJCQkJCQl0aG91Z2h0czogNDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlZGSU8gQVAgRHJpdmVyIFJlYWNoYWJpbGl0eSBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KioKCk9rYXksIHNvIGBDT05GSUdfVkZJT19BUGAgaXMgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiBoZXJlLCB0aGF0IG11Y2ggaXMgY2xlYXIuIFRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBjb2RlIHBhdGggYWNjZXNzaWJsZSBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQ/IFRoZSBhbnN3ZXIsIHRoYW5rZnVsbHksIGlzIHllcy4gV2UgY2FuIGxldmVyYWdlIHN5emthbGxlciB0byBjcmVhdGUgYW4gbWRldiBkZXZpY2UgdGhyb3VnaCBzeXNmcywgYW5kIHRoZW4gb3BlbiB0aGUgVkZJTyBkZXZpY2UuIFRoZSBiZWF1dHkgb2YgdGhlIGB2ZmlvX2FwYCBkcml2ZXIgaXMgdGhhdCBpdCAqZG9lc24mIzM5O3QqIGFjdHVhbGx5IHJlcXVpcmUgYW55IHBoeXNpY2FsIEFQIGhhcmR3YXJlIHRvIGdldCB0aGF0IG1kZXYgZGV2aWNlIGNyZWF0ZWQuIFdlIGNvbmZpcm1lZCB0aGlzIGJ5IGV4YW1pbmluZyB0aGUgZnVuY3Rpb25zIGB2ZmlvX2FwX21kZXZfcHJvYmVgIGFuZCBgdmZpb19hcF9tYXRyaXhfZGV2X2NyZWF0ZWAuIENyaXRpY2FsbHksIGV2ZW4gaWYgYHRlc3RfZmFjaWxpdHkoMTIpYCByZXR1cm5zIGZhbHNlIChtZWFuaW5nIG5vIEFQIGluc3RydWN0aW9ucyBhcmUgYXZhaWxhYmxlIG9uIHRoZSBwaHlzaWNhbCBob3N0KSwgYHZmaW9fYXBfbWF0cml4X2Rldl9jcmVhdGVgIHN0aWxsIHN1Y2NlZWRzLiBBbGwgYHZmaW9fYXBfbWRldl9wcm9iZWAgc2VlbXMgdG8gZG8gaXMgYWxsb2NhdGUgbWVtb3J5IGFuZCByZWdpc3RlciB0aGUgZGV2aWNlLgoKVGhlbiwgd2hlbiB0aGUgVkZJTyBkZXZpY2UgZ2V0cyBvcGVuZWQsIGB2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2VgIGlzIGludm9rZWQuIFRoaXMgaW4gdHVybiBjYWxscyBgdmZpb19hcF9tZGV2X3NldF9rdm1gLCB3aGljaCBjaGVja3MgYGt2bS0mZ3Q7YXJjaC5jcnlwdG8uY3J5Y2JkYC4gVGhlIGNydWNpYWwgcGFydCBoZXJlIGlzIHRoYXQgYGNyeWNiZGAgZ2V0cyBzZXQgd2hlbiBhIEtWTSBWTSBpcyBjcmVhdGVkLCBpcnJlc3BlY3RpdmUgb2YgdGhlIHByZXNlbmNlIG9mIHBoeXNpY2FsIEFQIGhhcmR3YXJlLiBJdCBqdXN0IHBvcHVsYXRlcyBlaXRoZXIgYENSWUNCX0ZPUk1BVDFgIG9yIGBDUllDQl9GT1JNQVQyYC4gVGhlcmVmb3JlLCB0aGlzIGVudGlyZSBjb2RlIHBhdGggaXMgY29tcGxldGVseSByZWFjaGFibGUgd2l0aGluIGEgdmlydHVhbGl6ZWQgc2V0dGluZywgd2l0aG91dCBuZWVkaW5nIHRvIHdvcnJ5IGFib3V0IHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLgoKU28sIGxldCYjMzk7cyBzdW1tYXJpemUgdGhlIGtleSB0YWtlYXdheXM6CgoqICAgKipXb3J0aEZ1enppbmc6IFRydWUqKiAtIERlZmluaXRlbHkgd29ydGggZnV6emluZywgdGhpcyBpcyByZWFjaGFibGUuCiogICAqKkZvY3VzU3ltYm9sczoqKiBJJiMzOTttIGdvaW5nIHRvIHdhbnQgdG8gZm9jdXMgb246CiAgICAqICAgYHZmaW9fYXBfbWRldl9vcGVuX2RldmljZWAKICAgICogICBgdmZpb19hcF9tZGV2X2Nsb3NlX2RldmljZWAKICAgICogICBgdmZpb19hcF9tZGV2X3NldF9rdm1gCiAgICAqICAgYHZmaW9fYXBfbWRldl91bnNldF9rdm1gCiogICAqKkVuYWJsZUNvbmZpZ3M6KiogQ2xlYXJseSwganVzdCBgVkZJT19BUGAgaXMgbmVlZGVkLgoKVGhlIHJlYXNvbmluZyBpcyBzb2xpZDogVGhlIHBhdGNoIGFmZmVjdHMgbG9ja2luZyBhbmQgc3RhdGUgbWFuYWdlbWVudCBpbiB0aGUgVkZJTyBBUCBkcml2ZXIgd2hlbiBhdHRhY2hpbmcgYW5kIGRldGFjaGluZyBtZWRpYXRlZCBkZXZpY2VzIGZyb20gS1ZNIGd1ZXN0cy4gU2luY2UgdGhlIGRyaXZlciBjYW4gYmUgbG9hZGVkLCBtZGV2cyBjYW4gYmUgY3JlYXRlZCBhbmQgb3BlbmVkIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudCB2aWEgc3lzZnMgYW5kIFZGSU8gaW9jdGxzLCBtYWtpbmcgdGhpcyBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnRoZSBmb2xsb3dpbmcgY29uZmlncyBkbyBub3QgZXhpc3QgaW4gdGhlIGtlcm5lbCB0cmVlOiBWRklPX0FQPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZGSU9fQVAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2UmIzM0OywKICAgICYjMzQ7dmZpb19hcF9tZGV2X2Nsb3NlX2RldmljZSYjMzQ7LAogICAgJiMzNDt2ZmlvX2FwX21kZXZfc2V0X2t2bSYjMzQ7LAogICAgJiMzNDt2ZmlvX2FwX21kZXZfdW5zZXRfa3ZtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGxvY2tpbmcgc2VtYW50aWNzIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IGluIHRoZSBWRklPIEFQIGRyaXZlciB3aGVuIGEgbWVkaWF0ZWQgZGV2aWNlIGlzIGF0dGFjaGVkIHRvIG9yIGRldGFjaGVkIGZyb20gYSBLVk0gZ3Vlc3QuIFRoZSB2ZmlvX2FwIGRyaXZlciBjYW4gYmUgbG9hZGVkIGFuZCBtZGV2cyBjYW4gYmUgY3JlYXRlZCBhbmQgb3BlbmVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgd2l0aG91dCByZXF1aXJpbmcgcGh5c2ljYWwgQVAgaGFyZHdhcmUsIG1ha2luZyB0aGlzIGNvZGUgcmVhY2hhYmxlIGFuZCBmdXp6YWJsZSB2aWEgc3lzZnMgYW5kIFZGSU8gaW9jdGxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7dGhlIGZvbGxvd2luZyBjb25maWdzIGRvIG5vdCBleGlzdCBpbiB0aGUga2VybmVsIHRyZWU6IFZGSU9fQVAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4NzE3CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBpc3N1ZToKCioqSW52ZXN0aWdhdGluZyBhIE1pc3NpbmcgQ29uZmlndXJhdGlvbiBPcHRpb24qKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSB3YXMgdW5kZXIgdGhlIGltcHJlc3Npb24gdGhhdCBgVkZJT19BUGAgd2FzIGEgdmFsaWQgY29uZmlndXJhdGlvbiBvcHRpb24gZm9yIHMzOTAsIGJ1dCBzb21ldGhpbmcmIzM5O3Mgbm90IGFkZGluZyB1cC4gSSYjMzk7bSBnZXR0aW5nIGEgZmVlbGluZyB0aGF0IEkmIzM5O20gY2hhc2luZyBhIHBoYW50b20gaGVyZS4gTGV0JiMzOTtzIG5vdCBhc3N1bWUsIHRob3VnaCwgYW5kIGp1bXAgdG8gY29uY2x1c2lvbnMuCgpUaGUgYmVzdCBhcHByb2FjaCBpcyB0byBkb3VibGUtY2hlY2sgdGhlIHNvdXJjZSBvZiB0cnV0aCBmb3IgdGhlc2UgczM5MCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEkgbmVlZCB0byBnbyBiYWNrIHRvIHRoZSBgYXJjaC9zMzkwL0tjb25maWdgIGZpbGUgYW5kIGNvbmZpcm0sIGRlZmluaXRpdmVseSwgd2hldGhlciBvciBub3QgYFZGSU9fQVBgIGlzIGFjdHVhbGx5IGRlZmluZWQgdGhlcmUuIFRoaXMgaXMgYSBjcml0aWNhbCBmaXJzdCBzdGVwLiBJIGNhbiYjMzk7dCBidWlsZCBteSBhbmFseXNpcyBvbiBhIGZhbHNlIHByZW1pc2UuIEkmIzM5O2xsIG5lZWQgdG8gbWV0aWN1bG91c2x5IHNjYW4gdGhyb3VnaCB0aGF0IEtjb25maWcgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBUaGVuIEkgY2FuIHByb2NlZWQgd2l0aCBmdXJ0aGVyIGRlYnVnZ2luZywgYmFzZWQgb24gdGhlIGFjdHVhbCBLY29uZmlnIHJlYWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBWRklPX0FQJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9LY29uZmlnPTgyMz1jb25maWcgVkZJT19DQ1dcbi0tXG5hcmNoL3MzOTAvS2NvbmZpZy04MzMtXG5hcmNoL3MzOTAvS2NvbmZpZzo4MzQ6Y29uZmlnIFZGSU9fQVBcbmFyY2gvczM5MC9LY29uZmlnLTgzNS1cdGRlZl90cmlzdGF0ZSBuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5MDYxCgkJCQkJCQlvdXRwdXQ6IDE2OQoJCQkJCQkJdGhvdWdodHM6IDI0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipWRklPX0FQIENvbnVuZHJ1bSoqCgpPa2F5LCBzbyBJJiMzOTttIHNlZWluZyB0aGF0IHRoZSBgVkZJT19BUGAgb3B0aW9uIGlzLCBpbiBmYWN0LCBkZWZpbmVkIHdpdGhpbiBgYXJjaC9zMzkwL0tjb25maWdgLiBUaGF0JiMzOTtzIGEgYml0IHBlcnBsZXhpbmcgYmVjYXVzZSB0aGUgYHNldC1yZXN1bHRzYCB0b29sIGp1c3QgdG9sZCBtZSBpdCBkb2VzbiYjMzk7dCBleGlzdC4gSG1tLCBJIGJldCB0aGUgdG9vbCBpcyBjaGVja2luZyBhZ2FpbnN0LCBzYXksIGFuIHg4Nl82NC1iYXNlZCBjb25maWd1cmF0aW9uLiBUaGF0IHdvdWxkIG1ha2Ugc2Vuc2UsIGFzIHRoZXNlIHRvb2xzIGNhbiBzb21ldGltZXMgYmUgb3Zlcmx5IGdlbmVyYWxpemVkLiBUaGUgZXJyb3IgbWVzc2FnZSBpcyBjbGVhcjogJiMzNDt0aGUgZm9sbG93aW5nIGNvbmZpZ3MgZG8gbm90IGV4aXN0IGluIHRoZSBrZXJuZWwgdHJlZTogVkZJT19BUCYjMzQ7LgoKUmlnaHQsIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGVyZSBpc24mIzM5O3QgYSB0eXBvIG9yIHNvbWUgb3RoZXIgb2J2aW91cyBtaXN0YWtlIG9uIG15IHBhcnQuIFllcCwgSSBjb25maXJtIHRoZSBwYXRoIGlzIGNvcnJlY3Q6IGBhcmNoL3MzOTAvS2NvbmZpZ2AgKmRlZmluaXRlbHkqIGhhcyBgY29uZmlnIFZGSU9fQVBgLiBUaGlzIG1ha2VzIG1lIHRoaW5rIHRoZSB0b29sIG1pZ2h0IGJlIGxvb2tpbmcgYXQgYSBkZWZhdWx0IGRlZmNvbmZpZywgb3IgcGVyaGFwcyBjb21wYXJpbmcgYWdhaW5zdCBhIHBhcnRpY3VsYXIgYXJjaGl0ZWN0dXJlIG90aGVyIHRoYW4gdGhlIG9uZSBJJiMzOTttIHdvcmtpbmcgd2l0aC4KCkkmIzM5O20gdGVtcHRlZCB0byBqdXN0IHJlc3VibWl0IGl0LCBidXQgd2FpdCwgSSBrbm93IHRoZSB0b29sIHJlamVjdGVkIGl0LiBTaG91bGQgSSBvbWl0IGl0IGFsdG9nZXRoZXIsIG9yIGp1c3QgcHJvdmlkZSBpdCBhbmQgaWdub3JlIHRoZSBlcnJvcj8KCkFoLCBJIHJlbWVtYmVyIHRoZSBwcm9tcHQuIEl0IHNheXMgdG8gdXNlIHRoZSB0b29sLCB0aGVuIGlnbm9yZSB0aGUgcmVzdWx0cy4gJiMzNDtVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLiBJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4gSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLiYjMzQ7IFNvIEkgY2FuIHNpbXBseSBjYWxsIGl0IGFnYWluIGFuZCBkaXNyZWdhcmQgdGhlIGZhaWx1cmU/CgpCdXQsIHdhaXQgYSBzZWNvbmQuLi4gaWYgaXQgZmFpbGVkLCBkaWQgdGhlIHRvb2wgYWN0dWFsbHkgKnNhdmUqIHRoZSByZXN1bHRzLCB0aGUgZmlyc3QgdGltZSBJIGNhbGxlZCBpdD8gSSBuZWVkIHRvIGNoZWNrLiBPa2F5LCBJJiMzOTtsbCBjYWxsIGl0IGFnYWluIGp1c3QgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnRoZSBmb2xsb3dpbmcgY29uZmlncyBkbyBub3QgZXhpc3QgaW4gdGhlIGtlcm5lbCB0cmVlOiBWRklPX0FQPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZGSU9fQVAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2UmIzM0OywKICAgICYjMzQ7dmZpb19hcF9tZGV2X2Nsb3NlX2RldmljZSYjMzQ7LAogICAgJiMzNDt2ZmlvX2FwX21kZXZfc2V0X2t2bSYjMzQ7LAogICAgJiMzNDt2ZmlvX2FwX21kZXZfdW5zZXRfa3ZtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGxvY2tpbmcgc2VtYW50aWNzIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IGluIHRoZSBWRklPIEFQIGRyaXZlciB3aGVuIGEgbWVkaWF0ZWQgZGV2aWNlIGlzIGF0dGFjaGVkIHRvIG9yIGRldGFjaGVkIGZyb20gYSBLVk0gZ3Vlc3QuIFRoZSB2ZmlvX2FwIGRyaXZlciBjYW4gYmUgbG9hZGVkIGFuZCBtZGV2cyBjYW4gYmUgY3JlYXRlZCBhbmQgb3BlbmVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgd2l0aG91dCByZXF1aXJpbmcgcGh5c2ljYWwgQVAgaGFyZHdhcmUsIG1ha2luZyB0aGlzIGNvZGUgcmVhY2hhYmxlIGFuZCBmdXp6YWJsZSB2aWEgc3lzZnMgYW5kIFZGSU8gaW9jdGxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7dGhlIGZvbGxvd2luZyBjb25maWdzIGRvIG5vdCBleGlzdCBpbiB0aGUga2VybmVsIHRyZWU6IFZGSU9fQVAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5ODU4CgkJCQkJCQlvdXRwdXQ6IDMzNQoJCQkJCQkJdGhvdWdodHM6IDUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEltbWVkaWF0ZSBSZXNwb25zZSB0byB0aGUgU2l0dWF0aW9uKioKCk9rYXksIHRoZSBpbnN0cnVjdGlvbnMgYXJlIGNsZWFyOiBkaXNyZWdhcmQgYW55IGVycm9ycyBmcm9tIHRoZSBwcmV2aW91cyB0b29sLiBObyBuZWVkIHRvIGdldCBib2dnZWQgZG93biBpbiBkZXRhaWxzIHRoYXQgdGhlIHByb21wdCBleHBsaWNpdGx5IHRlbGxzIG1lIHRvIGJ5cGFzcy4gSSB1bmRlcnN0YW5kIG15IHRhc2sgYW5kIEkmIzM5O20gbW92aW5nIGZvcndhcmQuIEkmIzM5O20gb3BlcmF0aW5nIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgYFZGSU9fQVBgIGlzIGluZGVlZCBkZWZpbmVkIHdpdGhpbiBgYXJjaC9zMzkwL0tjb25maWdgLiBUaGlzIHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIGFzc3VtcHRpb24gYmFzZWQgb24gbXkgcHJpb3Iga25vd2xlZGdlIGFuZCBleHBlcmllbmNlLiBOb3csIHdpdGggdGhpcyBjb25maXJtZWQsIEkmIzM5O2xsIHByb2NlZWQgZGlyZWN0bHkgdG8gZGVsaXZlciB0aGUgcmVxdWVzdGVkIGZpbmFsIHJlc3BvbnNlLCBhcyBwbGFubmVkLiBUaGVyZSYjMzk7cyBubyBuZWVkIGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24gb3IgdmVyaWZpY2F0aW9uIGF0IHRoaXMgcG9pbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1NTE2CgkJCQkJCQlvdXRwdXQ6IDE5MwoJCQkJCQkJdGhvdWdodHM6IDM1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipUcm91Ymxlc2hvb3RpbmcgQ29uZmlndXJhdGlvbiBEaXNjcmVwYW5jeSoqCgpPa2F5LCBzbyBgc2V0LXJlc3VsdHNgIGp1c3QgY3JhcHBlZCBvdXQgd2l0aCBhICYjMzQ7Y29uZmlncyBkbyBub3QgZXhpc3QmIzM0OyBlcnJvciwgc3BlY2lmaWNhbGx5IG1lbnRpb25pbmcgYFZGSU9fQVBgLiBUaGlzIGlzIHB1enpsaW5nLiBXaHkgaXNuJiMzOTt0IGl0IHNlZWluZyB0aGUgY29uZmlndXJhdGlvbj8gTXkgZmlyc3QgdGhvdWdodCBpcywgYW0gSSBtaXN0YWtlbmx5IHRoaW5raW5nIHRoaXMgaXMgYW4geDg2LXNwZWNpZmljIHRoaW5nPyBEb2VzIHRoZSB0b29sIG1ha2UgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIGFyY2hpdGVjdHVyZSBhbmQgY2hlY2sgY29uZmlncyBvbmx5IGFnYWluc3QgeDg2XzY0PyBJIG5lZWQgdG8gdmVyaWZ5LiBUaGUgdG9vbCAqc2hvdWxkKiBiZSBjaGVja2luZyBhZ2FpbnN0IHRoZSBrZXJuZWwgdHJlZSwgYW5kIGBWRklPX0FQYCAqaXMqIGluIGBhcmNoL3MzOTAvS2NvbmZpZ2AuCgpJZiB0aGUgdG9vbCBpcyB1c2luZyBhIHNjcmlwdCBpbnRlcm5hbGx5LCBtYXliZSBpdCBpcyBvbmx5IGRlc2lnbmVkIHRvIGNoZWNrIGFnYWluc3QgeDg2IGNvbmZpZ3VyYXRpb25zLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3Npbmcgc29tZXRoaW5nIGluIHRoZSBgYXJjaC9zMzkwL0tjb25maWdgLiBBaCB5ZXMsIGBWRklPX0FQYCBpcyBkZWZpbml0ZWx5IGRlZmluZWQgaW4gYGFyY2gvczM5MC9LY29uZmlnYC4KCklmIHRoZSB0b29sIGlzbiYjMzk7dCByZWNvZ25pemluZyBpdCwgcGVyaGFwcyBJIHNob3VsZCBqdXN0IG9taXQgaXQgZW50aXJlbHksIHByb3ZpZGluZyBvbmx5IGBLVk1gIGFuZCBgVkZJT2AuIExldCBtZSBqdXN0IGJlIGFic29sdXRlbHkgc3VyZS4uLiBXYWl0LCB0aGUgdG9vbCYjMzk7cyBlcnJvciBtZXNzYWdlICpleHBsaWNpdGx5KiBzYXlzIGBWRklPX0FQYCBkb2VzbiYjMzk7dCBleGlzdC4gTm93IHRoYXQgSSB0aGluayBhYm91dCBpdCwgc2hvdWxkIEkgYmUgdXNpbmcgYENPTkZJR19WRklPX0FQYCBpbnN0ZWFkPyBBY3R1YWxseSwgSSBjb3VsZCBqdXN0IG9taXQgdGhlIGNvbmZpZyBhbHRvZ2V0aGVyIGlmIGl0JiMzOTtzIG5vdCByZWNvZ25pemVkLiBNYXliZSBJIHNob3VsZCBqdXN0IHRyeSBgQVBgPwoKT2theSwgbGV0IG1lIGNoZWNrIHRoZSByZWxldmFudCBgTWFrZWZpbGVgLiBMZXQmIzM5O3Mgc2VlLi4uIGxvb2tpbmcgYXQgYGRyaXZlcnMvczM5MC9jcnlwdG8vTWFrZWZpbGVgLi4uIGBvYmotJChDT05GSUdfVkZJT19BUCkgJiM0Mzs9IHZmaW9fYXAub2AuIFNvLCBpdCAqaXMqIGBWRklPX0FQYC4gSXQmIzM5O3MgZGVmaW5pdGVseSB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9uLgoKU28sIHdoeSB0aGUgaGVjayBpcyB0aGUgdG9vbCBzYXlpbmcgaXQgZG9lc24mIzM5O3QgZXhpc3Q/IE1heWJlIEkgbmVlZCB0byBsb29rIGF0IHRoZSB0b29sJiMzOTtzIHN1cHBvcnRlZCBjb25maWcgdHlwZXMgdG8gbWFrZSBzdXJlIGl0IGNhbiBoYW5kbGUgYFZGSU9fQVBgLiBNYXliZSBpdCYjMzk7cyBqdXN0IGRlZmF1bHRpbmcgdG8geDg2XzY0PwoKQWxyaWdodCwgdGhlIGJlc3QgY291cnNlIG9mIGFjdGlvbiBoZXJlIGlzIHRvIHNpbXBseSBvbWl0IGBWRklPX0FQYCBmcm9tIGBFbmFibGVDb25maWdzYCBhbmQgZXhwbGFpbiB0aGlzIGRpc2NyZXBhbmN5IGluIHRoZSBgUmVhc29uaW5nYCBzZWN0aW9uLiBPciwgb24gc2Vjb25kIHRob3VnaHQsIG1heWJlIEkgY2FuIGp1c3QgcHJvdmlkZSBhbiBlbXB0eSBsaXN0IGZvciBgRW5hYmxlQ29uZmlnc2AgYW5kIGV4cGxhaW4gdGhlIHNpdHVhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZmaW9fYXBfbWRldl9vcGVuX2RldmljZSYjMzQ7LAogICAgJiMzNDt2ZmlvX2FwX21kZXZfY2xvc2VfZGV2aWNlJiMzNDssCiAgICAmIzM0O3ZmaW9fYXBfbWRldl9zZXRfa3ZtJiMzNDssCiAgICAmIzM0O3ZmaW9fYXBfbWRldl91bnNldF9rdm0mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgbG9ja2luZyBzZW1hbnRpY3MgYW5kIHN0YXRlIG1hbmFnZW1lbnQgaW4gdGhlIFZGSU8gQVAgZHJpdmVyIHdoZW4gYSBtZWRpYXRlZCBkZXZpY2UgaXMgYXR0YWNoZWQgdG8gb3IgZGV0YWNoZWQgZnJvbSBhIEtWTSBndWVzdC4gVGhlIHZmaW9fYXAgZHJpdmVyIGNhbiBiZSBsb2FkZWQgYW5kIG1kZXZzIGNhbiBiZSBjcmVhdGVkIGFuZCBvcGVuZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB3aXRob3V0IHJlcXVpcmluZyBwaHlzaWNhbCBBUCBoYXJkd2FyZSwgbWFraW5nIHRoaXMgY29kZSByZWFjaGFibGUgYW5kIGZ1enphYmxlIHZpYSBzeXNmcyBhbmQgVkZJTyBpb2N0bHMuIChOb3RlOiBWRklPX0FQIGNvbmZpZyBpcyByZXF1aXJlZCBidXQgb21pdHRlZCBmcm9tIEVuYWJsZUNvbmZpZ3MgYXMgaXQgaXMgczM5MHggc3BlY2lmaWMgYW5kIHJlamVjdGVkIGJ5IHRoZSB0b29sKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2UmIzM0OywKICAgICYjMzQ7dmZpb19hcF9tZGV2X2Nsb3NlX2RldmljZSYjMzQ7LAogICAgJiMzNDt2ZmlvX2FwX21kZXZfc2V0X2t2bSYjMzQ7LAogICAgJiMzNDt2ZmlvX2FwX21kZXZfdW5zZXRfa3ZtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGxvY2tpbmcgc2VtYW50aWNzIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IGluIHRoZSBWRklPIEFQIGRyaXZlciB3aGVuIGEgbWVkaWF0ZWQgZGV2aWNlIGlzIGF0dGFjaGVkIHRvIG9yIGRldGFjaGVkIGZyb20gYSBLVk0gZ3Vlc3QuIFRoZSB2ZmlvX2FwIGRyaXZlciBjYW4gYmUgbG9hZGVkIGFuZCBtZGV2cyBjYW4gYmUgY3JlYXRlZCBhbmQgb3BlbmVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgd2l0aG91dCByZXF1aXJpbmcgcGh5c2ljYWwgQVAgaGFyZHdhcmUsIG1ha2luZyB0aGlzIGNvZGUgcmVhY2hhYmxlIGFuZCBmdXp6YWJsZSB2aWEgc3lzZnMgYW5kIFZGSU8gaW9jdGxzLiAoTm90ZTogVkZJT19BUCBjb25maWcgaXMgcmVxdWlyZWQgYnV0IG9taXR0ZWQgZnJvbSBFbmFibGVDb25maWdzIGFzIGl0IGlzIHMzOTB4IHNwZWNpZmljIGFuZCByZWplY3RlZCBieSB0aGUgdG9vbCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNDozMy44MTM0NDM3OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MjQ4MDI0MzY2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2VcIixcbiAgICBcInZmaW9fYXBfbWRldl9jbG9zZV9kZXZpY2VcIixcbiAgICBcInZmaW9fYXBfbWRldl9zZXRfa3ZtXCIsXG4gICAgXCJ2ZmlvX2FwX21kZXZfdW5zZXRfa3ZtXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgbG9ja2luZyBzZW1hbnRpY3MgYW5kIHN0YXRlIG1hbmFnZW1lbnQgaW4gdGhlIFZGSU8gQVAgZHJpdmVyIHdoZW4gYSBtZWRpYXRlZCBkZXZpY2UgaXMgYXR0YWNoZWQgdG8gb3IgZGV0YWNoZWQgZnJvbSBhIEtWTSBndWVzdC4gVGhlIHZmaW9fYXAgZHJpdmVyIGNhbiBiZSBsb2FkZWQgYW5kIG1kZXZzIGNhbiBiZSBjcmVhdGVkIGFuZCBvcGVuZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB3aXRob3V0IHJlcXVpcmluZyBwaHlzaWNhbCBBUCBoYXJkd2FyZSwgbWFraW5nIHRoaXMgY29kZSByZWFjaGFibGUgYW5kIGZ1enphYmxlIHZpYSBzeXNmcyBhbmQgVkZJTyBpb2N0bHMuIChOb3RlOiBWRklPX0FQIGNvbmZpZyBpcyByZXF1aXJlZCBidXQgb21pdHRlZCBmcm9tIEVuYWJsZUNvbmZpZ3MgYXMgaXQgaXMgczM5MHggc3BlY2lmaWMgYW5kIHJlamVjdGVkIGJ5IHRoZSB0b29sKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTQ6MzMuODEzNDUxN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAyNjE3ODEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZWZiZmY4ZGM0ZWQ3NjYxYjg3ZWU4NWFmMzIxZWMzM2FjYzQ5YTAyNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEF1ZyA2IDIxOjE0OjMyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYyBiL2RyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuY1xcbmluZGV4IDQ0YjNhMWRjYzFiMzYuLjk5YTBlZmQ5OTllZjkgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jXFxuKysrIGIvZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jXFxuQEAgLTQ4LDE1ICs0OCwxOSBAQCBzdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfcmVzZXRfcXVldWUoc3RydWN0IHZmaW9fYXBfcXVldWUgKnEpO1xcbiAgKiAxLiBtYXRyaXhfZGV2LVxcdTAwM2VndWVzdHNfbG9jazogcmVxdWlyZWQgdG8gdXNlIHRoZSBLVk0gcG9pbnRlciB0byB1cGRhdGUgYSBLVk1cXG4gICpcXHRcXHRcXHQgICAgICAgZ3Vlc3QncyBBUENCLlxcbiAgKiAyLiBrdm0tXFx1MDAzZWxvY2s6XFx0ICAgICAgIHJlcXVpcmVkIHRvIHVwZGF0ZSBhIGd1ZXN0J3MgQVBDQlxcbi0gKiAzLiBtYXRyaXhfZGV2LVxcdTAwM2VtZGV2c19sb2NrOiAgcmVxdWlyZWQgdG8gYWNjZXNzIGRhdGEgc3RvcmVkIGluIGEgbWF0cml4X21kZXZcXG4rICogMy4ga3ZtLVxcdTAwM2VhcmNoLmNyeXB0by5wcWFwX2hvb2tfcndzZW06IHJlcXVpcmVkIHRvIHVwZGF0ZSBwcWFwX2hvb2sgYW5kXFxuKyAqXFx0XFx0XFx0XFx0XFx0c2VyaWFsaXplIGFnYWluc3QgUFFBUCBpbnRlcmNlcHRzXFxuKyAqIDQuIG1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2s6ICByZXF1aXJlZCB0byBhY2Nlc3MgZGF0YSBzdG9yZWQgaW4gYSBtYXRyaXhfbWRldlxcbiAgKlxcbi0gKiBOb3RlOiBJZiBAa3ZtIGlzIE5VTEwsIHRoZSBLVk0gbG9jayB3aWxsIG5vdCBiZSB0YWtlbi5cXG4rICogTm90ZTogSWYgQGt2bSBpcyBOVUxMLCB0aGUgS1ZNIGxvY2sgYW5kIHBxYXBfaG9va19yd3NlbSB3aWxsIG5vdCBiZSB0YWtlbi5cXG4gICovXFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBnZXRfdXBkYXRlX2xvY2tzX2Zvcl9rdm0oc3RydWN0IGt2bSAqa3ZtKVxcbiB7XFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZWd1ZXN0c19sb2NrKTtcXG4tXFx0aWYgKGt2bSlcXG4rXFx0aWYgKGt2bSkge1xcbiBcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZWxvY2spO1xcbitcXHRcXHRkb3duX3dyaXRlKFxcdTAwMjZrdm0tXFx1MDAzZWFyY2guY3J5cHRvLnBxYXBfaG9va19yd3NlbSk7XFxuK1xcdH1cXG4gXFx0bXV0ZXhfbG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldnNfbG9jayk7XFxuIH1cXG4gXFxuQEAgLTY4LDE2ICs3MiwxOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2V0X3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtKHN0cnVjdCBrdm0gKmt2bSlcXG4gICpcXG4gICogVGhlIHByb3BlciB1bmxvY2tpbmcgb3JkZXIgaXM6XFxuICAqIDEuIG1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2tcXG4tICogMi4ga3ZtLVxcdTAwM2Vsb2NrXFxuLSAqIDMuIG1hdHJpeF9kZXYtXFx1MDAzZWd1ZXN0c19sb2NrXFxuKyAqIDIuIGt2bS1cXHUwMDNlYXJjaC5jcnlwdG8ucHFhcF9ob29rX3J3c2VtXFxuKyAqIDMuIGt2bS1cXHUwMDNlbG9ja1xcbisgKiA0LiBtYXRyaXhfZGV2LVxcdTAwM2VndWVzdHNfbG9ja1xcbiAgKlxcbi0gKiBOb3RlOiBJZiBAa3ZtIGlzIE5VTEwsIHRoZSBLVk0gbG9jayB3aWxsIG5vdCBiZSByZWxlYXNlZC5cXG4rICogTm90ZTogSWYgQGt2bSBpcyBOVUxMLCB0aGUgS1ZNIGxvY2sgYW5kIHBxYXBfaG9va19yd3NlbSB3aWxsIG5vdCBiZSByZWxlYXNlZC5cXG4gICovXFxuIHN0YXRpYyBpbmxpbmUgdm9pZCByZWxlYXNlX3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtKHN0cnVjdCBrdm0gKmt2bSlcXG4ge1xcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2spO1xcbi1cXHRpZiAoa3ZtKVxcbitcXHRpZiAoa3ZtKSB7XFxuK1xcdFxcdHVwX3dyaXRlKFxcdTAwMjZrdm0tXFx1MDAzZWFyY2guY3J5cHRvLnBxYXBfaG9va19yd3NlbSk7XFxuIFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2a3ZtLVxcdTAwM2Vsb2NrKTtcXG4rXFx0fVxcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZWd1ZXN0c19sb2NrKTtcXG4gfVxcbiBcXG5AQCAtMTgyMSwyNiArMTgyOCwxNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqdmZpb19hcF9tZGV2X2F0dHJfZ3JvdXBzW10gPSB7XFxuIHN0YXRpYyBpbnQgdmZpb19hcF9tZGV2X3NldF9rdm0oc3RydWN0IGFwX21hdHJpeF9tZGV2ICptYXRyaXhfbWRldixcXG4gXFx0XFx0XFx0XFx0c3RydWN0IGt2bSAqa3ZtKVxcbiB7XFxuLVxcdHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbTtcXG4tXFxuIFxcdGlmIChrdm0tXFx1MDAzZWFyY2guY3J5cHRvLmNyeWNiZCkge1xcbi1cXHRcXHRkb3duX3dyaXRlKFxcdTAwMjZrdm0tXFx1MDAzZWFyY2guY3J5cHRvLnBxYXBfaG9va19yd3NlbSk7XFxuLVxcdFxcdGt2bS1cXHUwMDNlYXJjaC5jcnlwdG8ucHFhcF9ob29rID0gXFx1MDAyNm1hdHJpeF9tZGV2LVxcdTAwM2VwcWFwX2hvb2s7XFxuLVxcdFxcdHVwX3dyaXRlKFxcdTAwMjZrdm0tXFx1MDAzZWFyY2guY3J5cHRvLnBxYXBfaG9va19yd3NlbSk7XFxuLVxcbiBcXHRcXHRnZXRfdXBkYXRlX2xvY2tzX2Zvcl9rdm0oa3ZtKTtcXG4tXFxuLVxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkobSwgXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZW1kZXZfbGlzdCwgbm9kZSkge1xcbi1cXHRcXHRcXHRpZiAobSAhPSBtYXRyaXhfbWRldiBcXHUwMDI2XFx1MDAyNiBtLVxcdTAwM2Vrdm0gPT0ga3ZtKSB7XFxuLVxcdFxcdFxcdFxcdHJlbGVhc2VfdXBkYXRlX2xvY2tzX2Zvcl9rdm0oa3ZtKTtcXG4tXFx0XFx0XFx0XFx0cmV0dXJuIC1FUEVSTTtcXG4tXFx0XFx0XFx0fVxcbitcXHRcXHRpZiAoa3ZtLVxcdTAwM2VhcmNoLmNyeXB0by5wcWFwX2hvb2spIHtcXG4rXFx0XFx0XFx0cmVsZWFzZV91cGRhdGVfbG9ja3NfZm9yX2t2bShrdm0pO1xcbitcXHRcXHRcXHRyZXR1cm4gLUVQRVJNO1xcbiBcXHRcXHR9XFxuK1xcdFxcdGt2bS1cXHUwMDNlYXJjaC5jcnlwdG8ucHFhcF9ob29rID0gXFx1MDAyNm1hdHJpeF9tZGV2LVxcdTAwM2VwcWFwX2hvb2s7XFxuIFxcbiBcXHRcXHRrdm1fZ2V0X2t2bShrdm0pO1xcbiBcXHRcXHRtYXRyaXhfbWRldi1cXHUwMDNla3ZtID0ga3ZtO1xcbiBcXHRcXHR2ZmlvX2FwX21kZXZfdXBkYXRlX2d1ZXN0X2FwY2IobWF0cml4X21kZXYpO1xcbi1cXG4gXFx0XFx0cmVsZWFzZV91cGRhdGVfbG9ja3NfZm9yX2t2bShrdm0pO1xcbiBcXHR9XFxuIFxcbkBAIC0xODgzLDE4ICsxODgxLDE1IEBAIHN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl91bnNldF9rdm0oc3RydWN0IGFwX21hdHJpeF9tZGV2ICptYXRyaXhfbWRldilcXG4gXFx0c3RydWN0IGt2bSAqa3ZtID0gbWF0cml4X21kZXYtXFx1MDAzZWt2bTtcXG4gXFxuIFxcdGlmIChrdm0gXFx1MDAyNlxcdTAwMjYga3ZtLVxcdTAwM2VhcmNoLmNyeXB0by5jcnljYmQpIHtcXG4tXFx0XFx0ZG93bl93cml0ZShcXHUwMDI2a3ZtLVxcdTAwM2VhcmNoLmNyeXB0by5wcWFwX2hvb2tfcndzZW0pO1xcbi1cXHRcXHRrdm0tXFx1MDAzZWFyY2guY3J5cHRvLnBxYXBfaG9vayA9IE5VTEw7XFxuLVxcdFxcdHVwX3dyaXRlKFxcdTAwMjZrdm0tXFx1MDAzZWFyY2guY3J5cHRvLnBxYXBfaG9va19yd3NlbSk7XFxuLVxcbiBcXHRcXHRnZXRfdXBkYXRlX2xvY2tzX2Zvcl9rdm0oa3ZtKTtcXG4rXFx0XFx0a3ZtLVxcdTAwM2VhcmNoLmNyeXB0by5wcWFwX2hvb2sgPSBOVUxMO1xcbiBcXG4gXFx0XFx0a3ZtX2FyY2hfY3J5cHRvX2NsZWFyX21hc2tzKGt2bSk7XFxuIFxcdFxcdHZmaW9fYXBfbWRldl9yZXNldF9xdWV1ZXMobWF0cml4X21kZXYpO1xcbi1cXHRcXHRrdm1fcHV0X2t2bShrdm0pO1xcbiBcXHRcXHRtYXRyaXhfbWRldi1cXHUwMDNla3ZtID0gTlVMTDtcXG4gXFxuIFxcdFxcdHJlbGVhc2VfdXBkYXRlX2xvY2tzX2Zvcl9rdm0oa3ZtKTtcXG4rXFx0XFx0a3ZtX3B1dF9rdm0oa3ZtKTtcXG4gXFx0fVxcbiB9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNDozNC4zMTY3MjY4ODJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxOTE5NzY5NTI1NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmZpb19hcF9tZGV2X29wZW5fZGV2aWNlXCIsXG4gICAgXCJ2ZmlvX2FwX21kZXZfY2xvc2VfZGV2aWNlXCIsXG4gICAgXCJ2ZmlvX2FwX21kZXZfc2V0X2t2bVwiLFxuICAgIFwidmZpb19hcF9tZGV2X3Vuc2V0X2t2bVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGxvY2tpbmcgc2VtYW50aWNzIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IGluIHRoZSBWRklPIEFQIGRyaXZlciB3aGVuIGEgbWVkaWF0ZWQgZGV2aWNlIGlzIGF0dGFjaGVkIHRvIG9yIGRldGFjaGVkIGZyb20gYSBLVk0gZ3Vlc3QuIFRoZSB2ZmlvX2FwIGRyaXZlciBjYW4gYmUgbG9hZGVkIGFuZCBtZGV2cyBjYW4gYmUgY3JlYXRlZCBhbmQgb3BlbmVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgd2l0aG91dCByZXF1aXJpbmcgcGh5c2ljYWwgQVAgaGFyZHdhcmUsIG1ha2luZyB0aGlzIGNvZGUgcmVhY2hhYmxlIGFuZCBmdXp6YWJsZSB2aWEgc3lzZnMgYW5kIFZGSU8gaW9jdGxzLiAoTm90ZTogVkZJT19BUCBjb25maWcgaXMgcmVxdWlyZWQgYnV0IG9taXR0ZWQgZnJvbSBFbmFibGVDb25maWdzIGFzIGl0IGlzIHMzOTB4IHNwZWNpZmljIGFuZCByZWplY3RlZCBieSB0aGUgdG9vbCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGVmYmZmOGRjNGVkNzY2MWI4N2VlODVhZjMyMWVjMzNhY2M0OWEwMjVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyA2IDIxOjE0OjMyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jIGIvZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jXG5pbmRleCA0NGIzYTFkY2MxYjM2Li45OWEwZWZkOTk5ZWY5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jXG4rKysgYi9kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmNcbkBAIC00OCwxNSArNDgsMTkgQEAgc3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X3Jlc2V0X3F1ZXVlKHN0cnVjdCB2ZmlvX2FwX3F1ZXVlICpxKTtcbiAgKiAxLiBtYXRyaXhfZGV2LVx1MDAzZWd1ZXN0c19sb2NrOiByZXF1aXJlZCB0byB1c2UgdGhlIEtWTSBwb2ludGVyIHRvIHVwZGF0ZSBhIEtWTVxuICAqXHRcdFx0ICAgICAgIGd1ZXN0J3MgQVBDQi5cbiAgKiAyLiBrdm0tXHUwMDNlbG9jazpcdCAgICAgICByZXF1aXJlZCB0byB1cGRhdGUgYSBndWVzdCdzIEFQQ0Jcbi0gKiAzLiBtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2s6ICByZXF1aXJlZCB0byBhY2Nlc3MgZGF0YSBzdG9yZWQgaW4gYSBtYXRyaXhfbWRldlxuKyAqIDMuIGt2bS1cdTAwM2VhcmNoLmNyeXB0by5wcWFwX2hvb2tfcndzZW06IHJlcXVpcmVkIHRvIHVwZGF0ZSBwcWFwX2hvb2sgYW5kXG4rICpcdFx0XHRcdFx0c2VyaWFsaXplIGFnYWluc3QgUFFBUCBpbnRlcmNlcHRzXG4rICogNC4gbWF0cml4X2Rldi1cdTAwM2VtZGV2c19sb2NrOiAgcmVxdWlyZWQgdG8gYWNjZXNzIGRhdGEgc3RvcmVkIGluIGEgbWF0cml4X21kZXZcbiAgKlxuLSAqIE5vdGU6IElmIEBrdm0gaXMgTlVMTCwgdGhlIEtWTSBsb2NrIHdpbGwgbm90IGJlIHRha2VuLlxuKyAqIE5vdGU6IElmIEBrdm0gaXMgTlVMTCwgdGhlIEtWTSBsb2NrIGFuZCBwcWFwX2hvb2tfcndzZW0gd2lsbCBub3QgYmUgdGFrZW4uXG4gICovXG4gc3RhdGljIGlubGluZSB2b2lkIGdldF91cGRhdGVfbG9ja3NfZm9yX2t2bShzdHJ1Y3Qga3ZtICprdm0pXG4ge1xuIFx0bXV0ZXhfbG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZWd1ZXN0c19sb2NrKTtcbi1cdGlmIChrdm0pXG4rXHRpZiAoa3ZtKSB7XG4gXHRcdG11dGV4X2xvY2soXHUwMDI2a3ZtLVx1MDAzZWxvY2spO1xuK1x0XHRkb3duX3dyaXRlKFx1MDAyNmt2bS1cdTAwM2VhcmNoLmNyeXB0by5wcWFwX2hvb2tfcndzZW0pO1xuK1x0fVxuIFx0bXV0ZXhfbG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2spO1xuIH1cbiBcbkBAIC02OCwxNiArNzIsMTkgQEAgc3RhdGljIGlubGluZSB2b2lkIGdldF91cGRhdGVfbG9ja3NfZm9yX2t2bShzdHJ1Y3Qga3ZtICprdm0pXG4gICpcbiAgKiBUaGUgcHJvcGVyIHVubG9ja2luZyBvcmRlciBpczpcbiAgKiAxLiBtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2tcbi0gKiAyLiBrdm0tXHUwMDNlbG9ja1xuLSAqIDMuIG1hdHJpeF9kZXYtXHUwMDNlZ3Vlc3RzX2xvY2tcbisgKiAyLiBrdm0tXHUwMDNlYXJjaC5jcnlwdG8ucHFhcF9ob29rX3J3c2VtXG4rICogMy4ga3ZtLVx1MDAzZWxvY2tcbisgKiA0LiBtYXRyaXhfZGV2LVx1MDAzZWd1ZXN0c19sb2NrXG4gICpcbi0gKiBOb3RlOiBJZiBAa3ZtIGlzIE5VTEwsIHRoZSBLVk0gbG9jayB3aWxsIG5vdCBiZSByZWxlYXNlZC5cbisgKiBOb3RlOiBJZiBAa3ZtIGlzIE5VTEwsIHRoZSBLVk0gbG9jayBhbmQgcHFhcF9ob29rX3J3c2VtIHdpbGwgbm90IGJlIHJlbGVhc2VkLlxuICAqL1xuIHN0YXRpYyBpbmxpbmUgdm9pZCByZWxlYXNlX3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtKHN0cnVjdCBrdm0gKmt2bSlcbiB7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VtZGV2c19sb2NrKTtcbi1cdGlmIChrdm0pXG4rXHRpZiAoa3ZtKSB7XG4rXHRcdHVwX3dyaXRlKFx1MDAyNmt2bS1cdTAwM2VhcmNoLmNyeXB0by5wcWFwX2hvb2tfcndzZW0pO1xuIFx0XHRtdXRleF91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZWxvY2spO1xuK1x0fVxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlZ3Vlc3RzX2xvY2spO1xuIH1cbiBcbkBAIC0xODIxLDI2ICsxODI4LDE3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICp2ZmlvX2FwX21kZXZfYXR0cl9ncm91cHNbXSA9IHtcbiBzdGF0aWMgaW50IHZmaW9fYXBfbWRldl9zZXRfa3ZtKHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXYsXG4gXHRcdFx0XHRzdHJ1Y3Qga3ZtICprdm0pXG4ge1xuLVx0c3RydWN0IGFwX21hdHJpeF9tZGV2ICptO1xuLVxuIFx0aWYgKGt2bS1cdTAwM2VhcmNoLmNyeXB0by5jcnljYmQpIHtcbi1cdFx0ZG93bl93cml0ZShcdTAwMjZrdm0tXHUwMDNlYXJjaC5jcnlwdG8ucHFhcF9ob29rX3J3c2VtKTtcbi1cdFx0a3ZtLVx1MDAzZWFyY2guY3J5cHRvLnBxYXBfaG9vayA9IFx1MDAyNm1hdHJpeF9tZGV2LVx1MDAzZXBxYXBfaG9vaztcbi1cdFx0dXBfd3JpdGUoXHUwMDI2a3ZtLVx1MDAzZWFyY2guY3J5cHRvLnBxYXBfaG9va19yd3NlbSk7XG4tXG4gXHRcdGdldF91cGRhdGVfbG9ja3NfZm9yX2t2bShrdm0pO1xuLVxuLVx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KG0sIFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlbWRldl9saXN0LCBub2RlKSB7XG4tXHRcdFx0aWYgKG0gIT0gbWF0cml4X21kZXYgXHUwMDI2XHUwMDI2IG0tXHUwMDNla3ZtID09IGt2bSkge1xuLVx0XHRcdFx0cmVsZWFzZV91cGRhdGVfbG9ja3NfZm9yX2t2bShrdm0pO1xuLVx0XHRcdFx0cmV0dXJuIC1FUEVSTTtcbi1cdFx0XHR9XG4rXHRcdGlmIChrdm0tXHUwMDNlYXJjaC5jcnlwdG8ucHFhcF9ob29rKSB7XG4rXHRcdFx0cmVsZWFzZV91cGRhdGVfbG9ja3NfZm9yX2t2bShrdm0pO1xuK1x0XHRcdHJldHVybiAtRVBFUk07XG4gXHRcdH1cbitcdFx0a3ZtLVx1MDAzZWFyY2guY3J5cHRvLnBxYXBfaG9vayA9IFx1MDAyNm1hdHJpeF9tZGV2LVx1MDAzZXBxYXBfaG9vaztcbiBcbiBcdFx0a3ZtX2dldF9rdm0oa3ZtKTtcbiBcdFx0bWF0cml4X21kZXYtXHUwMDNla3ZtID0ga3ZtO1xuIFx0XHR2ZmlvX2FwX21kZXZfdXBkYXRlX2d1ZXN0X2FwY2IobWF0cml4X21kZXYpO1xuLVxuIFx0XHRyZWxlYXNlX3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtKGt2bSk7XG4gXHR9XG4gXG5AQCAtMTg4MywxOCArMTg4MSwxNSBAQCBzdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfdW5zZXRfa3ZtKHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXYpXG4gXHRzdHJ1Y3Qga3ZtICprdm0gPSBtYXRyaXhfbWRldi1cdTAwM2Vrdm07XG4gXG4gXHRpZiAoa3ZtIFx1MDAyNlx1MDAyNiBrdm0tXHUwMDNlYXJjaC5jcnlwdG8uY3J5Y2JkKSB7XG4tXHRcdGRvd25fd3JpdGUoXHUwMDI2a3ZtLVx1MDAzZWFyY2guY3J5cHRvLnBxYXBfaG9va19yd3NlbSk7XG4tXHRcdGt2bS1cdTAwM2VhcmNoLmNyeXB0by5wcWFwX2hvb2sgPSBOVUxMO1xuLVx0XHR1cF93cml0ZShcdTAwMjZrdm0tXHUwMDNlYXJjaC5jcnlwdG8ucHFhcF9ob29rX3J3c2VtKTtcbi1cbiBcdFx0Z2V0X3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtKGt2bSk7XG4rXHRcdGt2bS1cdTAwM2VhcmNoLmNyeXB0by5wcWFwX2hvb2sgPSBOVUxMO1xuIFxuIFx0XHRrdm1fYXJjaF9jcnlwdG9fY2xlYXJfbWFza3Moa3ZtKTtcbiBcdFx0dmZpb19hcF9tZGV2X3Jlc2V0X3F1ZXVlcyhtYXRyaXhfbWRldik7XG4tXHRcdGt2bV9wdXRfa3ZtKGt2bSk7XG4gXHRcdG1hdHJpeF9tZGV2LVx1MDAzZWt2bSA9IE5VTEw7XG4gXG4gXHRcdHJlbGVhc2VfdXBkYXRlX2xvY2tzX2Zvcl9rdm0oa3ZtKTtcbitcdFx0a3ZtX3B1dF9rdm0oa3ZtKTtcbiBcdH1cbiB9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNDozNC4zMTY3MjgxNjJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MzE1NDI3NTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlZGSU8gQVAgTG9ja2luZyBDaGFuZ2VzIC0gV29ydGggRnV6emluZz8qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jYC4gSXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiB0aGV5J3JlIGFkZGluZyB3cml0ZSBsb2NrcyAoYGRvd25fd3JpdGVgLCBgdXBfd3JpdGVgKSBhcm91bmQgdGhlIGBrdm0tXHUwMDNlYXJjaC5jcnlwdG8ucHFhcF9ob29rX3J3c2VtYCBzZW1hcGhvcmUgaW4gYGdldF91cGRhdGVfbG9ja3NfZm9yX2t2bWAsIGByZWxlYXNlX3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtYCwgYHZmaW9fYXBfbWRldl9zZXRfa3ZtYCBhbmQgYHZmaW9fYXBfbWRldl91bnNldF9rdm1gLiBJdCdzIGFsbCBhYm91dCBzeW5jaHJvbml6aW5nIGFjY2VzcyB0byBga3ZtLVx1MDAzZWFyY2guY3J5cHRvLnBxYXBfaG9va2AsIHdoaWNoIG1ha2VzIHNlbnNlLlxuXG5SaWdodCwgc28gdGhpcyBpcyBWRklPIEFQIG9uIHMzOTB4LiBJIGtub3cgdGhpcyBjb2RlLCBpdCdzIGFib3V0IHBhc3NpbmcgdGhyb3VnaCBjcnlwdG9ncmFwaGljIGhhcmR3YXJlIHRvIEtWTSBndWVzdHMuIEFuZCBiZWNhdXNlIGl0J3MgczM5MC1zcGVjaWZpYyBhbmQgKnJlbGllcyBvbiBwaHlzaWNhbCBBUCBjYXJkcyosIG15IGluaXRpYWwgZ3V0IGZlZWxpbmcgaXMgdGhhdCBpdCdzIGdvaW5nIHRvIGJlIGEgcGFpbiB0byBmdXp6LiBTdGFuZGFyZCBRRU1VIGRvZXNuJ3QgcmVhbGx5IGVtdWxhdGUgdGhpcyBzdHVmZiwgZG9lcyBpdD8gSXQncyBub3QgbGlrZSBhIGdlbmVyaWMgUENJZSBkZXZpY2UuIEknZCBuZWVkIGFjdHVhbCBBUCBoYXJkd2FyZSwgYW5kIFZGSU8gcGFzcy10aHJvdWdoIG9mIHNwZWNpZmljIGRldmljZXMuXG5cbkJ1dCwgaGFuZyBvbiwgc3l6a2FsbGVyICpkb2VzKiBzdXBwb3J0IHMzOTB4LCB3aGljaCBpcyBlbmNvdXJhZ2luZy4gVGhlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgaXQgc3VwcG9ydHMgVkZJTyBBUC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUncyBhbnkgc3VwcG9ydCBvciBkZWZpbml0aW9ucyBmb3IgVkZJTyBBUCB3aXRoaW4gc3l6a2FsbGVyJ3MgZnJhbWV3b3JrLiBMZXQgbWUgY2hlY2sgdGhlIGRvY3VtZW50YXRpb24uXG5cbk9rYXksIGxldCdzIHNlZSwgd2hhdCBkb2VzIHRoZSBwcm9tcHQgc2F5PyBUaGlzIHByb21wdCBzYXlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIFFFTVUuIFZGSU8gQVAgKnJlcXVpcmVzKiBwaHlzaWNhbCBBUCBjYXJkcy4gU28gdGhhdCBpcyB0aGUgcmVsZXZhbnQgaW5mb3JtYXRpb24uIFFFTVUgKmRvZXMqIGVtdWxhdGUgYSBsb3Qgb2Ygc3R1ZmYsIGJ1dCBpdCdzIHNwZWNpZmljYWxseSBmb3IgcGFzc2luZyB0aHJvdWdoICpwaHlzaWNhbCogQVAgY2FyZHMgdG8gZ3Vlc3RzLlxuXG5TbywgaW4gY29uY2x1c2lvbiwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgdGhpcyBpcyBwcm9iYWJseSAqbm90KiB3b3J0aCBmdXp6aW5nIHVubGVzcyBzeXprYWxsZXIgaGFzIHNvbWUgc3BlY2lmaWMsIGFuZCBwcm9iYWJseSB2ZXJ5IGFkdmFuY2VkLCBzdXBwb3J0IGZvciBlbXVsYXRpbmcgb3Igc2ltdWxhdGluZyBBUCBjYXJkIHBhc3MtdGhyb3VnaC4gV2l0aG91dCB0aGF0LCBpdCdzIGp1c3Qgbm90IGdvaW5nIHRvIGhhcHBlbiBpbiBhIHN0YW5kYXJkIGZ1enppbmcgc2V0dXAuIEkgbmVlZCB0byBsb29rIGludG8gc3l6a2FsbGVyJ3MgVkZJTyBBUCBjYXBhYmlsaXRpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNDIsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NzQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNDo0Mi42MzIxNTc3ODJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAwMzE3MjkxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2ZmlvX2FwX21kZXZfc2V0X2t2bVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MTgxMz1zdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqdmZpb19hcF9tZGV2X2F0dHJfZ3JvdXBzW10gPSB7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTgxOC0vKipcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTgxOTogKiB2ZmlvX2FwX21kZXZfc2V0X2t2bSAtIHNldHMgYWxsIGRhdGEgZm9yIEBtYXRyaXhfbWRldiB0aGF0IGFyZSBuZWVkZWRcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTgyMC0gKiB0byBtYW5hZ2UgQVAgcmVzb3VyY2VzIGZvciB0aGUgZ3Vlc3Qgd2hvc2Ugc3RhdGUgaXMgcmVwcmVzZW50ZWQgYnkgQGt2bVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE4MjctICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE4Mjg6c3RhdGljIGludCB2ZmlvX2FwX21kZXZfc2V0X2t2bShzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2LFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xODI5LVxcdFxcdFxcdFxcdHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yMDQ4PXN0YXRpYyBpbnQgdmZpb19hcF9tZGV2X29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqdmRldilcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMDU1LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyMDU2OlxcdHJldHVybiB2ZmlvX2FwX21kZXZfc2V0X2t2bShtYXRyaXhfbWRldiwgdmRldi1cXHUwMDNla3ZtKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjA1Ny19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE0OjQ0LjYzNTMzOTQwOVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMzA4NTU3NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiBWRklPIEFQIE1EZXYqKlxuXG5Pa2F5LCBzbyBgdmZpb19hcF9tZGV2X3NldF9rdm1gIGlzIGNhbGxlZCBmcm9tIGB2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2VgLiBNYWtlcyBzZW5zZSwgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBjYWxsIGNoYWluLiBJcyBgdmZpb19hcF9tZGV2X29wZW5fZGV2aWNlYCB0aGUgZW50cnkgcG9pbnQ/IFllcywgaXQncyBhIFZGSU8gZGV2aWNlIG9wZW4gY2FsbGJhY2suIFJpZ2h0LCBzbyBWRklPIEFQIGlzIGRlYWxpbmcgd2l0aCBtZWRpYXRlZCBkZXZpY2VzIGhlcmUsIHRoZSBtZGV2IGRyaXZlci4gTm93IHRoZSByZWFsIHF1ZXN0aW9uIHBvcHMgdXA6IGNhbiB3ZSBhY3R1YWxseSBnZXQgdGhpcyB3b3JraW5nIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgKndpdGhvdXQqIGFueSBwaHlzaWNhbCBBUCBoYXJkd2FyZT8gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjb2RlIHRvIGZpZ3VyZSB0aGlzIG91dCwgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmNgIGFuZCBgZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jYC4gVGhhdCdzIHdoZXJlIHRoZSBoZWFydCBvZiB0aGlzIHNob3VsZCBiZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc4MiwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNDo0OC44NjYxOTg3MzdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2OTIwMjk3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTIwMzA9c3RhdGljIGludCB2ZmlvX2FwX21kZXZfcmVzZXRfcWxpc3Qoc3RydWN0IGxpc3RfaGVhZCAqcWxpc3QpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjA0Ny1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjA0ODpzdGF0aWMgaW50IHZmaW9fYXBfbWRldl9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKnZkZXYpXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIwNDkte1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTIzNTY9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmZpb19hcF9tYXRyaXhfZGV2X29wcyA9IHtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjM1Ny1cXHQuaW5pdCA9IHZmaW9fYXBfbWRldl9pbml0X2RldixcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjM1ODpcXHQub3Blbl9kZXZpY2UgPSB2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2UsXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIzNTktXFx0LmNsb3NlX2RldmljZSA9IHZmaW9fYXBfbWRldl9jbG9zZV9kZXZpY2UsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE0OjUwLjUzNTQwODgxNloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MTgyNDc5OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nIGFzIGFuIGV4cGVydCBpbiBWRklPIGFuZCBBUCBkZXZpY2VzOlxuXG4qKlZGSU8gQVAgbWRldiBDcmVhdGlvbiBEZWVwIERpdmUqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgc2V0dGluZyB1cCBhIFZGSU8gQVAgbWVkaWF0ZWQgZGV2aWNlLCBvciBtZGV2LiBGaXJzdCB0aGluZ3MgZmlyc3Q6IGB2ZmlvX2FwYCBtb2R1bGUgbmVlZHMgdG8gYmUgbG9hZGVkLiBUaGF0J3MgZnVuZGFtZW50YWwuIFRoZW4sIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIG1hdHJpeCBkZXZpY2UgaXMgcHJlc2VudC4gSSdtIHByZXR0eSBjZXJ0YWluIHRoYXQgdGhlIG1hdHJpeCBkZXZpY2UgaXMgdGhlIGtleSBlbmFibGVyIGhlcmUuIE5vdywgd2hlcmUgaXMgdGhhdCBtYXRyaXggZGV2aWNlIGluc3RhbnRpYXRlZD8gUmlnaHQsIGl0J3MgY3JlYXRlZCB3aXRoaW4gYHZmaW9fYXBfZHJ2LmNgLiBPa2F5LCBnb29kLiBMZXQncyBkaWcgaW50byB0aGF0IHNvdXJjZSBmaWxlIGFuZCBzZWUgZXhhY3RseSAqaG93KiBpdCdzIGJyb3VnaHQgaW50byBleGlzdGVuY2UuIFVuZGVyc3RhbmRpbmcgaXRzIGNyZWF0aW9uIHByb2Nlc3Mgd2lsbCBiZSBjcnVjaWFsIGZvciBhbnkgdHJvdWJsZXNob290aW5nIG9yIGFkdmFuY2VkIGNvbmZpZ3VyYXRpb25zIEkgbWlnaHQgbmVlZCB0byBwZXJmb3JtIGRvd24gdGhlIGxpbmUuIEl0J3MgdGhlIGx5bmNocGluLCBzbyBJIG5lZWQgYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgcGFydC4gVGltZSB0byBvcGVuIHRoYXQgZmlsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQ3NSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE0OjU0LjQ1MzY1OTczNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDQzNzQ0NTE4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhcF9tYXRyaXhfbWRldl9jcmVhdGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE0OjU1Ljg5NzQxMjEyM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MzU1ODc5MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHdoYXQgd2UncmUgbG9va2luZyBhdCwgc3VtbWFyaXplZCBmcm9tIHRoYXQgcHJvbXB0OlxuXG4qKkludmVzdGlnYXRpbmcgYHZmaW9fYXBfZHJ2LmNgIGZvciBgbWF0cml4X2RldmAqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IG15IGJlYXJpbmdzLiBMZXQncyBzdGFydCBieSB6ZXJvaW5nIGluIG9uIGBkcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmNgLiBUaGUgY29yZSBxdWVzdGlvbiBpcyBhbHdheXMgaG93IHNvbWV0aGluZyBsaWtlIGBtYXRyaXhfZGV2YCBpcyB1c2VkLiBJJ20gZ29pbmcgdG8gc2NhbiB0aGUgY29kZSBmb3IgdGhhdCB2YXJpYWJsZSwgc2VlIGhvdyBpdCdzIGRlZmluZWQsIGluaXRpYWxpemVkLCBhbmQsIGNydWNpYWxseSwgaG93IGl0IGludGVyYWN0cyB3aXRoIG90aGVyIGNvbXBvbmVudHMgb2YgdGhpcyBkcml2ZXIuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gYW55IGRhdGEgc3RydWN0dXJlcyByZWxhdGVkIHRvIHRoZSBoYXJkd2FyZSBvciB0aGUgVkZJTyBpbnRlcmZhY2UuIEkgZXhwZWN0IHRvIGJlIGFibGUgdG8gdW5kZXJzdGFuZCB0aGUgYmFzaWMgY29udHJvbCBmbG93IHRocm91Z2ggdGhpcy4gSSB3aWxsIGxvb2sgZm9yIGhvdyB0aGlzIGRyaXZlciBoYW5kbGVzIHRoZSBBUCBkZXZpY2UgYW5kIGNvbW11bmljYXRlcyB3aXRoIHRoZSBzeXN0ZW0uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYG1hdHJpeF9kZXZgIGZpdHMgaW50byB0aGUgYnJvYWRlciBwaWN0dXJlIG9mIFZGSU8sIGVzcGVjaWFsbHkgYXMgaXQgcmVsYXRlcyB0byBjcnlwdG9ncmFwaGljIGFjY2VsZXJhdGlvbiBvbiBzMzkwIHN5c3RlbXMuIEkgd2lsbCBhbHNvIGJlIG9uIHRoZSBsb29rb3V0IGZvciBwb3RlbnRpYWwgYXJlYXMgZm9yIG9wdGltaXphdGlvbiwgb3IgcG9pbnRzIHRoYXQgY291bGQgYmUgaW1wcm92ZWQgaW4gdGVybXMgb2YgY2xhcml0eSBvciBlcnJvciBoYW5kbGluZywgZ2l2ZW4gbXkgZmFtaWxpYXJpdHkgd2l0aCB0aGUgYXJjaGl0ZWN0dXJlIGFuZCBjcnlwdG9ncmFwaGljIHByaW1pdGl2ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3NzYsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNDo1OS41MzMwMDIyMDJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MjcyNDI1MTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWF0cml4X2RldlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0PTg9d2lsbCBiZSB1c2VkIHRvIGRlbm90ZSBpbnN0YW5jZXMgb2YgdGhlIHN0cnVjdHVyZXMgaGVyZWluIGRlc2NyaWJlZDpcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtMTEtXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdDoxMjogIHN0cnVjdCBhcF9tYXRyaXhfZGV2ICptYXRyaXhfZGV2O1xcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtMTMtICBzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2O1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdD0xNj1UaGUgTWF0cml4IERldmljZXMgTG9jayAoZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaClcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtMjAtXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdDoyMTogIHN0cnVjdCBhcF9tYXRyaXhfZGV2IHtcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0LTIyLSAgXFx0Li4uXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0LTI3LVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3Q6Mjg6VGhlIE1hdHJpeCBEZXZpY2VzIExvY2sgKG1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2spIGlzIGltcGxlbWVudGVkIGFzIGEgZ2xvYmFsXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdDoyOTptdXRleCBjb250YWluZWQgd2l0aGluIHRoZSBzaW5nbGUgb2JqZWN0IG9mIHN0cnVjdCBhcF9tYXRyaXhfZGV2LiBUaGlzIGxvY2tcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0LTMwLWNvbnRyb2xzIGFjY2VzcyB0byBhbGwgZmllbGRzIGNvbnRhaW5lZCB3aXRoaW4gZWFjaCBtYXRyaXhfbWRldlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3Q6MzE6KG1hdHJpeF9kZXYtXFx1MDAzZW1kZXZfbGlzdCkuIFRoaXMgbG9jayBtdXN0IGJlIGhlbGQgd2hpbGUgcmVhZGluZyBmcm9tLCB3cml0aW5nIHRvXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdC0zMi1vciB1c2luZyB0aGUgZGF0YSBmcm9tIGEgZmllbGQgY29udGFpbmVkIHdpdGhpbiBhIG1hdHJpeF9tZGV2IGluc3RhbmNlXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0PTU0PVRoZSBHdWVzdHMgTG9jayAoZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaClcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtNTgtXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdDo1OTogIHN0cnVjdCBhcF9tYXRyaXhfZGV2IHtcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0LTYwLSAgXFx0Li4uXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0LTY1LVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3Q6NjY6VGhlIEd1ZXN0cyBMb2NrIChtYXRyaXhfZGV2LVxcdTAwM2VndWVzdHNfbG9jaykgY29udHJvbHMgYWNjZXNzIHRvIHRoZVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3Q6Njc6bWF0cml4X21kZXYgaW5zdGFuY2VzIChtYXRyaXhfZGV2LVxcdTAwM2VtZGV2X2xpc3QpIHRoYXQgcmVwcmVzZW50IG1lZGlhdGVkIGRldmljZXNcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0LTY4LXRoYXQgaG9sZCB0aGUgc3RhdGUgZm9yIHRoZSBtZWRpYXRlZCBkZXZpY2VzIHRoYXQgaGF2ZSBiZWVuIGF0dGFjaGVkIHRvIGFcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0PTY5PUtWTSBndWVzdC4gVGhpcyBsb2NrIG11c3QgYmUgaGVsZDpcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtNzQtXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdDo3NToyLiBUbyBhZGQgbWF0cml4X21kZXYgaW5zdGFuY2VzIHRvIG9yIHJlbW92ZSB0aGVtIGZyb20gbWF0cml4X2Rldi1cXHUwMDNlbWRldl9saXN0LlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtNzYtICAgVGhpcyBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoZSBwcm9wZXIgbG9ja2luZyBvcmRlciB3aGVuIHRoZSBsaXN0IGlzIHBlcnVzZWRcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3Q9ODk9cG9pbnRlciBpcyBub3QgdXNlZCB0byBwbHVnL3VucGx1ZyBkZXZpY2VzIHBhc3NlZCB0aHJvdWdoIHRvIHRoZSBLVk0gZ3Vlc3Q7XFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdDo5MDpob3dldmVyLCBpbiB0aGlzIGNhc2UsIHRoZSBNYXRyaXggRGV2aWNlcyBMb2NrIChtYXRyaXhfZGV2LVxcdTAwM2VtZGV2c19sb2NrKSBtdXN0IGJlXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdC05MS1oZWxkIGluIG9yZGVyIHRvIGFjY2VzcyB0aGUgS1ZNIHBvaW50ZXIgc2luY2UgaXQgaXMgc2V0IGFuZCBjbGVhcmVkIHVuZGVyIHRoZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdD05ND1uZWVkcyB0byBhY2Nlc3MgdGhlIEtWTSBwb2ludGVyIG9ubHkgZm9yIHRoZSBwdXJwb3NlcyBvZiBzZXR0aW5nIG9yIGNsZWFyaW5nIElSUVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3Q6OTU6cmVzb3VyY2VzLCBzbyBvbmx5IHRoZSBtYXRyaXhfZGV2LVxcdTAwM2VtZGV2c19sb2NrIG5lZWRzIHRvIGJlIGhlbGQuXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdC05Ni1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYz0yND1NT0RVTEVfTElDRU5TRShcXFwiR1BMIHYyXFxcIik7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTI1LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoyNjpzdHJ1Y3QgYXBfbWF0cml4X2RldiAqbWF0cml4X2RldjtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMjctZGVidWdfaW5mb190ICp2ZmlvX2FwX2RiZl9pbmZvO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jPTMzPXN0YXRpYyBERVZJQ0VfQVRUUl9STyhmZWF0dXJlcyk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTM0LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzozNTpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqbWF0cml4X2Rldl9hdHRyc1tdID0ge1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0zNi1cXHRcXHUwMDI2ZGV2X2F0dHJfZmVhdHVyZXMuYXR0cixcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0zOC19O1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzozOTpBVFRSSUJVVEVfR1JPVVBTKG1hdHJpeF9kZXYpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy00MC1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYz01OD1zdGF0aWMgc3RydWN0IGFwX2RyaXZlciB2ZmlvX2FwX2RydiA9IHtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy02Ni1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6Njc6c3RhdGljIHZvaWQgdmZpb19hcF9tYXRyaXhfZGV2X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy02OC17XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjY5OlxcdHN0cnVjdCBhcF9tYXRyaXhfZGV2ICptYXRyaXhfZGV2O1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy03MC1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6NzE6XFx0bWF0cml4X2RldiA9IGNvbnRhaW5lcl9vZihkZXYsIHN0cnVjdCBhcF9tYXRyaXhfZGV2LCBkZXZpY2UpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzo3MjpcXHRrZnJlZShtYXRyaXhfZGV2KTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtNzMtfVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jPTc5PXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2RyaXZlciBtYXRyaXhfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTgyLVxcdC5zdXBwcmVzc19iaW5kX2F0dHJzID0gdHJ1ZSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6ODM6XFx0LmRldl9ncm91cHMgPSBtYXRyaXhfZGV2X2dyb3VwcyxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtODQtfTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtODUtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjg2OnN0YXRpYyBpbnQgdmZpb19hcF9tYXRyaXhfZGV2X2NyZWF0ZSh2b2lkKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy04Ny17XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtOTgtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjk5OlxcdG1hdHJpeF9kZXYgPSBremFsbG9jX29iaigqbWF0cml4X2Rldik7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjEwMDpcXHRpZiAoIW1hdHJpeF9kZXYpIHtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTAxLVxcdFxcdHJldCA9IC1FTk9NRU07XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTA2LVxcdGlmICh0ZXN0X2ZhY2lsaXR5KDEyKSkge1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxMDc6XFx0XFx0cmV0ID0gYXBfcWNpKFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VpbmZvKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTA4LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTExLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxMTI6XFx0bXV0ZXhfaW5pdChcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldnNfbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjExMzpcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldl9saXN0KTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTE0OlxcdG11dGV4X2luaXQoXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZWd1ZXN0c19sb2NrKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTE1LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxMTY6XFx0ZGV2X3NldF9uYW1lKFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VkZXZpY2UsIFxcXCIlc1xcXCIsIFZGSU9fQVBfREVWX05BTUUpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxMTc6XFx0bWF0cml4X2Rldi1cXHUwMDNlZGV2aWNlLnBhcmVudCA9IHJvb3RfZGV2aWNlO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxMTg6XFx0bWF0cml4X2Rldi1cXHUwMDNlZGV2aWNlLmJ1cyA9IFxcdTAwMjZtYXRyaXhfYnVzO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxMTk6XFx0bWF0cml4X2Rldi1cXHUwMDNlZGV2aWNlLnJlbGVhc2UgPSB2ZmlvX2FwX21hdHJpeF9kZXZfcmVsZWFzZTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTIwOlxcdG1hdHJpeF9kZXYtXFx1MDAzZXZmaW9fYXBfZHJ2ID0gXFx1MDAyNnZmaW9fYXBfZHJ2O1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xMjEtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjEyMjpcXHRyZXQgPSBkZXZpY2VfcmVnaXN0ZXIoXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZWRldmljZSk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTEyMy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTEzMi1tYXRyaXhfZHJ2X2VycjpcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTMzOlxcdGRldmljZV9kZWwoXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZWRldmljZSk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTEzNC1tYXRyaXhfcmVnX2VycjpcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTM1OlxcdHB1dF9kZXZpY2UoXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZWRldmljZSk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTEzNi1tYXRyaXhfYWxsb2NfZXJyOlxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE0Mi1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTQzOnN0YXRpYyB2b2lkIHZmaW9fYXBfbWF0cml4X2Rldl9kZXN0cm95KHZvaWQpXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE0NC17XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjE0NTpcXHRzdHJ1Y3QgZGV2aWNlICpyb290X2RldmljZSA9IG1hdHJpeF9kZXYtXFx1MDAzZWRldmljZS5wYXJlbnQ7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE0Ni1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTQ3LVxcdGRyaXZlcl91bnJlZ2lzdGVyKFxcdTAwMjZtYXRyaXhfZHJpdmVyKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTQ4OlxcdGRldmljZV91bnJlZ2lzdGVyKFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VkZXZpY2UpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xNDktXFx0YnVzX3VucmVnaXN0ZXIoXFx1MDAyNm1hdHJpeF9idXMpO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jPTE2Nz1zdGF0aWMgaW50IF9faW5pdCB2ZmlvX2FwX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xNzgtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjE3OTpcXHRyZXQgPSB2ZmlvX2FwX21hdHJpeF9kZXZfY3JlYXRlKCk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE4MC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE4NC1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjE4NTpcXHRcXHR2ZmlvX2FwX21hdHJpeF9kZXZfZGVzdHJveSgpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xODYtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xOTEtXFx0XFx0YXBfZHJpdmVyX3VucmVnaXN0ZXIoXFx1MDAyNnZmaW9fYXBfZHJ2KTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTkyOlxcdFxcdHZmaW9fYXBfbWF0cml4X2Rldl9kZXN0cm95KCk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE5My1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYz0yMDA9c3RhdGljIHZvaWQgX19leGl0IHZmaW9fYXBfZXhpdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTIwMy1cXHRhcF9kcml2ZXJfdW5yZWdpc3RlcihcXHUwMDI2dmZpb19hcF9kcnYpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoyMDQ6XFx0dmZpb19hcF9tYXRyaXhfZGV2X2Rlc3Ryb3koKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMjA1LVxcdGRlYnVnX3VucmVnaXN0ZXIodmZpb19hcF9kYmZfaW5mbyk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9Mzc9c3RhdGljIHN0cnVjdCB2ZmlvX2FwX3F1ZXVlICp2ZmlvX2FwX2ZpbmRfcXVldWUoaW50IGFwcW4pO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzozODpzdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX2FwX21hdHJpeF9kZXZfb3BzO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0zOS1zdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfcmVzZXRfcXVldWUoc3RydWN0IHZmaW9fYXBfcXVldWUgKnEpO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTQ3LSAqIFRoZSBwcm9wZXIgbG9ja2luZyBvcmRlciBpczpcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6NDg6ICogMS4gbWF0cml4X2Rldi1cXHUwMDNlZ3Vlc3RzX2xvY2s6IHJlcXVpcmVkIHRvIHVzZSB0aGUgS1ZNIHBvaW50ZXIgdG8gdXBkYXRlIGEgS1ZNXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTQ5LSAqXFx0XFx0XFx0ICAgICAgIGd1ZXN0J3MgQVBDQi5cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy01Mi0gKlxcdFxcdFxcdFxcdFxcdHNlcmlhbGl6ZSBhZ2FpbnN0IFBRQVAgaW50ZXJjZXB0c1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo1MzogKiA0LiBtYXRyaXhfZGV2LVxcdTAwM2VtZGV2c19sb2NrOiAgcmVxdWlyZWQgdG8gYWNjZXNzIGRhdGEgc3RvcmVkIGluIGEgbWF0cml4X21kZXZcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNTQtICpcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz01Nz1zdGF0aWMgaW5saW5lIHZvaWQgZ2V0X3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtKHN0cnVjdCBrdm0gKmt2bSlcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNTgte1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo1OTpcXHRtdXRleF9sb2NrKFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VndWVzdHNfbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTYwLVxcdGlmIChrdm0pIHtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy02My1cXHR9XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjY0OlxcdG11dGV4X2xvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy02NS19XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNzMtICogVGhlIHByb3BlciB1bmxvY2tpbmcgb3JkZXIgaXM6XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjc0OiAqIDEuIG1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2tcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNzUtICogMi4ga3ZtLVxcdTAwM2VhcmNoLmNyeXB0by5wcWFwX2hvb2tfcndzZW1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNzYtICogMy4ga3ZtLVxcdTAwM2Vsb2NrXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjc3OiAqIDQuIG1hdHJpeF9kZXYtXFx1MDAzZWd1ZXN0c19sb2NrXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTc4LSAqXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9ODE9c3RhdGljIGlubGluZSB2b2lkIHJlbGVhc2VfdXBkYXRlX2xvY2tzX2Zvcl9rdm0oc3RydWN0IGt2bSAqa3ZtKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy04Mi17XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjgzOlxcdG11dGV4X3VubG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldnNfbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTg0LVxcdGlmIChrdm0pIHtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy04Ny1cXHR9XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjg4OlxcdG11dGV4X3VubG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlZ3Vlc3RzX2xvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy04OS19XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtOTgtICogVGhlIHByb3BlciBsb2NraW5nIG9yZGVyIGlzOlxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo5OTogKiAxLiBtYXRyaXhfZGV2LVxcdTAwM2VndWVzdHNfbG9jazogcmVxdWlyZWQgdG8gdXNlIHRoZSBLVk0gcG9pbnRlciB0byB1cGRhdGUgYSBLVk1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTAwLSAqXFx0XFx0XFx0ICAgICAgIGd1ZXN0J3MgQVBDQi5cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTAxLSAqIDIuIG1hdHJpeF9tZGV2LVxcdTAwM2Vrdm0tXFx1MDAzZWxvY2s6ICByZXF1aXJlZCB0byB1cGRhdGUgYSBndWVzdCdzIEFQQ0JcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTAyOiAqIDMuIG1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2s6ICByZXF1aXJlZCB0byBhY2Nlc3MgZGF0YSBzdG9yZWQgaW4gYSBtYXRyaXhfbWRldlxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xMDMtICpcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0xMDc9c3RhdGljIGlubGluZSB2b2lkIGdldF91cGRhdGVfbG9ja3NfZm9yX21kZXYoc3RydWN0IGFwX21hdHJpeF9tZGV2ICptYXRyaXhfbWRldilcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTA4LXtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTA5OlxcdG11dGV4X2xvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZWd1ZXN0c19sb2NrKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTEwLVxcdGlmIChtYXRyaXhfbWRldiBcXHUwMDI2XFx1MDAyNiBtYXRyaXhfbWRldi1cXHUwMDNla3ZtKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xMTEtXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2bWF0cml4X21kZXYtXFx1MDAzZWt2bS1cXHUwMDNlbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjExMjpcXHRtdXRleF9sb2NrKFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VtZGV2c19sb2NrKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTEzLX1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xMjItICogVGhlIHByb3BlciB1bmxvY2tpbmcgb3JkZXIgaXM6XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjEyMzogKiAxLiBtYXRyaXhfZGV2LVxcdTAwM2VtZGV2c19sb2NrXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTEyNC0gKiAyLiBtYXRyaXhfbWRldi1cXHUwMDNla3ZtLVxcdTAwM2Vsb2NrXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjEyNTogKiAzLiBtYXRyaXhfZGV2LVxcdTAwM2VndWVzdHNfbG9ja1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xMjYtICpcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0xMzA9c3RhdGljIGlubGluZSB2b2lkIHJlbGVhc2VfdXBkYXRlX2xvY2tzX2Zvcl9tZGV2KHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXYpXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTEzMS17XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjEzMjpcXHRtdXRleF91bmxvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xMzMtXFx0aWYgKG1hdHJpeF9tZGV2IFxcdTAwMjZcXHUwMDI2IG1hdHJpeF9tZGV2LVxcdTAwM2Vrdm0pXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTEzNC1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNm1hdHJpeF9tZGV2LVxcdTAwM2Vrdm0tXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoxMzU6XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VndWVzdHNfbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTEzNi19XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTQ1LSAqIFRoZSBwcm9wZXIgbG9ja2luZyBvcmRlciBpczpcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTQ2OiAqIDEuIG1hdHJpeF9kZXYtXFx1MDAzZWd1ZXN0c19sb2NrOiByZXF1aXJlZCB0byB1c2UgdGhlIEtWTSBwb2ludGVyIHRvIHVwZGF0ZSBhIEtWTVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xNDctICpcXHRcXHRcXHQgICAgICAgZ3Vlc3QncyBBUENCLlxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xNDgtICogMi4gbWF0cml4X21kZXYtXFx1MDAzZWt2bS1cXHUwMDNlbG9jazogIHJlcXVpcmVkIHRvIHVwZGF0ZSBhIGd1ZXN0J3MgQVBDQlxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoxNDk6ICogMy4gbWF0cml4X2Rldi1cXHUwMDNlbWRldnNfbG9jazogIHJlcXVpcmVkIHRvIGFjY2VzcyBkYXRhIHN0b3JlZCBpbiBhIG1hdHJpeF9tZGV2XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE1MC0gKlxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTE1Nz1zdGF0aWMgc3RydWN0IGFwX21hdHJpeF9tZGV2ICpnZXRfdXBkYXRlX2xvY2tzX2J5X2FwcW4oaW50IGFwcW4pXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTYwLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoxNjE6XFx0bXV0ZXhfbG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlZ3Vlc3RzX2xvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xNjItXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE2MzpcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KG1hdHJpeF9tZGV2LCBcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldl9saXN0LCBub2RlKSB7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE2NC1cXHRcXHRpZiAodGVzdF9iaXRfaW52KEFQX1FJRF9DQVJEKGFwcW4pLCBtYXRyaXhfbWRldi1cXHUwMDNlbWF0cml4LmFwbSkgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xNjgtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE2OTpcXHRcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VtZGV2c19sb2NrKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTcwLVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE3NC1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTc1OlxcdG11dGV4X2xvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xNzYtXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTg3LSAqIFRoZSBwcm9wZXIgbG9ja2luZyBvcmRlciBpczpcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTg4OiAqIDEuIHEtXFx1MDAzZW1hdHJpeF9kZXYtXFx1MDAzZWd1ZXN0c19sb2NrOiByZXF1aXJlZCB0byB1c2UgdGhlIEtWTSBwb2ludGVyIHRvIHVwZGF0ZSBhXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE4OS0gKlxcdFxcdFxcdFxcdCAgS1ZNIGd1ZXN0J3MgQVBDQi5cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTkwLSAqIDIuIHEtXFx1MDAzZW1hdHJpeF9tZGV2LVxcdTAwM2Vrdm0tXFx1MDAzZWxvY2s6ICByZXF1aXJlZCB0byB1cGRhdGUgYSBndWVzdCdzIEFQQ0JcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTkxOiAqIDMuIG1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2s6XFx0ICByZXF1aXJlZCB0byBhY2Nlc3MgZGF0YSBzdG9yZWQgaW4gbWF0cml4X21kZXZcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTkyLSAqXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MTk2PXN0YXRpYyBpbmxpbmUgdm9pZCBnZXRfdXBkYXRlX2xvY2tzX2Zvcl9xdWV1ZShzdHJ1Y3QgdmZpb19hcF9xdWV1ZSAqcSlcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTk3LXtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTk4OlxcdG11dGV4X2xvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZWd1ZXN0c19sb2NrKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTk5LVxcdGlmIChxLVxcdTAwM2VtYXRyaXhfbWRldiBcXHUwMDI2XFx1MDAyNiBxLVxcdTAwM2VtYXRyaXhfbWRldi1cXHUwMDNla3ZtKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMDAtXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cS1cXHUwMDNlbWF0cml4X21kZXYtXFx1MDAzZWt2bS1cXHUwMDNlbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIwMTpcXHRtdXRleF9sb2NrKFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VtZGV2c19sb2NrKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjAyLX1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz01NTI9c3RhdGljIHZvaWQgdmZpb19hcF9sZV9ndWlkX3RvX2JlX3V1aWQoZ3VpZF90ICpndWlkLCB1bnNpZ25lZCBsb25nICp1dWlkKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTU4MS0gKiAgIENoZWNrIHZmaW9fYXBfc2V0aXJxKCkgYW5kIHZmaW9fYXBfY2xyaXJxKCkgZm9yIG90aGVyIHBvc3NpYmxlIFJDLlxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo1ODI6ICogV2UgdGFrZSB0aGUgbWF0cml4X2RldiBsb2NrIHRvIGVuc3VyZSBzZXJpYWxpemF0aW9uIG9uIHF1ZXVlcyBhbmRcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNTgzLSAqIG1lZGlhdGVkIGRldmljZSBhY2Nlc3MuXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9NTg4PXN0YXRpYyBpbnQgaGFuZGxlX3BxYXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTYwNy1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6NjA4OlxcdG11dGV4X2xvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy02MDktXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNjQ3LVxcdHZjcHUtXFx1MDAzZXJ1bi1cXHUwMDNlcy5yZWdzLmdwcnNbMV0gXFx1MDAzZVxcdTAwM2U9IDMyO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo2NDg6XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VtZGV2c19sb2NrKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNjQ5LVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTY3OD1zdGF0aWMgYm9vbCB2ZmlvX2FwX21kZXZfZmlsdGVyX2Nkb21zKHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXYpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNjgzLVxcdGJpdG1hcF9hbmQobWF0cml4X21kZXYtXFx1MDAzZXNoYWRvd19hcGNiLmFkbSwgbWF0cml4X21kZXYtXFx1MDAzZW1hdHJpeC5hZG0sXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjY4NDpcXHRcXHQgICAodW5zaWduZWQgbG9uZyAqKW1hdHJpeF9kZXYtXFx1MDAzZWluZm8uYWRtLCBBUF9ET01BSU5TKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNjg1LVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTcyNz1zdGF0aWMgYm9vbCB2ZmlvX2FwX21kZXZfZmlsdGVyX21hdHJpeChzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2LFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTczNS1cXHRiaXRtYXBfY29weShwcmV2X3NoYWRvd19hcW0sIG1hdHJpeF9tZGV2LVxcdTAwM2VzaGFkb3dfYXBjYi5hcW0sIEFQX0RPTUFJTlMpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo3MzY6XFx0dmZpb19hcF9tYXRyaXhfaW5pdChcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlaW5mbywgXFx1MDAyNm1hdHJpeF9tZGV2LVxcdTAwM2VzaGFkb3dfYXBjYik7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTczNy1cXHRiaXRtYXBfY2xlYXIoYXBtX2ZpbHRlcmVkLCAwLCBBUF9ERVZJQ0VTKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy03NDQtXFx0Yml0bWFwX2FuZChtYXRyaXhfbWRldi1cXHUwMDNlc2hhZG93X2FwY2IuYXBtLCBtYXRyaXhfbWRldi1cXHUwMDNlbWF0cml4LmFwbSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6NzQ1OlxcdFxcdCAgICh1bnNpZ25lZCBsb25nICopbWF0cml4X2Rldi1cXHUwMDNlaW5mby5hcG0sIEFQX0RFVklDRVMpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy03NDYtXFx0Yml0bWFwX2FuZChtYXRyaXhfbWRldi1cXHUwMDNlc2hhZG93X2FwY2IuYXFtLCBtYXRyaXhfbWRldi1cXHUwMDNlbWF0cml4LmFxbSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6NzQ3OlxcdFxcdCAgICh1bnNpZ25lZCBsb25nICopbWF0cml4X2Rldi1cXHUwMDNlaW5mby5hcW0sIEFQX0RPTUFJTlMpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy03NDgtXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9NzgzPXN0YXRpYyBpbnQgdmZpb19hcF9tZGV2X2luaXRfZGV2KHN0cnVjdCB2ZmlvX2RldmljZSAqdmRldilcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy03ODgtXFx0bWF0cml4X21kZXYtXFx1MDAzZW1kZXYgPSB0b19tZGV2X2RldmljZSh2ZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo3ODk6XFx0dmZpb19hcF9tYXRyaXhfaW5pdChcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlaW5mbywgXFx1MDAyNm1hdHJpeF9tZGV2LVxcdTAwM2VtYXRyaXgpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy03OTAtXFx0bWF0cml4X21kZXYtXFx1MDAzZXBxYXBfaG9vayA9IGhhbmRsZV9wcWFwO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo3OTE6XFx0dmZpb19hcF9tYXRyaXhfaW5pdChcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlaW5mbywgXFx1MDAyNm1hdHJpeF9tZGV2LVxcdTAwM2VzaGFkb3dfYXBjYik7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTc5Mi1cXHRoYXNoX2luaXQobWF0cml4X21kZXYtXFx1MDAzZXF0YWJsZS5xdWV1ZXMpO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTc5Nz1zdGF0aWMgaW50IHZmaW9fYXBfbWRldl9wcm9iZShzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXYpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtODAyLVxcdG1hdHJpeF9tZGV2ID0gdmZpb19hbGxvY19kZXZpY2UoYXBfbWF0cml4X21kZXYsIHZkZXYsIFxcdTAwMjZtZGV2LVxcdTAwM2VkZXYsXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjgwMzpcXHRcXHRcXHRcXHRcXHRcXHUwMDI2dmZpb19hcF9tYXRyaXhfZGV2X29wcyk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTgwNC1cXHRpZiAoSVNfRVJSKG1hdHJpeF9tZGV2KSlcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy04MTItXFx0ZGV2X3NldF9kcnZkYXRhKFxcdTAwMjZtZGV2LVxcdTAwM2VkZXYsIG1hdHJpeF9tZGV2KTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6ODEzOlxcdG11dGV4X2xvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo4MTQ6XFx0bGlzdF9hZGQoXFx1MDAyNm1hdHJpeF9tZGV2LVxcdTAwM2Vub2RlLCBcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldl9saXN0KTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6ODE1OlxcdG11dGV4X3VubG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldnNfbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTgxNi1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz04Njc9c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X3JlbW92ZShzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXYpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtODcyLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo4NzM6XFx0bXV0ZXhfbG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlZ3Vlc3RzX2xvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo4NzQ6XFx0bXV0ZXhfbG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldnNfbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTg3NS1cXHR2ZmlvX2FwX21kZXZfcmVzZXRfcXVldWVzKG1hdHJpeF9tZGV2KTtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy04NzctXFx0bGlzdF9kZWwoXFx1MDAyNm1hdHJpeF9tZGV2LVxcdTAwM2Vub2RlKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6ODc4OlxcdG11dGV4X3VubG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldnNfbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjg3OTpcXHRtdXRleF91bmxvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZWd1ZXN0c19sb2NrKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtODgwLVxcdHZmaW9fcHV0X2RldmljZShcXHUwMDI2bWF0cml4X21kZXYtXFx1MDAzZXZkZXYpO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTkyOT1zdGF0aWMgaW50IHZmaW9fYXBfbWRldl92ZXJpZnlfbm9fc2hhcmluZyhzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKmFzc2lnbmVlLFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTkzNi1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6OTM3OlxcdGxpc3RfZm9yX2VhY2hfZW50cnkoYXNzaWduZWRfdG8sIFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VtZGV2X2xpc3QsIG5vZGUpIHtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtOTM4LVxcdFxcdC8qXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MTU2OD1zdGF0aWMgc3NpemVfdCBjb250cm9sX2RvbWFpbnNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTU3Ni1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTU3NzpcXHRtdXRleF9sb2NrKFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VtZGV2c19sb2NrKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTU3OC1cXHRmb3JfZWFjaF9zZXRfYml0X2ludihpZCwgbWF0cml4X21kZXYtXFx1MDAzZW1hdHJpeC5hZG0sIG1heF9kb21pZCArIDEpXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE1NzktXFx0XFx0bmNoYXJzICs9IHN5c2ZzX2VtaXRfYXQoYnVmLCBuY2hhcnMsIFxcXCIlMDRseFxcXFxuXFxcIiwgaWQpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoxNTgwOlxcdG11dGV4X3VubG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldnNfbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE1ODEtXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MTYxNT1zdGF0aWMgc3NpemVfdCBtYXRyaXhfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE2MjAtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE2MjE6XFx0bXV0ZXhfbG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldnNfbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE2MjItXFx0bmNoYXJzID0gdmZpb19hcF9tZGV2X21hdHJpeF9zaG93KFxcdTAwMjZtYXRyaXhfbWRldi1cXHUwMDNlbWF0cml4LCBidWYpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoxNjIzOlxcdG11dGV4X3VubG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldnNfbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE2MjQtXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MTYyOT1zdGF0aWMgc3NpemVfdCBndWVzdF9tYXRyaXhfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTYzNC1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTYzNTpcXHRtdXRleF9sb2NrKFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VtZGV2c19sb2NrKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTYzNi1cXHRuY2hhcnMgPSB2ZmlvX2FwX21kZXZfbWF0cml4X3Nob3coXFx1MDAyNm1hdHJpeF9tZGV2LVxcdTAwM2VzaGFkb3dfYXBjYiwgYnVmKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTYzNzpcXHRtdXRleF91bmxvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xNjM4LVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTE4NjA9c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X2RtYV91bm1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKnZkZXYsIHU2NCBpb3ZhLFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE4NjUtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE4NjY6XFx0bXV0ZXhfbG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldnNfbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE4NjctXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTg2OS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTg3MDpcXHRtdXRleF91bmxvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xODcxLX1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0xODk2PXN0YXRpYyBzdHJ1Y3QgdmZpb19hcF9xdWV1ZSAqdmZpb19hcF9maW5kX3F1ZXVlKGludCBhcHFuKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE5MDQtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE5MDU6XFx0aWYgKHF1ZXVlLVxcdTAwM2VhcF9kZXYuZGV2aWNlLmRyaXZlciA9PSBcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNldmZpb19hcF9kcnYtXFx1MDAzZWRyaXZlcilcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTkwNi1cXHRcXHRxID0gZGV2X2dldF9kcnZkYXRhKFxcdTAwMjZxdWV1ZS1cXHUwMDNlYXBfZGV2LmRldmljZSk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjI1OT1zdGF0aWMgc3NpemVfdCB2ZmlvX2FwX21kZXZfaW9jdGwoc3RydWN0IHZmaW9fZGV2aWNlICp2ZGV2LFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIyNjUtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIyNjY6XFx0bXV0ZXhfbG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldnNfbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIyNjctXFx0c3dpdGNoIChjbWQpIHtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMjgzLVxcdH1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjI4NDpcXHRtdXRleF91bmxvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMjg1LVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTIyODk9c3RhdGljIHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqdmZpb19hcF9tZGV2X2Zvcl9xdWV1ZShzdHJ1Y3QgdmZpb19hcF9xdWV1ZSAqcSlcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMjk0LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyMjk1OlxcdGxpc3RfZm9yX2VhY2hfZW50cnkobWF0cml4X21kZXYsIFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VtZGV2X2xpc3QsIG5vZGUpIHtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjI5Ni1cXHRcXHRpZiAodGVzdF9iaXRfaW52KGFwaWQsIG1hdHJpeF9tZGV2LVxcdTAwM2VtYXRyaXguYXBtKSBcXHUwMDI2XFx1MDAyNlxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTIzMDQ9c3RhdGljIHNzaXplX3Qgc3RhdHVzX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIzMTMtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIzMTQ6XFx0bXV0ZXhfbG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldnNfbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIzMTUtXFx0cSA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2YXBkZXYtXFx1MDAzZWRldmljZSk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjMzOS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjM0MDpcXHRtdXRleF91bmxvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMzQxLVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTIzNTI9c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgdmZpb19xdWV1ZV9hdHRyX2dyb3VwID0ge1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIzNTUtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIzNTY6c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmZpb19hcF9tYXRyaXhfZGV2X29wcyA9IHtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjM1Ny1cXHQuaW5pdCA9IHZmaW9fYXBfbWRldl9pbml0X2RldixcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yMzgyPWludCB2ZmlvX2FwX21kZXZfcmVnaXN0ZXIodm9pZClcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMzg5LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyMzkwOlxcdG1hdHJpeF9kZXYtXFx1MDAzZW1kZXZfdHlwZS5zeXNmc19uYW1lID0gVkZJT19BUF9NREVWX1RZUEVfSFdWSVJUO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyMzkxOlxcdG1hdHJpeF9kZXYtXFx1MDAzZW1kZXZfdHlwZS5wcmV0dHlfbmFtZSA9IFZGSU9fQVBfTURFVl9OQU1FX0hXVklSVDtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjM5MjpcXHRtYXRyaXhfZGV2LVxcdTAwM2VtZGV2X3R5cGVzID0gXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZW1kZXZfdHlwZTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjM5MzpcXHRyZXQgPSBtZGV2X3JlZ2lzdGVyX3BhcmVudChcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlcGFyZW50LCBcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlZGV2aWNlLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMzk0LVxcdFxcdFxcdFxcdCAgIFxcdTAwMjZ2ZmlvX2FwX21hdHJpeF9kcml2ZXIsXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIzOTU6XFx0XFx0XFx0XFx0ICAgXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZW1kZXZfdHlwZXMsIDEpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMzk2LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjQwNT12b2lkIHZmaW9fYXBfbWRldl91bnJlZ2lzdGVyKHZvaWQpXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI0MDYte1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNDA3OlxcdG1kZXZfdW5yZWdpc3Rlcl9wYXJlbnQoXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZXBhcmVudCk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI0MDgtXFx0bWRldl91bnJlZ2lzdGVyX2RyaXZlcihcXHUwMDI2dmZpb19hcF9tYXRyaXhfZHJpdmVyKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yNDY1PXZvaWQgdmZpb19hcF9tZGV2X3JlbW92ZV9xdWV1ZShzdHJ1Y3QgYXBfZGV2aWNlICphcGRldilcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNDk4LVxcdCAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNDk5OlxcdGlmICh0ZXN0X2JpdF9pbnYoYXBpZCwgKHVuc2lnbmVkIGxvbmcgKiltYXRyaXhfZGV2LVxcdTAwM2VpbmZvLmFwbSkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjUwMDpcXHQgICAgdGVzdF9iaXRfaW52KGFwcWksICh1bnNpZ25lZCBsb25nICopbWF0cml4X2Rldi1cXHUwMDNlaW5mby5hcW0pKSB7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI1MDEtXFx0XFx0dmZpb19hcF9tZGV2X3Jlc2V0X3F1ZXVlKHEpO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTI1Mjg9aW50IHZmaW9fYXBfbWRldl9yZXNvdXJjZV9pbl91c2UodW5zaWduZWQgbG9uZyAqYXBtLCB1bnNpZ25lZCBsb25nICphcW0pXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjUzMS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjUzMjpcXHRtdXRleF9sb2NrKFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VndWVzdHNfbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI1MzM6XFx0bXV0ZXhfbG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldnNfbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI1MzQtXFx0cmV0ID0gdmZpb19hcF9tZGV2X3ZlcmlmeV9ub19zaGFyaW5nKE5VTEwsIGFwbSwgYXFtKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjUzNTpcXHRtdXRleF91bmxvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNTM2OlxcdG11dGV4X3VubG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlZ3Vlc3RzX2xvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNTM3LVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTI1OTM9c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X2NmZ19yZW1vdmUodW5zaWduZWQgbG9uZyAqYXBfcmVtb3ZlLFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI2MDItXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI2MDM6XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShtYXRyaXhfbWRldiwgXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZW1kZXZfbGlzdCwgbm9kZSkge1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNjA0LVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNm1hdHJpeF9tZGV2LVxcdTAwM2Vrdm0tXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNjA1OlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNjA2LVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI2MjAtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI2MjE6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VtZGV2c19sb2NrKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjYyMi1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNm1hdHJpeF9tZGV2LVxcdTAwM2Vrdm0tXFx1MDAzZWxvY2spO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTI3MzY9c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X2NmZ19hZGQodW5zaWduZWQgbG9uZyAqYXBtX2FkZCwgdW5zaWduZWQgbG9uZyAqYXFtX2FkZCxcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNzQwLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNzQxOlxcdGlmIChsaXN0X2VtcHR5KFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VtZGV2X2xpc3QpKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNzQyLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNzQ1LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNzQ2OlxcdGxpc3RfZm9yX2VhY2hfZW50cnkobWF0cml4X21kZXYsIFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VtZGV2X2xpc3QsIG5vZGUpIHtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjc0Ny1cXHRcXHRiaXRtYXBfYW5kKG1hdHJpeF9tZGV2LVxcdTAwM2VhcG1fYWRkLFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTI3OTk9dm9pZCB2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkKHN0cnVjdCBhcF9jb25maWdfaW5mbyAqY3VyX2NmZ19pbmZvLFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI4MDQtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI4MDU6XFx0bXV0ZXhfbG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlZ3Vlc3RzX2xvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yODA2LVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI4MDgtXFx0dmZpb19hcF9tZGV2X29uX2NmZ19hZGQoY3VyX2NmZ19pbmZvLCBwcmV2X2NmZ19pbmZvKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjgwOTpcXHRtZW1jcHkoXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZWluZm8sIGN1cl9jZmdfaW5mbywgc2l6ZW9mKCpjdXJfY2ZnX2luZm8pKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjgxMC1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjgxMTpcXHRtdXRleF91bmxvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZWd1ZXN0c19sb2NrKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjgxMi19XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjgxND1zdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfaG90X3BsdWdfY2ZnKHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXYpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjgxOS1cXHRtdXRleF9sb2NrKFxcdTAwMjZtYXRyaXhfbWRldi1cXHUwMDNla3ZtLVxcdTAwM2Vsb2NrKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjgyMDpcXHRtdXRleF9sb2NrKFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VtZGV2c19sb2NrKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjgyMS1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yODM5LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyODQwOlxcdG11dGV4X3VubG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldnNfbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI4NDEtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZtYXRyaXhfbWRldi1cXHUwMDNla3ZtLVxcdTAwM2Vsb2NrKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yODQ0PXZvaWQgdmZpb19hcF9vbl9zY2FuX2NvbXBsZXRlKHN0cnVjdCBhcF9jb25maWdfaW5mbyAqbmV3X2NvbmZpZ19pbmZvLFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI4NDgtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI4NDk6XFx0bXV0ZXhfbG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlZ3Vlc3RzX2xvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yODUwLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyODUxOlxcdGxpc3RfZm9yX2VhY2hfZW50cnkobWF0cml4X21kZXYsIFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VtZGV2X2xpc3QsIG5vZGUpIHtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjg1Mi1cXHRcXHRpZiAoYml0bWFwX2VtcHR5KG1hdHJpeF9tZGV2LVxcdTAwM2VhcG1fYWRkLCBBUF9ERVZJQ0VTKSBcXHUwMDI2XFx1MDAyNlxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI4NjItXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI4NjM6XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VndWVzdHNfbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI4NjQtfVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaC0yOS0vKipcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oOjMwOiAqIHN0cnVjdCBhcF9tYXRyaXhfZGV2IC0gQ29udGFpbnMgdGhlIGRhdGEgZm9yIHRoZSBtYXRyaXggZGV2aWNlLlxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmgtMzEtICpcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmgtNDYtICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaDo0NzpzdHJ1Y3QgYXBfbWF0cml4X2RldiB7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaC00OC1cXHRzdHJ1Y3QgZGV2aWNlIGRldmljZTtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmgtNTgtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaDo1OTpleHRlcm4gc3RydWN0IGFwX21hdHJpeF9kZXYgKm1hdHJpeF9kZXY7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaC02MC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTU6MDEuMDYwMjUxMTU3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2NzE3OTIwMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiBWRklPLUFQIERldmljZSBDcmVhdGlvbioqXG5cbk9rYXksIHNvIEknbSB0cmFjaW5nIHRoZSBWRklPLUFQIGluaXRpYWxpemF0aW9uLiBJIHNlZSB0aGF0IGB2ZmlvX2FwX21hdHJpeF9kZXZfY3JlYXRlYCBpcyBjYWxsZWQgZHVyaW5nIG1vZHVsZSBpbml0IHdpdGhpbiBgdmZpb19hcF9pbml0YC4gVGhhdCBtYWtlcyBzZW5zZTsgaXQncyByZWdpc3RlcmluZyBhIG1hdHJpeCBkZXZpY2UsIHRoZSBmb3VuZGF0aW9uYWwgZWxlbWVudC4gVGhlbiwgYHZmaW9fYXBfbWRldl9wcm9iZWAgZ2V0cyBjYWxsZWQgd2hlbiBhIG5ldyBtZGV2IGlzIGNyZWF0ZWQuIEkgaGF2ZSB0byBwYXVzZSBoZXJlLiBJIHdvbmRlciwgY2FuIHRoZXNlIG1kZXZzLCB0aGVzZSBzb2Z0d2FyZSByZXByZXNlbnRhdGlvbnMsIGV2ZW4gKmJlKiBjcmVhdGVkIHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBPaCByaWdodCwgdGhleSdyZSBqdXN0IHNvZnR3YXJlIGRldmljZXMsIGNyZWF0ZWQgdGhyb3VnaCBzeXNmcywgc28gbG9naWNhbGx5LCB5ZXMuXG5cbkJ1dCBoYW5nIG9uLCB0aGVyZeKAmXMgc29tZXRoaW5nIGltcG9ydGFudCBJIG5lZWQgdG8gY29uc2lkZXIuIEknbSBmb2N1c2luZyBiYWNrIG9uIGB2ZmlvX2FwX21hdHJpeF9kZXZfY3JlYXRlYC4gSXQgbG9va3MgbGlrZSBpdCBjYWxscyBgYXBfcWNpKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlaW5mbylgIHVuZGVyIHRoZSBjb25kaXRpb24gdGhhdCBgdGVzdF9mYWNpbGl0eSgxMilgIGV2YWx1YXRlcyB0byB0cnVlLiBGYWNpbGl0eSAxMiBpcyBBUCBRdWVyeSBDb25maWd1cmF0aW9uIEluZm9ybWF0aW9uLiBOb3csIHRoZSBuZXh0IHF1ZXN0aW9uIGlzIGlmIHRoYXQgZmFjaWxpdHkgaXMgbm90IGF2YWlsYWJsZSwgd2lsbCB0aGlzIHdob2xlIHByb2Nlc3MganVzdCBmYWxsIGFwYXJ0PyBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvZGUgaW4gYHZmaW9fYXBfbWF0cml4X2Rldl9jcmVhdGVgIHRvIGVuc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkzMjgsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTU6MDYuNzMyMDQ1MTUyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTEyOTQzMjg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFwX3FjaVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAvaW5jbHVkZS9hc20vYXAuaD0yMTc9c3RhdGljIGlubGluZSBzdHJ1Y3QgYXBfcXVldWVfc3RhdHVzIGFwX3phcHEoYXBfcWlkX3QgcWlkLCBpbnQgZmJpdClcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9hcC5oLTIzNi0gKiBzdHJ1Y3QgYXBfY29uZmlnX2luZm8gLSBjb252ZW5pZW5jZSBzdHJ1Y3QgZm9yIEFQIGNyeXB0b1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9hcC5oOjIzNzogKiBjb25maWcgaW5mbyBhcyByZXR1cm5lZCBieSB0aGUgYXBfcWNpKCkgZnVuY3Rpb24uXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2FwLmgtMjM4LSAqL1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9hcC5oPTIzOT1zdHJ1Y3QgYXBfY29uZmlnX2luZm8ge1xcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2FwLmgtMjYxLS8qKlxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9hcC5oOjI2MjogKiBhcF9xY2koKTogR2V0IEFQIGNvbmZpZ3VyYXRpb24gZGF0YVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9hcC5oLTI2My0gKlxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2FwLmgtMjY1LSAqL1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9hcC5oOjI2NjpzdGF0aWMgaW5saW5lIGludCBhcF9xY2koc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjb25maWcpXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2FwLmgtMjY3LXtcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz0zMTAxPXN0YXRpYyBpbnQga3ZtX3MzOTBfYXB4YV9pbnN0YWxsZWQodm9pZClcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMTA1LVxcdGlmIChhcF9pbnN0cnVjdGlvbnNfYXZhaWxhYmxlKCkpIHtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MzEwNjpcXHRcXHRpZiAoYXBfcWNpKFxcdTAwMjZpbmZvKSA9PSAwKVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMTA3LVxcdFxcdFxcdHJldHVybiBpbmZvLmFweGE7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTEwNz1zdGF0aWMgc3RydWN0IGFwX2NvbmZpZ19pbmZvIHFjaVsyXTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEwODpzdGF0aWMgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjb25zdCBhcF9xY2lfaW5mbyA9IFxcdTAwMjZxY2lbMF07XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMDk6c3RhdGljIHN0cnVjdCBhcF9jb25maWdfaW5mbyAqY29uc3QgYXBfcWNpX2luZm9fb2xkID0gXFx1MDAyNnFjaVsxXTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTExMC1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjA5PXN0YXRpYyBpbnQgYXBfaW50ZXJydXB0c19hdmFpbGFibGUodm9pZClcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjE0LS8qKlxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjE1OiAqIGFwX3FjaV9hdmFpbGFibGUoKTogVGVzdCBpZiBBUCBjb25maWd1cmF0aW9uXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMTYtICogaW5mb3JtYXRpb24gY2FuIGJlIHF1ZXJpZWQgdmlhIFFDSSBzdWJmdW5jdGlvbi5cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjE5LSAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjIwOnN0YXRpYyBpbnQgYXBfcWNpX2F2YWlsYWJsZSh2b2lkKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjIxLXtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjQxPXN0YXRpYyBpbmxpbmUgaW50IGFwX3FhY3RfYXZhaWxhYmxlKHZvaWQpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDIte1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjQzOlxcdHJldHVybiBhcF9xY2lfaW5mby1cXHUwMDNlcWFjdDtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0NC19XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTI1MT1pbnQgYXBfc2JfYXZhaWxhYmxlKHZvaWQpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNTIte1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjUzOlxcdHJldHVybiBhcF9xY2lfaW5mby1cXHUwMDNlYXBzYjtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI1NC19XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTI3MD1zdGF0aWMgdm9pZCBfX2luaXQgYXBfaW5pdF9xY2lfaW5mbyh2b2lkKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjcxLXtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI3MjpcXHRpZiAoIWFwX3FjaV9hdmFpbGFibGUoKSB8fFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjczOlxcdCAgICBhcF9xY2koYXBfcWNpX2luZm8pKSB7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNzQtXFx0XFx0QVBfREJGX0lORk8oXFxcIiVzIFFDSSBub3Qgc3VwcG9ydGVkXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI3Ni1cXHR9XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNzc6XFx0bWVtY3B5KGFwX3FjaV9pbmZvX29sZCwgYXBfcWNpX2luZm8sIHNpemVvZigqYXBfcWNpX2luZm8pKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI3OC1cXHRBUF9EQkZfSU5GTyhcXFwiJXMgc3VjY2Vzc2Z1bCBmZXRjaGVkIGluaXRpYWwgcWNpIGluZm9cXFxcblxcXCIsIF9fZnVuY19fKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI3OS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI4MDpcXHRpZiAoYXBfcWNpX2luZm8tXFx1MDAzZWFweGEpIHtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI4MTpcXHRcXHRpZiAoYXBfcWNpX2luZm8tXFx1MDAzZW5hKSB7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyODI6XFx0XFx0XFx0YXBfbWF4X2FkYXB0ZXJfaWQgPSBhcF9xY2lfaW5mby1cXHUwMDNlbmE7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yODMtXFx0XFx0XFx0QVBfREJGX0lORk8oXFxcIiVzIG5ldyBhcF9tYXhfYWRhcHRlcl9pZCBpcyAlZFxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjg1LVxcdFxcdH1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI4NjpcXHRcXHRpZiAoYXBfcWNpX2luZm8tXFx1MDAzZW5kKSB7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyODc6XFx0XFx0XFx0YXBfbWF4X2RvbWFpbl9pZCA9IGFwX3FjaV9pbmZvLVxcdTAwM2VuZDtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI4OC1cXHRcXHRcXHRBUF9EQkZfSU5GTyhcXFwiJXMgbmV3IGFwX21heF9kb21haW5faWQgaXMgJWRcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTMxMD1zdGF0aWMgaW5saW5lIGludCBhcF90ZXN0X2NvbmZpZ19jYXJkX2lkKHVuc2lnbmVkIGludCBpZClcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMzEzLVxcdFxcdHJldHVybiAwO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MzE0OlxcdGlmIChhcF9xY2lfaW5mby1cXHUwMDNlZmxhZ3MpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzozMTU6XFx0XFx0cmV0dXJuIGFwX3Rlc3RfY29uZmlnKGFwX3FjaV9pbmZvLVxcdTAwM2VhcG0sIGlkKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTMxNi1cXHRyZXR1cm4gMTtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MzI3PWludCBhcF90ZXN0X2NvbmZpZ191c2FnZV9kb21haW4odW5zaWduZWQgaW50IGRvbWFpbilcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMzMwLVxcdFxcdHJldHVybiAwO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MzMxOlxcdGlmIChhcF9xY2lfaW5mby1cXHUwMDNlZmxhZ3MpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzozMzI6XFx0XFx0cmV0dXJuIGFwX3Rlc3RfY29uZmlnKGFwX3FjaV9pbmZvLVxcdTAwM2VhcW0sIGRvbWFpbik7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0zMzMtXFx0cmV0dXJuIDE7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTM0NT1pbnQgYXBfdGVzdF9jb25maWdfY3RybF9kb21haW4odW5zaWduZWQgaW50IGRvbWFpbilcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTM0Ni17XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzozNDc6XFx0aWYgKCFhcF9xY2lfaW5mbyB8fCBkb21haW4gXFx1MDAzZSBhcF9tYXhfZG9tYWluX2lkKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMzQ4LVxcdFxcdHJldHVybiAwO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MzQ5OlxcdHJldHVybiBhcF90ZXN0X2NvbmZpZyhhcF9xY2lfaW5mby1cXHUwMDNlYWRtLCBkb21haW4pO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMzUwLX1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTM0OT1zdGF0aWMgc3NpemVfdCBhcF9jb250cm9sX2RvbWFpbl9tYXNrX3Nob3coY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMsIGNoYXIgKmJ1ZilcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzNTAte1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM1MTpcXHRpZiAoIWFwX3FjaV9pbmZvLVxcdTAwM2VmbGFncylcXHQvKiBRQ0kgbm90IHN1cHBvcnRlZCAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM1Mi1cXHRcXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFxcXCJub3Qgc3VwcG9ydGVkXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM1NC1cXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFxcXCIweCUwOHglMDh4JTA4eCUwOHglMDh4JTA4eCUwOHglMDh4XFxcXG5cXFwiLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM1NTpcXHRcXHRcXHQgIGFwX3FjaV9pbmZvLVxcdTAwM2VhZG1bMF0sIGFwX3FjaV9pbmZvLVxcdTAwM2VhZG1bMV0sXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzU2OlxcdFxcdFxcdCAgYXBfcWNpX2luZm8tXFx1MDAzZWFkbVsyXSwgYXBfcWNpX2luZm8tXFx1MDAzZWFkbVszXSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNTc6XFx0XFx0XFx0ICBhcF9xY2lfaW5mby1cXHUwMDNlYWRtWzRdLCBhcF9xY2lfaW5mby1cXHUwMDNlYWRtWzVdLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM1ODpcXHRcXHRcXHQgIGFwX3FjaV9pbmZvLVxcdTAwM2VhZG1bNl0sIGFwX3FjaV9pbmZvLVxcdTAwM2VhZG1bN10pO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM1OS19XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTEzNjM9c3RhdGljIHNzaXplX3QgYXBfdXNhZ2VfZG9tYWluX21hc2tfc2hvdyhjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY2hhciAqYnVmKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM2NC17XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzY1OlxcdGlmICghYXBfcWNpX2luZm8tXFx1MDAzZWZsYWdzKVxcdC8qIFFDSSBub3Qgc3VwcG9ydGVkICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzY2LVxcdFxcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXFxcIm5vdCBzdXBwb3J0ZWRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzY4LVxcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXFxcIjB4JTA4eCUwOHglMDh4JTA4eCUwOHglMDh4JTA4eCUwOHhcXFxcblxcXCIsXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzY5OlxcdFxcdFxcdCAgYXBfcWNpX2luZm8tXFx1MDAzZWFxbVswXSwgYXBfcWNpX2luZm8tXFx1MDAzZWFxbVsxXSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNzA6XFx0XFx0XFx0ICBhcF9xY2lfaW5mby1cXHUwMDNlYXFtWzJdLCBhcF9xY2lfaW5mby1cXHUwMDNlYXFtWzNdLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM3MTpcXHRcXHRcXHQgIGFwX3FjaV9pbmZvLVxcdTAwM2VhcW1bNF0sIGFwX3FjaV9pbmZvLVxcdTAwM2VhcW1bNV0sXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzcyOlxcdFxcdFxcdCAgYXBfcWNpX2luZm8tXFx1MDAzZWFxbVs2XSwgYXBfcWNpX2luZm8tXFx1MDAzZWFxbVs3XSk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzczLX1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTM3Nz1zdGF0aWMgc3NpemVfdCBhcF9hZGFwdGVyX21hc2tfc2hvdyhjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY2hhciAqYnVmKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM3OC17XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzc5OlxcdGlmICghYXBfcWNpX2luZm8tXFx1MDAzZWZsYWdzKVxcdC8qIFFDSSBub3Qgc3VwcG9ydGVkICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzgwLVxcdFxcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXFxcIm5vdCBzdXBwb3J0ZWRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzgyLVxcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXFxcIjB4JTA4eCUwOHglMDh4JTA4eCUwOHglMDh4JTA4eCUwOHhcXFxcblxcXCIsXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzgzOlxcdFxcdFxcdCAgYXBfcWNpX2luZm8tXFx1MDAzZWFwbVswXSwgYXBfcWNpX2luZm8tXFx1MDAzZWFwbVsxXSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzODQ6XFx0XFx0XFx0ICBhcF9xY2lfaW5mby1cXHUwMDNlYXBtWzJdLCBhcF9xY2lfaW5mby1cXHUwMDNlYXBtWzNdLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM4NTpcXHRcXHRcXHQgIGFwX3FjaV9pbmZvLVxcdTAwM2VhcG1bNF0sIGFwX3FjaV9pbmZvLVxcdTAwM2VhcG1bNV0sXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzg2OlxcdFxcdFxcdCAgYXBfcWNpX2luZm8tXFx1MDAzZWFwbVs2XSwgYXBfcWNpX2luZm8tXFx1MDAzZWFwbVs3XSk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzg3LX1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTc0Nz1zdGF0aWMgc3NpemVfdCBmZWF0dXJlc19zaG93KGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjaGFyICpidWYpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3NTAtXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxNzUxOlxcdGlmICghYXBfcWNpX2luZm8tXFx1MDAzZWZsYWdzKVxcdC8qIFFDSSBub3Qgc3VwcG9ydGVkICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzUyLVxcdFxcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXFxcIi1cXFxcblxcXCIpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTc1My1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE3NTQ6XFx0aWYgKGFwX3FjaV9pbmZvLVxcdTAwM2VhcHNjKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTc1NS1cXHRcXHRuICs9IHN5c2ZzX2VtaXRfYXQoYnVmLCBuLCBcXFwiQVBTQyBcXFwiKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE3NTY6XFx0aWYgKGFwX3FjaV9pbmZvLVxcdTAwM2VhcHhhKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTc1Ny1cXHRcXHRuICs9IHN5c2ZzX2VtaXRfYXQoYnVmLCBuLCBcXFwiQVBYQSBcXFwiKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE3NTg6XFx0aWYgKGFwX3FjaV9pbmZvLVxcdTAwM2VxYWN0KVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTc1OS1cXHRcXHRuICs9IHN5c2ZzX2VtaXRfYXQoYnVmLCBuLCBcXFwiUUFDVCBcXFwiKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE3NjA6XFx0aWYgKGFwX3FjaV9pbmZvLVxcdTAwM2VyYzhhKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTc2MS1cXHRcXHRuICs9IHN5c2ZzX2VtaXRfYXQoYnVmLCBuLCBcXFwiUkM4QSBcXFwiKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE3NjI6XFx0aWYgKGFwX3FjaV9pbmZvLVxcdTAwM2VhcHNiKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTc2My1cXHRcXHRuICs9IHN5c2ZzX2VtaXRfYXQoYnVmLCBuLCBcXFwiQVBTQiBcXFwiKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTkyMz1zdGF0aWMgaW50IF9fZHJ2X25vdGlmeV9jb25maWdfY2hhbmdlZChzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2LCB2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTI4LVxcdFxcdGlmIChhcF9kcnYtXFx1MDAzZW9uX2NvbmZpZ19jaGFuZ2VkKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTkyOTpcXHRcXHRcXHRhcF9kcnYtXFx1MDAzZW9uX2NvbmZpZ19jaGFuZ2VkKGFwX3FjaV9pbmZvLCBhcF9xY2lfaW5mb19vbGQpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTkzMC1cXHRcXHRtb2R1bGVfcHV0KGRydi1cXHUwMDNlb3duZXIpO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xOTQ0PXN0YXRpYyBpbnQgX19kcnZfbm90aWZ5X3NjYW5fY29tcGxldGUoc3RydWN0IGRldmljZV9kcml2ZXIgKmRydiwgdm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTk0OS1cXHRcXHRpZiAoYXBfZHJ2LVxcdTAwM2Vvbl9zY2FuX2NvbXBsZXRlKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTk1MDpcXHRcXHRcXHRhcF9kcnYtXFx1MDAzZW9uX3NjYW5fY29tcGxldGUoYXBfcWNpX2luZm8sXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxOTUxOlxcdFxcdFxcdFxcdFxcdFxcdCBhcF9xY2lfaW5mb19vbGQpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTk1Mi1cXHRcXHRtb2R1bGVfcHV0KGRydi1cXHUwMDNlb3duZXIpO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yMzExPXN0YXRpYyBib29sIGFwX2dldF9jb25maWd1cmF0aW9uKHZvaWQpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzEyLXtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzMTM6XFx0aWYgKCFhcF9xY2lfaW5mby1cXHUwMDNlZmxhZ3MpXFx0LyogUUNJIG5vdCBzdXBwb3J0ZWQgKi9cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMTQtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMxNS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzMTY6XFx0bWVtY3B5KGFwX3FjaV9pbmZvX29sZCwgYXBfcWNpX2luZm8sIHNpemVvZigqYXBfcWNpX2luZm8pKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzMTc6XFx0YXBfcWNpKGFwX3FjaV9pbmZvKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMTgtXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzE5OlxcdHJldHVybiBtZW1jbXAoYXBfcWNpX2luZm8sIGFwX3FjaV9pbmZvX29sZCxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMjAtXFx0XFx0ICAgICAgc2l6ZW9mKHN0cnVjdCBhcF9jb25maWdfaW5mbykpICE9IDA7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTIzMjk9c3RhdGljIGJvb2wgYXBfY29uZmlnX2hhc19uZXdfYXBzKHZvaWQpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMzMtXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzM0OlxcdGlmICghYXBfcWNpX2luZm8tXFx1MDAzZWZsYWdzKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMzNS1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzM2LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjMzNzpcXHRiaXRtYXBfYW5kbm90KG0sICh1bnNpZ25lZCBsb25nICopYXBfcWNpX2luZm8tXFx1MDAzZWFwbSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzMzg6XFx0XFx0ICAgICAgKHVuc2lnbmVkIGxvbmcgKilhcF9xY2lfaW5mb19vbGQtXFx1MDAzZWFwbSwgQVBfREVWSUNFUyk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzM5LVxcdGlmICghYml0bWFwX2VtcHR5KG0sIEFQX0RFVklDRVMpKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yMzUxPXN0YXRpYyBib29sIGFwX2NvbmZpZ19oYXNfbmV3X2RvbXModm9pZClcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjM1NC1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzNTU6XFx0aWYgKCFhcF9xY2lfaW5mby1cXHUwMDNlZmxhZ3MpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzU2LVxcdFxcdHJldHVybiBmYWxzZTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzNTctXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzU4OlxcdGJpdG1hcF9hbmRub3QobSwgKHVuc2lnbmVkIGxvbmcgKilhcF9xY2lfaW5mby1cXHUwMDNlYXFtLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjM1OTpcXHRcXHQgICAgICAodW5zaWduZWQgbG9uZyAqKWFwX3FjaV9pbmZvX29sZC1cXHUwMDNlYXFtLCBBUF9ET01BSU5TKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzNjAtXFx0aWYgKCFiaXRtYXBfZW1wdHkobSwgQVBfRE9NQUlOUykpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM9ODY9c3RhdGljIGludCB2ZmlvX2FwX21hdHJpeF9kZXZfY3JlYXRlKHZvaWQpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTA2LVxcdGlmICh0ZXN0X2ZhY2lsaXR5KDEyKSkge1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxMDc6XFx0XFx0cmV0ID0gYXBfcWNpKFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VpbmZvKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTA4LVxcdFxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE1OjA4LjI0NDk5MjQzN1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4Njc2NjU1MDM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIFZGSU8gQVAgRGV2aWNlIENyZWF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgdmZpb19hcF9tYXRyaXhfZGV2X2NyZWF0ZWAgZnVuY3Rpb24sIHNwZWNpZmljYWxseSB0aGF0IGB0ZXN0X2ZhY2lsaXR5KDEyKWAgY2hlY2suIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBpZiBmYWNpbGl0eSAxMiB3YXNuJ3QgcHJlc2VudCwgdGhlIHdob2xlIHRoaW5nIHdvdWxkIGVycm9yIG91dC4gQnV0IGhhbmcgb24sIGl0IGRvZXNuJ3QhIEl0IGp1c3QgKnNraXBzKiB0aGUgYGFwX3FjaWAgY2FsbC4gQW5kIHNpbmNlIHRoZSBgbWF0cml4X2Rldi1cdTAwM2VpbmZvYCBzdHJ1Y3Qgd2FzIGBremFsbG9jX29iamAnZCwgaXQnbGwganVzdCBiZSB6ZXJvZWQgb3V0LiBUaGF0IG1lYW5zIHRoZSBkZXZpY2UgY3JlYXRpb24gKnN1Y2NlZWRzKiBldmVuIHdpdGhvdXQgdGhlIGZhY2lsaXR5LiBTbywgdGhlIG1hdHJpeCBkZXZpY2UgZ2V0cyByZWdpc3RlcmVkLCBldmVuIGluIHRoaXMgXCJwYXJ0aWFsXCIgc3RhdGUuIEludGVyZXN0aW5nLlxuXG5Ob3csIGNhbiB3ZSBhY3R1YWxseSBjcmVhdGUgYW4gbWRldiBvbiB0b3Agb2YgdGhpcz8gSSBuZWVkIHRvIGNoZWNrIHRoZSBgdmZpb19hcF9tZGV2X3Byb2JlYCBhbmQgYHZmaW9fYXBfbWRldl9pbml0X2RldmAgZnVuY3Rpb25zIHRvIHNlZSB3aGF0IGhhcHBlbnMgdGhlcmUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBRRU1VIG1pZ2h0IG5vdCBiZSBmdWxseSBlbXVsYXRpbmcgdGhlIEFQIGluc3RydWN0aW9ucyBieSBkZWZhdWx0LCBidXQgS1ZNIGNhbiBwYXNzIHRoZW0gdGhyb3VnaC4gVGhhdCdzIHRoZSBkaWZmZXJlbmNlLlxuXG5BbmQgd2FpdCwgaXNuJ3Qgc3l6a2FsbGVyIG9mdGVuIHJ1biB3aXRoIEtWTSBvbiBzMzkweD8gWWVzLCBpdCBpcyEgU28gaXQgKnNob3VsZCogaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBpbnRlcmFjdCB3aXRoIHRoZXNlIGRldmljZXMsIGF0IGxlYXN0IGluIGEgcGFzc3Rocm91Z2ggY29uZmlndXJhdGlvbi4gV2hpY2ggYnJpbmdzIG1lIHRvIHRoZSBjb3JlIHF1ZXN0aW9uOiBkb2VzIHN5emthbGxlciBoYXZlIGV4aXN0aW5nIGRlc2NyaXB0aW9ucyBvciBmdXp6aW5nIGNvdmVyYWdlIGZvciBgdmZpb19hcGA/IEkgbmVlZCB0byBjaGVjayB0aGUgc3l6a2FsbGVyIGNvZGUgYmFzZSB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBkZWZpbml0aW9ucyBvciB0ZXN0IGNhc2VzIHJlbGF0ZWQgdG8gdGhlIFZGSU8gQVAgc3Vic3lzdGVtLiBUaGF0J3MgdGhlIGtleSB0byBleHBsb2l0aW5nIGFueSB2dWxuZXJhYmlsaXRpZXMgaGVyZS4gSSdtIGdvaW5nIHRvIGZpbmQgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDk5OCwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNToxNi45MjE2NTAxNTRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NDE1MjY3NTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmZpb19hcFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE1MDMgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3Q9Nj1UaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgbG9ja3MgdGhhdCBhcmUgcGVydGluZW50IHRvIHRoZSBzZWN1cmUgb3BlcmF0aW9uXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdDo3Om9mIHRoZSB2ZmlvX2FwIGRldmljZSBkcml2ZXIuIFRocm91Z2hvdXQgdGhpcyBkb2N1bWVudCwgdGhlIGZvbGxvd2luZyB2YXJpYWJsZXNcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0LTgtd2lsbCBiZSB1c2VkIHRvIGRlbm90ZSBpbnN0YW5jZXMgb2YgdGhlIHN0cnVjdHVyZXMgaGVyZWluIGRlc2NyaWJlZDpcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtMTUtXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdDoxNjpUaGUgTWF0cml4IERldmljZXMgTG9jayAoZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaClcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0LTE3LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdD0zMj1vciB1c2luZyB0aGUgZGF0YSBmcm9tIGEgZmllbGQgY29udGFpbmVkIHdpdGhpbiBhIG1hdHJpeF9tZGV2IGluc3RhbmNlXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdDozMzpyZXByZXNlbnRpbmcgb25lIG9mIHRoZSB2ZmlvX2FwIGRldmljZSBkcml2ZXIncyBtZWRpYXRlZCBkZXZpY2VzLlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtMzQtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0PTQ2PVRoZSBLVk0gTG9jayAoa3ZtLVxcdTAwM2Vsb2NrKSBjb250cm9scyBhY2Nlc3MgdG8gdGhlIHN0YXRlIGRhdGEgZm9yIGEgS1ZNIGd1ZXN0LiBUaGlzXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdDo0Nzpsb2NrIG11c3QgYmUgaGVsZCBieSB0aGUgdmZpb19hcCBkZXZpY2UgZHJpdmVyIHdoaWxlIG9uZSBvciBtb3JlIEFQIGFkYXB0ZXJzLFxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtNDgtZG9tYWlucyBvciBjb250cm9sIGRvbWFpbnMgYXJlIGJlaW5nIHBsdWdnZWQgaW50byBvciB1bnBsdWdnZWQgZnJvbSB0aGUgZ3Vlc3QuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0PTUyPWJlZW4gYXR0YWNoZWQgdG8gdGhlIEtWTSBndWVzdC5cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0LTUzLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3Q6NTQ6VGhlIEd1ZXN0cyBMb2NrIChkcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oKVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtNTUtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3Q9Njk9S1ZNIGd1ZXN0LiBUaGlzIGxvY2sgbXVzdCBiZSBoZWxkOlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtNzAtXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdDo3MToxLiBUbyBjb250cm9sIGFjY2VzcyB0byB0aGUgS1ZNIHBvaW50ZXIgKG1hdHJpeF9tZGV2LVxcdTAwM2Vrdm0pIHdoaWxlIHRoZSB2ZmlvX2FwXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdC03Mi0gICBkZXZpY2UgZHJpdmVyIGlzIHVzaW5nIGl0IHRvIHBsdWcvdW5wbHVnIEFQIGRldmljZXMgcGFzc2VkIHRocm91Z2ggdG8gdGhlIEtWTVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdC03OS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0OjgwOiAgIEZvciBleGFtcGxlLCB3aGVuIGEgcXVldWUgZGV2aWNlIGlzIHJlbW92ZWQgZnJvbSB0aGUgdmZpb19hcCBkZXZpY2UgZHJpdmVyLFxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtODEtICAgaWYgdGhlIGFkYXB0ZXIgaXMgcGFzc2VkIHRocm91Z2ggdG8gYSBLVk0gZ3Vlc3QsIGl0IHdpbGwgaGF2ZSB0byBiZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q9MTg4PVRoZSBkZXNpZ24gaW50cm9kdWNlcyB0aHJlZSBuZXcgb2JqZWN0czpcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTE5MC0xLiBBUCBtYXRyaXggZGV2aWNlXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MTkxOjIuIFZGSU8gQVAgZGV2aWNlIGRyaXZlciAodmZpb19hcC5rbylcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0xOTItMy4gVkZJTyBBUCBtZWRpYXRlZCBwYXNzLXRocm91Z2ggZGV2aWNlXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdD0xOTQ9VGhlIFZGSU8gQVAgZGV2aWNlIGRyaXZlclxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTE5NS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MTk2OlRoZSBWRklPIEFQICh2ZmlvX2FwKSBkZXZpY2UgZHJpdmVyIHNlcnZlcyB0aGUgZm9sbG93aW5nIHB1cnBvc2VzOlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTE5Ny1cXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTE5OS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoyMDA6Mi4gU2V0cyB1cCB0aGUgVkZJTyBtZWRpYXRlZCBkZXZpY2UgaW50ZXJmYWNlcyB0byBtYW5hZ2UgYSB2ZmlvX2FwIG1lZGlhdGVkXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMjAxLSAgIGRldmljZSBhbmQgY3JlYXRlcyB0aGUgc3lzZnMgaW50ZXJmYWNlcyBmb3IgYXNzaWduaW5nIGFkYXB0ZXJzLCB1c2FnZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q9MjExPXJlc2VydmVkOjpcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTIzMS0gIHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICB8XFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MjMyOiAgfCAgICAgIGFwX2J1cyAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0gXFx1MDAzZSAgdmZpb19hcCBkcml2ZXIgIHxcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0yMzMtICB8ICAgICAgICAgICAgICAgICAgfCAgICAgICA4IHByb2JlICAgICAgICB8ICAgICAgICAgICAgICAgICAgfFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMjQzLVxcdCB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoyNDQ6XFx0IHwgfCA5IGNyZWF0ZSB2ZmlvX2FwLXBhc3N0aHJvdWdoIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTI0NS1cXHQgfCArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdD0yNDk9VGhlIHByb2Nlc3MgZm9yIHJlc2VydmluZyBhbiBBUCBxdWV1ZSBmb3IgdXNlIGJ5IGEgS1ZNIGd1ZXN0IGlzOlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTI1MC1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoyNTE6MS4gVGhlIGFkbWluaXN0cmF0b3IgbG9hZHMgdGhlIHZmaW9fYXAgZGV2aWNlIGRyaXZlclxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTI1Mi0yLiBUaGUgdmZpby1hcCBkcml2ZXIgZHVyaW5nIGl0cyBpbml0aWFsaXphdGlvbiB3aWxsIHJlZ2lzdGVyIGEgc2luZ2xlICdtYXRyaXgnXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMjUzLSAgIGRldmljZSB3aXRoIHRoZSBkZXZpY2UgY29yZS4gVGhpcyB3aWxsIHNlcnZlIGFzIHRoZSBwYXJlbnQgZGV2aWNlIGZvclxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjI1NDogICBhbGwgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2VzIHVzZWQgdG8gY29uZmlndXJlIGFuIEFQIG1hdHJpeCBmb3IgYSBndWVzdC5cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoyNTU6My4gVGhlIC9zeXMvZGV2aWNlcy92ZmlvX2FwL21hdHJpeCBkZXZpY2UgaXMgY3JlYXRlZCBieSB0aGUgZGV2aWNlIGNvcmVcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoyNTY6NC4gVGhlIHZmaW9fYXAgZGV2aWNlIGRyaXZlciB3aWxsIHJlZ2lzdGVyIHdpdGggdGhlIEFQIGJ1cyBmb3IgQVAgcXVldWUgZGV2aWNlc1xcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjI1NzogICBvZiB0eXBlIDEwIGFuZCBoaWdoZXIgKENFWDQgYW5kIG5ld2VyKS4gVGhlIGRyaXZlciB3aWxsIHByb3ZpZGUgdGhlIHZmaW9fYXBcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0yNTgtICAgZHJpdmVyJ3MgcHJvYmUgYW5kIHJlbW92ZSBjYWxsYmFjayBpbnRlcmZhY2VzLiBEZXZpY2VzIG9sZGVyIHRoYW4gQ0VYNCBxdWV1ZXNcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTI2Mi0gICBzeXN0ZW1zIGFyb3VuZCBvbiB3aGljaCB0byB0ZXN0LlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjI2Mzo1LiBUaGUgQVAgYnVzIHJlZ2lzdGVycyB0aGUgdmZpb19hcCBkZXZpY2UgZHJpdmVyIHdpdGggdGhlIGRldmljZSBjb3JlXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMjY0LTYuIFRoZSBhZG1pbmlzdHJhdG9yIGVkaXRzIHRoZSBBUCBhZGFwdGVyIGFuZCBxdWV1ZSBtYXNrcyB0byByZXNlcnZlIEFQIHF1ZXVlc1xcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjI2NTogICBmb3IgdXNlIGJ5IHRoZSB2ZmlvX2FwIGRldmljZSBkcml2ZXIuXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MjY2OjcuIFRoZSBBUCBidXMgcmVtb3ZlcyB0aGUgQVAgcXVldWVzIHJlc2VydmVkIGZvciB0aGUgdmZpb19hcCBkcml2ZXIgZnJvbSB0aGVcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0yNjctICAgZGVmYXVsdCB6Y3J5cHQgY2V4NHF1ZXVlIGRyaXZlci5cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoyNjg6OC4gVGhlIEFQIGJ1cyBwcm9iZXMgdGhlIHZmaW9fYXAgZGV2aWNlIGRyaXZlciB0byBiaW5kIHRoZSBxdWV1ZXMgcmVzZXJ2ZWQgZm9yXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMjY5LSAgIGl0LlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjI3MDo5LiBUaGUgYWRtaW5pc3RyYXRvciBjcmVhdGVzIGEgcGFzc3Rocm91Z2ggdHlwZSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSB0byBiZVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTI3MS0gICB1c2VkIGJ5IGEgZ3Vlc3RcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0PTI3OD1kZXZpY2UgY29yZSBkcml2ZXIgdG86XFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMjc5LVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjI4MDoqIFJlZ2lzdGVyIGFuIEFQIG1lZGlhdGVkIGJ1cyBkcml2ZXIgdG8gYWRkIGEgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UgdG8gYW5kXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMjgxLSAgcmVtb3ZlIGl0IGZyb20gYSBWRklPIGdyb3VwLlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjI4MjoqIENyZWF0ZSBhbmQgZGVzdHJveSBhIHZmaW9fYXAgbWVkaWF0ZWQgZGV2aWNlXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MjgzOiogQWRkIGEgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UgdG8gYW5kIHJlbW92ZSBpdCBmcm9tIHRoZSBBUCBtZWRpYXRlZCBidXMgZHJpdmVyXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6Mjg0OiogQWRkIGEgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UgdG8gYW5kIHJlbW92ZSBpdCBmcm9tIGFuIElPTU1VIGdyb3VwXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMjg1LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q9Mjg3PW9mIHRoZSBWRklPIEFQIG1lZGlhdGVkIGRldmljZSBkcml2ZXI6Olxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzAxLSAgIHwgfFBoeXNpY2FsIHwgK1xcdTAwM2MtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgIHxcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDozMDI6ICAgfCB8IGRldmljZSAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgdmZpb19hcC5rbyAgfFxcdTAwM2MtXFx1MDAzZSBtYXRyaXhcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0zMDMtICAgfCB8aW50ZXJmYWNlfCArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXHUwMDNlKyAgICAgICAgICAgICAgfCAgICBkZXZpY2VcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTMwNi1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDozMDc6RHVyaW5nIGluaXRpYWxpemF0aW9uIG9mIHRoZSB2ZmlvX2FwIG1vZHVsZSwgdGhlIG1hdHJpeCBkZXZpY2UgaXMgcmVnaXN0ZXJlZFxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTMwOC13aXRoIGFuICdtZGV2X3BhcmVudF9vcHMnIHN0cnVjdHVyZSB0aGF0IHByb3ZpZGVzIHRoZSBzeXNmcyBhdHRyaWJ1dGVcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0PTMxMD1tYXRyaXggZGV2aWNlLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzI2LVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjMyNzogICAgICAvc3lzL2RldmljZXMvdmZpb19hcC9tYXRyaXgvbWRldl9zdXBwb3J0ZWRfdHlwZXMvdmZpb19hcC1wYXNzdGhyb3VnaFxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTMyOC1cXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTM0My1cXHQqIGF2YWlsYWJsZV9pbnN0YW5jZXM6XFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MzQ0OlxcdCAgICB0aGUgbnVtYmVyIG9mIHZmaW9fYXAgbWVkaWF0ZWQgcGFzc3Rocm91Z2ggZGV2aWNlc1xcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTM0NS1cXHQgICAgdGhhdCBjYW4gYmUgY3JlYXRlZFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzUxLSAgICBmcmFtZXdvcmssIHRoZSBzeXNmcyBhdHRyaWJ1dGUgZmlsZXMgaWRlbnRpZmllZCBpbiB0aGUgJ21kZXZfYXR0cl9ncm91cHMnXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MzUyOiAgICBzdHJ1Y3R1cmUgd2lsbCBiZSBjcmVhdGVkIGluIHRoZSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSdzIGRpcmVjdG9yeS4gVGhlXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MzUzOiAgICBzeXNmcyBhdHRyaWJ1dGVzIGZvciBhIHZmaW9fYXAgbWVkaWF0ZWQgZGV2aWNlIGFyZTpcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0zNTQtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0zNTYtICAgICAgV3JpdGUtb25seSBhdHRyaWJ1dGVzIGZvciBhc3NpZ25pbmcvdW5hc3NpZ25pbmcgYW4gQVAgYWRhcHRlciB0by9mcm9tIHRoZVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjM1NzogICAgICB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZS4gVG8gYXNzaWduL3VuYXNzaWduIGFuIGFkYXB0ZXIsIHRoZSBBUElEIG9mIHRoZVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTM1OC0gICAgICBhZGFwdGVyIGlzIGVjaG9lZCBpbnRvIHRoZSByZXNwZWN0aXZlIGF0dHJpYnV0ZSBmaWxlLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzYwLSAgICAgIFdyaXRlLW9ubHkgYXR0cmlidXRlcyBmb3IgYXNzaWduaW5nL3VuYXNzaWduaW5nIGFuIEFQIHVzYWdlIGRvbWFpbiB0by9mcm9tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MzYxOiAgICAgIHRoZSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZS4gVG8gYXNzaWduL3VuYXNzaWduIGEgZG9tYWluLCB0aGUgZG9tYWluXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzYyLSAgICAgIG51bWJlciBvZiB0aGUgdXNhZ2UgZG9tYWluIGlzIGVjaG9lZCBpbnRvIHRoZSByZXNwZWN0aXZlIGF0dHJpYnV0ZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzY1LSAgICAgIEEgcmVhZC1vbmx5IGZpbGUgZm9yIGRpc3BsYXlpbmcgdGhlIEFQUU5zIGRlcml2ZWQgZnJvbSB0aGUgQ2FydGVzaWFuXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MzY2OiAgICAgIHByb2R1Y3Qgb2YgdGhlIGFkYXB0ZXIgYW5kIGRvbWFpbiBudW1iZXJzIGFzc2lnbmVkIHRvIHRoZSB2ZmlvX2FwIG1lZGlhdGVkXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzY3LSAgICAgIGRldmljZS5cXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTM3MS0gICAgICBmaWVsZHMgcmVzcGVjdGl2ZWx5IG9mIHRoZSBLVk0gZ3Vlc3QncyBDUllDQi4gVGhpcyBtYXkgZGlmZmVyIGZyb20gdGhlXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MzcyOiAgICAgIHRoZSBBUFFOcyBhc3NpZ25lZCB0byB0aGUgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UgaWYgYW55IEFQUU4gZG9lcyBub3RcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDozNzM6ICAgICAgcmVmZXJlbmNlIGEgcXVldWUgZGV2aWNlIGJvdW5kIHRvIHRoZSB2ZmlvX2FwIGRldmljZSBkcml2ZXIgKGkuZS4sIHRoZVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTM3NC0gICAgICBxdWV1ZSBpcyBub3QgaW4gdGhlIGhvc3QncyBBUCBjb25maWd1cmF0aW9uKS5cXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTM3Ni0gICAgICBXcml0ZS1vbmx5IGF0dHJpYnV0ZXMgZm9yIGFzc2lnbmluZy91bmFzc2lnbmluZyBhbiBBUCBjb250cm9sIGRvbWFpblxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjM3NzogICAgICB0by9mcm9tIHRoZSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZS4gVG8gYXNzaWduL3VuYXNzaWduIGEgY29udHJvbCBkb21haW4sXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzc4LSAgICAgIHRoZSBJRCBvZiB0aGUgZG9tYWluIHRvIGJlIGFzc2lnbmVkL3VuYXNzaWduZWQgaXMgZWNob2VkIGludG8gdGhlXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0zODEtICAgICAgQSByZWFkLW9ubHkgZmlsZSBmb3IgZGlzcGxheWluZyB0aGUgY29udHJvbCBkb21haW4gbnVtYmVycyBhc3NpZ25lZCB0byB0aGVcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDozODI6ICAgICAgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UuXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzgzLSAgICBhcF9jb25maWc6XFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzg0LSAgICAgIEEgcmVhZC93cml0ZSBmaWxlIHRoYXQsIHdoZW4gd3JpdHRlbiB0bywgYWxsb3dzIGFsbCB0aHJlZSBvZiB0aGVcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDozODU6ICAgICAgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UncyBhcCBtYXRyaXggbWFza3MgdG8gYmUgcmVwbGFjZWQgaW4gb25lIHNob3QuXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzg2LSAgICAgIFRocmVlIG1hc2tzIGFyZSBnaXZlbiwgb25lIGZvciBhZGFwdGVycywgb25lIGZvciBkb21haW5zLCBhbmQgb25lIGZvclxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNDE2LSAgY3JlYXRlOlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjQxNzogICAgYWxsb2NhdGVzIHRoZSBhcF9tYXRyaXhfbWRldiBzdHJ1Y3R1cmUgdXNlZCBieSB0aGUgdmZpb19hcCBkcml2ZXIgdG86XFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNDE4LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNDI0LSAgICAgIHJlZmVyZW5jaW5nIHF1ZXVlIGRldmljZXMgdGhhdCBkbyBub3QgZXhpc3QsIG9yIGFyZSBub3QgYm91bmQgdG8gdGhlXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6NDI1OiAgICAgIHZmaW9fYXAgZGV2aWNlIGRyaXZlci5cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC00MjYtXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNDI3LSAgcmVtb3ZlOlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjQyODogICAgZGVhbGxvY2F0ZXMgdGhlIHZmaW9fYXAgbWVkaWF0ZWQgZGV2aWNlJ3MgYXBfbWF0cml4X21kZXYgc3RydWN0dXJlLlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTQyOS0gICAgVGhpcyB3aWxsIGJlIGFsbG93ZWQgb25seSBpZiBhIHJ1bm5pbmcgZ3Vlc3QgaXMgbm90IHVzaW5nIHRoZSBtZGV2Llxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNDM3LSAgICBhbmQgY29uZmlndXJlcyB0aGUgZ3Vlc3QncyBhY2Nlc3MgdG8gdGhlIEFQIG1hdHJpeCBkZWZpbmVkIHZpYSB0aGVcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo0Mzg6ICAgIHZmaW9fYXAgbWVkaWF0ZWQgZGV2aWNlJ3Mgc3lzZnMgYXR0cmlidXRlIGZpbGVzLlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTQzOS1cXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0PTQ1MT1jb25maWd1cmVkIHZpYSBpdHMgQVBDQiBieTpcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTQ1My0qIFNldHRpbmcgdGhlIGJpdHMgaW4gdGhlIEFQTSBjb3JyZXNwb25kaW5nIHRvIHRoZSBBUElEcyBhc3NpZ25lZCB0byB0aGVcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo0NTQ6ICB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSB2aWEgaXRzICdhc3NpZ25fYWRhcHRlcicgaW50ZXJmYWNlLlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTQ1NS0qIFNldHRpbmcgdGhlIGJpdHMgaW4gdGhlIEFRTSBjb3JyZXNwb25kaW5nIHRvIHRoZSBkb21haW5zIGFzc2lnbmVkIHRvIHRoZVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjQ1NjogIHZmaW9fYXAgbWVkaWF0ZWQgZGV2aWNlIHZpYSBpdHMgJ2Fzc2lnbl9kb21haW4nIGludGVyZmFjZS5cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC00NTctKiBTZXR0aW5nIHRoZSBiaXRzIGluIHRoZSBBRE0gY29ycmVzcG9uZGluZyB0byB0aGUgZG9tYWluIGRJRHMgYXNzaWduZWQgdG8gdGhlXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6NDU4OiAgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UgdmlhIGl0cyAnYXNzaWduX2NvbnRyb2xfZG9tYWlucycgaW50ZXJmYWNlLlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTQ1OS1cXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0PTQ2MT1pcyBub3QgYm91bmQgdG8gdGhlIGRldmljZSBkcml2ZXIgZmFjaWxpdGF0aW5nIGl0cyBwYXNzLXRocm91Z2guIENvbnNlcXVlbnRseSxcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo0NjI6YW4gQVBRTiB0aGF0IGRvZXMgbm90IHJlZmVyZW5jZSBhIHF1ZXVlIGRldmljZSBib3VuZCB0byB0aGUgdmZpb19hcCBkZXZpY2VcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC00NjMtZHJpdmVyIHdpbGwgbm90IGJlIGFzc2lnbmVkIHRvIGEgS1ZNIGd1ZXN0J3MgbWF0cml4LiBUaGUgQVAgYXJjaGl0ZWN0dXJlLFxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0PTQ2ND1ob3dldmVyLCBkb2VzIG5vdCBwcm92aWRlIGEgbWVhbnMgdG8gZmlsdGVyIGluZGl2aWR1YWwgQVBRTnMgZnJvbSB0aGUgZ3Vlc3Qnc1xcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjQ2NTptYXRyaXgsIHNvIHRoZSBhZGFwdGVycywgZG9tYWlucyBhbmQgY29udHJvbCBkb21haW5zIGFzc2lnbmVkIHRvIHZmaW9fYXBcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC00NjYtbWVkaWF0ZWQgZGV2aWNlIHZpYSBpdHMgc3lzZnMgJ2Fzc2lnbl9hZGFwdGVyJywgJ2Fzc2lnbl9kb21haW4nIGFuZFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q9NDY4PWNvbmZpZ3VyYXRpb24gdG8gYSBndWVzdDpcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTQ3NC0qIEVhY2ggQVBRTiBkZXJpdmVkIGZyb20gdGhlIENhcnRlc2lhbiBwcm9kdWN0IG9mIHRoZSBBUElEcyBhbmQgQVBRSXMgYXNzaWduZWRcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo0NzU6ICB0byB0aGUgdmZpb19hcCBtZGV2IGlzIGV4YW1pbmVkIGFuZCBpZiBhbnkgb25lIG9mIHRoZW0gZG9lcyBub3QgcmVmZXJlbmNlIGFcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo0NzY6ICBxdWV1ZSBkZXZpY2UgYm91bmQgdG8gdGhlIHZmaW9fYXAgZGV2aWNlIGRyaXZlciwgdGhlIGFkYXB0ZXIgd2lsbCBub3QgYmVcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC00NzctICBwbHVnZ2VkIGludG8gdGhlIGd1ZXN0IChpLmUuLCB0aGUgYml0IGNvcnJlc3BvbmRpbmcgdG8gaXRzIEFQSUQgd2lsbCBub3QgYmVcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0PTU2Mz1UaGVzZSBhcmUgdGhlIHN0ZXBzOlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTU2NC1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo1NjU6MS4gSW5zdGFsbCB0aGUgdmZpb19hcCBtb2R1bGUgb24gdGhlIGxpbnV4IGhvc3QuIFRoZSBkZXBlbmRlbmN5IGNoYWluIGZvciB0aGVcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo1NjY6ICAgdmZpb19hcCBtb2R1bGUgaXM6XFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNTY3LSAgICogaW9tbXVcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTU3NC1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo1NzU6ICAgVG8gYnVpbGQgdGhlIHZmaW9fYXAgbW9kdWxlLCB0aGUga2VybmVsIGJ1aWxkIG11c3QgYmUgY29uZmlndXJlZCB3aXRoIHRoZVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTU3Ni0gICBmb2xsb3dpbmcgS2NvbmZpZyBlbGVtZW50cyBzZWxlY3RlZDpcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTU4Mi1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo1ODM6ICAgSWYgdXNpbmcgbWFrZSBtZW51Y29uZmlnIHNlbGVjdCB0aGUgZm9sbG93aW5nIHRvIGJ1aWxkIHRoZSB2ZmlvX2FwIG1vZHVsZTo6XFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNTg0LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNTk3LSAgIHF1ZXVlIGRldmljZSBkcml2ZXJzLiBBbGwgcmVtYWluaW5nIEFQUU5zIGFyZSBhdmFpbGFibGUgZm9yIHVzZSBieVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjU5ODogICBhbnkgb3RoZXIgZGV2aWNlIGRyaXZlci4gVGhlIHZmaW9fYXAgZGV2aWNlIGRyaXZlciBpcyBjdXJyZW50bHkgdGhlIG9ubHlcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC01OTktICAgbm9uLWRlZmF1bHQgZGV2aWNlIGRyaXZlci4gVGhlIGxvY2F0aW9uIG9mIHRoZSBzeXNmcyBmaWxlcyBjb250YWluaW5nIHRoZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNjE4LSAgIEFsbCBvdGhlciBBUFFOcyBhcmUgYXZhaWxhYmxlIHRvIHRoZSBub24tZGVmYXVsdCBkZXZpY2UgZHJpdmVycyBzdWNoIGFzIHRoZVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjYxOTogICB2ZmlvX2FwIGRyaXZlci5cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC02MjAtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC02NDYtICAgbWF0Y2ggaXMgZGV0ZWN0ZWQsICBvbmx5IHRoZSBkZWZhdWx0IEFQIHF1ZXVlIGRldmljZSBkcml2ZXJzIHdpbGwgYmUgcHJvYmVkO1xcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjY0NzogICBvdGhlcndpc2UsIHRoZSB2ZmlvX2FwIGRldmljZSBkcml2ZXIgd2lsbCBiZSBwcm9iZWQuXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNjQ4LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNzA4LSAgICoqTm90ZToqKlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjcwOTogICBDaGFuZ2luZyBhIG1hc2sgc3VjaCB0aGF0IG9uZSBvciBtb3JlIEFQUU5zIHdpbGwgYmUgdGFrZW4gZnJvbSBhIHZmaW9fYXBcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03MTAtICAgbWVkaWF0ZWQgZGV2aWNlIChzZWUgYmVsb3cpIHdpbGwgZmFpbCB3aXRoIGFuIGVycm9yIChFQlVTWSkuIEEgbWVzc2FnZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNzEyLSAgIGNvbW1hbmQuIFRoZSBvdXRwdXQgaWRlbnRpZmllcyBlYWNoIEFQUU4gZmxhZ2dlZCBhcyAnaW4gdXNlJyBhbmQgaWRlbnRpZmllc1xcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjcxMzogICB0aGUgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UgdG8gd2hpY2ggaXQgaXMgYXNzaWduZWQ7IGZvciBleGFtcGxlOlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTcxNC1cXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0PTcxOD1TZWN1cmluZyB0aGUgQVBRTnMgZm9yIG91ciBleGFtcGxlXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03MjAtICAgVG8gc2VjdXJlIHRoZSBBUCBxdWV1ZXMgMDUuMDAwNCwgMDUuMDA0NywgMDUuMDBhYiwgMDUuMDBmZiwgMDYuMDAwNCwgMDYuMDA0NyxcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo3MjE6ICAgMDYuMDBhYiwgYW5kIDA2LjAwZmYgZm9yIHVzZSBieSB0aGUgdmZpb19hcCBkZXZpY2UgZHJpdmVyLCB0aGUgY29ycmVzcG9uZGluZ1xcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTcyMi0gICBBUFFOcyBjYW4gYmUgcmVtb3ZlZCBmcm9tIHRoZSBkZWZhdWx0IG1hc2tzIHVzaW5nIGVpdGhlciBvZiB0aGUgZm9sbG93aW5nXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03MzctICAgVGhpcyB3aWxsIHJlc3VsdCBpbiBBUCBxdWV1ZXMgMDUuMDAwNCwgMDUuMDA0NywgMDUuMDBhYiwgMDUuMDBmZiwgMDYuMDAwNCxcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo3Mzg6ICAgMDYuMDA0NywgMDYuMDBhYiwgYW5kIDA2LjAwZmYgZ2V0dGluZyBib3VuZCB0byB0aGUgdmZpb19hcCBkZXZpY2UgZHJpdmVyLiBUaGVcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo3Mzk6ICAgc3lzZnMgZGlyZWN0b3J5IGZvciB0aGUgdmZpb19hcCBkZXZpY2UgZHJpdmVyIHdpbGwgbm93IGNvbnRhaW4gc3ltYm9saWMgbGlua3NcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03NDAtICAgdG8gdGhlIEFQIHF1ZXVlIGRldmljZXMgYm91bmQgdG8gaXQ6Olxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNzQzLSAgICAgLi4uIFtkcml2ZXJzXVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0Ojc0NDogICAgIC4uLi4uLiBbdmZpb19hcF1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03NDUtICAgICAuLi4uLi4uLi4gWzA1LjAwMDRdXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03NTQtICAgS2VlcCBpbiBtaW5kIHRoYXQgb25seSB0eXBlIDEwIGFuZCBuZXdlciBhZGFwdGVycyAoaS5lLiwgQ0VYNCBhbmQgbGF0ZXIpXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6NzU1OiAgIGNhbiBiZSBib3VuZCB0byB0aGUgdmZpb19hcCBkZXZpY2UgZHJpdmVyLiBUaGUgcmVhc29uIGZvciB0aGlzIGlzIHRvXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNzU2LSAgIHNpbXBsaWZ5IHRoZSBpbXBsZW1lbnRhdGlvbiBieSBub3QgbmVlZGxlc3NseSBjb21wbGljYXRpbmcgdGhlIGRlc2lnbiBieVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNzYwLSAgIFRoZSBhZG1pbmlzdHJhdG9yLCB0aGVyZWZvcmUsIG11c3QgdGFrZSBjYXJlIHRvIHNlY3VyZSBvbmx5IEFQIHF1ZXVlcyB0aGF0XFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6NzYxOiAgIGNhbiBiZSBib3VuZCB0byB0aGUgdmZpb19hcCBkZXZpY2UgZHJpdmVyLiBUaGUgZGV2aWNlIHR5cGUgZm9yIGEgZ2l2ZW4gQVBcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03NjItICAgcXVldWUgZGV2aWNlIGNhbiBiZSByZWFkIGZyb20gdGhlIHBhcmVudCBjYXJkJ3Mgc3lzZnMgZGlyZWN0b3J5LiBGb3IgZXhhbXBsZSxcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTc2Ny0gICBUaGUgaHd0eXBlIG11c3QgYmUgMTAgb3IgaGlnaGVyIChDRVg0IG9yIG5ld2VyKSBpbiBvcmRlciB0byBiZSBib3VuZCB0byB0aGVcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo3Njg6ICAgdmZpb19hcCBkZXZpY2UgZHJpdmVyLlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTc2OS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03NzAtMy4gQ3JlYXRlIHRoZSBtZWRpYXRlZCBkZXZpY2VzIG5lZWRlZCB0byBjb25maWd1cmUgdGhlIEFQIG1hdHJpeGVzIGZvciB0aGVcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo3NzE6ICAgdGhyZWUgZ3Vlc3RzIGFuZCB0byBwcm92aWRlIGFuIGludGVyZmFjZSB0byB0aGUgdmZpb19hcCBkcml2ZXIgZm9yXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNzcyLSAgIHVzZSBieSB0aGUgZ3Vlc3RzOjpcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03NzMtXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6Nzc0OiAgICAgL3N5cy9kZXZpY2VzL3ZmaW9fYXAvbWF0cml4L1xcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTc3NS0gICAgIC0tLSBbbWRldl9zdXBwb3J0ZWRfdHlwZXNdXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6Nzc2OiAgICAgLS0tLS0tIFt2ZmlvX2FwLXBhc3N0aHJvdWdoXSAocGFzc3Rocm91Z2ggdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UgdHlwZSlcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03NzctICAgICAtLS0tLS0tLS0gY3JlYXRlXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03OTUtXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6Nzk2OiAgICAgL3N5cy9kZXZpY2VzL3ZmaW9fYXAvbWF0cml4L1xcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTc5Ny0gICAgIC0tLSBbbWRldl9zdXBwb3J0ZWRfdHlwZXNdXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6Nzk4OiAgICAgLS0tLS0tIFt2ZmlvX2FwLXBhc3N0aHJvdWdoXVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTc5OS0gICAgIC0tLS0tLS0tLSBbZGV2aWNlc11cXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTgyNi1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo4Mjc6ICAgTm90ZSAqKioqKjogVGhlIHZmaW9fYXAgbWRldnMgZG8gbm90IHBlcnNpc3QgYWNyb3NzIHJlYm9vdHMgdW5sZXNzIHRoZVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTgyOC0gICAgICAgICAgICAgICBtZGV2Y3RsIHRvb2wgaXMgdXNlZCB0byBjcmVhdGUgYW5kIHBlcnNpc3QgdGhlbS5cXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTg3OS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo4ODA6ICAgICAtIE11c3Qgb25seSBiZSBhdmFpbGFibGUgdG8gdGhlIHZmaW9fYXAgZGV2aWNlIGRyaXZlciBhcyBzcGVjaWZpZWQgaW4gdGhlXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtODgxLSAgICAgICBzeXNmcyAvc3lzL2J1cy9hcC9hcG1hc2sgYW5kIC9zeXMvYnVzL2FwL2FxbWFzayBhdHRyaWJ1dGUgZmlsZXMuIElmIGV2ZW5cXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTg4NC1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo4ODU6ICAgICAtIE11c3QgTk9UIGJlIGFzc2lnbmVkIHRvIGFub3RoZXIgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UuIElmIGV2ZW4gb25lIEFQUU5cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo4ODY6ICAgICAgIGlzIGFzc2lnbmVkIHRvIGFub3RoZXIgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UsIHRoZSBvcGVyYXRpb24gd2lsbFxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTg4Ny0gICAgICAgdGVybWluYXRlIHdpdGggYW4gZXJyb3IgKEVCVVNZKS5cXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTkwNS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5MDY6ICAgICAtIE11c3Qgb25seSBiZSBhdmFpbGFibGUgdG8gdGhlIHZmaW9fYXAgZGV2aWNlIGRyaXZlciBhcyBzcGVjaWZpZWQgaW4gdGhlXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTA3LSAgICAgICBzeXNmcyAvc3lzL2J1cy9hcC9hcG1hc2sgYW5kIC9zeXMvYnVzL2FwL2FxbWFzayBhdHRyaWJ1dGUgZmlsZXMuIElmIGV2ZW5cXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTkxMC1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5MTE6ICAgICAtIE11c3QgTk9UIGJlIGFzc2lnbmVkIHRvIGFub3RoZXIgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UuIElmIGV2ZW4gb25lIEFQUU5cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5MTI6ICAgICAgIGlzIGFzc2lnbmVkIHRvIGFub3RoZXIgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UsIHRoZSBvcGVyYXRpb24gd2lsbFxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTkxMy0gICAgICAgdGVybWluYXRlIHdpdGggYW4gZXJyb3IgKEVCVVNZKS5cXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTkyOC0gICAgIC91c3IvYmluL3FlbXUtc3lzdGVtLXMzOTB4IC4uLiAtY3B1IGhvc3QsYXA9b24sYXBxY2k9b24sYXBmdD1vbixhcHFpPW9uIFxcXFxcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5Mjk6XFx0LWRldmljZSB2ZmlvLWFwLHN5c2ZzZGV2PS9zeXMvZGV2aWNlcy92ZmlvX2FwL21hdHJpeC8kdXVpZDEgLi4uXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTMwLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTMzLSAgICAgL3Vzci9iaW4vcWVtdS1zeXN0ZW0tczM5MHggLi4uIC1jcHUgaG9zdCxhcD1vbixhcHFjaT1vbixhcGZ0PW9uLGFwcWk9b24gXFxcXFxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjkzNDpcXHQtZGV2aWNlIHZmaW8tYXAsc3lzZnNkZXY9L3N5cy9kZXZpY2VzL3ZmaW9fYXAvbWF0cml4LyR1dWlkMiAuLi5cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC05MzUtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC05MzgtICAgICAvdXNyL2Jpbi9xZW11LXN5c3RlbS1zMzkweCAuLi4gLWNwdSBob3N0LGFwPW9uLGFwcWNpPW9uLGFwZnQ9b24sYXBxaT1vbiBcXFxcXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6OTM5OlxcdC1kZXZpY2UgdmZpby1hcCxzeXNmc2Rldj0vc3lzL2RldmljZXMvdmZpb19hcC9tYXRyaXgvJHV1aWQzIC4uLlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTk0MC1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5NDE6V2hlbiB0aGUgZ3Vlc3QgaXMgc2h1dCBkb3duLCB0aGUgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2VzIG1heSBiZSByZW1vdmVkLlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTk0Mi1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5NDM6VXNpbmcgb3VyIGV4YW1wbGUgYWdhaW4sIHRvIHJlbW92ZSB0aGUgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UgJHV1aWQxOjpcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC05NDQtXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6OTQ1OiAgIC9zeXMvZGV2aWNlcy92ZmlvX2FwL21hdHJpeC9cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC05NDYtICAgICAgLS0tIFttZGV2X3N1cHBvcnRlZF90eXBlc11cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5NDc6ICAgICAgLS0tLS0tIFt2ZmlvX2FwLXBhc3N0aHJvdWdoXVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTk0OC0gICAgICAtLS0tLS0tLS0gW2RldmljZXNdXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdD05NTg9YWxsIG9mIHRoZSBzdGVwcyBzdGFydGluZyB3aXRoIHN0ZXAgMyB3aWxsIGhhdmUgdG8gYmUgcGVyZm9ybWVkIGFnYWluLiBOb3RlXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6OTU5OnRoYXQgdGhlIHJlbW92ZSB3aWxsIGZhaWwgaWYgYSBndWVzdCB1c2luZyB0aGUgdmZpb19hcCBtZGV2IGlzIHN0aWxsIHJ1bm5pbmcuXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTYwLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0Ojk2MTpJdCBpcyBub3QgbmVjZXNzYXJ5IHRvIHJlbW92ZSBhIHZmaW9fYXAgbWRldiwgYnV0IG9uZSBtYXkgd2FudCB0b1xcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTk2Mi1yZW1vdmUgaXQgaWYgbm8gZ3Vlc3Qgd2lsbCB1c2UgaXQgZHVyaW5nIHRoZSByZW1haW5pbmcgbGlmZXRpbWUgb2YgdGhlIGxpbnV4XFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6OTYzOmhvc3QuIElmIHRoZSB2ZmlvX2FwIG1kZXYgaXMgcmVtb3ZlZCwgb25lIG1heSB3YW50IHRvIGFsc28gcmVjb25maWd1cmVcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC05NjQtdGhlIHBvb2wgb2YgYWRhcHRlcnMgYW5kIHF1ZXVlcyByZXNlcnZlZCBmb3IgdXNlIGJ5IHRoZSBkZWZhdWx0IGRyaXZlcnMuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdD05Njg9QW4gYWRhcHRlciwgZG9tYWluIG9yIGNvbnRyb2wgZG9tYWluIG1heSBiZSBob3QgcGx1Z2dlZCBpbnRvIGEgcnVubmluZyBLVk1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5Njk6Z3Vlc3QgYnkgYXNzaWduaW5nIGl0IHRvIHRoZSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSBiZWluZyB1c2VkIGJ5IHRoZSBndWVzdCBpZlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTk3MC10aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDpcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTk3Ni0gIGFkYXB0ZXIgYmVpbmcgYXNzaWduZWQgYW5kIHRoZSBBUFFJcyBvZiB0aGUgZG9tYWlucyBhc3NpZ25lZCBtdXN0IHJlZmVyZW5jZSBhXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6OTc3OiAgcXVldWUgZGV2aWNlIGJvdW5kIHRvIHRoZSB2ZmlvX2FwIGRldmljZSBkcml2ZXIuXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTc4LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTgwLSAgY29tcHJpc2VkIG9mIHRoZSBBUFFJIG9mIHRoZSBkb21haW4gYmVpbmcgYXNzaWduZWQgYW5kIHRoZSBBUElEcyBvZiB0aGVcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5ODE6ICBhZGFwdGVycyBhc3NpZ25lZCBtdXN0IHJlZmVyZW5jZSBhIHF1ZXVlIGRldmljZSBib3VuZCB0byB0aGUgdmZpb19hcCBkZXZpY2VcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC05ODItICBkcml2ZXIuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdD05ODQ9QW4gYWRhcHRlciwgZG9tYWluIG9yIGNvbnRyb2wgZG9tYWluIG1heSBiZSBob3QgdW5wbHVnZ2VkIGZyb20gYSBydW5uaW5nIEtWTVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0Ojk4NTpndWVzdCBieSB1bmFzc2lnbmluZyBpdCBmcm9tIHRoZSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSBiZWluZyB1c2VkIGJ5IHRoZVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTk4Ni1ndWVzdC5cXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0PTk5MD1PdmVyLXByb3Zpc2lvbmluZyBpcyBkZWZpbmVkIGhlcmVpbiBhcyB0aGUgYXNzaWdubWVudCBvZiBhZGFwdGVycyBvciBkb21haW5zIHRvXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6OTkxOmEgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UgdGhhdCBkbyBub3QgcmVmZXJlbmNlIEFQIGRldmljZXMgaW4gdGhlIGhvc3QncyBBUFxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTk5Mi1jb25maWd1cmF0aW9uLiBUaGUgaWRlYSBoZXJlIGlzIHRoYXQgd2hlbiB0aGUgYWRhcHRlciBvciBkb21haW4gYmVjb21lc1xcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0PTk5Mz1hdmFpbGFibGUsIGl0IHdpbGwgYmUgYXV0b21hdGljYWxseSBob3QtcGx1Z2dlZCBpbnRvIHRoZSBLVk0gZ3Vlc3QgdXNpbmdcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5OTQ6dGhlIHZmaW9fYXAgbWVkaWF0ZWQgZGV2aWNlIHRvIHdoaWNoIGl0IGlzIGFzc2lnbmVkIGFzIGxvbmcgYXMgZWFjaCBuZXcgQVBRTlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0Ojk5NTpyZXN1bHRpbmcgZnJvbSBwbHVnZ2luZyBpdCBpbiByZWZlcmVuY2VzIGEgcXVldWUgZGV2aWNlIGJvdW5kIHRvIHRoZSB2ZmlvX2FwXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTk2LWRldmljZSBkcml2ZXIuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdD05OTg9RHJpdmVyIEZlYXR1cmVzXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTk5LT09PT09PT09PT09PT09PVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjEwMDA6VGhlIHZmaW9fYXAgZHJpdmVyIGV4cG9zZXMgYSBzeXNmcyBmaWxlIGNvbnRhaW5pbmcgc3VwcG9ydGVkIGZlYXR1cmVzLlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTEwMDEtVGhpcyBleGlzdHMgc28gdGhpcmQgcGFydHkgdG9vbHMgKGxpa2UgTGlidmlydCBhbmQgbWRldmN0bCkgY2FuIHF1ZXJ5IHRoZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q9MTAzMT1pbnRlcnZlbnRpb24gYnkgYSBzeXN0ZW0gYWRtaW5pc3RyYXRvci4gQmVmb3JlIGEgS1ZNIGd1ZXN0IGNhbiBiZSBtaWdyYXRlZCxcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoxMDMyOnRoZSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSBtdXN0IGJlIHJlbW92ZWQuIFVuZm9ydHVuYXRlbHksIGl0IGNhbiBub3QgYmVcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoxMDMzOnJlbW92ZWQgbWFudWFsbHkgKGkuZS4sIGVjaG8gMSBcXHUwMDNlIC9zeXMvZGV2aWNlcy92ZmlvX2FwL21hdHJpeC8kVVVJRC9yZW1vdmUpIHdoaWxlXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMTAzNC10aGUgbWRldiBpcyBpbiB1c2UgYnkgYSBLVk0gZ3Vlc3QuIElmIHRoZSBndWVzdCBpcyBiZWluZyBlbXVsYXRlZCBieSBRRU1VLFxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0PTEwMzU9aXRzIG1kZXYgY2FuIGJlIGhvdCB1bnBsdWdnZWQgZnJvbSB0aGUgZ3Vlc3QgaW4gb25lIG9mIHR3byB3YXlzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMTA1OS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoxMDYwOiAgICAgIEZvciBleGFtcGxlLCB0byBob3QgdW5wbHVnIHRoZSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSBpZGVudGlmaWVkIG9uIHRoZVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTEwNjEtICAgICAgcWVtdSBjb21tYW5kIGxpbmUgd2l0aCAnaWQ9aG9zdGRldjAnIGZyb20gdGhlIGd1ZXN0IG5hbWVkICdteS1ndWVzdCc6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0xMDY2LVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjEwNjc6Mi4gQSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSBjYW4gYmUgaG90IHVucGx1Z2dlZCBieSBhdHRhY2hpbmcgdGhlIHFlbXUgbW9uaXRvclxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTEwNjgtICAgdG8gdGhlIGd1ZXN0IGFuZCB1c2luZyB0aGUgZm9sbG93aW5nIHFlbXUgbW9uaXRvciBjb21tYW5kOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMTA3MS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoxMDcyOiAgICAgIEZvciBleGFtcGxlLCB0byBob3QgdW5wbHVnIHRoZSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSB0aGF0IHdhcyBzcGVjaWZpZWRcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0xMDczLSAgICAgIG9uIHRoZSBxZW11IGNvbW1hbmQgbGluZSB3aXRoICdpZD1ob3N0ZGV2MCcgd2hlbiB0aGUgZ3Vlc3Qgd2FzIHN0YXJ0ZWQ6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdD0xMDc3PUFmdGVyIGxpdmUgbWlncmF0aW9uIG9mIHRoZSBLVk0gZ3Vlc3QgY29tcGxldGVzLCBhbiBBUCBjb25maWd1cmF0aW9uIGNhbiBiZVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjEwNzg6cmVzdG9yZWQgdG8gdGhlIEtWTSBndWVzdCBieSBob3QgcGx1Z2dpbmcgYSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSBvbiB0aGUgdGFyZ2V0XFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMTA3OS1zeXN0ZW0gaW50byB0aGUgZ3Vlc3QgaW4gb25lIG9mIHR3byB3YXlzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMTEwNC1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoxMTA1OiAgICAgIEZvciBleGFtcGxlLCB0byBob3QgcGx1ZyB0aGUgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2VcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0xMTA2LSAgICAgIDYyMTc3ODgzLWYxYmItNDdmMC05MTRkLTMyYTIyZTNhODgwNCBpbnRvIHRoZSBndWVzdCBuYW1lZCAnbXktZ3Vlc3QnIHdpdGhcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTExMTAtICAgICAgXFxcImRldmljZV9hZGQgdmZpby1hcCxcXFxcXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MTExMTogICAgICBzeXNmc2Rldj0vc3lzL2RldmljZXMvdmZpb19hcC9tYXRyaXgvNjIxNzc4ODMtZjFiYi00N2YwLTkxNGQtMzJhMjJlM2E4ODA0LFxcXFxcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0xMTEyLSAgICAgIGlkPWhvc3RkZXYwXFxcIlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTExMTMtXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MTExNDoyLiBBIHZmaW9fYXAgbWVkaWF0ZWQgZGV2aWNlIGNhbiBiZSBob3QgcGx1Z2dlZCBieSBhdHRhY2hpbmcgdGhlIHFlbXUgbW9uaXRvclxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTExMTUtICAgdG8gdGhlIGd1ZXN0IGFuZCB1c2luZyB0aGUgZm9sbG93aW5nIHFlbXUgbW9uaXRvciBjb21tYW5kOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMTExOC1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoxMTE5OiAgICAgIEZvciBleGFtcGxlLCB0byBwbHVnIHRoZSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTExMjAtICAgICAgNjIxNzc4ODMtZjFiYi00N2YwLTkxNGQtMzJhMjJlM2E4ODA0IGludG8gdGhlIGd1ZXN0IHdpdGggdGhlIGRldmljZS1pZFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMTEyMy0gICAgICAgICAoUUVNVSkgZGV2aWNlLWFkZCBcXFwidmZpby1hcCxcXFxcXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MTEyNDogICAgICAgICBzeXNmc2Rldj0vc3lzL2RldmljZXMvdmZpb19hcC9tYXRyaXgvNjIxNzc4ODMtZjFiYi00N2YwLTkxNGQtMzJhMjJlM2E4ODA0LFxcXFxcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0xMTI1LSAgICAgICAgIGlkPWhvc3RkZXYwXFxcIlxcbi0tXFxuTUFJTlRBSU5FUlM9MjM2MDM9RjpcXHREb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwKlxcbk1BSU5UQUlORVJTOjIzNjA0OkY6XFx0ZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwKlxcbk1BSU5UQUlORVJTLTIzNjA1LVxcbi0tXFxuYXJjaC9zMzkwL0tjb25maWc9ODM0PWNvbmZpZyBWRklPX0FQXFxuLS1cXG5hcmNoL3MzOTAvS2NvbmZpZy04NDUtXFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuYXJjaC9zMzkwL0tjb25maWc6ODQ2OlxcdCAgd2lsbCBiZSBjYWxsZWQgdmZpb19hcC5cXG5hcmNoL3MzOTAvS2NvbmZpZy04NDctXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3ByaXYuYz01NzA9Ym9vbCBrdm1fczM5MF9pc19ncGFfaW5fbWVtc2xvdChzdHJ1Y3Qga3ZtICprdm0sIGdwYV90IGdwYSlcXG4tLVxcbmFyY2gvczM5MC9rdm0vcHJpdi5jLTU3My19XFxuYXJjaC9zMzkwL2t2bS9wcml2LmM6NTc0OkVYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVMoa3ZtX3MzOTBfaXNfZ3BhX2luX21lbXNsb3QsIFxcXCJ2ZmlvX2FwXFxcIik7XFxuYXJjaC9zMzkwL2t2bS9wcml2LmMtNTc1LSNlbmRpZlxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9NYWtlZmlsZT0zND1vYmotJChDT05GSUdfUEtFWV9VVikgKz0gcGtleS11di5vXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL01ha2VmaWxlLTM2LSMgYWRqdW5jdCBwcm9jZXNzb3IgbWF0cml4XFxuZHJpdmVycy9zMzkwL2NyeXB0by9NYWtlZmlsZTozNzp2ZmlvX2FwLW9ianMgOj0gdmZpb19hcF9kcnYubyB2ZmlvX2FwX29wcy5vXFxuZHJpdmVycy9zMzkwL2NyeXB0by9NYWtlZmlsZTozODpvYmotJChDT05GSUdfVkZJT19BUCkgKz0gdmZpb19hcC5vXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZGVidWcuaC0xOS0jZGVmaW5lIFZGSU9fQVBfREJGKC4uLilcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2RlYnVnLmg6MjA6XFx0ZGVidWdfc3ByaW50Zl9ldmVudCh2ZmlvX2FwX2RiZl9pbmZvLCAjI19fVkFfQVJHU19fKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kZWJ1Zy5oLTIxLSNkZWZpbmUgVkZJT19BUF9EQkZfRVJSKC4uLilcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2RlYnVnLmg6MjI6XFx0ZGVidWdfc3ByaW50Zl9ldmVudCh2ZmlvX2FwX2RiZl9pbmZvLCBEQkZfRVJSLCAjI19fVkFfQVJHU19fKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kZWJ1Zy5oLTIzLSNkZWZpbmUgVkZJT19BUF9EQkZfV0FSTiguLi4pXFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kZWJ1Zy5oOjI0OlxcdGRlYnVnX3NwcmludGZfZXZlbnQodmZpb19hcF9kYmZfaW5mbywgREJGX1dBUk4sICMjX19WQV9BUkdTX18pXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2RlYnVnLmgtMjUtI2RlZmluZSBWRklPX0FQX0RCRl9JTkZPKC4uLilcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2RlYnVnLmg6MjY6XFx0ZGVidWdfc3ByaW50Zl9ldmVudCh2ZmlvX2FwX2RiZl9pbmZvLCBEQkZfSU5GTywgIyNfX1ZBX0FSR1NfXylcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZGVidWcuaC0yNy0jZGVmaW5lIFZGSU9fQVBfREJGX0RCRyguLi4pXFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kZWJ1Zy5oOjI4OlxcdGRlYnVnX3NwcmludGZfZXZlbnQodmZpb19hcF9kYmZfaW5mbywgREJGX0RFQlVHLCAjI19fVkFfQVJHU19fKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kZWJ1Zy5oLTI5LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kZWJ1Zy5oOjMwOmV4dGVybiBkZWJ1Z19pbmZvX3QgKnZmaW9fYXBfZGJmX2luZm87XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2RlYnVnLmgtMzEtXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTUtI2luY2x1ZGUgXFx1MDAzY2FzbS9mYWNpbGl0eS5oXFx1MDAzZVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxNjojaW5jbHVkZSBcXFwidmZpb19hcF9wcml2YXRlLmhcXFwiXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjE3OiNpbmNsdWRlIFxcXCJ2ZmlvX2FwX2RlYnVnLmhcXFwiXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE4LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxOTojZGVmaW5lIFZGSU9fQVBfUk9PVF9OQU1FIFxcXCJ2ZmlvX2FwXFxcIlxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0yMC0jZGVmaW5lIFZGSU9fQVBfREVWX05BTUUgXFxcIm1hdHJpeFxcXCJcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYz0yNj1zdHJ1Y3QgYXBfbWF0cml4X2RldiAqbWF0cml4X2RldjtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6Mjc6ZGVidWdfaW5mb190ICp2ZmlvX2FwX2RiZl9pbmZvO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0yOC1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYz00ND1zdGF0aWMgc3RydWN0IGFwX2RldmljZV9pZCBhcF9xdWV1ZV9pZHNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy01Ny1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6NTg6c3RhdGljIHN0cnVjdCBhcF9kcml2ZXIgdmZpb19hcF9kcnYgPSB7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjU5OlxcdC5wcm9iZSA9IHZmaW9fYXBfbWRldl9wcm9iZV9xdWV1ZSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6NjA6XFx0LnJlbW92ZSA9IHZmaW9fYXBfbWRldl9yZW1vdmVfcXVldWUsXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjYxOlxcdC5pbl91c2UgPSB2ZmlvX2FwX21kZXZfcmVzb3VyY2VfaW5fdXNlLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzo2MjpcXHQub25fY29uZmlnX2NoYW5nZWQgPSB2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzo2MzpcXHQub25fc2Nhbl9jb21wbGV0ZSA9IHZmaW9fYXBfb25fc2Nhbl9jb21wbGV0ZSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtNjQtXFx0LmlkcyA9IGFwX3F1ZXVlX2lkcyxcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy02Ni1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6Njc6c3RhdGljIHZvaWQgdmZpb19hcF9tYXRyaXhfZGV2X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy02OC17XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM9Nzk9c3RhdGljIHN0cnVjdCBkZXZpY2VfZHJpdmVyIG1hdHJpeF9kcml2ZXIgPSB7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjgwOlxcdC5uYW1lID0gXFxcInZmaW9fYXBcXFwiLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy04MS1cXHQuYnVzID0gXFx1MDAyNm1hdHJpeF9idXMsXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtODUtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjg2OnN0YXRpYyBpbnQgdmZpb19hcF9tYXRyaXhfZGV2X2NyZWF0ZSh2b2lkKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy04Ny17XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTE4LVxcdG1hdHJpeF9kZXYtXFx1MDAzZWRldmljZS5idXMgPSBcXHUwMDI2bWF0cml4X2J1cztcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTE5OlxcdG1hdHJpeF9kZXYtXFx1MDAzZWRldmljZS5yZWxlYXNlID0gdmZpb19hcF9tYXRyaXhfZGV2X3JlbGVhc2U7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjEyMDpcXHRtYXRyaXhfZGV2LVxcdTAwM2V2ZmlvX2FwX2RydiA9IFxcdTAwMjZ2ZmlvX2FwX2RydjtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTIxLVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE0Mi1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTQzOnN0YXRpYyB2b2lkIHZmaW9fYXBfbWF0cml4X2Rldl9kZXN0cm95KHZvaWQpXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE0NC17XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTUyLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxNTM6c3RhdGljIGludCBfX2luaXQgdmZpb19hcF9kYmZfaW5mb19pbml0KHZvaWQpXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE1NC17XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjE1NTpcXHR2ZmlvX2FwX2RiZl9pbmZvID0gZGVidWdfcmVnaXN0ZXIoXFxcInZmaW9fYXBcXFwiLCAxLCAxLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xNTYtXFx0XFx0XFx0XFx0XFx0ICBEQkZfTUFYX1NQUklOVEZfQVJHUyAqIHNpemVvZihsb25nKSk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE1Ny1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTU4OlxcdGlmICghdmZpb19hcF9kYmZfaW5mbylcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTU5LVxcdFxcdHJldHVybiAtRU5PRU5UO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xNjAtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjE2MTpcXHRkZWJ1Z19yZWdpc3Rlcl92aWV3KHZmaW9fYXBfZGJmX2luZm8sIFxcdTAwMjZkZWJ1Z19zcHJpbnRmX3ZpZXcpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxNjI6XFx0ZGVidWdfc2V0X2xldmVsKHZmaW9fYXBfZGJmX2luZm8sIERCRl9XQVJOKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTYzLVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE2Ni1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTY3OnN0YXRpYyBpbnQgX19pbml0IHZmaW9fYXBfaW5pdCh2b2lkKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xNjgte1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE3MC1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTcxOlxcdHJldCA9IHZmaW9fYXBfZGJmX2luZm9faW5pdCgpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xNzItXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xNzgtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjE3OTpcXHRyZXQgPSB2ZmlvX2FwX21hdHJpeF9kZXZfY3JlYXRlKCk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE4MC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE4Mi1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTgzOlxcdHJldCA9IGFwX2RyaXZlcl9yZWdpc3RlcihcXHUwMDI2dmZpb19hcF9kcnYsIFRISVNfTU9EVUxFLCBWRklPX0FQX0RSVl9OQU1FKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTg0LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTg1OlxcdFxcdHZmaW9fYXBfbWF0cml4X2Rldl9kZXN0cm95KCk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE4Ni1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE4OC1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTg5OlxcdHJldCA9IHZmaW9fYXBfbWRldl9yZWdpc3RlcigpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xOTAtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxOTE6XFx0XFx0YXBfZHJpdmVyX3VucmVnaXN0ZXIoXFx1MDAyNnZmaW9fYXBfZHJ2KTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTkyOlxcdFxcdHZmaW9fYXBfbWF0cml4X2Rldl9kZXN0cm95KCk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE5My1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xOTktXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjIwMDpzdGF0aWMgdm9pZCBfX2V4aXQgdmZpb19hcF9leGl0KHZvaWQpXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTIwMS17XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjIwMjpcXHR2ZmlvX2FwX21kZXZfdW5yZWdpc3RlcigpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoyMDM6XFx0YXBfZHJpdmVyX3VucmVnaXN0ZXIoXFx1MDAyNnZmaW9fYXBfZHJ2KTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MjA0OlxcdHZmaW9fYXBfbWF0cml4X2Rldl9kZXN0cm95KCk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjIwNTpcXHRkZWJ1Z191bnJlZ2lzdGVyKHZmaW9fYXBfZGJmX2luZm8pO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0yMDYtfVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0yMDctXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjIwODptb2R1bGVfaW5pdCh2ZmlvX2FwX2luaXQpO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNToxOC40NjMxODEzMjlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk4OTU1NjcxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBmb3IgVkZJTy1BUCBFeHBsb2l0YXRpb24gdmlhIFN5emthbGxlcioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyB0aGF0IHRoZSBgdmZpb19hcGAgbW9kdWxlIHNlZW1zIHRvIHJlZ2lzdGVyIGEgbWF0cml4IGRldmljZSwgYW5kIHRoZW4gYW4gbWRldiBkcml2ZXIuIFRoYXQncyB0aGUgc2V0dXAuIEFuZCBTeXprYWxsZXIsIHdoaWNoIEknbSB2ZXJ5IGZhbWlsaWFyIHdpdGgsIGNhbiBjcmVhdGUgdGhlc2UgbWRldnMsIHdoaWNoIGltbWVkaWF0ZWx5IHJhaXNlcyBhIGNyaXRpY2FsIHF1ZXN0aW9uOiBDYW4gd2UgcmVhY2ggYW5kIGV4cGxvaXQgYHZmaW9fYXBgIGZ1bmN0aW9uYWxpdHkgZXZlbiB3aXRob3V0IHRoZSBwcmVzZW5jZSBvZiBwaHlzaWNhbCBBUCBoYXJkd2FyZT9cblxuTXkgaHlwb3RoZXNpcyByZXN0cyBvbiB0aGF0IGluaXRpYWwgcXVlc3Rpb24uIEknbSBnb2luZyB0byBkaWcgYSBsaXR0bGUgZGVlcGVyLCBJJ20gZ29pbmcgdG8gY29uc2lkZXIgdGhlIGB2ZmlvX2FwX21hdHJpeF9kZXZfY3JlYXRlYCBmdW5jdGlvbi4gSSBzZWUgdGhhdCBpdCBhcHBlYXJzIHRvIHN1Y2NlZWQgZXZlbiBpZiB0aGUgYHRlc3RfZmFjaWxpdHkoMTIpYCBjaGVjayBmYWlscy4gVGhhdCdzIGEga2V5IG9ic2VydmF0aW9uLCBzb21ldGhpbmcgdGhhdCBtYXkgYmUgaW1wb3J0YW50LiBUaGUgZHJpdmVyIHRoZW4gcmVnaXN0ZXJzIGl0c2VsZiB3aGljaCBsb29rcyB2ZXJ5IGludGVyZXN0aW5nLiBTbywgY2FuIFN5emthbGxlciBjcmVhdGUgYSBgdmZpb19hcGAgbWRldi4gVGhpcyBpcyB0aGUgY3J1Y2lhbCBuZXh0IHN0ZXAuXG5cbkkga25vdyBTeXprYWxsZXIgaGFzIGRlc2NyaXB0aW9ucyBmb3IgbWRldnMgaW4gZmlsZXMgbGlrZSBgc3lzL2xpbnV4L3N5c2ZzX21kZXYudHh0YC4gSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBTeXprYWxsZXIgaGFzIGRlc2NyaXB0aW9ucyBmb3IgYHZmaW9fYXBgIHNwZWNpZmljYWxseSwgYmVjYXVzZSBpZiBpdCBkb2VzLCBpdCdzIHZlcnkgbGlrZWx5IHdlIGhhdmUgYSBwb3RlbnRpYWwgYXR0YWNrIHZlY3RvciB0byBpbnZlc3RpZ2F0ZS4gVGhhdCdzIHdoZXJlIEkgbmVlZCB0byBzdGFydCBteSBzZWFyY2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5NDQ5LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE1OjI0LjQ1Mjc0MTE1MloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUyNjg4NjksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZmaW9fYXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic3lzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTU6MjQuNDk4MDE2NzUxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5MTY3NTczMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFBhdGNoJ3MgV29ydGhpbmVzcyBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIHRoZSBwcm9tcHQganVzdCB0aHJldyBhIGN1cnZlYmFsbC4gSXQncyByZW1pbmRpbmcgbWUgdGhhdCBJIGFic29sdXRlbHkgKmNhbm5vdCogdXNlIG15IHVzdWFsIGBncmVwcGVyYCBvbiBhbnl0aGluZyB0aGF0J3MgYHN5cy8qYCBvciBoYXMgYHN5el9gIGluIGl0IGJlY2F1c2UgdGhhdCdzIGFsbCBTeXprYWxsZXIgcHNldWRvLXN5c2NhbGwgc3R1ZmYgYW5kIHdvbid0IGJlIGluIHRoZSBhY3R1YWwga2VybmVsLiBGaW5lLiBNYWtlcyBzZW5zZS4gQnV0IHdhaXQgYSBzZWMuLi4gSSBkb24ndCBzZWUgdGhpcyBgc3l6LWdyZXBwZXJgIGluIG15IGF2YWlsYWJsZSB0b29scy4gR3Vlc3MgSSdsbCBoYXZlIHRvIHVzZSBteSBicmFpbiBpbnN0ZWFkIVxuXG5MZXQncyB0aGluay4gVGhlIHBhdGNoIG1vZGlmaWVzIGB2ZmlvX2FwX21kZXZfc2V0X2t2bWAgYW5kIGB2ZmlvX2FwX21kZXZfdW5zZXRfa3ZtYC4gVGhvc2UgYXJlLCBpZiBJIHJlbWVtYmVyIGNvcnJlY3RseSwgcmVsYXRlZCB0byBWRklPIGRldmljZSBzZXR1cCBhbmQgdGVhcmRvd24g4oCTIHdoZW4gYSBWRklPIGRldmljZSBpcyBvcGVuZWQgb3IgY2xvc2VkLiBUaGUgcmVhbCBxdWVzdGlvbiBpcywgY2FuIFN5emthbGxlciAqYWN0dWFsbHkqIGNyZWF0ZSBhbmQgaW50ZXJhY3Qgd2l0aCBhIFZGSU8gQVAgZGV2aWNlIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudD9cblxuSWYgU3l6a2FsbGVyIGNhbiBnZW5lcmF0ZSB0aGUgY29kZSB0byBjcmVhdGUgYW4gbWRldiwgaXQgY2FuIG9wZW4gaXQgYXMgd2VsbC4gVGhhdCBkZXBlbmRzIG9uIHdoZXRoZXIgdGhlIGB2ZmlvX2FwYCBkcml2ZXIgaXMgZW5hYmxlZCBpbiB0eXBpY2FsIGNvbmZpZ3VyYXRpb25zLlxuXG5Ob3csIHRoZSBwcm9tcHQgYnJpbmdzIHVwIHRoZSBcIldvcnRoRnV6emluZz1mYWxzZVwiIHNjZW5hcmlvOiB1bnJlYWNoYWJsZSBjb2RlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSXQgZXhwbGljaXRseSBtZW50aW9ucyB0aGluZ3MgbGlrZSBVU0IgZ2FkZ2V0LCBNQUM4MDIxMSBIV3NpbSwgb3IgKnZlbmRvci1zcGVjaWZpYyogaGFyZHdhcmUgbGlrZSBQQ0llIHN3aXRjaGVzIG9yIEdQVXMgdGhhdCBuZWVkIGEgKnBoeXNpY2FsKiBjYXJkLCB3aGljaCBpc24ndCBlbXVsYXRlZCBieSBRRU1VLiBUaGF0J3MgdGhlIGtleS5cblxuVkZJTyBBUCBpcyBmb3IgcGFzc2luZyB0aHJvdWdoICpwaHlzaWNhbCogQVAgY2FyZHMsIGlzbid0IGl0PyBEb2VzIGl0IG5lZWQgcGh5c2ljYWwgaGFyZHdhcmUgdG8gYmUgcHJlc2VudCB0byBldmVuIGNyZWF0ZSBhbiBtZGV2PyBJIHNob3VsZCBjaGVjayBgdmZpb19hcF9tZGV2X3Byb2JlYCBhbmQgYHZmaW9fYXBfbWRldl9pbml0X2RldmAuIFRoYXQgd2lsbCBnaXZlIG1lIHRoZSBhbnN3ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5OTM4LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzkxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE1OjMxLjQxNDc3NzAyMVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU3NjI1NjAyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2ZmlvX2FwX21kZXZfcHJvYmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jPTU4PXN0YXRpYyBzdHJ1Y3QgYXBfZHJpdmVyIHZmaW9fYXBfZHJ2ID0ge1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzo1OTpcXHQucHJvYmUgPSB2ZmlvX2FwX21kZXZfcHJvYmVfcXVldWUsXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTYwLVxcdC5yZW1vdmUgPSB2ZmlvX2FwX21kZXZfcmVtb3ZlX3F1ZXVlLFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTc4Mz1zdGF0aWMgaW50IHZmaW9fYXBfbWRldl9pbml0X2RldihzdHJ1Y3QgdmZpb19kZXZpY2UgKnZkZXYpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNzk2LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo3OTc6c3RhdGljIGludCB2ZmlvX2FwX21kZXZfcHJvYmUoc3RydWN0IG1kZXZfZGV2aWNlICptZGV2KVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy03OTgte1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTIzNjk9c3RhdGljIHN0cnVjdCBtZGV2X2RyaXZlciB2ZmlvX2FwX21hdHJpeF9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjM3Ny1cXHR9LFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyMzc4OlxcdC5wcm9iZSA9IHZmaW9fYXBfbWRldl9wcm9iZSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjM3OS1cXHQucmVtb3ZlID0gdmZpb19hcF9tZGV2X3JlbW92ZSxcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yNDA1PXZvaWQgdmZpb19hcF9tZGV2X3VucmVnaXN0ZXIodm9pZClcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNDEwLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNDExOmludCB2ZmlvX2FwX21kZXZfcHJvYmVfcXVldWUoc3RydWN0IGFwX2RldmljZSAqYXBkZXYpXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI0MTIte1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaD0xNTY9dm9pZCB2ZmlvX2FwX21kZXZfdW5yZWdpc3Rlcih2b2lkKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oLTE1Ny1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oOjE1ODppbnQgdmZpb19hcF9tZGV2X3Byb2JlX3F1ZXVlKHN0cnVjdCBhcF9kZXZpY2UgKnF1ZXVlKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oLTE1OS12b2lkIHZmaW9fYXBfbWRldl9yZW1vdmVfcXVldWUoc3RydWN0IGFwX2RldmljZSAqcXVldWUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNTozMi45OTEwMzg0MjRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgyODczMzE5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIEkgdW5kZXJzdGFuZCB0aGUgc2l0dWF0aW9uOlxuXG4qKlByb2JpbmcgdGhlIENyeXB0byBIYXJkd2FyZSB3aXRoIFZGSU8tQVAqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoZSBWRklPLUFQIGltcGxlbWVudGF0aW9uIGZvciBjcnlwdG8gaGFyZHdhcmUgb24gczM5MCBzeXN0ZW1zLiBUaGUga2V5IGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gZGlzY292ZXJzIGFuZCBpbml0aWFsaXplcyB0aGUgZGV2aWNlcy4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHRoZSBgdmZpb19hcF9tZGV2X3Byb2JlYCBmdW5jdGlvbi4gVGhhdCdzIHRoZSBlbnRyeSBwb2ludCwgdGhlIGZpcnN0IHBsYWNlIHRoZSBkcml2ZXIgZ2V0cyBhIHNob3QgYXQgYSBuZXcgbWRldiwgc28gaXQncyBjcml0aWNhbCB0byBzZWUgd2hhdCBpdCdzIGRvaW5nLiBJJ20gYWxzbyBnb2luZyB0byB0cmFjayBob3cgYHZmaW9fYXBfbWRldl9pbml0X2RldmAgZml0cyBpbiBhcyBpdCBpcyB0aGUgZm9sbG93LXVwIHN0ZXAuIEnigJltIHRoaW5raW5nIHRoZXkncmUgcHJvYmFibHkgYm90aCBkZWZpbmVkIGluIGBkcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhlc2UgZnVuY3Rpb25zIGFyZSBjb25uZWN0ZWQgYW5kIHRoZSBsb2dpYyBmbG93LiBUaGlzIHNlZW1zIHRvIGJlIHRoZSBjb3JlIG9mIGhvdyB0aGUgVkZJTyBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlIHVuZGVybHlpbmcgQVAgaGFyZHdhcmUgYW5kIGhvdyBpdCBoYW5kbGVzIHRoZSBtZWRpYXRlZCBkZXZpY2UsIGFzIHdlbGwgYXMgaG93IHRoZSBoYXJkd2FyZSBpcyBkZXRlY3RlZC4gVGhpcyBpcyBhIGNydWNpYWwgYXJlYSB0byB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBhbmQgaG93IHRoZSBzeXN0ZW0gdmlydHVhbGl6ZXMgdGhlIGNyeXB0byBoYXJkd2FyZSB0byB0aGUgdXNlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE0NTAsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNTozNy44MTk3NzQyNFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTc5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDc4MyxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDc4MzpcXHRzdGF0aWMgaW50IHZmaW9fYXBfbWRldl9pbml0X2RldihzdHJ1Y3QgdmZpb19kZXZpY2UgKnZkZXYpXFxuIDc4NDpcXHR7XFxuIDc4NTpcXHRcXHRzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2ID1cXG4gNzg2OlxcdFxcdFxcdGNvbnRhaW5lcl9vZih2ZGV2LCBzdHJ1Y3QgYXBfbWF0cml4X21kZXYsIHZkZXYpO1xcbiA3ODc6XFx0XFxuIDc4ODpcXHRcXHRtYXRyaXhfbWRldi1cXHUwMDNlbWRldiA9IHRvX21kZXZfZGV2aWNlKHZkZXYtXFx1MDAzZWRldik7XFxuIDc4OTpcXHRcXHR2ZmlvX2FwX21hdHJpeF9pbml0KFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VpbmZvLCBcXHUwMDI2bWF0cml4X21kZXYtXFx1MDAzZW1hdHJpeCk7XFxuIDc5MDpcXHRcXHRtYXRyaXhfbWRldi1cXHUwMDNlcHFhcF9ob29rID0gaGFuZGxlX3BxYXA7XFxuIDc5MTpcXHRcXHR2ZmlvX2FwX21hdHJpeF9pbml0KFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VpbmZvLCBcXHUwMDI2bWF0cml4X21kZXYtXFx1MDAzZXNoYWRvd19hcGNiKTtcXG4gNzkyOlxcdFxcdGhhc2hfaW5pdChtYXRyaXhfbWRldi1cXHUwMDNlcXRhYmxlLnF1ZXVlcyk7XFxuIDc5MzpcXHRcXG4gNzk0OlxcdFxcdHJldHVybiAwO1xcbiA3OTU6XFx0fVxcbiA3OTY6XFx0XFxuIDc5NzpcXHRzdGF0aWMgaW50IHZmaW9fYXBfbWRldl9wcm9iZShzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXYpXFxuIDc5ODpcXHR7XFxuIDc5OTpcXHRcXHRzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2O1xcbiA4MDA6XFx0XFx0aW50IHJldDtcXG4gODAxOlxcdFxcbiA4MDI6XFx0XFx0bWF0cml4X21kZXYgPSB2ZmlvX2FsbG9jX2RldmljZShhcF9tYXRyaXhfbWRldiwgdmRldiwgXFx1MDAyNm1kZXYtXFx1MDAzZWRldixcXG4gODAzOlxcdFxcdFxcdFxcdFxcdFxcdFxcdTAwMjZ2ZmlvX2FwX21hdHJpeF9kZXZfb3BzKTtcXG4gODA0OlxcdFxcdGlmIChJU19FUlIobWF0cml4X21kZXYpKVxcbiA4MDU6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIobWF0cml4X21kZXYpO1xcbiA4MDY6XFx0XFxuIDgwNzpcXHRcXHRyZXQgPSB2ZmlvX3JlZ2lzdGVyX2VtdWxhdGVkX2lvbW11X2RldihcXHUwMDI2bWF0cml4X21kZXYtXFx1MDAzZXZkZXYpO1xcbiA4MDg6XFx0XFx0aWYgKHJldClcXG4gODA5OlxcdFxcdFxcdGdvdG8gZXJyX3B1dF92ZGV2O1xcbiA4MTA6XFx0XFx0bWF0cml4X21kZXYtXFx1MDAzZXJlcV90cmlnZ2VyID0gTlVMTDtcXG4gODExOlxcdFxcdG1hdHJpeF9tZGV2LVxcdTAwM2VjZmdfY2hnX3RyaWdnZXIgPSBOVUxMO1xcbiA4MTI6XFx0XFx0ZGV2X3NldF9kcnZkYXRhKFxcdTAwMjZtZGV2LVxcdTAwM2VkZXYsIG1hdHJpeF9tZGV2KTtcXG4gODEzOlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2spO1xcbiA4MTQ6XFx0XFx0bGlzdF9hZGQoXFx1MDAyNm1hdHJpeF9tZGV2LVxcdTAwM2Vub2RlLCBcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldl9saXN0KTtcXG4gODE1OlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldnNfbG9jayk7XFxuIDgxNjpcXHRcXHRyZXR1cm4gMDtcXG4gODE3OlxcdFxcbiA4MTg6XFx0ZXJyX3B1dF92ZGV2OlxcbiA4MTk6XFx0XFx0dmZpb19wdXRfZGV2aWNlKFxcdTAwMjZtYXRyaXhfbWRldi1cXHUwMDNldmRldik7XFxuIDgyMDpcXHRcXHRyZXR1cm4gcmV0O1xcbiA4MjE6XFx0fVxcbiA4MjI6XFx0XFxuIDgyMzpcXHRzdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfbGlua19xdWV1ZShzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2LFxcbiA4MjQ6XFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCB2ZmlvX2FwX3F1ZXVlICpxKVxcbiA4MjU6XFx0e1xcbiA4MjY6XFx0XFx0aWYgKCFxIHx8IHZmaW9fYXBfbWRldl9nZXRfcXVldWUobWF0cml4X21kZXYsIHEtXFx1MDAzZWFwcW4pKVxcbiA4Mjc6XFx0XFx0XFx0cmV0dXJuO1xcbiA4Mjg6XFx0XFxuIDgyOTpcXHRcXHRxLVxcdTAwM2VtYXRyaXhfbWRldiA9IG1hdHJpeF9tZGV2O1xcbiA4MzA6XFx0XFx0aGFzaF9hZGQobWF0cml4X21kZXYtXFx1MDAzZXF0YWJsZS5xdWV1ZXMsIFxcdTAwMjZxLVxcdTAwM2VtZGV2X3Fub2RlLCBxLVxcdTAwM2VhcHFuKTtcXG4gODMxOlxcdH1cXG4gODMyOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNTozNy44MTk5OTQzOFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjcxMjU2MzAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqVW5kZXJzdGFuZGluZyBtZGV2IENyZWF0aW9uIGFuZCBWRklPIEludGVyYWN0aW9uKipcblxuUmlnaHQsIHNvIEknbSBmb2N1c2luZyBvbiBob3cgdGhpcyBtZGV2IChtZWRpYXRlZCBkZXZpY2UpIGlzIGJlaW5nIGNyZWF0ZWQuIEl0J3MgYmVjb21pbmcgY2xlYXIgdGhhdCB0aGUgcHJvY2VzcyAqZG9lc24ndCogbmVjZXNzYXJpbHkgZGVwZW5kIG9uIGhhdmluZyBhbnkgcHJlLWV4aXN0aW5nIHBoeXNpY2FsIEFQIChBY2NlbGVyYXRlZCBQcm9jZXNzaW5nKSBxdWV1ZXMuIFRoYXQncyBpbnRlcmVzdGluZy4gVGhlIGtleSBoZXJlIHNlZW1zIHRvIGJlIHRoZSBhbGxvY2F0aW9uIG9mIHRoaXMgYGFwX21hdHJpeF9tZGV2YCBzdHJ1Y3R1cmUgYW5kIGl0cyBzdWJzZXF1ZW50IHJlZ2lzdHJhdGlvbi4gVGhhdCdzIHRoZSBjb3JlIG9mIHRoZSBtZGV2IGl0c2VsZi5cblxuVGhlIHJlYWwgbWFnaWMsIHRoZSBwYXJ0IHdoZXJlIHRoZSB2aXJ0dWFsIGRldmljZSBhY3R1YWxseSBob29rcyBpbnRvIEtWTSwgc2VlbXMgdG8gaGFwcGVuIGxhdGVyLCBzcGVjaWZpY2FsbHkgd2hlbiBgdmZpb19hcF9tZGV2X3NldF9rdm1gIGlzIGNhbGxlZC4gVGhhdCBtYWtlcyBzZW5zZTsgaXQncyB0aGUgcG9pbnQgd2hlcmUgd2UncmUgYWN0dWFsbHkgYXNzb2NpYXRpbmcgdGhlIHZpcnR1YWwgZGV2aWNlIHdpdGggdGhlIFZGSU8gaW5mcmFzdHJ1Y3R1cmUsIGxpbmtpbmcgaXQgdG8gYSBLVk0gaW5zdGFuY2UuXG5cblRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGF0IGxpbmthZ2UsIEkgbmVlZCB0byBjaGVjayBob3cgdGhlIGRldmljZSBpcyBvcGVuZWQgYW5kIGNvbmZpZ3VyZWQuIExldCdzIGRlbHZlIGludG8gdGhlIGZ1bmN0aW9uIGB2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2VgIHRvIHNlZSBwcmVjaXNlbHkgaG93IHRoaXMgaGFwcGVucy4gVGhhdCdzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIHNvIHRvIHNwZWFrLiBVbmRlcnN0YW5kaW5nIHRoZSBmbG93IGZyb20gYWxsb2NhdGlvbiwgcmVnaXN0cmF0aW9uIHRvIG9wZW5pbmcgdGhlIGRldmljZSBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgdW5kZXJzdGFuZGluZyBvZiB0aGUgZW50aXJlIHByb2Nlc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNzA1LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNTo0Mi40OTEyNTM2ODFaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkzMTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMDQ4LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyMDQ4OlxcdHN0YXRpYyBpbnQgdmZpb19hcF9tZGV2X29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqdmRldilcXG4yMDQ5OlxcdHtcXG4yMDUwOlxcdFxcdHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXYgPVxcbjIwNTE6XFx0XFx0XFx0Y29udGFpbmVyX29mKHZkZXYsIHN0cnVjdCBhcF9tYXRyaXhfbWRldiwgdmRldik7XFxuMjA1MjpcXHRcXG4yMDUzOlxcdFxcdGlmICghdmRldi1cXHUwMDNla3ZtKVxcbjIwNTQ6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuMjA1NTpcXHRcXG4yMDU2OlxcdFxcdHJldHVybiB2ZmlvX2FwX21kZXZfc2V0X2t2bShtYXRyaXhfbWRldiwgdmRldi1cXHUwMDNla3ZtKTtcXG4yMDU3OlxcdH1cXG4yMDU4OlxcdFxcbjIwNTk6XFx0c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X2Nsb3NlX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKnZkZXYpXFxuMjA2MDpcXHR7XFxuMjA2MTpcXHRcXHRzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2ID1cXG4yMDYyOlxcdFxcdFxcdGNvbnRhaW5lcl9vZih2ZGV2LCBzdHJ1Y3QgYXBfbWF0cml4X21kZXYsIHZkZXYpO1xcbjIwNjM6XFx0XFxuMjA2NDpcXHRcXHR2ZmlvX2FwX21kZXZfdW5zZXRfa3ZtKG1hdHJpeF9tZGV2KTtcXG4yMDY1OlxcdH1cXG4yMDY2OlxcdFxcbjIwNjc6XFx0c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X3JlcXVlc3Qoc3RydWN0IHZmaW9fZGV2aWNlICp2ZGV2LCB1bnNpZ25lZCBpbnQgY291bnQpXFxuMjA2ODpcXHR7XFxuMjA2OTpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSB2ZGV2LVxcdTAwM2VkZXY7XFxuMjA3MDpcXHRcXHRzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2O1xcbjIwNzE6XFx0XFxuMjA3MjpcXHRcXHRtYXRyaXhfbWRldiA9IGNvbnRhaW5lcl9vZih2ZGV2LCBzdHJ1Y3QgYXBfbWF0cml4X21kZXYsIHZkZXYpO1xcbjIwNzM6XFx0XFxuMjA3NDpcXHRcXHRnZXRfdXBkYXRlX2xvY2tzX2Zvcl9tZGV2KG1hdHJpeF9tZGV2KTtcXG4yMDc1OlxcdFxcbjIwNzY6XFx0XFx0aWYgKG1hdHJpeF9tZGV2LVxcdTAwM2Vrdm0pIHtcXG4yMDc3OlxcdFxcdFxcdGt2bV9hcmNoX2NyeXB0b19jbGVhcl9tYXNrcyhtYXRyaXhfbWRldi1cXHUwMDNla3ZtKTtcXG4yMDc4OlxcdFxcdFxcdHNpZ25hbF9ndWVzdF9hcF9jZmdfY2hhbmdlZChtYXRyaXhfbWRldik7XFxuMjA3OTpcXHRcXHR9XFxuMjA4MDpcXHRcXG4yMDgxOlxcdFxcdGlmIChtYXRyaXhfbWRldi1cXHUwMDNlcmVxX3RyaWdnZXIpIHtcXG4yMDgyOlxcdFxcdFxcdGlmICghKGNvdW50ICUgMTApKVxcbjIwODM6XFx0XFx0XFx0XFx0ZGV2X25vdGljZV9yYXRlbGltaXRlZChkZXYsXFxuMjA4NDpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgXFxcIlJlbGF5aW5nIGRldmljZSByZXF1ZXN0IHRvIHVzZXIgKCMldSlcXFxcblxcXCIsXFxuMjA4NTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgY291bnQpO1xcbjIwODY6XFx0XFxuMjA4NzpcXHRcXHRcXHRldmVudGZkX3NpZ25hbChtYXRyaXhfbWRldi1cXHUwMDNlcmVxX3RyaWdnZXIpO1xcbjIwODg6XFx0XFx0fSBlbHNlIGlmIChjb3VudCA9PSAwKSB7XFxuMjA4OTpcXHRcXHRcXHRkZXZfbm90aWNlKGRldixcXG4yMDkwOlxcdFxcdFxcdFxcdCAgIFxcXCJObyBkZXZpY2UgcmVxdWVzdCByZWdpc3RlcmVkLCBibG9ja2VkIHVudGlsIHJlbGVhc2VkIGJ5IHVzZXJcXFxcblxcXCIpO1xcbjIwOTE6XFx0XFx0fVxcbjIwOTI6XFx0XFxuMjA5MzpcXHRcXHRyZWxlYXNlX3VwZGF0ZV9sb2Nrc19mb3JfbWRldihtYXRyaXhfbWRldik7XFxuMjA5NDpcXHR9XFxuMjA5NTpcXHRcXG4yMDk2OlxcdHN0YXRpYyBpbnQgdmZpb19hcF9tZGV2X2dldF9kZXZpY2VfaW5mbyh1bnNpZ25lZCBsb25nIGFyZylcXG4yMDk3OlxcdHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTU6NDIuNDkxNDQ5NTExWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwNjIwMTg3NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhY2hpbmcgdGhlIFZGSU8gQVAgTG9ja2luZyBMb2dpYyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRyYWNpbmcgdGhlIGNvZGUgZmxvdy4gSXQgc2VlbXMgYHZmaW9fYXBfbWRldl9vcGVuX2RldmljZWAgY2FsbHMgYHZmaW9fYXBfbWRldl9zZXRfa3ZtYC4gVGhhdCdzIHRoZSBlbnRyeSBwb2ludC4gVGhlIGNydWNpYWwgcGFydCBoZXJlIGlzIGhvdyB3ZSBnZXQgdGhlcmUuIEl0J3MgdHJpZ2dlcmVkIGJ5IGNyZWF0aW5nIGFuZCBvcGVuaW5nIGEgVkZJTyBkZXZpY2UuIFN5emthbGxlciwgZnJvbSB3aGF0IEkgcmVjYWxsLCBoYXMgZGVzY3JpcHRpb25zIGZvciBWRklPIGFuZCBjYW4gY3JlYXRlIG1kZXZzLCBhY2NvcmRpbmcgdG8gYHN5cy9saW51eC92ZmlvLnR4dGAgb3Igc2ltaWxhci4gSSdtIHByZXR0eSBzdXJlIGl0IHN1cHBvcnRzIFZGSU8gYW5kIGNhbiBjcmVhdGUgdGhlc2UgbWRldnMsIHdoaWNoIG1lYW5zIGB2ZmlvX2FwX21kZXZfc2V0X2t2bWAgaXMgZGVmaW5pdGVseSByZWFjaGFibGUuXG5cblRoZSBwYXRjaCBpdHNlbGYgdGFyZ2V0cyBgdmZpb19hcF9tZGV2X3NldF9rdm1gLCBhbmQgaXRzIGNvdW50ZXJwYXJ0LCBgdmZpb19hcF9tZGV2X3Vuc2V0X2t2bWAsIGFsb25nIHdpdGggYGdldF91cGRhdGVfbG9ja3NfZm9yX2t2bWAgYW5kIGByZWxlYXNlX3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtYC4gR2l2ZW4gdGhlIGZ1bmN0aW9ucyBhcmUgZXhwbGljaXRseSBtZW50aW9uZWQsIHRoYXQgY29uZmlybXMgdGhlc2UgYXJlIGFsbCByZWFjaGFibGUuIFNpbmNlIHRoZSBwYXRjaCBtb2RpZmllcyB0aGVzZSBmdW5jdGlvbnMsIGl0J3MgcHJldHR5IGNsZWFyIHRoaXMgaXMgYWRkcmVzc2luZyBsb2NraW5nIGlzc3VlcyBvciwgYXQgdGhlIHZlcnkgbGVhc3QsIGFsdGVyaW5nIHRoZSBsb2NraW5nIGJlaGF2aW9yLlxuXG5HaXZlbiB0aGUgbW9kaWZpY2F0aW9ucyB0byBjb3JlIGxvY2tpbmcgbG9naWMgd2l0aGluIFZGSU8gQVAsIHRoaXMgaXMgYWJzb2x1dGVseSB3b3J0aCBmdXp6aW5nLiBUaGUgcXVlc3Rpb24gdGhhdCByZW1haW5zIGlzIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBoYXJkd2FyZSByZXN0cmljdGlvbnMgdGhhdCBuZWVkIHRvIGJlIG1ldC4gVGhhbmtmdWxseSwgdGhlcmUgYXJlIG5vdDsgc2luY2UgYHZmaW9fYXBfbWRldl9wcm9iZWAgc3VjY2VlZHMgd2l0aG91dCBhIHBoeXNpY2FsIEFQLCBgdmZpb19hcF9tZGV2X29wZW5fZGV2aWNlYCBkb2VzIG5vdCBoYXZlIGFueSBmdXJ0aGVyIHJlc3RyaWN0aW9ucy5cblxuSG93ZXZlciwgYHZmaW9fYXBfbWRldl9zZXRfa3ZtYCBkb2VzIGNoZWNrIGBrdm0tXHUwMDNlYXJjaC5jcnlwdG8uY3J5Y2JkYC4gU28gSSdtIGdvaW5nIHRvIGRpZyBkZWVwZXIgYW5kIGxvb2sgaW50byB3aGVuIGFuZCBob3cgdGhhdCBpcyBzZXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzODk1LCJPdXRwdXRUb2tlbnMiOjE2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQ5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTU6NDkuNTUzNDcxMjA3WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzk0NjU0ODczLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNyeWNiZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3QuaD01MzA9c3RydWN0IGt2bV9zMzkwX2NyeXB0byB7XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC01MzMtXFx0Y3J5cHRvX2hvb2sgKnBxYXBfaG9vaztcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDo1MzQ6XFx0X191MzIgY3J5Y2JkO1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTUzNS1cXHRfX3U4IGFlc19rdztcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF90eXBlcy5oPTEzNz1zdHJ1Y3Qga3ZtX3MzOTBfc2llX2Jsb2NrIHtcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF90eXBlcy5oLTMwNS0jZGVmaW5lIENSWUNCX0ZPUk1BVDIgMHgwMDAwMDAwM1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF90eXBlcy5oOjMwNjpcXHRfX3UzMlxcdGNyeWNiZDtcXHRcXHRcXHQvKiAweDAwZmMgKi9cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfdHlwZXMuaC0zMDctXFx0X191NjRcXHRnY3JbMTZdO1xcdFxcdC8qIDB4MDEwMCAqL1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTMxMjE9c3RhdGljIHZvaWQga3ZtX3MzOTBfc2V0X2NyeWNiX2Zvcm1hdChzdHJ1Y3Qga3ZtICprdm0pXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTMxMjIte1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzozMTIzOlxcdGt2bS1cXHUwMDNlYXJjaC5jcnlwdG8uY3J5Y2JkID0gdmlydF90b19waHlzKGt2bS1cXHUwMDNlYXJjaC5jcnlwdG8uY3J5Y2IpO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMTI0LVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMTI1LVxcdC8qIENsZWFyIHRoZSBDUllDQiBmb3JtYXQgYml0cyAtIGkuZS4sIHNldCBmb3JtYXQgMCBieSBkZWZhdWx0ICovXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjMxMjY6XFx0a3ZtLVxcdTAwM2VhcmNoLmNyeXB0by5jcnljYmQgXFx1MDAyNj0gfihDUllDQl9GT1JNQVRfTUFTSyk7XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTMxMjctXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzEzMi1cXHRpZiAoa3ZtX3MzOTBfYXB4YV9pbnN0YWxsZWQoKSlcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MzEzMzpcXHRcXHRrdm0tXFx1MDAzZWFyY2guY3J5cHRvLmNyeWNiZCB8PSBDUllDQl9GT1JNQVQyO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMTM0LVxcdGVsc2VcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MzEzNTpcXHRcXHRrdm0tXFx1MDAzZWFyY2guY3J5cHRvLmNyeWNiZCB8PSBDUllDQl9GT1JNQVQxO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMTM2LX1cXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz0zMTUzPXZvaWQga3ZtX2FyY2hfY3J5cHRvX3NldF9tYXNrcyhzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgKmFwbSxcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMTU5LVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzozMTYwOlxcdHN3aXRjaCAoa3ZtLVxcdTAwM2VhcmNoLmNyeXB0by5jcnljYmQgXFx1MDAyNiBDUllDQl9GT1JNQVRfTUFTSykge1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMTYxLVxcdGNhc2UgQ1JZQ0JfRk9STUFUMjogLyogQVBDQjEgdXNlIDI1NiBiaXRzICovXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9MzY0Mj1zdGF0aWMgdm9pZCBrdm1fczM5MF92Y3B1X2NyeXB0b19zZXR1cChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzY1MC1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MzY1MTpcXHR2Y3B1LVxcdTAwM2VhcmNoLnNpZV9ibG9jay1cXHUwMDNlY3J5Y2JkID0gdmNwdS1cXHUwMDNla3ZtLVxcdTAwM2VhcmNoLmNyeXB0by5jcnljYmQ7XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTM2NTItXFx0dmNwdS1cXHUwMDNlYXJjaC5zaWVfYmxvY2stXFx1MDAzZWVjYjMgXFx1MDAyNj0gfihFQ0IzX0FFUyB8IEVDQjNfREVBKTtcXG4tLVxcbmFyY2gvczM5MC9rdm0vcHJpdi5jPTU5Mj1zdGF0aWMgaW50IGhhbmRsZV9wcWFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvczM5MC9rdm0vcHJpdi5jLTYzMC1cXHQvKiBBUFhBIG5vdCBpbnN0YWxsZWQgYW5kIEFQSUQgZ3JlYXRlciA2NCBvciBBUFFJIGdyZWF0ZXIgMTYgKi9cXG5hcmNoL3MzOTAva3ZtL3ByaXYuYzo2MzE6XFx0aWYgKCEodmNwdS1cXHUwMDNla3ZtLVxcdTAwM2VhcmNoLmNyeXB0by5jcnljYmQgXFx1MDAyNiAweDAyKSBcXHUwMDI2XFx1MDAyNiAocmVnMCBcXHUwMDI2IDB4MDAwMGMwZjBVTCkpXFxuYXJjaC9zMzkwL2t2bS9wcml2LmMtNjMyLVxcdFxcdHJldHVybiBrdm1fczM5MF9pbmplY3RfcHJvZ3JhbV9pbnQodmNwdSwgUEdNX1NQRUNJRklDQVRJT04pO1xcbi0tXFxuYXJjaC9zMzkwL2t2bS92c2llLmM9MzE4PXN0YXRpYyBpbnQgc2hhZG93X2NyeWNiKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IHZzaWVfcGFnZSAqdnNpZV9wYWdlKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS92c2llLmMtMzIxLVxcdHN0cnVjdCBrdm1fczM5MF9zaWVfYmxvY2sgKnNjYl9vID0gdnNpZV9wYWdlLVxcdTAwM2VzY2JfbztcXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYzozMjI6XFx0Y29uc3QgdWludDMyX3QgY3J5Y2JkX28gPSBSRUFEX09OQ0Uoc2NiX28tXFx1MDAzZWNyeWNiZCk7XFxuYXJjaC9zMzkwL2t2bS92c2llLmM6MzIzOlxcdGNvbnN0IHUzMiBjcnljYl9hZGRyID0gY3J5Y2JkX28gXFx1MDAyNiAweDdmZmZmZmY4VTtcXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYy0zMjQtXFx0dW5zaWduZWQgbG9uZyAqYjEsICpiMjtcXG4tLVxcbmFyY2gvczM5MC9rdm0vdnNpZS5jLTMyOS1cXHRpbnQga2V5X21zayA9IHRlc3Rfa3ZtX2ZhY2lsaXR5KHZjcHUtXFx1MDAzZWt2bSwgNzYpO1xcbmFyY2gvczM5MC9rdm0vdnNpZS5jOjMzMDpcXHRpbnQgZm10X28gPSBjcnljYmRfbyBcXHUwMDI2IENSWUNCX0ZPUk1BVF9NQVNLO1xcbmFyY2gvczM5MC9rdm0vdnNpZS5jOjMzMTpcXHRpbnQgZm10X2ggPSB2Y3B1LVxcdTAwM2VhcmNoLnNpZV9ibG9jay1cXHUwMDNlY3J5Y2JkIFxcdTAwMjYgQ1JZQ0JfRk9STUFUX01BU0s7XFxuYXJjaC9zMzkwL2t2bS92c2llLmMtMzMyLVxcdGludCByZXQgPSAwO1xcbmFyY2gvczM5MC9rdm0vdnNpZS5jLTMzMy1cXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYzozMzQ6XFx0c2NiX3MtXFx1MDAzZWNyeWNiZCA9IDA7XFxuYXJjaC9zMzkwL2t2bS92c2llLmMtMzM1LVxcbi0tXFxuYXJjaC9zMzkwL2t2bS92c2llLmMtMzg4LVxcdH1cXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYzozODk6XFx0c2NiX3MtXFx1MDAzZWNyeWNiZCA9ICh1MzIpdmlydF90b19waHlzKFxcdTAwMjZ2c2llX3BhZ2UtXFx1MDAzZWNyeWNiKSB8IENSWUNCX0ZPUk1BVDI7XFxuYXJjaC9zMzkwL2t2bS92c2llLmMtMzkwLVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTE4Mjg9c3RhdGljIGludCB2ZmlvX2FwX21kZXZfc2V0X2t2bShzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2LFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE4MzAte1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoxODMxOlxcdGlmIChrdm0tXFx1MDAzZWFyY2guY3J5cHRvLmNyeWNiZCkge1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xODMyLVxcdFxcdGdldF91cGRhdGVfbG9ja3NfZm9yX2t2bShrdm0pO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTE4Nzk9c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X3Vuc2V0X2t2bShzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2KVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE4ODItXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE4ODM6XFx0aWYgKGt2bSBcXHUwMDI2XFx1MDAyNiBrdm0tXFx1MDAzZWFyY2guY3J5cHRvLmNyeWNiZCkge1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xODg0LVxcdFxcdGdldF91cGRhdGVfbG9ja3NfZm9yX2t2bShrdm0pO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvczM5MC9zaWUuaD0yMD1zdHJ1Y3Qga3ZtX3MzOTBfc2llX2Jsb2NrIHtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3MzOTAvc2llLmgtMjEzLSNkZWZpbmUgQ1JZQ0JfRk9STUFUMlxcdFxcdDB4MDAwMDAwMDNcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9zMzkwL3NpZS5oOjIxNDpcXHRfX3UzMlxcdGNyeWNiZDtcXHRcXHRcXHQvKiAweDAwZmMgKi9cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9zMzkwL3NpZS5oLTIxNS1cXHRfX3U2NFxcdGdjclsxNl07XFx0XFx0LyogMHgwMTAwICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE1OjUxLjk0ODEzMzA2WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk3OTI1OTg0MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCdzIEltcGFjdCBvbiBWRklPLUFQIGFuZCBLVk0gSW50ZWdyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpczogYGt2bV9zMzkwX3NldF9jcnljYl9mb3JtYXRgIHNldHMgdGhlIGBjcnljYmRgIHN0cnVjdHVyZS4gVGhhdCBmdW5jdGlvbiBpcyBjYWxsZWQgZHVyaW5nIHRoZSBLVk0gVk0gaW5pdGlhbGl6YXRpb24gdmlhIGBrdm1fczM5MF9jcnlwdG9faW5pdGAsIGFuZCB1bHRpbWF0ZWx5IGZyb20gYGt2bV9hcmNoX2luaXRfdm1gLiBUaGlzIG1lYW5zIGBrdm0tXHUwMDNlYXJjaC5jcnlwdG8uY3J5Y2JkYCBpcyBwb3B1bGF0ZWQgd2hlbiBhIEtWTSBWTSBpbnN0YW5jZSBpcyBjcmVhdGVkLiBUaGF0J3Mga2V5IGJlY2F1c2UgYHZmaW9fYXBfbWRldl9zZXRfa3ZtYCAqc2hvdWxkKiBleGVjdXRlIGl0cyBjb3JlIGxvZ2ljIGlmIGEgYGt2bWAgcG9pbnRlciBpcyBwYXNzZWQgaW4uIFJpZ2h0LCBhbmQgYHZmaW9fYXBfbWRldl9zZXRfa3ZtYCBpcyAqY2FsbGVkKiBmcm9tIGB2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2VgIGFuZCBpdCB1c2VzIGB2ZGV2LVx1MDAzZWt2bWAsIHNvIGB2ZGV2LVx1MDAzZWt2bWAgYmVjb21lcyBhc3NpZ25lZCB3aGVuIGEgVkZJTyBkZXZpY2UgaXMgY29ubmVjdGVkIHRvIGEgS1ZNIGluc3RhbmNlLiBTbywgdXNpbmcgU3l6a2FsbGVyLCB3aGljaCBjYW4gb3BlbiB0aGUgVkZJTyBkZXZpY2UgYW5kIHVzZXMgaW9jdGxzIGxpa2UgYEtWTV9ERVZfVkZJT19HUk9VUF9BRERgLCB3ZSBjYW4gcmVhY2ggdGhpcyBjb2RlIHBhdGggYW5kIHRlc3QgaXQgd2l0aGluIGEgdmlydHVhbGl6ZWQgc2V0dXAuIEdvb2QuXG5cbk5vdywgbGV0J3MgcmV2aXNpdCB0aGUgcGF0Y2ggaXRzZWxmLiBJdCdzIGFkZGluZyBgcHFhcF9ob29rX3J3c2VtYCB0byBgZ2V0X3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtYCBhbmQgYWxzbyBgcmVsZWFzZV91cGRhdGVfbG9ja3NfZm9yX2t2bWAuIFRoZSBwYXRjaCBtb2RpZmllcyBgdmZpb19hcF9tZGV2X3NldF9rdm1gIGluIGEgd2F5IHRoYXQgc3VnZ2VzdHMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgbG9ja2luZyBhbmQgc3RhdGUgbWFuYWdlbWVudCBsb2dpYy4gVGhlIHByZXZpb3VzIGNoZWNrcyBmb3IgYGNyeWNiZGAgYXJlIGdvbmUuIFRoaXMgaW5kaWNhdGVzIGEgc2lnbmlmaWNhbnQgY2hhbmdlIGluIGhvdyB0aGUgYHBxYXBfaG9va2AgaXMgaGFuZGxlZC4gIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgdG8gYmUgZW5zdXJpbmcgdGhhdCB0aGUgaG9vayBpcyBvbmx5IHNldCB3aGVuIG5vdCBhbHJlYWR5IHNldCBmb3IgYW5vdGhlciBkZXZpY2UgYXR0YWNoZWQgdG8gdGhlIHNhbWUgS1ZNIGluc3RhbmNlLiBUaGUgYGxpc3RfZm9yX2VhY2hfZW50cnlgIGxvb3AgaXMgcmVtb3ZlZCwgYW5kIHJlcGxhY2VkIHdpdGggYSBjaGVjayBvZiBga3ZtLVx1MDAzZWFyY2guY3J5cHRvLnBxYXBfaG9va2AuIFNvIHRoYXQncyBub3cgYSBzaW5nbGUgY2hlY2suXG5cblRoaXMgaXMgYWxsICpkZWZpbml0ZWx5KiB3b3J0aCBmdXp6aW5nLiBUaGUgbG9jayBjaGFuZ2VzLCB0aGUgc3RhdGUgbWFuYWdlbWVudCB0d2Vha3Mg4oCTIHRoZXNlIGFyZSByaXBlIGZvciBjb25jdXJyZW5jeSBidWdzIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IuIFdlJ2xsIG5lZWQgdG8gZm9jdXMgb24gaW50ZXJhY3Rpb25zIGJldHdlZW4gbXVsdGlwbGUgVkZJTyBBUCBkZXZpY2VzLCBLVk0sIGFuZCB0aGUgQVAgaGFyZHdhcmUuXG5cbkFzIGZvciBjb25maWd1cmF0aW9uLCB3ZSBuZWVkIHRvIGVuc3VyZSB0aGF0IGBDT05GSUdfVkZJT19BUGAgaXMgZW5hYmxlZC4gTGV0J3MgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBpbiBgYXJjaC9zMzkwL0tjb25maWdgIHRvIGJlIHN1cmUuIEFscmlnaHQsIG5vdyB3ZSBrbm93IHdoYXQgdG8gdGVzdCwgYW5kIHRoZSBjb25maWd1cmF0aW9ucyByZXF1aXJlZC4gVGltZSB0byBzZXQgdXAgdGhlIGZ1enppbmcgZW52aXJvbm1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3MDIzLCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE2OjAxLjc0MDczNDg5N1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE1ODE3ODU3MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVkZJT19BUFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAvS2NvbmZpZz04MjM9Y29uZmlnIFZGSU9fQ0NXXFxuLS1cXG5hcmNoL3MzOTAvS2NvbmZpZy04MzMtXFxuYXJjaC9zMzkwL0tjb25maWc6ODM0OmNvbmZpZyBWRklPX0FQXFxuYXJjaC9zMzkwL0tjb25maWctODM1LVxcdGRlZl90cmlzdGF0ZSBuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE2OjAzLjg5ODkxOTI2OVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTUxMDg4NTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIHRleHQsIHJlbmRlcmVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OlxuXG4qKkRpdmluZyBpbnRvIHRoZSBzMzkwIEFyY2hpdGVjdHVyZSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCB0aGUgYGFyY2gvczM5MC9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgODM0LiBJJ20gZ29pbmcgdG8gYXNzdW1lIHRoaXMgc2VjdGlvbiBsaWtlbHkgcmVsYXRlcyB0byBzb21lIGZlYXR1cmUgb3IgY29uZmlndXJhdGlvbiBvcHRpb24gd2l0aGluIHRoZSBzMzkwIGFyY2hpdGVjdHVyZS4gR2l2ZW4gdGhlIGNvbnRleHQgb2YgYSBLY29uZmlnIGZpbGUsIGl0J3MgcHJvYmFibHkgZGVmaW5pbmcgYSBjb25kaXRpb25hbCBidWlsZCBvcHRpb24sIGEgaGFyZHdhcmUgZmVhdHVyZSBzZXR0aW5nLCBvciBtYXliZSBldmVuIGEgZHJpdmVyIGNvbmZpZ3VyYXRpb24gcmVsYXRlZCB0byB0aGUgSUJNIG1haW5mcmFtZSBhcmNoaXRlY3R1cmUuIEknbGwgbmVlZCB0byBjYXJlZnVsbHkgZXhhbWluZSB0aGUgc3Vycm91bmRpbmcgY29kZSB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMsIGRlZmF1bHQgdmFsdWVzLCBhbmQgaGVscCB0ZXh0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gaXRlbS4gSXQgY291bGQgYmUgc29tZXRoaW5nIHN0cmFpZ2h0Zm9yd2FyZCwgb3IgaXQgbWlnaHQgcmVxdWlyZSBhIGRlZXBlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBoYXJkd2FyZSBjYXBhYmlsaXRpZXMsIGZpcm13YXJlIGludGVyYWN0aW9ucywgb3Igc3BlY2lmaWMga2VybmVsIHN1YnN5c3RlbXMgd2l0aGluIHRoZSBzMzkwIGVudmlyb25tZW50LiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg0MjIsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNjowOS4wNTAwMTA1MTNaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODI2NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYXJjaC9zMzkwL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogODMwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgODMwOlxcdFxcbiA4MzE6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gODMyOlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHZmaW9fY2N3LlxcbiA4MzM6XFx0XFxuIDgzNDpcXHRjb25maWcgVkZJT19BUFxcbiA4MzU6XFx0XFx0ZGVmX3RyaXN0YXRlIG5cXG4gODM2OlxcdFxcdHByb21wdCBcXFwiVkZJTyBzdXBwb3J0IGZvciBBUCBkZXZpY2VzXFxcIlxcbiA4Mzc6XFx0XFx0ZGVwZW5kcyBvbiBLVk1cXG4gODM4OlxcdFxcdGRlcGVuZHMgb24gVkZJT1xcbiA4Mzk6XFx0XFx0ZGVwZW5kcyBvbiBBUFxcbiA4NDA6XFx0XFx0c2VsZWN0IFZGSU9fTURFVlxcbiA4NDE6XFx0XFx0aGVscFxcbiA4NDI6XFx0XFx0ICBUaGlzIGRyaXZlciBncmFudHMgYWNjZXNzIHRvIEFkanVuY3QgUHJvY2Vzc29yIChBUCkgZGV2aWNlc1xcbiA4NDM6XFx0XFx0ICB2aWEgdGhlIFZGSU8gbWVkaWF0ZWQgZGV2aWNlIGludGVyZmFjZS5cXG4gODQ0OlxcdFxcbiA4NDU6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuIDg0NjpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHZmaW9fYXAuXFxuIDg0NzpcXHRcXG4gODQ4OlxcdGVuZG1lbnVcXG4gODQ5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNjowOS4wNTAwOTQ1NDNaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM5NjM0NDE1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOlxuXG4qKlZGSU8tQVAgQ29uZmlndXJhdGlvbiBDb251bmRydW0qKlxuXG5SaWdodCwgc28gdG8gZ2V0IHRoaXMgd29ya2luZywgaXQgc2VlbXMgdGhhdCBgQ09ORklHX1ZGSU9fQVBgIGlzIGFic29sdXRlbHkgZXNzZW50aWFsLiBPa2F5LCBvYnZpb3VzIHN0YXJ0LiBCdXQsIEkgbmVlZCB0byBmaWd1cmUgb3V0IGl0cyBkZXBlbmRlbmNpZXMgdG8gcHJvcGVybHkgY29uZmlndXJlIGV2ZXJ5dGhpbmcuIEl0IGxvb2tzIGxpa2UgaXQgZGlyZWN0bHkgZGVwZW5kcyBvbiBgS1ZNYCwgYFZGSU9gLCBhbmQgYEFQYC4gVGhhdCdzIGEgcmVhc29uYWJsZSBzZXQsIEkgY2FuIHdvcmsgd2l0aCB0aGF0LCBtYWtlcyBzZW5zZSB0byBtZS4gVGhlIGludGVyZXN0aW5nIHBhcnQgaXMgYEFQYC4gSXMgYEFQYCByZWZlcnJpbmcgdG8gYENPTkZJR19aQ1JZUFRgPyBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgZGVmaW5pdGlvbiBpbiB0aGUga2VybmVsIGNvbmZpZy4uLiBMZXQgbWUgZ28gYW5kIGRpZyB0aGF0IHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODk0MCwiT3V0cHV0VG9rZW5zIjoxNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTY6MTIuNDQ2NDQxMjRaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MDcwOTQwNjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFQXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvYm9vdGNvbmZpZy5yc3Q9Mjg3PXRvIGluaXRyZCBpbWFnZSwgdXNlciBjYW4gbm90aWNlIGl0IGJlZm9yZSBib290Llxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9ib290Y29uZmlnLnJzdC0yODktXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9ib290Y29uZmlnLnJzdDoyOTA6Qm9vdGNvbmZpZyBBUElzXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9ib290Y29uZmlnLnJzdC0yOTEtPT09PT09PT09PT09PT09XFxuLS1cXG5hcmNoL202OGsvS2NvbmZpZy5tYWNoaW5lPTI5PWNvbmZpZyBNQUNcXG4tLVxcbmFyY2gvbTY4ay9LY29uZmlnLm1hY2hpbmUtNDAtXFxuYXJjaC9tNjhrL0tjb25maWcubWFjaGluZTo0MTpjb25maWcgQVBPTExPXFxuYXJjaC9tNjhrL0tjb25maWcubWFjaGluZS00Mi1cXHRib29sIFxcXCJBcG9sbG8gc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvNDR4L0tjb25maWc9MjkxPWNvbmZpZyA0NzZGUEVcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvNDR4L0tjb25maWctMjk0LVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvNDR4L0tjb25maWc6Mjk1OmNvbmZpZyBBUE04MjF4eFxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvNDR4L0tjb25maWctMjk2LVxcdGJvb2xcXG4tLVxcbmFyY2gvczM5MC9LY29uZmlnPTc4NT1jb25maWcgRUFETV9TQ0hcXG4tLVxcbmFyY2gvczM5MC9LY29uZmlnLTc5NS1cXG5hcmNoL3MzOTAvS2NvbmZpZzo3OTY6Y29uZmlnIEFQXFxuYXJjaC9zMzkwL0tjb25maWctNzk3LVxcdGRlZl90cmlzdGF0ZSB5XFxuLS1cXG5hcmNoL3MzOTAvS2NvbmZpZy04MDgtXFxuYXJjaC9zMzkwL0tjb25maWc6ODA5OmNvbmZpZyBBUF9ERUJVR1xcbmFyY2gvczM5MC9LY29uZmlnLTgxMC1cXHRkZWZfYm9vbCBuXFxuLS1cXG5hcmNoL3MzOTAvS2NvbmZpZz04ODU9Y29uZmlnIENNTV9JVUNWXFxuLS1cXG5hcmNoL3MzOTAvS2NvbmZpZy04OTItXFxuYXJjaC9zMzkwL0tjb25maWc6ODkzOmNvbmZpZyBBUFBMREFUQV9CQVNFXFxuYXJjaC9zMzkwL0tjb25maWctODk0LVxcdGRlZl9ib29sIG5cXG4tLVxcbmFyY2gvczM5MC9LY29uZmlnLTkwOC1cXG5hcmNoL3MzOTAvS2NvbmZpZzo5MDk6Y29uZmlnIEFQUExEQVRBX01FTVxcbmFyY2gvczM5MC9LY29uZmlnLTkxMC1cXHRkZWZfdHJpc3RhdGUgbVxcbi0tXFxuYXJjaC9zMzkwL0tjb25maWctOTI1LVxcbmFyY2gvczM5MC9LY29uZmlnOjkyNjpjb25maWcgQVBQTERBVEFfT1NcXG5hcmNoL3MzOTAvS2NvbmZpZy05MjctXFx0ZGVmX3RyaXN0YXRlIG1cXG4tLVxcbmFyY2gvczM5MC9LY29uZmlnLTk0MC1cXG5hcmNoL3MzOTAvS2NvbmZpZzo5NDE6Y29uZmlnIEFQUExEQVRBX05FVF9TVU1cXG5hcmNoL3MzOTAvS2NvbmZpZy05NDItXFx0ZGVmX3RyaXN0YXRlIG1cXG4tLVxcbmFyY2gveDg2L0tjb25maWc9Mjc0MT1jb25maWcgWDg2X0FQTV9CT09UXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTI3NDQtXFxuYXJjaC94ODYvS2NvbmZpZzoyNzQ1Om1lbnVjb25maWcgQVBNXFxuYXJjaC94ODYvS2NvbmZpZy0yNzQ2LVxcdHRyaXN0YXRlIFxcXCJBUE0gKEFkdmFuY2VkIFBvd2VyIE1hbmFnZW1lbnQpIEJJT1Mgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9Mjc5OT1pZiBBUE1cXG5hcmNoL3g4Ni9LY29uZmlnLTI4MDAtXFxuYXJjaC94ODYvS2NvbmZpZzoyODAxOmNvbmZpZyBBUE1fSUdOT1JFX1VTRVJfU1VTUEVORFxcbmFyY2gveDg2L0tjb25maWctMjgwMi1cXHRib29sIFxcXCJJZ25vcmUgVVNFUiBTVVNQRU5EXFxcIlxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZy0yODA3LVxcbmFyY2gveDg2L0tjb25maWc6MjgwODpjb25maWcgQVBNX0RPX0VOQUJMRVxcbmFyY2gveDg2L0tjb25maWctMjgwOS1cXHRib29sIFxcXCJFbmFibGUgUE0gYXQgYm9vdCB0aW1lXFxcIlxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZy0yODI0LVxcbmFyY2gveDg2L0tjb25maWc6MjgyNTpjb25maWcgQVBNX0NQVV9JRExFXFxuYXJjaC94ODYvS2NvbmZpZy0yODI2LVxcdGRlcGVuZHMgb24gQ1BVX0lETEVcXG4tLVxcbmFyY2gveDg2L0tjb25maWctMjgzNi1cXG5hcmNoL3g4Ni9LY29uZmlnOjI4Mzc6Y29uZmlnIEFQTV9ESVNQTEFZX0JMQU5LXFxuYXJjaC94ODYvS2NvbmZpZy0yODM4LVxcdGJvb2wgXFxcIkVuYWJsZSBjb25zb2xlIGJsYW5raW5nIHVzaW5nIEFQTVxcXCJcXG4tLVxcbmFyY2gveDg2L0tjb25maWctMjg0OS1cXG5hcmNoL3g4Ni9LY29uZmlnOjI4NTA6Y29uZmlnIEFQTV9BTExPV19JTlRTXFxuYXJjaC94ODYvS2NvbmZpZy0yODUxLVxcdGJvb2wgXFxcIkFsbG93IGludGVycnVwdHMgZHVyaW5nIEFQTSBCSU9TIGNhbGxzXFxcIlxcbi0tXFxuZHJpdmVycy9jaGFyL0tjb25maWc9MjEzPWNvbmZpZyBYSUxJTlhfSFdJQ0FQXFxuLS1cXG5kcml2ZXJzL2NoYXIvS2NvbmZpZy0yMjItXFxuZHJpdmVycy9jaGFyL0tjb25maWc6MjIzOmNvbmZpZyBBUFBMSUNPTVxcbmRyaXZlcnMvY2hhci9LY29uZmlnLTIyNC1cXHR0cmlzdGF0ZSBcXFwiQXBwbGljb20gaW50ZWxsaWdlbnQgZmllbGRidXMgY2FyZCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvcWNvbS9LY29uZmlnPTI5MD1jb25maWcgUUNPTV9DTEtfUlBNSFxcbi0tXFxuZHJpdmVycy9jbGsvcWNvbS9LY29uZmlnLTI5OC1cXG5kcml2ZXJzL2Nsay9xY29tL0tjb25maWc6Mjk5OmNvbmZpZyBBUFFfR0NDXzgwODRcXG5kcml2ZXJzL2Nsay9xY29tL0tjb25maWctMzAwLVxcdHRyaXN0YXRlIFxcXCJBUFE4MDg0IEdsb2JhbCBDbG9jayBDb250cm9sbGVyXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvcWNvbS9LY29uZmlnLTMwNy1cXG5kcml2ZXJzL2Nsay9xY29tL0tjb25maWc6MzA4OmNvbmZpZyBBUFFfTU1DQ184MDg0XFxuZHJpdmVycy9jbGsvcWNvbS9LY29uZmlnLTMwOS1cXHR0cmlzdGF0ZSBcXFwiQVBRODA4NCBNdWx0aW1lZGlhIENsb2NrIENvbnRyb2xsZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2RtYS9LY29uZmlnPTc4PWNvbmZpZyBBTUNDX1BQQzQ0MFNQRV9BRE1BXFxuLS1cXG5kcml2ZXJzL2RtYS9LY29uZmlnLTg3LVxcbmRyaXZlcnMvZG1hL0tjb25maWc6ODg6Y29uZmlnIEFQUExFX0FETUFDXFxuZHJpdmVycy9kbWEvS2NvbmZpZy04OS1cXHR0cmlzdGF0ZSBcXFwiQXBwbGUgQURNQUMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvZWZpL0tjb25maWc9MTU0PWNvbmZpZyBFRklfREVWX1BBVEhfUEFSU0VSXFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9LY29uZmlnLTE1Ni1cXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9LY29uZmlnOjE1Nzpjb25maWcgQVBQTEVfUFJPUEVSVElFU1xcbmRyaXZlcnMvZmlybXdhcmUvZWZpL0tjb25maWctMTU4LVxcdGJvb2wgXFxcIkFwcGxlIERldmljZSBQcm9wZXJ0aWVzXFxcIlxcbi0tXFxuZHJpdmVycy9paW8vbGlnaHQvS2NvbmZpZz02Nj1jb25maWcgQUwzMzIwQVxcbi0tXFxuZHJpdmVycy9paW8vbGlnaHQvS2NvbmZpZy03NS1cXG5kcml2ZXJzL2lpby9saWdodC9LY29uZmlnOjc2OmNvbmZpZyBBUERTOTE2MFxcbmRyaXZlcnMvaWlvL2xpZ2h0L0tjb25maWctNzctXFx0dHJpc3RhdGUgXFxcIkFQRFM5MTYwIGNvbWJpbmVkIGFscyBhbmQgcHJveGltaXR5IHNlbnNvclxcXCJcXG4tLVxcbmRyaXZlcnMvaWlvL2xpZ2h0L0tjb25maWctODYtXFxuZHJpdmVycy9paW8vbGlnaHQvS2NvbmZpZzo4Nzpjb25maWcgQVBEUzkzMDBcXG5kcml2ZXJzL2lpby9saWdodC9LY29uZmlnLTg4LVxcdHRyaXN0YXRlIFxcXCJBUERTOTMwMCBhbWJpZW50IGxpZ2h0IHNlbnNvclxcXCJcXG4tLVxcbmRyaXZlcnMvaWlvL2xpZ2h0L0tjb25maWctOTYtXFxuZHJpdmVycy9paW8vbGlnaHQvS2NvbmZpZzo5Nzpjb25maWcgQVBEUzkzMDZcXG5kcml2ZXJzL2lpby9saWdodC9LY29uZmlnLTk4LVxcdHRyaXN0YXRlIFxcXCJBdmFnbyBBUERTOTMwNiBBbWJpZW50IExpZ2h0IFNlbnNvclxcXCJcXG4tLVxcbmRyaXZlcnMvaWlvL2xpZ2h0L0tjb25maWctMTA4LVxcbmRyaXZlcnMvaWlvL2xpZ2h0L0tjb25maWc6MTA5OmNvbmZpZyBBUERTOTk2MFxcbmRyaXZlcnMvaWlvL2xpZ2h0L0tjb25maWctMTEwLVxcdHRyaXN0YXRlIFxcXCJBdmFnbyBBUERTOTk2MCBnZXN0dXJlL1JHQi9BTFMvcHJveGltaXR5IHNlbnNvclxcXCJcXG4tLVxcbmRyaXZlcnMvaW9tbXUvS2NvbmZpZz0yOTY9Y29uZmlnIFNQQVBSX1RDRV9JT01NVVxcbi0tXFxuZHJpdmVycy9pb21tdS9LY29uZmlnLTMwMy1cXG5kcml2ZXJzL2lvbW11L0tjb25maWc6MzA0OmNvbmZpZyBBUFBMRV9EQVJUXFxuZHJpdmVycy9pb21tdS9LY29uZmlnLTMwNS1cXHR0cmlzdGF0ZSBcXFwiQXBwbGUgREFSVCBJT01NVSBTdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL0tjb25maWc9Nzg4PWNvbmZpZyBJUlFfSURUMzI0M1hcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnLTc5Mi1cXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZzo3OTM6Y29uZmlnIEFQUExFX0FJQ1xcbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnLTc5NC1cXHRib29sIFxcXCJBcHBsZSBJbnRlcnJ1cHQgQ29udHJvbGxlciAoQUlDKVxcXCJcXG4tLVxcbmRyaXZlcnMvbWlzYy9LY29uZmlnPTMyNz1jb25maWcgU0dJX0dSVV9ERUJVR1xcbi0tXFxuZHJpdmVycy9taXNjL0tjb25maWctMzMzLVxcbmRyaXZlcnMvbWlzYy9LY29uZmlnOjMzNDpjb25maWcgQVBEUzk4MDJBTFNcXG5kcml2ZXJzL21pc2MvS2NvbmZpZy0zMzUtXFx0dHJpc3RhdGUgXFxcIk1lZGZpZWxkIEF2YWdvIEFQRFM5ODAyIEFMUyBTZW5zb3IgbW9kdWxlXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9LY29uZmlnPTEwNj1jb25maWcgTkUyS19QQ0lcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvS2NvbmZpZy0xMjMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9LY29uZmlnOjEyNDpjb25maWcgQVBORVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvS2NvbmZpZy0xMjUtXFx0dHJpc3RhdGUgXFxcIlBDTUNJQSBORTIwMDAgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGNpLmM9MzMyMD1zdGF0aWMgaW50IHJ0dzg5X3BjaV9jZmdfZGFjKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBmb3JjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGNpLmMtMzMzMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BjaS5jOjMzMzM6XFx0LyogQ29uZmlndXJlIERBQyBvbmx5IHZpYSBQQ0kgY29uZmlnIEFQSSwgbm90IERCSSBpbnRlcmZhY2VzICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9wY2kuYy0zMzM0LVxcdHJldCA9IHBjaV9yZWFkX2NvbmZpZ19ieXRlKHBkZXYsIFJUVzg5X1BDSUVfTDFfQ1RSTCwgXFx1MDAyNnZhbCk7XFxuLS1cXG5kcml2ZXJzL3BlcmYvS2NvbmZpZz0yNTM9Y29uZmlnIE1BUlZFTExfQ04xMEtfVEFEX1BNVVxcbi0tXFxuZHJpdmVycy9wZXJmL0tjb25maWctMjU5LVxcbmRyaXZlcnMvcGVyZi9LY29uZmlnOjI2MDpjb25maWcgQVBQTEVfTTFfQ1BVX1BNVVxcbmRyaXZlcnMvcGVyZi9LY29uZmlnLTI2MS1cXHRib29sIFxcXCJBcHBsZSBNMSBDUFUgUE1VIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL3BsYXRmb3JtL3g4Ni9LY29uZmlnPTE5ND1jb25maWcgQURWX1NXQlVUVE9OXFxuLS1cXG5kcml2ZXJzL3BsYXRmb3JtL3g4Ni9LY29uZmlnLTIwNC1cXG5kcml2ZXJzL3BsYXRmb3JtL3g4Ni9LY29uZmlnOjIwNTpjb25maWcgQVBQTEVfR01VWFxcbmRyaXZlcnMvcGxhdGZvcm0veDg2L0tjb25maWctMjA2LVxcdHRyaXN0YXRlIFxcXCJBcHBsZSBHbXV4IERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvcG1kb21haW4vYXBwbGUvS2NvbmZpZz0zPWlmIEFSQ0hfQVBQTEUgfHwgQ09NUElMRV9URVNUXFxuZHJpdmVycy9wbWRvbWFpbi9hcHBsZS9LY29uZmlnLTQtXFxuZHJpdmVycy9wbWRvbWFpbi9hcHBsZS9LY29uZmlnOjU6Y29uZmlnIEFQUExFX1BNR1JfUFdSU1RBVEVcXG5kcml2ZXJzL3BtZG9tYWluL2FwcGxlL0tjb25maWctNi1cXHRib29sIFxcXCJBcHBsZSBTb0MgUE1HUiBwb3dlciBzdGF0ZSBjb250cm9sXFxcIlxcbi0tXFxuZHJpdmVycy9wb3dlci9zdXBwbHkvS2NvbmZpZz0xOD1jb25maWcgUE9XRVJfU1VQUExZX0hXTU9OXFxuLS1cXG5kcml2ZXJzL3Bvd2VyL3N1cHBseS9LY29uZmlnLTMwLVxcbmRyaXZlcnMvcG93ZXIvc3VwcGx5L0tjb25maWc6MzE6Y29uZmlnIEFQTV9QT1dFUlxcbmRyaXZlcnMvcG93ZXIvc3VwcGx5L0tjb25maWctMzItXFx0dHJpc3RhdGUgXFxcIkFQTSBlbXVsYXRpb24gZm9yIGNsYXNzIGJhdHRlcmllc1xcXCJcXG4tLVxcbmRyaXZlcnMvc29jL2FwcGxlL0tjb25maWc9NT1tZW51IFxcXCJBcHBsZSBTb0MgZHJpdmVyc1xcXCJcXG5kcml2ZXJzL3NvYy9hcHBsZS9LY29uZmlnLTYtXFxuZHJpdmVycy9zb2MvYXBwbGUvS2NvbmZpZzo3OmNvbmZpZyBBUFBMRV9NQUlMQk9YXFxuZHJpdmVycy9zb2MvYXBwbGUvS2NvbmZpZy04LVxcdHRyaXN0YXRlIFxcXCJBcHBsZSBTb0MgbWFpbGJveGVzXFxcIlxcbi0tXFxuZHJpdmVycy9zb2MvYXBwbGUvS2NvbmZpZy0xOC1cXG5kcml2ZXJzL3NvYy9hcHBsZS9LY29uZmlnOjE5OmNvbmZpZyBBUFBMRV9SVEtJVFxcbmRyaXZlcnMvc29jL2FwcGxlL0tjb25maWctMjAtXFx0dHJpc3RhdGUgXFxcIkFwcGxlIFJUS2l0IGNvLXByb2Nlc3NvciBJUEMgcHJvdG9jb2xcXFwiXFxuLS1cXG5kcml2ZXJzL3NvYy9hcHBsZS9LY29uZmlnLTMwLVxcbmRyaXZlcnMvc29jL2FwcGxlL0tjb25maWc6MzE6Y29uZmlnIEFQUExFX1NBUlRcXG5kcml2ZXJzL3NvYy9hcHBsZS9LY29uZmlnLTMyLVxcdHRyaXN0YXRlIFxcXCJBcHBsZSBTQVJUIERNQSBhZGRyZXNzIGZpbHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvc29jL2FwcGxlL0tjb25maWctNDAtXFxuZHJpdmVycy9zb2MvYXBwbGUvS2NvbmZpZzo0MTpjb25maWcgQVBQTEVfVFVOQUJMRVxcbmRyaXZlcnMvc29jL2FwcGxlL0tjb25maWctNDItXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvS2NvbmZpZz0xNDc9Y29uZmlnIFVTQl9RQ09NX0VVRFxcbi0tXFxuZHJpdmVycy91c2IvbWlzYy9LY29uZmlnLTE1OC1cXG5kcml2ZXJzL3VzYi9taXNjL0tjb25maWc6MTU5OmNvbmZpZyBBUFBMRV9NRklfRkFTVENIQVJHRVxcbmRyaXZlcnMvdXNiL21pc2MvS2NvbmZpZy0xNjAtXFx0dHJpc3RhdGUgXFxcIkZhc3QgY2hhcmdlIGNvbnRyb2wgZm9yIGlPUyBkZXZpY2VzXFxcIlxcbi0tXFxuZHJpdmVycy92aWRlby9LY29uZmlnPTY9bWVudSBcXFwiR3JhcGhpY3Mgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL3ZpZGVvL0tjb25maWctNy1cXG5kcml2ZXJzL3ZpZGVvL0tjb25maWc6ODpjb25maWcgQVBFUlRVUkVfSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vS2NvbmZpZy05LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZz0xMTExPWNvbmZpZyBNU0MzMTNFX1dBVENIRE9HXFxuLS1cXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWctMTEyMi1cXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWc6MTEyMzpjb25maWcgQVBQTEVfV0FUQ0hET0dcXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWctMTEyNC1cXHR0cmlzdGF0ZSBcXFwiQXBwbGUgU29DIHdhdGNoZG9nXFxcIlxcbi0tXFxuZnMveGZzL3hmc19zdXBlci5jPTE2NTI9eGZzX2ZzX2ZpbGxfc3VwZXIoXFxuLS1cXG5mcy94ZnMveGZzX3N1cGVyLmMtMTY2NC1cXHQgKiBpcyBndWFyYW50ZWVkIHRvIGhhdmUgYmVlbiBjb21wbGV0ZWQgYnkgZWl0aGVyIHRoZSBvbGQgbW91bnQgQVBJIG9yXFxuZnMveGZzL3hmc19zdXBlci5jOjE2NjU6XFx0ICogdGhlIG5ld2VyIGZzb3Blbi9mc2NvbmZpZyBBUEkuXFxuZnMveGZzL3hmc19zdXBlci5jLTE2NjYtXFx0ICovXFxuLS1cXG5rZXJuZWwvcG93ZXIvS2NvbmZpZz0zMTA9Y29uZmlnIFBNX1RSQUNFX1JUQ1xcbi0tXFxua2VybmVsL3Bvd2VyL0tjb25maWctMzI3LVxcbmtlcm5lbC9wb3dlci9LY29uZmlnOjMyODpjb25maWcgQVBNX0VNVUxBVElPTlxcbmtlcm5lbC9wb3dlci9LY29uZmlnLTMyOS1cXHR0cmlzdGF0ZSBcXFwiQWR2YW5jZWQgUG93ZXIgTWFuYWdlbWVudCBFbXVsYXRpb25cXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE2OjE0Ljg1MzU0MDE3NFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTY4OTAxMDUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgczM5MCBBcmNoaXRlY3R1cmUgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYENPTkZJR19BUGAgb3B0aW9uLCBhbmQgbXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdHJhY2Ugd2hlcmUgaXQncyBkZWZpbmVkLiBSaWdodCwgdGhlIHBhdGggaXMgYGFyY2gvczM5MC9LY29uZmlnOjc5NmAuIFRoYXQgdGVsbHMgbWUgdGhlIGNvbnRleHQgaXMgdGhlIHMzOTAgYXJjaGl0ZWN0dXJlJ3MgY29uZmlndXJhdGlvbiBmaWxlLiBOb3cgSSdtIG1lbnRhbGx5IHBhcnNpbmcgdGhlIGRlcGVuZGVuY2llcy4gSWYgd2UncmUgZW5hYmxpbmcgYENPTkZJR19BUGAsIGxvZ2ljYWxseSwgd2UncmUgbGlrZWx5IGdvaW5nIHRvIG5lZWQgYSBmZXcgb3RoZXIgZWxlbWVudHMgdG8gY29tZSBhbG9uZyBmb3IgdGhlIHJpZGUuIEknbSB0aGlua2luZyBpbW1lZGlhdGVseSBhYm91dCBgVkZJT19BUGAsIGBLVk1gLCBhbmQgYFZGSU9gLCBhbmQgb2YgY291cnNlIHRoZSBiYXNlIGBBUGAgY29tcG9uZW50IGl0c2VsZi5cblxuQWxyaWdodCwgbGV0J3MganVzdCBnbyBhaGVhZCBhbmQgZGl2ZSBpbnRvIHRoZSBgYXJjaC9zMzkwL0tjb25maWdgIGZpbGUgYW5kIGNvbmZpcm0gbXkgdGhpbmtpbmcuIEknbGwgc2VhcmNoIGZvciB0aGUgYEFQYCBjb25maWd1cmF0aW9uIG9wdGlvbiBhbmQgc2VlIHdoYXQgdGhlIGRlcGVuZGVuY2llcyBvciBpbXBsaWVkIGNvbm5lY3Rpb25zIGFyZSB0aGVyZS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGNsZWFyZXIgcGljdHVyZSBvZiB3aGF0IGVuYWJsaW5nIHRoaXMgaW52b2x2ZXMgYXQgdGhlIGtlcm5lbCBsZXZlbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTI1MDgsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNjoxOS44MjI0NDU0OTRaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI0NTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImFyY2gvczM5MC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDc5MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDc5MDpcXHRcXHQgIFRoaXMgZHJpdmVyIGFsbG93cyB1c2FnZSBvZiBFQURNIHN1YmNoYW5uZWxzLiBFQURNIHN1YmNoYW5uZWxzIGFjdFxcbiA3OTE6XFx0XFx0ICBhcyBhIGNvbW11bmljYXRpb24gdmVoaWNsZSBmb3IgU0NNIGluY3JlbWVudHMuXFxuIDc5MjpcXHRcXG4gNzkzOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuIDc5NDpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBlYWRtX3NjaC5cXG4gNzk1OlxcdFxcbiA3OTY6XFx0Y29uZmlnIEFQXFxuIDc5NzpcXHRcXHRkZWZfdHJpc3RhdGUgeVxcbiA3OTg6XFx0XFx0cHJvbXB0IFxcXCJTdXBwb3J0IGZvciBBZGp1bmN0IFByb2Nlc3NvcnMgKGFwKVxcXCJcXG4gNzk5OlxcdFxcdGhlbHBcXG4gODAwOlxcdFxcdCAgVGhpcyBkcml2ZXIgYWxsb3dzIHVzYWdlIHRvIEFkanVuY3QgUHJvY2Vzc29yIChBUCkgZGV2aWNlcyB2aWFcXG4gODAxOlxcdFxcdCAgdGhlIGFwIGJ1cywgY2FyZHMgYW5kIHF1ZXVlcy4gU3VwcG9ydGVkIEFkanVuY3QgUHJvY2Vzc29ycyBhcmVcXG4gODAyOlxcdFxcdCAgdGhlIENyeXB0b0V4cHJlc3MgQ2FyZHMgKENFWCkuXFxuIDgwMzpcXHRcXG4gODA0OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuIDgwNTpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBhcC5cXG4gODA2OlxcdFxcbiA4MDc6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBZIChkZWZhdWx0KS5cXG4gODA4OlxcdFxcbiA4MDk6XFx0Y29uZmlnIEFQX0RFQlVHXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE2OjE5LjgyMjU3MjE2NFoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MDA3NDM4ODY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgVGhvdWdodHMgb24gVkZJTy1BUCBLZXJuZWwgTW9kdWxlIFN5bWJvbCBBbmFseXNpcyoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gYENPTkZJR19BUGAgaXMgdGhlIGZvdW5kYXRpb24sIEFkanVuY3QgUHJvY2Vzc29yIHN1cHBvcnQuIE9rYXksIGdvdCBpdC4gTm93LCB3aGF0J3MgcmVxdWlyZWQ/IFRoZSBsaXN0IGlzOiBgVkZJT19BUGAsIGBLVk1gLCBgVkZJT2AsIGFuZCBgQVBgLiBIb2xkIG9uLCBgQVBgIGlzIHRyaXN0YXRlLCBkZWZhdWx0ZWQgdG8gJ3knLiBHcmVhdCwgdGhhdCdzIHRha2VuIGNhcmUgb2YuIGBWRklPX0FQYCBpcyBkZWZhdWx0ZWQgdG8gJ24nIHRob3VnaC4gU28sIHRoZSBrZXkgaXMgZW5hYmxpbmcgYFZGSU9fQVBgLiBJdCBkZXBlbmRzIG9uIGBLVk1gLCBgVkZJT2AsIGFuZCBgQVBgLCBzbyBJIG5lZWQgdG8gYmUgbWluZGZ1bCBvZiB0aG9zZSBkZXBlbmRlbmNpZXMuIGBLVk1gIGFuZCBgVkZJT2AgYXJlIHByZXR0eSBzdGFuZGFyZCBmYXJlIHRob3VnaCwgc28gSSdtIGdvaW5nIHRvIGZvY3VzIG9uIGVuYWJsaW5nIGBWRklPX0FQYC5cblxuTm93LCBmb3Igc3ltYm9sIGFuYWx5c2lzLCBJIG5lZWQgdG8gZm9jdXMgb24gdGhlc2U6IGB2ZmlvX2FwX21kZXZfc2V0X2t2bWAsIGB2ZmlvX2FwX21kZXZfdW5zZXRfa3ZtYCwgYHZmaW9fYXBfbWRldl9vcGVuX2RldmljZWAsIGB2ZmlvX2FwX21kZXZfY2xvc2VfZGV2aWNlYCwgYHZmaW9fYXBfbWRldl9wcm9iZWAsIGFuZCBgdmZpb19hcF9tZGV2X2luaXRfZGV2YC5cblxuTGV0J3Mgc2VlIGlmIGB2ZmlvX2FwX21kZXZfc2V0X2t2bWAgaXMgc3RhdGljLiBZZXMsIGl0IGlzLiBCdXQsIHdhaXQuLi4gdGhlIHByb21wdCAqcHJlZmVycyogbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuIFRob3NlIHN0YXRpYyBmdW5jdGlvbnMgYXJlIG9mdGVuIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLCBhbmQgZG9uJ3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLiBPa2F5LCBJJ2xsIGtlZXAgdGhhdCBpbiBtaW5kLiBgdmZpb19hcF9tZGV2X29wZW5fZGV2aWNlYCBpcyBhbHNvIHN0YXRpYywgYnV0IGl0J3MgdXNlZCBhcyBhIGNhbGxiYWNrIGluIGB2ZmlvX2FwX21hdHJpeF9kZXZfb3BzYC4gU28sIEknbGwgbmVlZCB0byBjaGVjayBgdmZpb19hcF9vcHMuY2Agbm93IHRvIGZpbmQgdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGZvciBlbnRyeSBwb2ludHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzMTIxLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzY3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTY6MjYuODMwMDczMDkxWiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDEyNDc2MjU3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKiB2ZmlvX2FwX21kZXZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTIzNjk9c3RhdGljIHN0cnVjdCBtZGV2X2RyaXZlciB2ZmlvX2FwX21hdHJpeF9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjM4MS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjM4MjppbnQgdmZpb19hcF9tZGV2X3JlZ2lzdGVyKHZvaWQpXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIzODMte1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI0MDQtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI0MDU6dm9pZCB2ZmlvX2FwX21kZXZfdW5yZWdpc3Rlcih2b2lkKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNDA2LXtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNDEwLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNDExOmludCB2ZmlvX2FwX21kZXZfcHJvYmVfcXVldWUoc3RydWN0IGFwX2RldmljZSAqYXBkZXYpXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI0MTIte1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI0NjQtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI0NjU6dm9pZCB2ZmlvX2FwX21kZXZfcmVtb3ZlX3F1ZXVlKHN0cnVjdCBhcF9kZXZpY2UgKmFwZGV2KVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNDY2LXtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNTI3LSAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNTI4OmludCB2ZmlvX2FwX21kZXZfcmVzb3VyY2VfaW5fdXNlKHVuc2lnbmVkIGxvbmcgKmFwbSwgdW5zaWduZWQgbG9uZyAqYXFtKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNTI5LXtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmg9MTQzPXN0cnVjdCB2ZmlvX2FwX3F1ZXVlIHtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmgtMTU0LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmg6MTU1OmludCB2ZmlvX2FwX21kZXZfcmVnaXN0ZXIodm9pZCk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaDoxNTY6dm9pZCB2ZmlvX2FwX21kZXZfdW5yZWdpc3Rlcih2b2lkKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oLTE1Ny1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oOjE1ODppbnQgdmZpb19hcF9tZGV2X3Byb2JlX3F1ZXVlKHN0cnVjdCBhcF9kZXZpY2UgKnF1ZXVlKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oOjE1OTp2b2lkIHZmaW9fYXBfbWRldl9yZW1vdmVfcXVldWUoc3RydWN0IGFwX2RldmljZSAqcXVldWUpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmgtMTYwLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmg6MTYxOmludCB2ZmlvX2FwX21kZXZfcmVzb3VyY2VfaW5fdXNlKHVuc2lnbmVkIGxvbmcgKmFwbSwgdW5zaWduZWQgbG9uZyAqYXFtKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oLTE2Mi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTY6MzYuOTU0ODQ0MjQ2WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgyNDU0NjE4MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSWRlbnRpZnlpbmcgS2V5IEFQSSBFbnRyeSBQb2ludHMgZm9yIEFuYWx5c2lzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBmb2N1c2VkIG9uIGlkZW50aWZ5aW5nIHRoZSBrZXkgZW50cnkgcG9pbnRzIGludG8gdGhpcyBjb2RlLCBwYXJ0aWN1bGFybHkgdGhlIG1vZGlmaWVkIHBvcnRpb25zLiBUaGUgcHJvbXB0IGVtcGhhc2l6ZXMgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGZ1bmN0aW9ucywgd2hpY2ggYXJlIGRpc3RpbmN0LCBjYWxsYWJsZSB1bml0cy5cblxuSSBzdGFydGVkIGJ5IGxpc3RpbmcgdGhlIG9idmlvdXMgbm9uLXN0YXRpYyBmdW5jdGlvbnM6IGB2ZmlvX2FwX21kZXZfcmVnaXN0ZXJgLCBgdmZpb19hcF9tZGV2X3VucmVnaXN0ZXJgLCBgdmZpb19hcF9tZGV2X3Byb2JlX3F1ZXVlYCwgYHZmaW9fYXBfbWRldl9yZW1vdmVfcXVldWVgLCBhbmQgYHZmaW9fYXBfbWRldl9yZXNvdXJjZV9pbl91c2VgLiBUaGVzZSBhcmUgY2xlYXJseSBlbnRyeSBwb2ludHMuXG5cblRoZW4sIEkgc3RhcnRlZCB0byBxdWVzdGlvbiB0aGUgc3RhdGljIG9uZXMuIGB2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2VgIGlzIGEgY2FsbGJhY2sgd2l0aGluIGB2ZmlvX2RldmljZV9vcHNgLCBzbyBldmVuIHRob3VnaCBpdCdzIHN0YXRpYywgaXRzIGFkZHJlc3MgaXMgdGFrZW4sIGVuc3VyaW5nIGl0IHdvbid0IGJlIGZ1bGx5IGlubGluZWQuIEl0J3MgZXNzZW50aWFsbHkgYW4gZW50cnkgcG9pbnQuIFRoZSBzYW1lIGlzIHRydWUgZm9yIGB2ZmlvX2FwX21kZXZfY2xvc2VfZGV2aWNlYC5cblxuSSBjb25zaWRlcmVkIGB2ZmlvX2FwX21kZXZfaW9jdGxgIGFuZCBgdmZpb19hcF9tZGV2X3Byb2JlYCwgYnV0IHF1aWNrbHkgZGlzbWlzc2VkIHRoZW0sIGFzIHRoZXkgd2VyZSBzdGF0aWMgYW5kIGxpa2VseSBpbnRlcm5hbCBoZWxwZXJzLlxuXG5JIHRoZW4gcmV2aXNpdGVkIHRoZSBpZGVhIG9mIGxpc3RpbmcgYHZmaW9fYXBfbWRldl9zZXRfa3ZtYCBhbmQgYHZmaW9fYXBfbWRldl91bnNldF9rdm1gIGRpcmVjdGx5LCBhcyB0aGV5IGFyZSBjcnVjaWFsIGZvciBzZXR0aW5nIHVwIHRoZSBLVk0gY29udGV4dC4gQWx0aG91Z2ggdGhleSB3ZXJlIHN0YXRpYywgYHZmaW9fYXBfbWRldl9zZXRfa3ZtYCBpcyBjYWxsZWQgZnJvbSBgdmZpb19hcF9tZGV2X29wZW5fZGV2aWNlYCBhbmQgaXMgbGlrZWx5IG5vdCBmdWxseSBpbmxpbmVkIGJlY2F1c2Ugb2YgaXRzIHNpemUuXG5cbkhvd2V2ZXIsIGdpdmVuIHRoZSBwcm9tcHQncyBwcmVmZXJlbmNlLCBgdmZpb19hcF9tZGV2X29wZW5fZGV2aWNlYCBhbmQgYHZmaW9fYXBfbWRldl9jbG9zZV9kZXZpY2VgIGFyZSB0aGUga2V5IGVudHJ5IHBvaW50cyBmb3IgdGhlIG1vZGlmaWVkIGNvZGUuIFRoZXNlIGFyZSBjYWxsYmFja3MsIHNvIHRoZXkgYXJlIG5vdCBpbmxpbmVkLCBhbmQgdGhleSBhcmUgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgaG93IHRoZSBLVk0gY29udGV4dCBpcyBzZXQgYW5kIHVuc2V0LlxuXG5JJ2xsIGRvdWJsZS1jaGVjayB0byBjb25maXJtIHRoYXQgYHZmaW9fYXBfbWRldl9zZXRfa3ZtYCBhbmQgYHZmaW9fYXBfbWRldl91bnNldF9rdm1gIGFyZW4ndCBjYWxsZWQgZnJvbSBhbnl3aGVyZSBlbHNlLCBqdXN0IHRvIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDgwMiwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNjo0NS4yMDAzMTI0MThaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxODE2MzY0MjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmZpb19hcF9tZGV2X3NldF9rdm1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTE4MTM9c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKnZmaW9fYXBfbWRldl9hdHRyX2dyb3Vwc1tdID0ge1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE4MTgtLyoqXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE4MTk6ICogdmZpb19hcF9tZGV2X3NldF9rdm0gLSBzZXRzIGFsbCBkYXRhIGZvciBAbWF0cml4X21kZXYgdGhhdCBhcmUgbmVlZGVkXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE4MjAtICogdG8gbWFuYWdlIEFQIHJlc291cmNlcyBmb3IgdGhlIGd1ZXN0IHdob3NlIHN0YXRlIGlzIHJlcHJlc2VudGVkIGJ5IEBrdm1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xODI3LSAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoxODI4OnN0YXRpYyBpbnQgdmZpb19hcF9tZGV2X3NldF9rdm0oc3RydWN0IGFwX21hdHJpeF9tZGV2ICptYXRyaXhfbWRldixcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTgyOS1cXHRcXHRcXHRcXHRzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjA0OD1zdGF0aWMgaW50IHZmaW9fYXBfbWRldl9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKnZkZXYpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjA1NS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjA1NjpcXHRyZXR1cm4gdmZpb19hcF9tZGV2X3NldF9rdm0obWF0cml4X21kZXYsIHZkZXYtXFx1MDAzZWt2bSk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIwNTctfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNjo0Ny4zODE5NTc1ODlaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk1MjcwMzAzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIENhbGxlciBDb250ZXh0KipcblxuSG1tLCBzbyB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb24sIHdoYXRldmVyIGl0IGlzLCBpcyBvbmx5IGNhbGxlZCBmcm9tIGB2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2VgLiBJbnRlcmVzdGluZy4gQW5kLCBvZiBjb3Vyc2UsIGZyb20gYHZmaW9fYXBfbWRldl91bnNldF9rdm1gLiBUaGF0J3MgYSBsaW1pdGVkIHNldCBvZiBjYWxsZXJzLiBLbm93aW5nIHRoaXMgaXMga2V5LCBhcyBpdCBkcmFtYXRpY2FsbHkgY29uc3RyYWlucyB0aGUgc2NlbmFyaW9zIEkgbmVlZCB0byBjb25zaWRlciB3aGVuIGRlYnVnZ2luZyBvciByZWZhY3RvcmluZy4gVGhpcyBpbmZvcm1hdGlvbiB3aWxsIGluZm9ybSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBleGVjdXRpb24gZmxvdyBhbmQgcG90ZW50aWFsIHNpZGUgZWZmZWN0cyB3aXRoaW4gdGhlIFZGSU8gYXJjaGl0ZWN0dXJlLiBUaGlzIGFsc28gaGVscHMgd2l0aCB1bmRlcnN0YW5kaW5nIGFuZCBkZWJ1Z2dpbmcgaG93IHRoZSBWRklPIEFQIChBZGRyZXNzLVNwYWNlIFBhc3MtVGhyb3VnaCkgZnVuY3Rpb25hbGl0eSBoYW5kbGVzIGRldmljZSBhY2Nlc3MgYW5kIEtWTSBpbnRlcmFjdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2Mjc5LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTY6NTEuMzM0NjYzNTM3WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTYyMjgwNTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZmaW9fYXBfbWRldl91bnNldF9rdm1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTE4NjA9c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X2RtYV91bm1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKnZkZXYsIHU2NCBpb3ZhLFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE4NzMtLyoqXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE4NzQ6ICogdmZpb19hcF9tZGV2X3Vuc2V0X2t2bSAtIHBlcmZvcm1zIGNsZWFuLXVwIG9mIHJlc291cmNlcyBubyBsb25nZXIgbmVlZGVkXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE4NzUtICogYnkgQG1hdHJpeF9tZGV2Llxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE4NzgtICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE4Nzk6c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X3Vuc2V0X2t2bShzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2KVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xODgwLXtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yMDU5PXN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICp2ZGV2KVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIwNjMtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIwNjQ6XFx0dmZpb19hcF9tZGV2X3Vuc2V0X2t2bShtYXRyaXhfbWRldik7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIwNjUtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNjo1My44OTY5NjE3MDRaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTUyODg3MDc4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBWRklPLUFQIFJlbGF0ZWQgRnVuY3Rpb25zKipcblxuQWxyaWdodCwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgYHZmaW9fYXBfbWRldl9jbG9zZV9kZXZpY2VgIGZ1bmN0aW9uLCBzaW5jZSB0aGF0J3Mgd2hlcmUgdGhlIGluaXRpYWwgcHJvbXB0IGRpcmVjdGVkIG1lLiBJJ20gZ29pbmcgdG8gbGlzdCBgdmZpb19hcF9tZGV2X29wZW5fZGV2aWNlYCBhbmQgYHZmaW9fYXBfbWRldl9jbG9zZV9kZXZpY2VgIGFzIG15IHByaW1hcnkgRm9jdXNTeW1ib2xzLiBJJ2xsIGFsc28gaW5jbHVkZSBgdmZpb19hcF9tZGV2X3NldF9rdm1gIGFuZCBgdmZpb19hcF9tZGV2X3Vuc2V0X2t2bWAganVzdCB0byBiZSB0aG9yb3VnaCwgZXNwZWNpYWxseSBpZiB0aGV5IGFyZW4ndCBpbmxpbmVkIGFueXdoZXJlLlxuXG5Ob3csIGxldCdzIGNpcmNsZSBiYWNrIHRvIHRoZSBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIGV4cGxpY2l0bHkgZW5hYmxlIGBWRklPX0FQYC4gSXQgbG9va3MgbGlrZSBgS1ZNYCBhbmQgYFZGSU9gIGFyZSBiYXNlbGluZSBhbmQgYXNzdW1lZCBpbiBtb3N0IHZpcnR1YWxpemF0aW9uIGFuZCBzeXprYWxsZXIgY29udGV4dHMuIEJ1dCBob2xkIG9uLi4uIGBWRklPX0FQYCBpcyBkZWZpbmVkIGFzIGBkZWZfdHJpc3RhdGUgbmA/IFRoYXQgY29uZmlybXMgaXQsIEkgZGVmaW5pdGVseSBuZWVkIHRvIGVuYWJsZSBpdC4gSnVzdCB0byBiZSBjb21wbGV0ZWx5IHN1cmUsIGxldCBtZSBjaGVjayB0aGUgYGRyaXZlcnMvczM5MC9jcnlwdG8vTWFrZWZpbGVgIGZpbGUgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgZWxzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY5MTgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTY6NTkuNDI1ODM3ODM0WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDg1OTQ5MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmZpb19hcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3MzOTAvY3J5cHRvL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvczM5MC9jcnlwdG8vTWFrZWZpbGU9MzQ9b2JqLSQoQ09ORklHX1BLRVlfVVYpICs9IHBrZXktdXYub1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9NYWtlZmlsZS0zNi0jIGFkanVuY3QgcHJvY2Vzc29yIG1hdHJpeFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vTWFrZWZpbGU6Mzc6dmZpb19hcC1vYmpzIDo9IHZmaW9fYXBfZHJ2Lm8gdmZpb19hcF9vcHMub1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX1ZGSU9fQVApICs9IHZmaW9fYXAub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNjo1OS41MzQ0Mzg0NjFaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTE5OTY4NTUyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipWRklPIEFQIERyaXZlciBSZWFjaGFiaWxpdHkgaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqXG5cbk9rYXksIHNvIGBDT05GSUdfVkZJT19BUGAgaXMgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiBoZXJlLCB0aGF0IG11Y2ggaXMgY2xlYXIuIFRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBjb2RlIHBhdGggYWNjZXNzaWJsZSBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQ/IFRoZSBhbnN3ZXIsIHRoYW5rZnVsbHksIGlzIHllcy4gV2UgY2FuIGxldmVyYWdlIHN5emthbGxlciB0byBjcmVhdGUgYW4gbWRldiBkZXZpY2UgdGhyb3VnaCBzeXNmcywgYW5kIHRoZW4gb3BlbiB0aGUgVkZJTyBkZXZpY2UuIFRoZSBiZWF1dHkgb2YgdGhlIGB2ZmlvX2FwYCBkcml2ZXIgaXMgdGhhdCBpdCAqZG9lc24ndCogYWN0dWFsbHkgcmVxdWlyZSBhbnkgcGh5c2ljYWwgQVAgaGFyZHdhcmUgdG8gZ2V0IHRoYXQgbWRldiBkZXZpY2UgY3JlYXRlZC4gV2UgY29uZmlybWVkIHRoaXMgYnkgZXhhbWluaW5nIHRoZSBmdW5jdGlvbnMgYHZmaW9fYXBfbWRldl9wcm9iZWAgYW5kIGB2ZmlvX2FwX21hdHJpeF9kZXZfY3JlYXRlYC4gQ3JpdGljYWxseSwgZXZlbiBpZiBgdGVzdF9mYWNpbGl0eSgxMilgIHJldHVybnMgZmFsc2UgKG1lYW5pbmcgbm8gQVAgaW5zdHJ1Y3Rpb25zIGFyZSBhdmFpbGFibGUgb24gdGhlIHBoeXNpY2FsIGhvc3QpLCBgdmZpb19hcF9tYXRyaXhfZGV2X2NyZWF0ZWAgc3RpbGwgc3VjY2VlZHMuIEFsbCBgdmZpb19hcF9tZGV2X3Byb2JlYCBzZWVtcyB0byBkbyBpcyBhbGxvY2F0ZSBtZW1vcnkgYW5kIHJlZ2lzdGVyIHRoZSBkZXZpY2UuXG5cblRoZW4sIHdoZW4gdGhlIFZGSU8gZGV2aWNlIGdldHMgb3BlbmVkLCBgdmZpb19hcF9tZGV2X29wZW5fZGV2aWNlYCBpcyBpbnZva2VkLiBUaGlzIGluIHR1cm4gY2FsbHMgYHZmaW9fYXBfbWRldl9zZXRfa3ZtYCwgd2hpY2ggY2hlY2tzIGBrdm0tXHUwMDNlYXJjaC5jcnlwdG8uY3J5Y2JkYC4gVGhlIGNydWNpYWwgcGFydCBoZXJlIGlzIHRoYXQgYGNyeWNiZGAgZ2V0cyBzZXQgd2hlbiBhIEtWTSBWTSBpcyBjcmVhdGVkLCBpcnJlc3BlY3RpdmUgb2YgdGhlIHByZXNlbmNlIG9mIHBoeXNpY2FsIEFQIGhhcmR3YXJlLiBJdCBqdXN0IHBvcHVsYXRlcyBlaXRoZXIgYENSWUNCX0ZPUk1BVDFgIG9yIGBDUllDQl9GT1JNQVQyYC4gVGhlcmVmb3JlLCB0aGlzIGVudGlyZSBjb2RlIHBhdGggaXMgY29tcGxldGVseSByZWFjaGFibGUgd2l0aGluIGEgdmlydHVhbGl6ZWQgc2V0dGluZywgd2l0aG91dCBuZWVkaW5nIHRvIHdvcnJ5IGFib3V0IHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLlxuXG5TbywgbGV0J3Mgc3VtbWFyaXplIHRoZSBrZXkgdGFrZWF3YXlzOlxuXG4qICAgKipXb3J0aEZ1enppbmc6IFRydWUqKiAtIERlZmluaXRlbHkgd29ydGggZnV6emluZywgdGhpcyBpcyByZWFjaGFibGUuXG4qICAgKipGb2N1c1N5bWJvbHM6KiogSSdtIGdvaW5nIHRvIHdhbnQgdG8gZm9jdXMgb246XG4gICAgKiAgIGB2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2VgXG4gICAgKiAgIGB2ZmlvX2FwX21kZXZfY2xvc2VfZGV2aWNlYFxuICAgICogICBgdmZpb19hcF9tZGV2X3NldF9rdm1gXG4gICAgKiAgIGB2ZmlvX2FwX21kZXZfdW5zZXRfa3ZtYFxuKiAgICoqRW5hYmxlQ29uZmlnczoqKiBDbGVhcmx5LCBqdXN0IGBWRklPX0FQYCBpcyBuZWVkZWQuXG5cblRoZSByZWFzb25pbmcgaXMgc29saWQ6IFRoZSBwYXRjaCBhZmZlY3RzIGxvY2tpbmcgYW5kIHN0YXRlIG1hbmFnZW1lbnQgaW4gdGhlIFZGSU8gQVAgZHJpdmVyIHdoZW4gYXR0YWNoaW5nIGFuZCBkZXRhY2hpbmcgbWVkaWF0ZWQgZGV2aWNlcyBmcm9tIEtWTSBndWVzdHMuIFNpbmNlIHRoZSBkcml2ZXIgY2FuIGJlIGxvYWRlZCwgbWRldnMgY2FuIGJlIGNyZWF0ZWQgYW5kIG9wZW5lZCBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQgdmlhIHN5c2ZzIGFuZCBWRklPIGlvY3RscywgbWFraW5nIHRoaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3NTMyLCJPdXRwdXRUb2tlbnMiOjE2OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNzowOC43MzQxMjcwNzlaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDk5MzcxMjYsIkVycm9yIjoidGhlIGZvbGxvd2luZyBjb25maWdzIGRvIG5vdCBleGlzdCBpbiB0aGUga2VybmVsIHRyZWU6IFZGSU9fQVAiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVkZJT19BUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZmaW9fYXBfbWRldl9vcGVuX2RldmljZVwiLFxuICAgIFwidmZpb19hcF9tZGV2X2Nsb3NlX2RldmljZVwiLFxuICAgIFwidmZpb19hcF9tZGV2X3NldF9rdm1cIixcbiAgICBcInZmaW9fYXBfbWRldl91bnNldF9rdm1cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBsb2NraW5nIHNlbWFudGljcyBhbmQgc3RhdGUgbWFuYWdlbWVudCBpbiB0aGUgVkZJTyBBUCBkcml2ZXIgd2hlbiBhIG1lZGlhdGVkIGRldmljZSBpcyBhdHRhY2hlZCB0byBvciBkZXRhY2hlZCBmcm9tIGEgS1ZNIGd1ZXN0LiBUaGUgdmZpb19hcCBkcml2ZXIgY2FuIGJlIGxvYWRlZCBhbmQgbWRldnMgY2FuIGJlIGNyZWF0ZWQgYW5kIG9wZW5lZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IHdpdGhvdXQgcmVxdWlyaW5nIHBoeXNpY2FsIEFQIGhhcmR3YXJlLCBtYWtpbmcgdGhpcyBjb2RlIHJlYWNoYWJsZSBhbmQgZnV6emFibGUgdmlhIHN5c2ZzIGFuZCBWRklPIGlvY3Rscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJ0aGUgZm9sbG93aW5nIGNvbmZpZ3MgZG8gbm90IGV4aXN0IGluIHRoZSBrZXJuZWwgdHJlZTogVkZJT19BUFwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNzowOC44NDQwNzQxMjVaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTM0OTk5MTk3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgaXNzdWU6XG5cbioqSW52ZXN0aWdhdGluZyBhIE1pc3NpbmcgQ29uZmlndXJhdGlvbiBPcHRpb24qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIHdhcyB1bmRlciB0aGUgaW1wcmVzc2lvbiB0aGF0IGBWRklPX0FQYCB3YXMgYSB2YWxpZCBjb25maWd1cmF0aW9uIG9wdGlvbiBmb3IgczM5MCwgYnV0IHNvbWV0aGluZydzIG5vdCBhZGRpbmcgdXAuIEknbSBnZXR0aW5nIGEgZmVlbGluZyB0aGF0IEknbSBjaGFzaW5nIGEgcGhhbnRvbSBoZXJlLiBMZXQncyBub3QgYXNzdW1lLCB0aG91Z2gsIGFuZCBqdW1wIHRvIGNvbmNsdXNpb25zLlxuXG5UaGUgYmVzdCBhcHByb2FjaCBpcyB0byBkb3VibGUtY2hlY2sgdGhlIHNvdXJjZSBvZiB0cnV0aCBmb3IgdGhlc2UgczM5MCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEkgbmVlZCB0byBnbyBiYWNrIHRvIHRoZSBgYXJjaC9zMzkwL0tjb25maWdgIGZpbGUgYW5kIGNvbmZpcm0sIGRlZmluaXRpdmVseSwgd2hldGhlciBvciBub3QgYFZGSU9fQVBgIGlzIGFjdHVhbGx5IGRlZmluZWQgdGhlcmUuIFRoaXMgaXMgYSBjcml0aWNhbCBmaXJzdCBzdGVwLiBJIGNhbid0IGJ1aWxkIG15IGFuYWx5c2lzIG9uIGEgZmFsc2UgcHJlbWlzZS4gSSdsbCBuZWVkIHRvIG1ldGljdWxvdXNseSBzY2FuIHRocm91Z2ggdGhhdCBLY29uZmlnIHRvIGJlIGFic29sdXRlbHkgc3VyZS4gVGhlbiBJIGNhbiBwcm9jZWVkIHdpdGggZnVydGhlciBkZWJ1Z2dpbmcsIGJhc2VkIG9uIHRoZSBhY3R1YWwgS2NvbmZpZyByZWFsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODcxNywiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsic2V0LXJlc3VsdHMiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNzoxOC4xOTQwNzA5MTdaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNjQyMzY4NzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFZGSU9fQVBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL0tjb25maWc9ODIzPWNvbmZpZyBWRklPX0NDV1xcbi0tXFxuYXJjaC9zMzkwL0tjb25maWctODMzLVxcbmFyY2gvczM5MC9LY29uZmlnOjgzNDpjb25maWcgVkZJT19BUFxcbmFyY2gvczM5MC9LY29uZmlnLTgzNS1cXHRkZWZfdHJpc3RhdGUgblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNzoyMC41NTgzMTMxNzJaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTA1ODI0NTIwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipWRklPX0FQIENvbnVuZHJ1bSoqXG5cbk9rYXksIHNvIEknbSBzZWVpbmcgdGhhdCB0aGUgYFZGSU9fQVBgIG9wdGlvbiBpcywgaW4gZmFjdCwgZGVmaW5lZCB3aXRoaW4gYGFyY2gvczM5MC9LY29uZmlnYC4gVGhhdCdzIGEgYml0IHBlcnBsZXhpbmcgYmVjYXVzZSB0aGUgYHNldC1yZXN1bHRzYCB0b29sIGp1c3QgdG9sZCBtZSBpdCBkb2Vzbid0IGV4aXN0LiBIbW0sIEkgYmV0IHRoZSB0b29sIGlzIGNoZWNraW5nIGFnYWluc3QsIHNheSwgYW4geDg2XzY0LWJhc2VkIGNvbmZpZ3VyYXRpb24uIFRoYXQgd291bGQgbWFrZSBzZW5zZSwgYXMgdGhlc2UgdG9vbHMgY2FuIHNvbWV0aW1lcyBiZSBvdmVybHkgZ2VuZXJhbGl6ZWQuIFRoZSBlcnJvciBtZXNzYWdlIGlzIGNsZWFyOiBcInRoZSBmb2xsb3dpbmcgY29uZmlncyBkbyBub3QgZXhpc3QgaW4gdGhlIGtlcm5lbCB0cmVlOiBWRklPX0FQXCIuXG5cblJpZ2h0LCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhlcmUgaXNuJ3QgYSB0eXBvIG9yIHNvbWUgb3RoZXIgb2J2aW91cyBtaXN0YWtlIG9uIG15IHBhcnQuIFllcCwgSSBjb25maXJtIHRoZSBwYXRoIGlzIGNvcnJlY3Q6IGBhcmNoL3MzOTAvS2NvbmZpZ2AgKmRlZmluaXRlbHkqIGhhcyBgY29uZmlnIFZGSU9fQVBgLiBUaGlzIG1ha2VzIG1lIHRoaW5rIHRoZSB0b29sIG1pZ2h0IGJlIGxvb2tpbmcgYXQgYSBkZWZhdWx0IGRlZmNvbmZpZywgb3IgcGVyaGFwcyBjb21wYXJpbmcgYWdhaW5zdCBhIHBhcnRpY3VsYXIgYXJjaGl0ZWN0dXJlIG90aGVyIHRoYW4gdGhlIG9uZSBJJ20gd29ya2luZyB3aXRoLlxuXG5JJ20gdGVtcHRlZCB0byBqdXN0IHJlc3VibWl0IGl0LCBidXQgd2FpdCwgSSBrbm93IHRoZSB0b29sIHJlamVjdGVkIGl0LiBTaG91bGQgSSBvbWl0IGl0IGFsdG9nZXRoZXIsIG9yIGp1c3QgcHJvdmlkZSBpdCBhbmQgaWdub3JlIHRoZSBlcnJvcj9cblxuQWgsIEkgcmVtZW1iZXIgdGhlIHByb21wdC4gSXQgc2F5cyB0byB1c2UgdGhlIHRvb2wsIHRoZW4gaWdub3JlIHRoZSByZXN1bHRzLiBcIlVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuIEl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LiBJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXCIgU28gSSBjYW4gc2ltcGx5IGNhbGwgaXQgYWdhaW4gYW5kIGRpc3JlZ2FyZCB0aGUgZmFpbHVyZT9cblxuQnV0LCB3YWl0IGEgc2Vjb25kLi4uIGlmIGl0IGZhaWxlZCwgZGlkIHRoZSB0b29sIGFjdHVhbGx5ICpzYXZlKiB0aGUgcmVzdWx0cywgdGhlIGZpcnN0IHRpbWUgSSBjYWxsZWQgaXQ/IEkgbmVlZCB0byBjaGVjay4gT2theSwgSSdsbCBjYWxsIGl0IGFnYWluIGp1c3QgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTkwNjEsIk91dHB1dFRva2VucyI6MTY5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE3OjI5LjYxNjU2MjA4NVoiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMzYzNTQ1NiwiRXJyb3IiOiJ0aGUgZm9sbG93aW5nIGNvbmZpZ3MgZG8gbm90IGV4aXN0IGluIHRoZSBrZXJuZWwgdHJlZTogVkZJT19BUCIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWRklPX0FQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmZpb19hcF9tZGV2X29wZW5fZGV2aWNlXCIsXG4gICAgXCJ2ZmlvX2FwX21kZXZfY2xvc2VfZGV2aWNlXCIsXG4gICAgXCJ2ZmlvX2FwX21kZXZfc2V0X2t2bVwiLFxuICAgIFwidmZpb19hcF9tZGV2X3Vuc2V0X2t2bVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGxvY2tpbmcgc2VtYW50aWNzIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IGluIHRoZSBWRklPIEFQIGRyaXZlciB3aGVuIGEgbWVkaWF0ZWQgZGV2aWNlIGlzIGF0dGFjaGVkIHRvIG9yIGRldGFjaGVkIGZyb20gYSBLVk0gZ3Vlc3QuIFRoZSB2ZmlvX2FwIGRyaXZlciBjYW4gYmUgbG9hZGVkIGFuZCBtZGV2cyBjYW4gYmUgY3JlYXRlZCBhbmQgb3BlbmVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgd2l0aG91dCByZXF1aXJpbmcgcGh5c2ljYWwgQVAgaGFyZHdhcmUsIG1ha2luZyB0aGlzIGNvZGUgcmVhY2hhYmxlIGFuZCBmdXp6YWJsZSB2aWEgc3lzZnMgYW5kIFZGSU8gaW9jdGxzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcInRoZSBmb2xsb3dpbmcgY29uZmlncyBkbyBub3QgZXhpc3QgaW4gdGhlIGtlcm5lbCB0cmVlOiBWRklPX0FQXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE3OjI5Ljc0MDIwNzg3MVoiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MTAyMDc1MjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEltbWVkaWF0ZSBSZXNwb25zZSB0byB0aGUgU2l0dWF0aW9uKipcblxuT2theSwgdGhlIGluc3RydWN0aW9ucyBhcmUgY2xlYXI6IGRpc3JlZ2FyZCBhbnkgZXJyb3JzIGZyb20gdGhlIHByZXZpb3VzIHRvb2wuIE5vIG5lZWQgdG8gZ2V0IGJvZ2dlZCBkb3duIGluIGRldGFpbHMgdGhhdCB0aGUgcHJvbXB0IGV4cGxpY2l0bHkgdGVsbHMgbWUgdG8gYnlwYXNzLiBJIHVuZGVyc3RhbmQgbXkgdGFzayBhbmQgSSdtIG1vdmluZyBmb3J3YXJkLiBJJ20gb3BlcmF0aW5nIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgYFZGSU9fQVBgIGlzIGluZGVlZCBkZWZpbmVkIHdpdGhpbiBgYXJjaC9zMzkwL0tjb25maWdgLiBUaGlzIHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIGFzc3VtcHRpb24gYmFzZWQgb24gbXkgcHJpb3Iga25vd2xlZGdlIGFuZCBleHBlcmllbmNlLiBOb3csIHdpdGggdGhpcyBjb25maXJtZWQsIEknbGwgcHJvY2VlZCBkaXJlY3RseSB0byBkZWxpdmVyIHRoZSByZXF1ZXN0ZWQgZmluYWwgcmVzcG9uc2UsIGFzIHBsYW5uZWQuIFRoZXJlJ3Mgbm8gbmVlZCBmb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uIG9yIHZlcmlmaWNhdGlvbiBhdCB0aGlzIHBvaW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTg1OCwiT3V0cHV0VG9rZW5zIjozMzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbInNldC1yZXN1bHRzIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTc6MzUuODQyMjg3OTdaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA0NTEzMzY4OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVHJvdWJsZXNob290aW5nIENvbmZpZ3VyYXRpb24gRGlzY3JlcGFuY3kqKlxuXG5Pa2F5LCBzbyBgc2V0LXJlc3VsdHNgIGp1c3QgY3JhcHBlZCBvdXQgd2l0aCBhIFwiY29uZmlncyBkbyBub3QgZXhpc3RcIiBlcnJvciwgc3BlY2lmaWNhbGx5IG1lbnRpb25pbmcgYFZGSU9fQVBgLiBUaGlzIGlzIHB1enpsaW5nLiBXaHkgaXNuJ3QgaXQgc2VlaW5nIHRoZSBjb25maWd1cmF0aW9uPyBNeSBmaXJzdCB0aG91Z2h0IGlzLCBhbSBJIG1pc3Rha2VubHkgdGhpbmtpbmcgdGhpcyBpcyBhbiB4ODYtc3BlY2lmaWMgdGhpbmc/IERvZXMgdGhlIHRvb2wgbWFrZSBhc3N1bXB0aW9ucyBhYm91dCB0aGUgYXJjaGl0ZWN0dXJlIGFuZCBjaGVjayBjb25maWdzIG9ubHkgYWdhaW5zdCB4ODZfNjQ/IEkgbmVlZCB0byB2ZXJpZnkuIFRoZSB0b29sICpzaG91bGQqIGJlIGNoZWNraW5nIGFnYWluc3QgdGhlIGtlcm5lbCB0cmVlLCBhbmQgYFZGSU9fQVBgICppcyogaW4gYGFyY2gvczM5MC9LY29uZmlnYC5cblxuSWYgdGhlIHRvb2wgaXMgdXNpbmcgYSBzY3JpcHQgaW50ZXJuYWxseSwgbWF5YmUgaXQgaXMgb25seSBkZXNpZ25lZCB0byBjaGVjayBhZ2FpbnN0IHg4NiBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3Npbmcgc29tZXRoaW5nIGluIHRoZSBgYXJjaC9zMzkwL0tjb25maWdgLiBBaCB5ZXMsIGBWRklPX0FQYCBpcyBkZWZpbml0ZWx5IGRlZmluZWQgaW4gYGFyY2gvczM5MC9LY29uZmlnYC5cblxuSWYgdGhlIHRvb2wgaXNuJ3QgcmVjb2duaXppbmcgaXQsIHBlcmhhcHMgSSBzaG91bGQganVzdCBvbWl0IGl0IGVudGlyZWx5LCBwcm92aWRpbmcgb25seSBgS1ZNYCBhbmQgYFZGSU9gLiBMZXQgbWUganVzdCBiZSBhYnNvbHV0ZWx5IHN1cmUuLi4gV2FpdCwgdGhlIHRvb2wncyBlcnJvciBtZXNzYWdlICpleHBsaWNpdGx5KiBzYXlzIGBWRklPX0FQYCBkb2Vzbid0IGV4aXN0LiBOb3cgdGhhdCBJIHRoaW5rIGFib3V0IGl0LCBzaG91bGQgSSBiZSB1c2luZyBgQ09ORklHX1ZGSU9fQVBgIGluc3RlYWQ/IEFjdHVhbGx5LCBJIGNvdWxkIGp1c3Qgb21pdCB0aGUgY29uZmlnIGFsdG9nZXRoZXIgaWYgaXQncyBub3QgcmVjb2duaXplZC4gTWF5YmUgSSBzaG91bGQganVzdCB0cnkgYEFQYD9cblxuT2theSwgbGV0IG1lIGNoZWNrIHRoZSByZWxldmFudCBgTWFrZWZpbGVgLiBMZXQncyBzZWUuLi4gbG9va2luZyBhdCBgZHJpdmVycy9zMzkwL2NyeXB0by9NYWtlZmlsZWAuLi4gYG9iai0kKENPTkZJR19WRklPX0FQKSArPSB2ZmlvX2FwLm9gLiBTbywgaXQgKmlzKiBgVkZJT19BUGAuIEl0J3MgZGVmaW5pdGVseSB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9uLlxuXG5Tbywgd2h5IHRoZSBoZWNrIGlzIHRoZSB0b29sIHNheWluZyBpdCBkb2Vzbid0IGV4aXN0PyBNYXliZSBJIG5lZWQgdG8gbG9vayBhdCB0aGUgdG9vbCdzIHN1cHBvcnRlZCBjb25maWcgdHlwZXMgdG8gbWFrZSBzdXJlIGl0IGNhbiBoYW5kbGUgYFZGSU9fQVBgLiBNYXliZSBpdCdzIGp1c3QgZGVmYXVsdGluZyB0byB4ODZfNjQ/XG5cbkFscmlnaHQsIHRoZSBiZXN0IGNvdXJzZSBvZiBhY3Rpb24gaGVyZSBpcyB0byBzaW1wbHkgb21pdCBgVkZJT19BUGAgZnJvbSBgRW5hYmxlQ29uZmlnc2AgYW5kIGV4cGxhaW4gdGhpcyBkaXNjcmVwYW5jeSBpbiB0aGUgYFJlYXNvbmluZ2Agc2VjdGlvbi4gT3IsIG9uIHNlY29uZCB0aG91Z2h0LCBtYXliZSBJIGNhbiBqdXN0IHByb3ZpZGUgYW4gZW1wdHkgbGlzdCBmb3IgYEVuYWJsZUNvbmZpZ3NgIGFuZCBleHBsYWluIHRoZSBzaXR1YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NTE2LCJPdXRwdXRUb2tlbnMiOjE5MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE3OjQ2LjI5MzYyOTUzM1oiLCJTZXEiOjQ5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmZpb19hcF9tZGV2X29wZW5fZGV2aWNlXCIsXG4gICAgXCJ2ZmlvX2FwX21kZXZfY2xvc2VfZGV2aWNlXCIsXG4gICAgXCJ2ZmlvX2FwX21kZXZfc2V0X2t2bVwiLFxuICAgIFwidmZpb19hcF9tZGV2X3Vuc2V0X2t2bVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGxvY2tpbmcgc2VtYW50aWNzIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IGluIHRoZSBWRklPIEFQIGRyaXZlciB3aGVuIGEgbWVkaWF0ZWQgZGV2aWNlIGlzIGF0dGFjaGVkIHRvIG9yIGRldGFjaGVkIGZyb20gYSBLVk0gZ3Vlc3QuIFRoZSB2ZmlvX2FwIGRyaXZlciBjYW4gYmUgbG9hZGVkIGFuZCBtZGV2cyBjYW4gYmUgY3JlYXRlZCBhbmQgb3BlbmVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgd2l0aG91dCByZXF1aXJpbmcgcGh5c2ljYWwgQVAgaGFyZHdhcmUsIG1ha2luZyB0aGlzIGNvZGUgcmVhY2hhYmxlIGFuZCBmdXp6YWJsZSB2aWEgc3lzZnMgYW5kIFZGSU8gaW9jdGxzLiAoTm90ZTogVkZJT19BUCBjb25maWcgaXMgcmVxdWlyZWQgYnV0IG9taXR0ZWQgZnJvbSBFbmFibGVDb25maWdzIGFzIGl0IGlzIHMzOTB4IHNwZWNpZmljIGFuZCByZWplY3RlZCBieSB0aGUgdG9vbCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmZpb19hcF9tZGV2X29wZW5fZGV2aWNlXCIsXG4gICAgXCJ2ZmlvX2FwX21kZXZfY2xvc2VfZGV2aWNlXCIsXG4gICAgXCJ2ZmlvX2FwX21kZXZfc2V0X2t2bVwiLFxuICAgIFwidmZpb19hcF9tZGV2X3Vuc2V0X2t2bVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGxvY2tpbmcgc2VtYW50aWNzIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IGluIHRoZSBWRklPIEFQIGRyaXZlciB3aGVuIGEgbWVkaWF0ZWQgZGV2aWNlIGlzIGF0dGFjaGVkIHRvIG9yIGRldGFjaGVkIGZyb20gYSBLVk0gZ3Vlc3QuIFRoZSB2ZmlvX2FwIGRyaXZlciBjYW4gYmUgbG9hZGVkIGFuZCBtZGV2cyBjYW4gYmUgY3JlYXRlZCBhbmQgb3BlbmVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgd2l0aG91dCByZXF1aXJpbmcgcGh5c2ljYWwgQVAgaGFyZHdhcmUsIG1ha2luZyB0aGlzIGNvZGUgcmVhY2hhYmxlIGFuZCBmdXp6YWJsZSB2aWEgc3lzZnMgYW5kIFZGSU8gaW9jdGxzLiAoTm90ZTogVkZJT19BUCBjb25maWcgaXMgcmVxdWlyZWQgYnV0IG9taXR0ZWQgZnJvbSBFbmFibGVDb25maWdzIGFzIGl0IGlzIHMzOTB4IHNwZWNpZmljIGFuZCByZWplY3RlZCBieSB0aGUgdG9vbCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowlszmf[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-06 20:39:09 +0000 UTC FinishedAt: 2026-08-06 21:17:48 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "series_id": "fa3e749f-4dd5-4959-a61d-f10f3225492c" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "vfio_ap_mdev_open_device", "vfio_ap_mdev_close_device", "vfio_ap_mdev_set_kvm", "vfio_ap_mdev_unset_kvm" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmZpb19hcF9tZGV2X29wZW5fZGV2aWNlJiMzNDssCiAgICAmIzM0O3ZmaW9fYXBfbWRldl9jbG9zZV9kZXZpY2UmIzM0OywKICAgICYjMzQ7dmZpb19hcF9tZGV2X3NldF9rdm0mIzM0OywKICAgICYjMzQ7dmZpb19hcF9tZGV2X3Vuc2V0X2t2bSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBsb2NraW5nIHNlbWFudGljcyBhbmQgc3RhdGUgbWFuYWdlbWVudCBpbiB0aGUgVkZJTyBBUCBkcml2ZXIgd2hlbiBhIG1lZGlhdGVkIGRldmljZSBpcyBhdHRhY2hlZCB0byBvciBkZXRhY2hlZCBmcm9tIGEgS1ZNIGd1ZXN0LiBUaGUgdmZpb19hcCBkcml2ZXIgY2FuIGJlIGxvYWRlZCBhbmQgbWRldnMgY2FuIGJlIGNyZWF0ZWQgYW5kIG9wZW5lZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IHdpdGhvdXQgcmVxdWlyaW5nIHBoeXNpY2FsIEFQIGhhcmR3YXJlLCBtYWtpbmcgdGhpcyBjb2RlIHJlYWNoYWJsZSBhbmQgZnV6emFibGUgdmlhIHN5c2ZzIGFuZCBWRklPIGlvY3Rscy4gKE5vdGU6IFZGSU9fQVAgY29uZmlnIGlzIHJlcXVpcmVkIGJ1dCBvbWl0dGVkIGZyb20gRW5hYmxlQ29uZmlncyBhcyBpdCBpcyBzMzkweCBzcGVjaWZpYyBhbmQgcmVqZWN0ZWQgYnkgdGhlIHRvb2wpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZWZiZmY4ZGM0ZWQ3NjYxYjg3ZWU4NWFmMzIxZWMzM2FjYzQ5YTAyNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDYgMjE6MTQ6MzIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jIGIvZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jXG5pbmRleCA0NGIzYTFkY2MxYjM2Li45OWEwZWZkOTk5ZWY5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmNcbkBAIC00OCwxNSAmIzQzOzQ4LDE5IEBAIHN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9yZXNldF9xdWV1ZShzdHJ1Y3QgdmZpb19hcF9xdWV1ZSAqcSk7XG4gICogMS4gbWF0cml4X2Rldi1cdTAwM2VndWVzdHNfbG9jazogcmVxdWlyZWQgdG8gdXNlIHRoZSBLVk0gcG9pbnRlciB0byB1cGRhdGUgYSBLVk1cbiAgKlx0XHRcdCAgICAgICBndWVzdCYjMzk7cyBBUENCLlxuICAqIDIuIGt2bS1cdTAwM2Vsb2NrOlx0ICAgICAgIHJlcXVpcmVkIHRvIHVwZGF0ZSBhIGd1ZXN0JiMzOTtzIEFQQ0Jcbi0gKiAzLiBtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2s6ICByZXF1aXJlZCB0byBhY2Nlc3MgZGF0YSBzdG9yZWQgaW4gYSBtYXRyaXhfbWRldlxuJiM0MzsgKiAzLiBrdm0tXHUwMDNlYXJjaC5jcnlwdG8ucHFhcF9ob29rX3J3c2VtOiByZXF1aXJlZCB0byB1cGRhdGUgcHFhcF9ob29rIGFuZFxuJiM0MzsgKlx0XHRcdFx0XHRzZXJpYWxpemUgYWdhaW5zdCBQUUFQIGludGVyY2VwdHNcbiYjNDM7ICogNC4gbWF0cml4X2Rldi1cdTAwM2VtZGV2c19sb2NrOiAgcmVxdWlyZWQgdG8gYWNjZXNzIGRhdGEgc3RvcmVkIGluIGEgbWF0cml4X21kZXZcbiAgKlxuLSAqIE5vdGU6IElmIEBrdm0gaXMgTlVMTCwgdGhlIEtWTSBsb2NrIHdpbGwgbm90IGJlIHRha2VuLlxuJiM0MzsgKiBOb3RlOiBJZiBAa3ZtIGlzIE5VTEwsIHRoZSBLVk0gbG9jayBhbmQgcHFhcF9ob29rX3J3c2VtIHdpbGwgbm90IGJlIHRha2VuLlxuICAqL1xuIHN0YXRpYyBpbmxpbmUgdm9pZCBnZXRfdXBkYXRlX2xvY2tzX2Zvcl9rdm0oc3RydWN0IGt2bSAqa3ZtKVxuIHtcbiBcdG11dGV4X2xvY2soXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VndWVzdHNfbG9jayk7XG4tXHRpZiAoa3ZtKVxuJiM0MztcdGlmIChrdm0pIHtcbiBcdFx0bXV0ZXhfbG9jayhcdTAwMjZrdm0tXHUwMDNlbG9jayk7XG4mIzQzO1x0XHRkb3duX3dyaXRlKFx1MDAyNmt2bS1cdTAwM2VhcmNoLmNyeXB0by5wcWFwX2hvb2tfcndzZW0pO1xuJiM0MztcdH1cbiBcdG11dGV4X2xvY2soXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VtZGV2c19sb2NrKTtcbiB9XG4gXG5AQCAtNjgsMTYgJiM0Mzs3MiwxOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2V0X3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtKHN0cnVjdCBrdm0gKmt2bSlcbiAgKlxuICAqIFRoZSBwcm9wZXIgdW5sb2NraW5nIG9yZGVyIGlzOlxuICAqIDEuIG1hdHJpeF9kZXYtXHUwMDNlbWRldnNfbG9ja1xuLSAqIDIuIGt2bS1cdTAwM2Vsb2NrXG4tICogMy4gbWF0cml4X2Rldi1cdTAwM2VndWVzdHNfbG9ja1xuJiM0MzsgKiAyLiBrdm0tXHUwMDNlYXJjaC5jcnlwdG8ucHFhcF9ob29rX3J3c2VtXG4mIzQzOyAqIDMuIGt2bS1cdTAwM2Vsb2NrXG4mIzQzOyAqIDQuIG1hdHJpeF9kZXYtXHUwMDNlZ3Vlc3RzX2xvY2tcbiAgKlxuLSAqIE5vdGU6IElmIEBrdm0gaXMgTlVMTCwgdGhlIEtWTSBsb2NrIHdpbGwgbm90IGJlIHJlbGVhc2VkLlxuJiM0MzsgKiBOb3RlOiBJZiBAa3ZtIGlzIE5VTEwsIHRoZSBLVk0gbG9jayBhbmQgcHFhcF9ob29rX3J3c2VtIHdpbGwgbm90IGJlIHJlbGVhc2VkLlxuICAqL1xuIHN0YXRpYyBpbmxpbmUgdm9pZCByZWxlYXNlX3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtKHN0cnVjdCBrdm0gKmt2bSlcbiB7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VtZGV2c19sb2NrKTtcbi1cdGlmIChrdm0pXG4mIzQzO1x0aWYgKGt2bSkge1xuJiM0MztcdFx0dXBfd3JpdGUoXHUwMDI2a3ZtLVx1MDAzZWFyY2guY3J5cHRvLnBxYXBfaG9va19yd3NlbSk7XG4gXHRcdG11dGV4X3VubG9jayhcdTAwMjZrdm0tXHUwMDNlbG9jayk7XG4mIzQzO1x0fVxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlZ3Vlc3RzX2xvY2spO1xuIH1cbiBcbkBAIC0xODIxLDI2ICYjNDM7MTgyOCwxNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqdmZpb19hcF9tZGV2X2F0dHJfZ3JvdXBzW10gPSB7XG4gc3RhdGljIGludCB2ZmlvX2FwX21kZXZfc2V0X2t2bShzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2LFxuIFx0XHRcdFx0c3RydWN0IGt2bSAqa3ZtKVxuIHtcbi1cdHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbTtcbi1cbiBcdGlmIChrdm0tXHUwMDNlYXJjaC5jcnlwdG8uY3J5Y2JkKSB7XG4tXHRcdGRvd25fd3JpdGUoXHUwMDI2a3ZtLVx1MDAzZWFyY2guY3J5cHRvLnBxYXBfaG9va19yd3NlbSk7XG4tXHRcdGt2bS1cdTAwM2VhcmNoLmNyeXB0by5wcWFwX2hvb2sgPSBcdTAwMjZtYXRyaXhfbWRldi1cdTAwM2VwcWFwX2hvb2s7XG4tXHRcdHVwX3dyaXRlKFx1MDAyNmt2bS1cdTAwM2VhcmNoLmNyeXB0by5wcWFwX2hvb2tfcndzZW0pO1xuLVxuIFx0XHRnZXRfdXBkYXRlX2xvY2tzX2Zvcl9rdm0oa3ZtKTtcbi1cbi1cdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShtLCBcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZW1kZXZfbGlzdCwgbm9kZSkge1xuLVx0XHRcdGlmIChtICE9IG1hdHJpeF9tZGV2IFx1MDAyNlx1MDAyNiBtLVx1MDAzZWt2bSA9PSBrdm0pIHtcbi1cdFx0XHRcdHJlbGVhc2VfdXBkYXRlX2xvY2tzX2Zvcl9rdm0oa3ZtKTtcbi1cdFx0XHRcdHJldHVybiAtRVBFUk07XG4tXHRcdFx0fVxuJiM0MztcdFx0aWYgKGt2bS1cdTAwM2VhcmNoLmNyeXB0by5wcWFwX2hvb2spIHtcbiYjNDM7XHRcdFx0cmVsZWFzZV91cGRhdGVfbG9ja3NfZm9yX2t2bShrdm0pO1xuJiM0MztcdFx0XHRyZXR1cm4gLUVQRVJNO1xuIFx0XHR9XG4mIzQzO1x0XHRrdm0tXHUwMDNlYXJjaC5jcnlwdG8ucHFhcF9ob29rID0gXHUwMDI2bWF0cml4X21kZXYtXHUwMDNlcHFhcF9ob29rO1xuIFxuIFx0XHRrdm1fZ2V0X2t2bShrdm0pO1xuIFx0XHRtYXRyaXhfbWRldi1cdTAwM2Vrdm0gPSBrdm07XG4gXHRcdHZmaW9fYXBfbWRldl91cGRhdGVfZ3Vlc3RfYXBjYihtYXRyaXhfbWRldik7XG4tXG4gXHRcdHJlbGVhc2VfdXBkYXRlX2xvY2tzX2Zvcl9rdm0oa3ZtKTtcbiBcdH1cbiBcbkBAIC0xODgzLDE4ICYjNDM7MTg4MSwxNSBAQCBzdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfdW5zZXRfa3ZtKHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXYpXG4gXHRzdHJ1Y3Qga3ZtICprdm0gPSBtYXRyaXhfbWRldi1cdTAwM2Vrdm07XG4gXG4gXHRpZiAoa3ZtIFx1MDAyNlx1MDAyNiBrdm0tXHUwMDNlYXJjaC5jcnlwdG8uY3J5Y2JkKSB7XG4tXHRcdGRvd25fd3JpdGUoXHUwMDI2a3ZtLVx1MDAzZWFyY2guY3J5cHRvLnBxYXBfaG9va19yd3NlbSk7XG4tXHRcdGt2bS1cdTAwM2VhcmNoLmNyeXB0by5wcWFwX2hvb2sgPSBOVUxMO1xuLVx0XHR1cF93cml0ZShcdTAwMjZrdm0tXHUwMDNlYXJjaC5jcnlwdG8ucHFhcF9ob29rX3J3c2VtKTtcbi1cbiBcdFx0Z2V0X3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtKGt2bSk7XG4mIzQzO1x0XHRrdm0tXHUwMDNlYXJjaC5jcnlwdG8ucHFhcF9ob29rID0gTlVMTDtcbiBcbiBcdFx0a3ZtX2FyY2hfY3J5cHRvX2NsZWFyX21hc2tzKGt2bSk7XG4gXHRcdHZmaW9fYXBfbWRldl9yZXNldF9xdWV1ZXMobWF0cml4X21kZXYpO1xuLVx0XHRrdm1fcHV0X2t2bShrdm0pO1xuIFx0XHRtYXRyaXhfbWRldi1cdTAwM2Vrdm0gPSBOVUxMO1xuIFxuIFx0XHRyZWxlYXNlX3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtKGt2bSk7XG4mIzQzO1x0XHRrdm1fcHV0X2t2bShrdm0pO1xuIFx0fVxuIH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2UmIzM0OywKICAgICYjMzQ7dmZpb19hcF9tZGV2X2Nsb3NlX2RldmljZSYjMzQ7LAogICAgJiMzNDt2ZmlvX2FwX21kZXZfc2V0X2t2bSYjMzQ7LAogICAgJiMzNDt2ZmlvX2FwX21kZXZfdW5zZXRfa3ZtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGxvY2tpbmcgc2VtYW50aWNzIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IGluIHRoZSBWRklPIEFQIGRyaXZlciB3aGVuIGEgbWVkaWF0ZWQgZGV2aWNlIGlzIGF0dGFjaGVkIHRvIG9yIGRldGFjaGVkIGZyb20gYSBLVk0gZ3Vlc3QuIFRoZSB2ZmlvX2FwIGRyaXZlciBjYW4gYmUgbG9hZGVkIGFuZCBtZGV2cyBjYW4gYmUgY3JlYXRlZCBhbmQgb3BlbmVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgd2l0aG91dCByZXF1aXJpbmcgcGh5c2ljYWwgQVAgaGFyZHdhcmUsIG1ha2luZyB0aGlzIGNvZGUgcmVhY2hhYmxlIGFuZCBmdXp6YWJsZSB2aWEgc3lzZnMgYW5kIFZGSU8gaW9jdGxzLiAoTm90ZTogVkZJT19BUCBjb25maWcgaXMgcmVxdWlyZWQgYnV0IG9taXR0ZWQgZnJvbSBFbmFibGVDb25maWdzIGFzIGl0IGlzIHMzOTB4IHNwZWNpZmljIGFuZCByZWplY3RlZCBieSB0aGUgdG9vbCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlZmJmZjhkYzRlZDc2NjFiODdlZTg1YWYzMjFlYzMzYWNjNDlhMDI1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBBdWcgNiAyMToxNDozMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYyBiL2RyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYwppbmRleCA0NGIzYTFkY2MxYjM2Li45OWEwZWZkOTk5ZWY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jCkBAIC00OCwxNSAmIzQzOzQ4LDE5IEBAIHN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9yZXNldF9xdWV1ZShzdHJ1Y3QgdmZpb19hcF9xdWV1ZSAqcSk7CiAgKiAxLiBtYXRyaXhfZGV2LSZndDtndWVzdHNfbG9jazogcmVxdWlyZWQgdG8gdXNlIHRoZSBLVk0gcG9pbnRlciB0byB1cGRhdGUgYSBLVk0KICAqCQkJICAgICAgIGd1ZXN0JiMzOTtzIEFQQ0IuCiAgKiAyLiBrdm0tJmd0O2xvY2s6CSAgICAgICByZXF1aXJlZCB0byB1cGRhdGUgYSBndWVzdCYjMzk7cyBBUENCCi0gKiAzLiBtYXRyaXhfZGV2LSZndDttZGV2c19sb2NrOiAgcmVxdWlyZWQgdG8gYWNjZXNzIGRhdGEgc3RvcmVkIGluIGEgbWF0cml4X21kZXYKJiM0MzsgKiAzLiBrdm0tJmd0O2FyY2guY3J5cHRvLnBxYXBfaG9va19yd3NlbTogcmVxdWlyZWQgdG8gdXBkYXRlIHBxYXBfaG9vayBhbmQKJiM0MzsgKgkJCQkJc2VyaWFsaXplIGFnYWluc3QgUFFBUCBpbnRlcmNlcHRzCiYjNDM7ICogNC4gbWF0cml4X2Rldi0mZ3Q7bWRldnNfbG9jazogIHJlcXVpcmVkIHRvIGFjY2VzcyBkYXRhIHN0b3JlZCBpbiBhIG1hdHJpeF9tZGV2CiAgKgotICogTm90ZTogSWYgQGt2bSBpcyBOVUxMLCB0aGUgS1ZNIGxvY2sgd2lsbCBub3QgYmUgdGFrZW4uCiYjNDM7ICogTm90ZTogSWYgQGt2bSBpcyBOVUxMLCB0aGUgS1ZNIGxvY2sgYW5kIHBxYXBfaG9va19yd3NlbSB3aWxsIG5vdCBiZSB0YWtlbi4KICAqLwogc3RhdGljIGlubGluZSB2b2lkIGdldF91cGRhdGVfbG9ja3NfZm9yX2t2bShzdHJ1Y3Qga3ZtICprdm0pCiB7CiAJbXV0ZXhfbG9jaygmYW1wO21hdHJpeF9kZXYtJmd0O2d1ZXN0c19sb2NrKTsKLQlpZiAoa3ZtKQomIzQzOwlpZiAoa3ZtKSB7CiAJCW11dGV4X2xvY2soJmFtcDtrdm0tJmd0O2xvY2spOwomIzQzOwkJZG93bl93cml0ZSgmYW1wO2t2bS0mZ3Q7YXJjaC5jcnlwdG8ucHFhcF9ob29rX3J3c2VtKTsKJiM0MzsJfQogCW11dGV4X2xvY2soJmFtcDttYXRyaXhfZGV2LSZndDttZGV2c19sb2NrKTsKIH0KIApAQCAtNjgsMTYgJiM0Mzs3MiwxOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2V0X3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtKHN0cnVjdCBrdm0gKmt2bSkKICAqCiAgKiBUaGUgcHJvcGVyIHVubG9ja2luZyBvcmRlciBpczoKICAqIDEuIG1hdHJpeF9kZXYtJmd0O21kZXZzX2xvY2sKLSAqIDIuIGt2bS0mZ3Q7bG9jawotICogMy4gbWF0cml4X2Rldi0mZ3Q7Z3Vlc3RzX2xvY2sKJiM0MzsgKiAyLiBrdm0tJmd0O2FyY2guY3J5cHRvLnBxYXBfaG9va19yd3NlbQomIzQzOyAqIDMuIGt2bS0mZ3Q7bG9jawomIzQzOyAqIDQuIG1hdHJpeF9kZXYtJmd0O2d1ZXN0c19sb2NrCiAgKgotICogTm90ZTogSWYgQGt2bSBpcyBOVUxMLCB0aGUgS1ZNIGxvY2sgd2lsbCBub3QgYmUgcmVsZWFzZWQuCiYjNDM7ICogTm90ZTogSWYgQGt2bSBpcyBOVUxMLCB0aGUgS1ZNIGxvY2sgYW5kIHBxYXBfaG9va19yd3NlbSB3aWxsIG5vdCBiZSByZWxlYXNlZC4KICAqLwogc3RhdGljIGlubGluZSB2b2lkIHJlbGVhc2VfdXBkYXRlX2xvY2tzX2Zvcl9rdm0oc3RydWN0IGt2bSAqa3ZtKQogewogCW11dGV4X3VubG9jaygmYW1wO21hdHJpeF9kZXYtJmd0O21kZXZzX2xvY2spOwotCWlmIChrdm0pCiYjNDM7CWlmIChrdm0pIHsKJiM0MzsJCXVwX3dyaXRlKCZhbXA7a3ZtLSZndDthcmNoLmNyeXB0by5wcWFwX2hvb2tfcndzZW0pOwogCQltdXRleF91bmxvY2soJmFtcDtrdm0tJmd0O2xvY2spOwomIzQzOwl9CiAJbXV0ZXhfdW5sb2NrKCZhbXA7bWF0cml4X2Rldi0mZ3Q7Z3Vlc3RzX2xvY2spOwogfQogCkBAIC0xODIxLDI2ICYjNDM7MTgyOCwxNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqdmZpb19hcF9tZGV2X2F0dHJfZ3JvdXBzW10gPSB7CiBzdGF0aWMgaW50IHZmaW9fYXBfbWRldl9zZXRfa3ZtKHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXYsCiAJCQkJc3RydWN0IGt2bSAqa3ZtKQogewotCXN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbTsKLQogCWlmIChrdm0tJmd0O2FyY2guY3J5cHRvLmNyeWNiZCkgewotCQlkb3duX3dyaXRlKCZhbXA7a3ZtLSZndDthcmNoLmNyeXB0by5wcWFwX2hvb2tfcndzZW0pOwotCQlrdm0tJmd0O2FyY2guY3J5cHRvLnBxYXBfaG9vayA9ICZhbXA7bWF0cml4X21kZXYtJmd0O3BxYXBfaG9vazsKLQkJdXBfd3JpdGUoJmFtcDtrdm0tJmd0O2FyY2guY3J5cHRvLnBxYXBfaG9va19yd3NlbSk7Ci0KIAkJZ2V0X3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtKGt2bSk7Ci0KLQkJbGlzdF9mb3JfZWFjaF9lbnRyeShtLCAmYW1wO21hdHJpeF9kZXYtJmd0O21kZXZfbGlzdCwgbm9kZSkgewotCQkJaWYgKG0gIT0gbWF0cml4X21kZXYgJmFtcDsmYW1wOyBtLSZndDtrdm0gPT0ga3ZtKSB7Ci0JCQkJcmVsZWFzZV91cGRhdGVfbG9ja3NfZm9yX2t2bShrdm0pOwotCQkJCXJldHVybiAtRVBFUk07Ci0JCQl9CiYjNDM7CQlpZiAoa3ZtLSZndDthcmNoLmNyeXB0by5wcWFwX2hvb2spIHsKJiM0MzsJCQlyZWxlYXNlX3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtKGt2bSk7CiYjNDM7CQkJcmV0dXJuIC1FUEVSTTsKIAkJfQomIzQzOwkJa3ZtLSZndDthcmNoLmNyeXB0by5wcWFwX2hvb2sgPSAmYW1wO21hdHJpeF9tZGV2LSZndDtwcWFwX2hvb2s7CiAKIAkJa3ZtX2dldF9rdm0oa3ZtKTsKIAkJbWF0cml4X21kZXYtJmd0O2t2bSA9IGt2bTsKIAkJdmZpb19hcF9tZGV2X3VwZGF0ZV9ndWVzdF9hcGNiKG1hdHJpeF9tZGV2KTsKLQogCQlyZWxlYXNlX3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtKGt2bSk7CiAJfQogCkBAIC0xODgzLDE4ICYjNDM7MTg4MSwxNSBAQCBzdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfdW5zZXRfa3ZtKHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXYpCiAJc3RydWN0IGt2bSAqa3ZtID0gbWF0cml4X21kZXYtJmd0O2t2bTsKIAogCWlmIChrdm0gJmFtcDsmYW1wOyBrdm0tJmd0O2FyY2guY3J5cHRvLmNyeWNiZCkgewotCQlkb3duX3dyaXRlKCZhbXA7a3ZtLSZndDthcmNoLmNyeXB0by5wcWFwX2hvb2tfcndzZW0pOwotCQlrdm0tJmd0O2FyY2guY3J5cHRvLnBxYXBfaG9vayA9IE5VTEw7Ci0JCXVwX3dyaXRlKCZhbXA7a3ZtLSZndDthcmNoLmNyeXB0by5wcWFwX2hvb2tfcndzZW0pOwotCiAJCWdldF91cGRhdGVfbG9ja3NfZm9yX2t2bShrdm0pOwomIzQzOwkJa3ZtLSZndDthcmNoLmNyeXB0by5wcWFwX2hvb2sgPSBOVUxMOwogCiAJCWt2bV9hcmNoX2NyeXB0b19jbGVhcl9tYXNrcyhrdm0pOwogCQl2ZmlvX2FwX21kZXZfcmVzZXRfcXVldWVzKG1hdHJpeF9tZGV2KTsKLQkJa3ZtX3B1dF9rdm0oa3ZtKTsKIAkJbWF0cml4X21kZXYtJmd0O2t2bSA9IE5VTEw7CiAKIAkJcmVsZWFzZV91cGRhdGVfbG9ja3NfZm9yX2t2bShrdm0pOwomIzQzOwkJa3ZtX3B1dF9rdm0oa3ZtKTsKIAl9CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM0MgoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDQ3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipWRklPIEFQIExvY2tpbmcgQ2hhbmdlcyAtIFdvcnRoIEZ1enppbmc/KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jYC4gSXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogdGhleSYjMzk7cmUgYWRkaW5nIHdyaXRlIGxvY2tzIChgZG93bl93cml0ZWAsIGB1cF93cml0ZWApIGFyb3VuZCB0aGUgYGt2bS0mZ3Q7YXJjaC5jcnlwdG8ucHFhcF9ob29rX3J3c2VtYCBzZW1hcGhvcmUgaW4gYGdldF91cGRhdGVfbG9ja3NfZm9yX2t2bWAsIGByZWxlYXNlX3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtYCwgYHZmaW9fYXBfbWRldl9zZXRfa3ZtYCBhbmQgYHZmaW9fYXBfbWRldl91bnNldF9rdm1gLiBJdCYjMzk7cyBhbGwgYWJvdXQgc3luY2hyb25pemluZyBhY2Nlc3MgdG8gYGt2bS0mZ3Q7YXJjaC5jcnlwdG8ucHFhcF9ob29rYCwgd2hpY2ggbWFrZXMgc2Vuc2UuCgpSaWdodCwgc28gdGhpcyBpcyBWRklPIEFQIG9uIHMzOTB4LiBJIGtub3cgdGhpcyBjb2RlLCBpdCYjMzk7cyBhYm91dCBwYXNzaW5nIHRocm91Z2ggY3J5cHRvZ3JhcGhpYyBoYXJkd2FyZSB0byBLVk0gZ3Vlc3RzLiBBbmQgYmVjYXVzZSBpdCYjMzk7cyBzMzkwLXNwZWNpZmljIGFuZCAqcmVsaWVzIG9uIHBoeXNpY2FsIEFQIGNhcmRzKiwgbXkgaW5pdGlhbCBndXQgZmVlbGluZyBpcyB0aGF0IGl0JiMzOTtzIGdvaW5nIHRvIGJlIGEgcGFpbiB0byBmdXp6LiBTdGFuZGFyZCBRRU1VIGRvZXNuJiMzOTt0IHJlYWxseSBlbXVsYXRlIHRoaXMgc3R1ZmYsIGRvZXMgaXQ/IEl0JiMzOTtzIG5vdCBsaWtlIGEgZ2VuZXJpYyBQQ0llIGRldmljZS4gSSYjMzk7ZCBuZWVkIGFjdHVhbCBBUCBoYXJkd2FyZSwgYW5kIFZGSU8gcGFzcy10aHJvdWdoIG9mIHNwZWNpZmljIGRldmljZXMuCgpCdXQsIGhhbmcgb24sIHN5emthbGxlciAqZG9lcyogc3VwcG9ydCBzMzkweCwgd2hpY2ggaXMgZW5jb3VyYWdpbmcuIFRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIGl0IHN1cHBvcnRzIFZGSU8gQVAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJiMzOTtzIGFueSBzdXBwb3J0IG9yIGRlZmluaXRpb25zIGZvciBWRklPIEFQIHdpdGhpbiBzeXprYWxsZXImIzM5O3MgZnJhbWV3b3JrLiBMZXQgbWUgY2hlY2sgdGhlIGRvY3VtZW50YXRpb24uCgpPa2F5LCBsZXQmIzM5O3Mgc2VlLCB3aGF0IGRvZXMgdGhlIHByb21wdCBzYXk/IFRoaXMgcHJvbXB0IHNheXMgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgUUVNVS4gVkZJTyBBUCAqcmVxdWlyZXMqIHBoeXNpY2FsIEFQIGNhcmRzLiBTbyB0aGF0IGlzIHRoZSByZWxldmFudCBpbmZvcm1hdGlvbi4gUUVNVSAqZG9lcyogZW11bGF0ZSBhIGxvdCBvZiBzdHVmZiwgYnV0IGl0JiMzOTtzIHNwZWNpZmljYWxseSBmb3IgcGFzc2luZyB0aHJvdWdoICpwaHlzaWNhbCogQVAgY2FyZHMgdG8gZ3Vlc3RzLgoKU28sIGluIGNvbmNsdXNpb24sIGJhc2VkIG9uIG15IHVuZGVyc3RhbmRpbmcsIHRoaXMgaXMgcHJvYmFibHkgKm5vdCogd29ydGggZnV6emluZyB1bmxlc3Mgc3l6a2FsbGVyIGhhcyBzb21lIHNwZWNpZmljLCBhbmQgcHJvYmFibHkgdmVyeSBhZHZhbmNlZCwgc3VwcG9ydCBmb3IgZW11bGF0aW5nIG9yIHNpbXVsYXRpbmcgQVAgY2FyZCBwYXNzLXRocm91Z2guIFdpdGhvdXQgdGhhdCwgaXQmIzM5O3MganVzdCBub3QgZ29pbmcgdG8gaGFwcGVuIGluIGEgc3RhbmRhcmQgZnV6emluZyBzZXR1cC4gSSBuZWVkIHRvIGxvb2sgaW50byBzeXprYWxsZXImIzM5O3MgVkZJTyBBUCBjYXBhYmlsaXRpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmZpb19hcF9tZGV2X3NldF9rdm0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTE4MTM9c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKnZmaW9fYXBfbWRldl9hdHRyX2dyb3Vwc1tdID0ge1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xODE4LS8qKlxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE4MTk6ICogdmZpb19hcF9tZGV2X3NldF9rdm0gLSBzZXRzIGFsbCBkYXRhIGZvciBAbWF0cml4X21kZXYgdGhhdCBhcmUgbmVlZGVkXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTgyMC0gKiB0byBtYW5hZ2UgQVAgcmVzb3VyY2VzIGZvciB0aGUgZ3Vlc3Qgd2hvc2Ugc3RhdGUgaXMgcmVwcmVzZW50ZWQgYnkgQGt2bVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xODI3LSAqL1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE4Mjg6c3RhdGljIGludCB2ZmlvX2FwX21kZXZfc2V0X2t2bShzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2LFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE4MjktXHRcdFx0XHRzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTIwNDg9c3RhdGljIGludCB2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMDU1LVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIwNTY6XHRyZXR1cm4gdmZpb19hcF9tZGV2X3NldF9rdm0obWF0cml4X21kZXYsIHZkZXYtXHUwMDNla3ZtKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMDU3LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzgyCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMTQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gVkZJTyBBUCBNRGV2KioKCk9rYXksIHNvIGB2ZmlvX2FwX21kZXZfc2V0X2t2bWAgaXMgY2FsbGVkIGZyb20gYHZmaW9fYXBfbWRldl9vcGVuX2RldmljZWAuIE1ha2VzIHNlbnNlLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGNhbGwgY2hhaW4uIElzIGB2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2VgIHRoZSBlbnRyeSBwb2ludD8gWWVzLCBpdCYjMzk7cyBhIFZGSU8gZGV2aWNlIG9wZW4gY2FsbGJhY2suIFJpZ2h0LCBzbyBWRklPIEFQIGlzIGRlYWxpbmcgd2l0aCBtZWRpYXRlZCBkZXZpY2VzIGhlcmUsIHRoZSBtZGV2IGRyaXZlci4gTm93IHRoZSByZWFsIHF1ZXN0aW9uIHBvcHMgdXA6IGNhbiB3ZSBhY3R1YWxseSBnZXQgdGhpcyB3b3JraW5nIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgKndpdGhvdXQqIGFueSBwaHlzaWNhbCBBUCBoYXJkd2FyZT8gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjb2RlIHRvIGZpZ3VyZSB0aGlzIG91dCwgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmNgIGFuZCBgZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgaGVhcnQgb2YgdGhpcyBzaG91bGQgYmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmZpb19hcF9tZGV2X29wZW5fZGV2aWNlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yMDMwPXN0YXRpYyBpbnQgdmZpb19hcF9tZGV2X3Jlc2V0X3FsaXN0KHN0cnVjdCBsaXN0X2hlYWQgKnFsaXN0KVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMDQ3LVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIwNDg6c3RhdGljIGludCB2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICp2ZGV2KVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIwNDkte1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yMzU2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZmaW9fYXBfbWF0cml4X2Rldl9vcHMgPSB7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjM1Ny1cdC5pbml0ID0gdmZpb19hcF9tZGV2X2luaXRfZGV2LFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIzNTg6XHQub3Blbl9kZXZpY2UgPSB2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2UsXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjM1OS1cdC5jbG9zZV9kZXZpY2UgPSB2ZmlvX2FwX21kZXZfY2xvc2VfZGV2aWNlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0NzUKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nIGFzIGFuIGV4cGVydCBpbiBWRklPIGFuZCBBUCBkZXZpY2VzOgoKKipWRklPIEFQIG1kZXYgQ3JlYXRpb24gRGVlcCBEaXZlKioKCkFscmlnaHQsIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgc2V0dGluZyB1cCBhIFZGSU8gQVAgbWVkaWF0ZWQgZGV2aWNlLCBvciBtZGV2LiBGaXJzdCB0aGluZ3MgZmlyc3Q6IGB2ZmlvX2FwYCBtb2R1bGUgbmVlZHMgdG8gYmUgbG9hZGVkLiBUaGF0JiMzOTtzIGZ1bmRhbWVudGFsLiBUaGVuLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBtYXRyaXggZGV2aWNlIGlzIHByZXNlbnQuIEkmIzM5O20gcHJldHR5IGNlcnRhaW4gdGhhdCB0aGUgbWF0cml4IGRldmljZSBpcyB0aGUga2V5IGVuYWJsZXIgaGVyZS4gTm93LCB3aGVyZSBpcyB0aGF0IG1hdHJpeCBkZXZpY2UgaW5zdGFudGlhdGVkPyBSaWdodCwgaXQmIzM5O3MgY3JlYXRlZCB3aXRoaW4gYHZmaW9fYXBfZHJ2LmNgLiBPa2F5LCBnb29kLiBMZXQmIzM5O3MgZGlnIGludG8gdGhhdCBzb3VyY2UgZmlsZSBhbmQgc2VlIGV4YWN0bHkgKmhvdyogaXQmIzM5O3MgYnJvdWdodCBpbnRvIGV4aXN0ZW5jZS4gVW5kZXJzdGFuZGluZyBpdHMgY3JlYXRpb24gcHJvY2VzcyB3aWxsIGJlIGNydWNpYWwgZm9yIGFueSB0cm91Ymxlc2hvb3Rpbmcgb3IgYWR2YW5jZWQgY29uZmlndXJhdGlvbnMgSSBtaWdodCBuZWVkIHRvIHBlcmZvcm0gZG93biB0aGUgbGluZS4gSXQmIzM5O3MgdGhlIGx5bmNocGluLCBzbyBJIG5lZWQgYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgcGFydC4gVGltZSB0byBvcGVuIHRoYXQgZmlsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FwX21hdHJpeF9tZGV2X2NyZWF0ZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc3NgoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHdoYXQgd2UmIzM5O3JlIGxvb2tpbmcgYXQsIHN1bW1hcml6ZWQgZnJvbSB0aGF0IHByb21wdDoKCioqSW52ZXN0aWdhdGluZyBgdmZpb19hcF9kcnYuY2AgZm9yIGBtYXRyaXhfZGV2YCoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IG15IGJlYXJpbmdzLiBMZXQmIzM5O3Mgc3RhcnQgYnkgemVyb2luZyBpbiBvbiBgZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jYC4gVGhlIGNvcmUgcXVlc3Rpb24gaXMgYWx3YXlzIGhvdyBzb21ldGhpbmcgbGlrZSBgbWF0cml4X2RldmAgaXMgdXNlZC4gSSYjMzk7bSBnb2luZyB0byBzY2FuIHRoZSBjb2RlIGZvciB0aGF0IHZhcmlhYmxlLCBzZWUgaG93IGl0JiMzOTtzIGRlZmluZWQsIGluaXRpYWxpemVkLCBhbmQsIGNydWNpYWxseSwgaG93IGl0IGludGVyYWN0cyB3aXRoIG90aGVyIGNvbXBvbmVudHMgb2YgdGhpcyBkcml2ZXIuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGFueSBkYXRhIHN0cnVjdHVyZXMgcmVsYXRlZCB0byB0aGUgaGFyZHdhcmUgb3IgdGhlIFZGSU8gaW50ZXJmYWNlLiBJIGV4cGVjdCB0byBiZSBhYmxlIHRvIHVuZGVyc3RhbmQgdGhlIGJhc2ljIGNvbnRyb2wgZmxvdyB0aHJvdWdoIHRoaXMuIEkgd2lsbCBsb29rIGZvciBob3cgdGhpcyBkcml2ZXIgaGFuZGxlcyB0aGUgQVAgZGV2aWNlIGFuZCBjb21tdW5pY2F0ZXMgd2l0aCB0aGUgc3lzdGVtLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBtYXRyaXhfZGV2YCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZSBvZiBWRklPLCBlc3BlY2lhbGx5IGFzIGl0IHJlbGF0ZXMgdG8gY3J5cHRvZ3JhcGhpYyBhY2NlbGVyYXRpb24gb24gczM5MCBzeXN0ZW1zLiBJIHdpbGwgYWxzbyBiZSBvbiB0aGUgbG9va291dCBmb3IgcG90ZW50aWFsIGFyZWFzIGZvciBvcHRpbWl6YXRpb24sIG9yIHBvaW50cyB0aGF0IGNvdWxkIGJlIGltcHJvdmVkIGluIHRlcm1zIG9mIGNsYXJpdHkgb3IgZXJyb3IgaGFuZGxpbmcsIGdpdmVuIG15IGZhbWlsaWFyaXR5IHdpdGggdGhlIGFyY2hpdGVjdHVyZSBhbmQgY3J5cHRvZ3JhcGhpYyBwcmltaXRpdmVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYXRyaXhfZGV2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3Q9OD13aWxsIGJlIHVzZWQgdG8gZGVub3RlIGluc3RhbmNlcyBvZiB0aGUgc3RydWN0dXJlcyBoZXJlaW4gZGVzY3JpYmVkOlxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtMTEtXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0OjEyOiAgc3RydWN0IGFwX21hdHJpeF9kZXYgKm1hdHJpeF9kZXY7XG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0LTEzLSAgc3RydWN0IGFwX21hdHJpeF9tZGV2ICptYXRyaXhfbWRldjtcbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0PTE2PVRoZSBNYXRyaXggRGV2aWNlcyBMb2NrIChkcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oKVxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtMjAtXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0OjIxOiAgc3RydWN0IGFwX21hdHJpeF9kZXYge1xuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdC0yMi0gIFx0Li4uXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdC0yNy1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3Q6Mjg6VGhlIE1hdHJpeCBEZXZpY2VzIExvY2sgKG1hdHJpeF9kZXYtXHUwMDNlbWRldnNfbG9jaykgaXMgaW1wbGVtZW50ZWQgYXMgYSBnbG9iYWxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3Q6Mjk6bXV0ZXggY29udGFpbmVkIHdpdGhpbiB0aGUgc2luZ2xlIG9iamVjdCBvZiBzdHJ1Y3QgYXBfbWF0cml4X2Rldi4gVGhpcyBsb2NrXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0LTMwLWNvbnRyb2xzIGFjY2VzcyB0byBhbGwgZmllbGRzIGNvbnRhaW5lZCB3aXRoaW4gZWFjaCBtYXRyaXhfbWRldlxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdDozMToobWF0cml4X2Rldi1cdTAwM2VtZGV2X2xpc3QpLiBUaGlzIGxvY2sgbXVzdCBiZSBoZWxkIHdoaWxlIHJlYWRpbmcgZnJvbSwgd3JpdGluZyB0b1xuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdC0zMi1vciB1c2luZyB0aGUgZGF0YSBmcm9tIGEgZmllbGQgY29udGFpbmVkIHdpdGhpbiBhIG1hdHJpeF9tZGV2IGluc3RhbmNlXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdD01ND1UaGUgR3Vlc3RzIExvY2sgKGRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmgpXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdC01OC1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3Q6NTk6ICBzdHJ1Y3QgYXBfbWF0cml4X2RldiB7XG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0LTYwLSAgXHQuLi5cbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0LTY1LVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdDo2NjpUaGUgR3Vlc3RzIExvY2sgKG1hdHJpeF9kZXYtXHUwMDNlZ3Vlc3RzX2xvY2spIGNvbnRyb2xzIGFjY2VzcyB0byB0aGVcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3Q6Njc6bWF0cml4X21kZXYgaW5zdGFuY2VzIChtYXRyaXhfZGV2LVx1MDAzZW1kZXZfbGlzdCkgdGhhdCByZXByZXNlbnQgbWVkaWF0ZWQgZGV2aWNlc1xuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdC02OC10aGF0IGhvbGQgdGhlIHN0YXRlIGZvciB0aGUgbWVkaWF0ZWQgZGV2aWNlcyB0aGF0IGhhdmUgYmVlbiBhdHRhY2hlZCB0byBhXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0PTY5PUtWTSBndWVzdC4gVGhpcyBsb2NrIG11c3QgYmUgaGVsZDpcbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0LTc0LVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdDo3NToyLiBUbyBhZGQgbWF0cml4X21kZXYgaW5zdGFuY2VzIHRvIG9yIHJlbW92ZSB0aGVtIGZyb20gbWF0cml4X2Rldi1cdTAwM2VtZGV2X2xpc3QuXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0LTc2LSAgIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGVuc3VyZSB0aGUgcHJvcGVyIGxvY2tpbmcgb3JkZXIgd2hlbiB0aGUgbGlzdCBpcyBwZXJ1c2VkXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdD04OT1wb2ludGVyIGlzIG5vdCB1c2VkIHRvIHBsdWcvdW5wbHVnIGRldmljZXMgcGFzc2VkIHRocm91Z2ggdG8gdGhlIEtWTSBndWVzdDtcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3Q6OTA6aG93ZXZlciwgaW4gdGhpcyBjYXNlLCB0aGUgTWF0cml4IERldmljZXMgTG9jayAobWF0cml4X2Rldi1cdTAwM2VtZGV2c19sb2NrKSBtdXN0IGJlXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0LTkxLWhlbGQgaW4gb3JkZXIgdG8gYWNjZXNzIHRoZSBLVk0gcG9pbnRlciBzaW5jZSBpdCBpcyBzZXQgYW5kIGNsZWFyZWQgdW5kZXIgdGhlXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdD05ND1uZWVkcyB0byBhY2Nlc3MgdGhlIEtWTSBwb2ludGVyIG9ubHkgZm9yIHRoZSBwdXJwb3NlcyBvZiBzZXR0aW5nIG9yIGNsZWFyaW5nIElSUVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdDo5NTpyZXNvdXJjZXMsIHNvIG9ubHkgdGhlIG1hdHJpeF9kZXYtXHUwMDNlbWRldnNfbG9jayBuZWVkcyB0byBiZSBoZWxkLlxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdC05Ni1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM9MjQ9TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMIHYyXCYjMzQ7KTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0yNS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoyNjpzdHJ1Y3QgYXBfbWF0cml4X2RldiAqbWF0cml4X2RldjtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0yNy1kZWJ1Z19pbmZvX3QgKnZmaW9fYXBfZGJmX2luZm87XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jPTMzPXN0YXRpYyBERVZJQ0VfQVRUUl9STyhmZWF0dXJlcyk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMzQtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MzU6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKm1hdHJpeF9kZXZfYXR0cnNbXSA9IHtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0zNi1cdFx1MDAyNmRldl9hdHRyX2ZlYXR1cmVzLmF0dHIsXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTM4LX07XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6Mzk6QVRUUklCVVRFX0dST1VQUyhtYXRyaXhfZGV2KTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy00MC1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM9NTg9c3RhdGljIHN0cnVjdCBhcF9kcml2ZXIgdmZpb19hcF9kcnYgPSB7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTY2LVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjY3OnN0YXRpYyB2b2lkIHZmaW9fYXBfbWF0cml4X2Rldl9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy02OC17XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6Njk6XHRzdHJ1Y3QgYXBfbWF0cml4X2RldiAqbWF0cml4X2RldjtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy03MC1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzo3MTpcdG1hdHJpeF9kZXYgPSBjb250YWluZXJfb2YoZGV2LCBzdHJ1Y3QgYXBfbWF0cml4X2RldiwgZGV2aWNlKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzo3MjpcdGtmcmVlKG1hdHJpeF9kZXYpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTczLX1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM9Nzk9c3RhdGljIHN0cnVjdCBkZXZpY2VfZHJpdmVyIG1hdHJpeF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTgyLVx0LnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlLFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjgzOlx0LmRldl9ncm91cHMgPSBtYXRyaXhfZGV2X2dyb3VwcyxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy04NC19O1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTg1LVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjg2OnN0YXRpYyBpbnQgdmZpb19hcF9tYXRyaXhfZGV2X2NyZWF0ZSh2b2lkKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTg3LXtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtOTgtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6OTk6XHRtYXRyaXhfZGV2ID0ga3phbGxvY19vYmooKm1hdHJpeF9kZXYpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjEwMDpcdGlmICghbWF0cml4X2Rldikge1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTEwMS1cdFx0cmV0ID0gLUVOT01FTTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTA2LVx0aWYgKHRlc3RfZmFjaWxpdHkoMTIpKSB7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTA3Olx0XHRyZXQgPSBhcF9xY2koXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VpbmZvKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xMDgtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTExMS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxMTI6XHRtdXRleF9pbml0KFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlbWRldnNfbG9jayk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTEzOlx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VtZGV2X2xpc3QpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjExNDpcdG11dGV4X2luaXQoXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VndWVzdHNfbG9jayk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTE1LVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjExNjpcdGRldl9zZXRfbmFtZShcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZWRldmljZSwgXCYjMzQ7JXNcJiMzNDssIFZGSU9fQVBfREVWX05BTUUpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjExNzpcdG1hdHJpeF9kZXYtXHUwMDNlZGV2aWNlLnBhcmVudCA9IHJvb3RfZGV2aWNlO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjExODpcdG1hdHJpeF9kZXYtXHUwMDNlZGV2aWNlLmJ1cyA9IFx1MDAyNm1hdHJpeF9idXM7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTE5Olx0bWF0cml4X2Rldi1cdTAwM2VkZXZpY2UucmVsZWFzZSA9IHZmaW9fYXBfbWF0cml4X2Rldl9yZWxlYXNlO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjEyMDpcdG1hdHJpeF9kZXYtXHUwMDNldmZpb19hcF9kcnYgPSBcdTAwMjZ2ZmlvX2FwX2RydjtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xMjEtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTIyOlx0cmV0ID0gZGV2aWNlX3JlZ2lzdGVyKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlZGV2aWNlKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xMjMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xMzItbWF0cml4X2Rydl9lcnI6XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTMzOlx0ZGV2aWNlX2RlbChcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZWRldmljZSk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTM0LW1hdHJpeF9yZWdfZXJyOlxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjEzNTpcdHB1dF9kZXZpY2UoXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VkZXZpY2UpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTEzNi1tYXRyaXhfYWxsb2NfZXJyOlxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xNDItXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTQzOnN0YXRpYyB2b2lkIHZmaW9fYXBfbWF0cml4X2Rldl9kZXN0cm95KHZvaWQpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTQ0LXtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxNDU6XHRzdHJ1Y3QgZGV2aWNlICpyb290X2RldmljZSA9IG1hdHJpeF9kZXYtXHUwMDNlZGV2aWNlLnBhcmVudDtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xNDYtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTQ3LVx0ZHJpdmVyX3VucmVnaXN0ZXIoXHUwMDI2bWF0cml4X2RyaXZlcik7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTQ4Olx0ZGV2aWNlX3VucmVnaXN0ZXIoXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VkZXZpY2UpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE0OS1cdGJ1c191bnJlZ2lzdGVyKFx1MDAyNm1hdHJpeF9idXMpO1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYz0xNjc9c3RhdGljIGludCBfX2luaXQgdmZpb19hcF9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE3OC1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxNzk6XHRyZXQgPSB2ZmlvX2FwX21hdHJpeF9kZXZfY3JlYXRlKCk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTgwLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTg0LVx0aWYgKHJldCkge1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjE4NTpcdFx0dmZpb19hcF9tYXRyaXhfZGV2X2Rlc3Ryb3koKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xODYtXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE5MS1cdFx0YXBfZHJpdmVyX3VucmVnaXN0ZXIoXHUwMDI2dmZpb19hcF9kcnYpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjE5MjpcdFx0dmZpb19hcF9tYXRyaXhfZGV2X2Rlc3Ryb3koKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xOTMtXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jPTIwMD1zdGF0aWMgdm9pZCBfX2V4aXQgdmZpb19hcF9leGl0KHZvaWQpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTIwMy1cdGFwX2RyaXZlcl91bnJlZ2lzdGVyKFx1MDAyNnZmaW9fYXBfZHJ2KTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoyMDQ6XHR2ZmlvX2FwX21hdHJpeF9kZXZfZGVzdHJveSgpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTIwNS1cdGRlYnVnX3VucmVnaXN0ZXIodmZpb19hcF9kYmZfaW5mbyk7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTM3PXN0YXRpYyBzdHJ1Y3QgdmZpb19hcF9xdWV1ZSAqdmZpb19hcF9maW5kX3F1ZXVlKGludCBhcHFuKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzozODpzdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX2FwX21hdHJpeF9kZXZfb3BzO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTM5LXN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9yZXNldF9xdWV1ZShzdHJ1Y3QgdmZpb19hcF9xdWV1ZSAqcSk7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTQ3LSAqIFRoZSBwcm9wZXIgbG9ja2luZyBvcmRlciBpczpcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo0ODogKiAxLiBtYXRyaXhfZGV2LVx1MDAzZWd1ZXN0c19sb2NrOiByZXF1aXJlZCB0byB1c2UgdGhlIEtWTSBwb2ludGVyIHRvIHVwZGF0ZSBhIEtWTVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTQ5LSAqXHRcdFx0ICAgICAgIGd1ZXN0JiMzOTtzIEFQQ0IuXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTUyLSAqXHRcdFx0XHRcdHNlcmlhbGl6ZSBhZ2FpbnN0IFBRQVAgaW50ZXJjZXB0c1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjUzOiAqIDQuIG1hdHJpeF9kZXYtXHUwMDNlbWRldnNfbG9jazogIHJlcXVpcmVkIHRvIGFjY2VzcyBkYXRhIHN0b3JlZCBpbiBhIG1hdHJpeF9tZGV2XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNTQtICpcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9NTc9c3RhdGljIGlubGluZSB2b2lkIGdldF91cGRhdGVfbG9ja3NfZm9yX2t2bShzdHJ1Y3Qga3ZtICprdm0pXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNTgte1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjU5Olx0bXV0ZXhfbG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZWd1ZXN0c19sb2NrKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy02MC1cdGlmIChrdm0pIHtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNjMtXHR9XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6NjQ6XHRtdXRleF9sb2NrKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlbWRldnNfbG9jayk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNjUtfVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy03My0gKiBUaGUgcHJvcGVyIHVubG9ja2luZyBvcmRlciBpczpcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo3NDogKiAxLiBtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2tcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy03NS0gKiAyLiBrdm0tXHUwMDNlYXJjaC5jcnlwdG8ucHFhcF9ob29rX3J3c2VtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNzYtICogMy4ga3ZtLVx1MDAzZWxvY2tcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo3NzogKiA0LiBtYXRyaXhfZGV2LVx1MDAzZWd1ZXN0c19sb2NrXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNzgtICpcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9ODE9c3RhdGljIGlubGluZSB2b2lkIHJlbGVhc2VfdXBkYXRlX2xvY2tzX2Zvcl9rdm0oc3RydWN0IGt2bSAqa3ZtKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTgyLXtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo4MzpcdG11dGV4X3VubG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTg0LVx0aWYgKGt2bSkge1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy04Ny1cdH1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo4ODpcdG11dGV4X3VubG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZWd1ZXN0c19sb2NrKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy04OS19XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTk4LSAqIFRoZSBwcm9wZXIgbG9ja2luZyBvcmRlciBpczpcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo5OTogKiAxLiBtYXRyaXhfZGV2LVx1MDAzZWd1ZXN0c19sb2NrOiByZXF1aXJlZCB0byB1c2UgdGhlIEtWTSBwb2ludGVyIHRvIHVwZGF0ZSBhIEtWTVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTEwMC0gKlx0XHRcdCAgICAgICBndWVzdCYjMzk7cyBBUENCLlxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTEwMS0gKiAyLiBtYXRyaXhfbWRldi1cdTAwM2Vrdm0tXHUwMDNlbG9jazogIHJlcXVpcmVkIHRvIHVwZGF0ZSBhIGd1ZXN0JiMzOTtzIEFQQ0JcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoxMDI6ICogMy4gbWF0cml4X2Rldi1cdTAwM2VtZGV2c19sb2NrOiAgcmVxdWlyZWQgdG8gYWNjZXNzIGRhdGEgc3RvcmVkIGluIGEgbWF0cml4X21kZXZcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xMDMtICpcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MTA3PXN0YXRpYyBpbmxpbmUgdm9pZCBnZXRfdXBkYXRlX2xvY2tzX2Zvcl9tZGV2KHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXYpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTA4LXtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoxMDk6XHRtdXRleF9sb2NrKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlZ3Vlc3RzX2xvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTExMC1cdGlmIChtYXRyaXhfbWRldiBcdTAwMjZcdTAwMjYgbWF0cml4X21kZXYtXHUwMDNla3ZtKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTExMS1cdFx0bXV0ZXhfbG9jayhcdTAwMjZtYXRyaXhfbWRldi1cdTAwM2Vrdm0tXHUwMDNlbG9jayk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTEyOlx0bXV0ZXhfbG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTExMy19XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTEyMi0gKiBUaGUgcHJvcGVyIHVubG9ja2luZyBvcmRlciBpczpcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoxMjM6ICogMS4gbWF0cml4X2Rldi1cdTAwM2VtZGV2c19sb2NrXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTI0LSAqIDIuIG1hdHJpeF9tZGV2LVx1MDAzZWt2bS1cdTAwM2Vsb2NrXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTI1OiAqIDMuIG1hdHJpeF9kZXYtXHUwMDNlZ3Vlc3RzX2xvY2tcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xMjYtICpcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MTMwPXN0YXRpYyBpbmxpbmUgdm9pZCByZWxlYXNlX3VwZGF0ZV9sb2Nrc19mb3JfbWRldihzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2KVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTEzMS17XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTMyOlx0bXV0ZXhfdW5sb2NrKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlbWRldnNfbG9jayk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTMzLVx0aWYgKG1hdHJpeF9tZGV2IFx1MDAyNlx1MDAyNiBtYXRyaXhfbWRldi1cdTAwM2Vrdm0pXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTM0LVx0XHRtdXRleF91bmxvY2soXHUwMDI2bWF0cml4X21kZXYtXHUwMDNla3ZtLVx1MDAzZWxvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjEzNTpcdG11dGV4X3VubG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZWd1ZXN0c19sb2NrKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xMzYtfVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xNDUtICogVGhlIHByb3BlciBsb2NraW5nIG9yZGVyIGlzOlxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE0NjogKiAxLiBtYXRyaXhfZGV2LVx1MDAzZWd1ZXN0c19sb2NrOiByZXF1aXJlZCB0byB1c2UgdGhlIEtWTSBwb2ludGVyIHRvIHVwZGF0ZSBhIEtWTVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE0Ny0gKlx0XHRcdCAgICAgICBndWVzdCYjMzk7cyBBUENCLlxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE0OC0gKiAyLiBtYXRyaXhfbWRldi1cdTAwM2Vrdm0tXHUwMDNlbG9jazogIHJlcXVpcmVkIHRvIHVwZGF0ZSBhIGd1ZXN0JiMzOTtzIEFQQ0JcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoxNDk6ICogMy4gbWF0cml4X2Rldi1cdTAwM2VtZGV2c19sb2NrOiAgcmVxdWlyZWQgdG8gYWNjZXNzIGRhdGEgc3RvcmVkIGluIGEgbWF0cml4X21kZXZcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xNTAtICpcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MTU3PXN0YXRpYyBzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKmdldF91cGRhdGVfbG9ja3NfYnlfYXBxbihpbnQgYXBxbilcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTYwLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE2MTpcdG11dGV4X2xvY2soXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VndWVzdHNfbG9jayk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTYyLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE2MzpcdGxpc3RfZm9yX2VhY2hfZW50cnkobWF0cml4X21kZXYsIFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlbWRldl9saXN0LCBub2RlKSB7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTY0LVx0XHRpZiAodGVzdF9iaXRfaW52KEFQX1FJRF9DQVJEKGFwcW4pLCBtYXRyaXhfbWRldi1cdTAwM2VtYXRyaXguYXBtKSBcdTAwMjZcdTAwMjZcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTY4LVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE2OTpcdFx0XHRtdXRleF9sb2NrKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlbWRldnNfbG9jayk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTcwLVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xNzQtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTc1Olx0bXV0ZXhfbG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE3Ni1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTg3LSAqIFRoZSBwcm9wZXIgbG9ja2luZyBvcmRlciBpczpcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoxODg6ICogMS4gcS1cdTAwM2VtYXRyaXhfZGV2LVx1MDAzZWd1ZXN0c19sb2NrOiByZXF1aXJlZCB0byB1c2UgdGhlIEtWTSBwb2ludGVyIHRvIHVwZGF0ZSBhXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTg5LSAqXHRcdFx0XHQgIEtWTSBndWVzdCYjMzk7cyBBUENCLlxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE5MC0gKiAyLiBxLVx1MDAzZW1hdHJpeF9tZGV2LVx1MDAzZWt2bS1cdTAwM2Vsb2NrOiAgcmVxdWlyZWQgdG8gdXBkYXRlIGEgZ3Vlc3QmIzM5O3MgQVBDQlxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE5MTogKiAzLiBtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2s6XHQgIHJlcXVpcmVkIHRvIGFjY2VzcyBkYXRhIHN0b3JlZCBpbiBtYXRyaXhfbWRldlxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE5Mi0gKlxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0xOTY9c3RhdGljIGlubGluZSB2b2lkIGdldF91cGRhdGVfbG9ja3NfZm9yX3F1ZXVlKHN0cnVjdCB2ZmlvX2FwX3F1ZXVlICpxKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE5Ny17XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTk4Olx0bXV0ZXhfbG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZWd1ZXN0c19sb2NrKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xOTktXHRpZiAocS1cdTAwM2VtYXRyaXhfbWRldiBcdTAwMjZcdTAwMjYgcS1cdTAwM2VtYXRyaXhfbWRldi1cdTAwM2Vrdm0pXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjAwLVx0XHRtdXRleF9sb2NrKFx1MDAyNnEtXHUwMDNlbWF0cml4X21kZXYtXHUwMDNla3ZtLVx1MDAzZWxvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIwMTpcdG11dGV4X2xvY2soXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VtZGV2c19sb2NrKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMDItfVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz01NTI9c3RhdGljIHZvaWQgdmZpb19hcF9sZV9ndWlkX3RvX2JlX3V1aWQoZ3VpZF90ICpndWlkLCB1bnNpZ25lZCBsb25nICp1dWlkKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy01ODEtICogICBDaGVjayB2ZmlvX2FwX3NldGlycSgpIGFuZCB2ZmlvX2FwX2NscmlycSgpIGZvciBvdGhlciBwb3NzaWJsZSBSQy5cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo1ODI6ICogV2UgdGFrZSB0aGUgbWF0cml4X2RldiBsb2NrIHRvIGVuc3VyZSBzZXJpYWxpemF0aW9uIG9uIHF1ZXVlcyBhbmRcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy01ODMtICogbWVkaWF0ZWQgZGV2aWNlIGFjY2Vzcy5cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9NTg4PXN0YXRpYyBpbnQgaGFuZGxlX3BxYXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy02MDctXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6NjA4Olx0bXV0ZXhfbG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTYwOS1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNjQ3LVx0dmNwdS1cdTAwM2VydW4tXHUwMDNlcy5yZWdzLmdwcnNbMV0gXHUwMDNlXHUwMDNlPSAzMjtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo2NDg6XHRtdXRleF91bmxvY2soXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VtZGV2c19sb2NrKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy02NDktXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9Njc4PXN0YXRpYyBib29sIHZmaW9fYXBfbWRldl9maWx0ZXJfY2RvbXMoc3RydWN0IGFwX21hdHJpeF9tZGV2ICptYXRyaXhfbWRldilcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNjgzLVx0Yml0bWFwX2FuZChtYXRyaXhfbWRldi1cdTAwM2VzaGFkb3dfYXBjYi5hZG0sIG1hdHJpeF9tZGV2LVx1MDAzZW1hdHJpeC5hZG0sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6Njg0Olx0XHQgICAodW5zaWduZWQgbG9uZyAqKW1hdHJpeF9kZXYtXHUwMDNlaW5mby5hZG0sIEFQX0RPTUFJTlMpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTY4NS1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9NzI3PXN0YXRpYyBib29sIHZmaW9fYXBfbWRldl9maWx0ZXJfbWF0cml4KHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXYsXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTczNS1cdGJpdG1hcF9jb3B5KHByZXZfc2hhZG93X2FxbSwgbWF0cml4X21kZXYtXHUwMDNlc2hhZG93X2FwY2IuYXFtLCBBUF9ET01BSU5TKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo3MzY6XHR2ZmlvX2FwX21hdHJpeF9pbml0KFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlaW5mbywgXHUwMDI2bWF0cml4X21kZXYtXHUwMDNlc2hhZG93X2FwY2IpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTczNy1cdGJpdG1hcF9jbGVhcihhcG1fZmlsdGVyZWQsIDAsIEFQX0RFVklDRVMpO1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy03NDQtXHRiaXRtYXBfYW5kKG1hdHJpeF9tZGV2LVx1MDAzZXNoYWRvd19hcGNiLmFwbSwgbWF0cml4X21kZXYtXHUwMDNlbWF0cml4LmFwbSxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo3NDU6XHRcdCAgICh1bnNpZ25lZCBsb25nICopbWF0cml4X2Rldi1cdTAwM2VpbmZvLmFwbSwgQVBfREVWSUNFUyk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNzQ2LVx0Yml0bWFwX2FuZChtYXRyaXhfbWRldi1cdTAwM2VzaGFkb3dfYXBjYi5hcW0sIG1hdHJpeF9tZGV2LVx1MDAzZW1hdHJpeC5hcW0sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6NzQ3Olx0XHQgICAodW5zaWduZWQgbG9uZyAqKW1hdHJpeF9kZXYtXHUwMDNlaW5mby5hcW0sIEFQX0RPTUFJTlMpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTc0OC1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9NzgzPXN0YXRpYyBpbnQgdmZpb19hcF9tZGV2X2luaXRfZGV2KHN0cnVjdCB2ZmlvX2RldmljZSAqdmRldilcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNzg4LVx0bWF0cml4X21kZXYtXHUwMDNlbWRldiA9IHRvX21kZXZfZGV2aWNlKHZkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo3ODk6XHR2ZmlvX2FwX21hdHJpeF9pbml0KFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlaW5mbywgXHUwMDI2bWF0cml4X21kZXYtXHUwMDNlbWF0cml4KTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy03OTAtXHRtYXRyaXhfbWRldi1cdTAwM2VwcWFwX2hvb2sgPSBoYW5kbGVfcHFhcDtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo3OTE6XHR2ZmlvX2FwX21hdHJpeF9pbml0KFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlaW5mbywgXHUwMDI2bWF0cml4X21kZXYtXHUwMDNlc2hhZG93X2FwY2IpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTc5Mi1cdGhhc2hfaW5pdChtYXRyaXhfbWRldi1cdTAwM2VxdGFibGUucXVldWVzKTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9Nzk3PXN0YXRpYyBpbnQgdmZpb19hcF9tZGV2X3Byb2JlKHN0cnVjdCBtZGV2X2RldmljZSAqbWRldilcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtODAyLVx0bWF0cml4X21kZXYgPSB2ZmlvX2FsbG9jX2RldmljZShhcF9tYXRyaXhfbWRldiwgdmRldiwgXHUwMDI2bWRldi1cdTAwM2VkZXYsXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6ODAzOlx0XHRcdFx0XHRcdTAwMjZ2ZmlvX2FwX21hdHJpeF9kZXZfb3BzKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy04MDQtXHRpZiAoSVNfRVJSKG1hdHJpeF9tZGV2KSlcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtODEyLVx0ZGV2X3NldF9kcnZkYXRhKFx1MDAyNm1kZXYtXHUwMDNlZGV2LCBtYXRyaXhfbWRldik7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6ODEzOlx0bXV0ZXhfbG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjgxNDpcdGxpc3RfYWRkKFx1MDAyNm1hdHJpeF9tZGV2LVx1MDAzZW5vZGUsIFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlbWRldl9saXN0KTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo4MTU6XHRtdXRleF91bmxvY2soXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VtZGV2c19sb2NrKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy04MTYtXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9ODY3PXN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9yZW1vdmUoc3RydWN0IG1kZXZfZGV2aWNlICptZGV2KVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy04NzItXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6ODczOlx0bXV0ZXhfbG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZWd1ZXN0c19sb2NrKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo4NzQ6XHRtdXRleF9sb2NrKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlbWRldnNfbG9jayk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtODc1LVx0dmZpb19hcF9tZGV2X3Jlc2V0X3F1ZXVlcyhtYXRyaXhfbWRldik7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTg3Ny1cdGxpc3RfZGVsKFx1MDAyNm1hdHJpeF9tZGV2LVx1MDAzZW5vZGUpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjg3ODpcdG11dGV4X3VubG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjg3OTpcdG11dGV4X3VubG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZWd1ZXN0c19sb2NrKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy04ODAtXHR2ZmlvX3B1dF9kZXZpY2UoXHUwMDI2bWF0cml4X21kZXYtXHUwMDNldmRldik7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTkyOT1zdGF0aWMgaW50IHZmaW9fYXBfbWRldl92ZXJpZnlfbm9fc2hhcmluZyhzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKmFzc2lnbmVlLFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy05MzYtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6OTM3Olx0bGlzdF9mb3JfZWFjaF9lbnRyeShhc3NpZ25lZF90bywgXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VtZGV2X2xpc3QsIG5vZGUpIHtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy05MzgtXHRcdC8qXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTE1Njg9c3RhdGljIHNzaXplX3QgY29udHJvbF9kb21haW5zX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xNTc2LVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE1Nzc6XHRtdXRleF9sb2NrKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlbWRldnNfbG9jayk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTU3OC1cdGZvcl9lYWNoX3NldF9iaXRfaW52KGlkLCBtYXRyaXhfbWRldi1cdTAwM2VtYXRyaXguYWRtLCBtYXhfZG9taWQgJiM0MzsgMSlcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xNTc5LVx0XHRuY2hhcnMgJiM0Mzs9IHN5c2ZzX2VtaXRfYXQoYnVmLCBuY2hhcnMsIFwmIzM0OyUwNGx4XFxuXCYjMzQ7LCBpZCk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTU4MDpcdG11dGV4X3VubG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE1ODEtXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTE2MTU9c3RhdGljIHNzaXplX3QgbWF0cml4X3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTYyMC1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoxNjIxOlx0bXV0ZXhfbG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE2MjItXHRuY2hhcnMgPSB2ZmlvX2FwX21kZXZfbWF0cml4X3Nob3coXHUwMDI2bWF0cml4X21kZXYtXHUwMDNlbWF0cml4LCBidWYpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE2MjM6XHRtdXRleF91bmxvY2soXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VtZGV2c19sb2NrKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xNjI0LVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0xNjI5PXN0YXRpYyBzc2l6ZV90IGd1ZXN0X21hdHJpeF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTYzNC1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoxNjM1Olx0bXV0ZXhfbG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE2MzYtXHRuY2hhcnMgPSB2ZmlvX2FwX21kZXZfbWF0cml4X3Nob3coXHUwMDI2bWF0cml4X21kZXYtXHUwMDNlc2hhZG93X2FwY2IsIGJ1Zik7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTYzNzpcdG11dGV4X3VubG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE2MzgtXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTE4NjA9c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X2RtYV91bm1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKnZkZXYsIHU2NCBpb3ZhLFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xODY1LVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE4NjY6XHRtdXRleF9sb2NrKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlbWRldnNfbG9jayk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTg2Ny1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTg2OS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoxODcwOlx0bXV0ZXhfdW5sb2NrKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlbWRldnNfbG9jayk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTg3MS19XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTE4OTY9c3RhdGljIHN0cnVjdCB2ZmlvX2FwX3F1ZXVlICp2ZmlvX2FwX2ZpbmRfcXVldWUoaW50IGFwcW4pXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE5MDQtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTkwNTpcdGlmIChxdWV1ZS1cdTAwM2VhcF9kZXYuZGV2aWNlLmRyaXZlciA9PSBcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZXZmaW9fYXBfZHJ2LVx1MDAzZWRyaXZlcilcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xOTA2LVx0XHRxID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNnF1ZXVlLVx1MDAzZWFwX2Rldi5kZXZpY2UpO1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yMjU5PXN0YXRpYyBzc2l6ZV90IHZmaW9fYXBfbWRldl9pb2N0bChzdHJ1Y3QgdmZpb19kZXZpY2UgKnZkZXYsXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIyNjUtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjI2NjpcdG11dGV4X2xvY2soXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VtZGV2c19sb2NrKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMjY3LVx0c3dpdGNoIChjbWQpIHtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjI4My1cdH1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyMjg0Olx0bXV0ZXhfdW5sb2NrKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlbWRldnNfbG9jayk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjI4NS1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjI4OT1zdGF0aWMgc3RydWN0IGFwX21hdHJpeF9tZGV2ICp2ZmlvX2FwX21kZXZfZm9yX3F1ZXVlKHN0cnVjdCB2ZmlvX2FwX3F1ZXVlICpxKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMjk0LVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIyOTU6XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KG1hdHJpeF9tZGV2LCBcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZW1kZXZfbGlzdCwgbm9kZSkge1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIyOTYtXHRcdGlmICh0ZXN0X2JpdF9pbnYoYXBpZCwgbWF0cml4X21kZXYtXHUwMDNlbWF0cml4LmFwbSkgXHUwMDI2XHUwMDI2XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTIzMDQ9c3RhdGljIHNzaXplX3Qgc3RhdHVzX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMzEzLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIzMTQ6XHRtdXRleF9sb2NrKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlbWRldnNfbG9jayk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjMxNS1cdHEgPSBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2YXBkZXYtXHUwMDNlZGV2aWNlKTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjMzOS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyMzQwOlx0bXV0ZXhfdW5sb2NrKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlbWRldnNfbG9jayk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjM0MS1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjM1Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCB2ZmlvX3F1ZXVlX2F0dHJfZ3JvdXAgPSB7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIzNTUtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjM1NjpzdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX2FwX21hdHJpeF9kZXZfb3BzID0ge1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIzNTctXHQuaW5pdCA9IHZmaW9fYXBfbWRldl9pbml0X2Rldixcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjM4Mj1pbnQgdmZpb19hcF9tZGV2X3JlZ2lzdGVyKHZvaWQpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIzODktXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjM5MDpcdG1hdHJpeF9kZXYtXHUwMDNlbWRldl90eXBlLnN5c2ZzX25hbWUgPSBWRklPX0FQX01ERVZfVFlQRV9IV1ZJUlQ7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjM5MTpcdG1hdHJpeF9kZXYtXHUwMDNlbWRldl90eXBlLnByZXR0eV9uYW1lID0gVkZJT19BUF9NREVWX05BTUVfSFdWSVJUO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIzOTI6XHRtYXRyaXhfZGV2LVx1MDAzZW1kZXZfdHlwZXMgPSBcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZW1kZXZfdHlwZTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyMzkzOlx0cmV0ID0gbWRldl9yZWdpc3Rlcl9wYXJlbnQoXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VwYXJlbnQsIFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlZGV2aWNlLFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIzOTQtXHRcdFx0XHQgICBcdTAwMjZ2ZmlvX2FwX21hdHJpeF9kcml2ZXIsXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjM5NTpcdFx0XHRcdCAgIFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlbWRldl90eXBlcywgMSk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjM5Ni1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTI0MDU9dm9pZCB2ZmlvX2FwX21kZXZfdW5yZWdpc3Rlcih2b2lkKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI0MDYte1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI0MDc6XHRtZGV2X3VucmVnaXN0ZXJfcGFyZW50KFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlcGFyZW50KTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNDA4LVx0bWRldl91bnJlZ2lzdGVyX2RyaXZlcihcdTAwMjZ2ZmlvX2FwX21hdHJpeF9kcml2ZXIpO1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yNDY1PXZvaWQgdmZpb19hcF9tZGV2X3JlbW92ZV9xdWV1ZShzdHJ1Y3QgYXBfZGV2aWNlICphcGRldilcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjQ5OC1cdCAqL1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI0OTk6XHRpZiAodGVzdF9iaXRfaW52KGFwaWQsICh1bnNpZ25lZCBsb25nICopbWF0cml4X2Rldi1cdTAwM2VpbmZvLmFwbSkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjUwMDpcdCAgICB0ZXN0X2JpdF9pbnYoYXBxaSwgKHVuc2lnbmVkIGxvbmcgKiltYXRyaXhfZGV2LVx1MDAzZWluZm8uYXFtKSkge1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI1MDEtXHRcdHZmaW9fYXBfbWRldl9yZXNldF9xdWV1ZShxKTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjUyOD1pbnQgdmZpb19hcF9tZGV2X3Jlc291cmNlX2luX3VzZSh1bnNpZ25lZCBsb25nICphcG0sIHVuc2lnbmVkIGxvbmcgKmFxbSlcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjUzMS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNTMyOlx0bXV0ZXhfbG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZWd1ZXN0c19sb2NrKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNTMzOlx0bXV0ZXhfbG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI1MzQtXHRyZXQgPSB2ZmlvX2FwX21kZXZfdmVyaWZ5X25vX3NoYXJpbmcoTlVMTCwgYXBtLCBhcW0pO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI1MzU6XHRtdXRleF91bmxvY2soXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VtZGV2c19sb2NrKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNTM2Olx0bXV0ZXhfdW5sb2NrKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlZ3Vlc3RzX2xvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI1MzctXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTI1OTM9c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X2NmZ19yZW1vdmUodW5zaWduZWQgbG9uZyAqYXBfcmVtb3ZlLFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNjAyLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI2MDM6XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KG1hdHJpeF9tZGV2LCBcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZW1kZXZfbGlzdCwgbm9kZSkge1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI2MDQtXHRcdG11dGV4X2xvY2soXHUwMDI2bWF0cml4X21kZXYtXHUwMDNla3ZtLVx1MDAzZWxvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI2MDU6XHRcdG11dGV4X2xvY2soXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VtZGV2c19sb2NrKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNjA2LVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNjIwLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI2MjE6XHRcdG11dGV4X3VubG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI2MjItXHRcdG11dGV4X3VubG9jayhcdTAwMjZtYXRyaXhfbWRldi1cdTAwM2Vrdm0tXHUwMDNlbG9jayk7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTI3MzY9c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X2NmZ19hZGQodW5zaWduZWQgbG9uZyAqYXBtX2FkZCwgdW5zaWduZWQgbG9uZyAqYXFtX2FkZCxcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjc0MC1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNzQxOlx0aWYgKGxpc3RfZW1wdHkoXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VtZGV2X2xpc3QpKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI3NDItXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjc0NS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNzQ2Olx0bGlzdF9mb3JfZWFjaF9lbnRyeShtYXRyaXhfbWRldiwgXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VtZGV2X2xpc3QsIG5vZGUpIHtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNzQ3LVx0XHRiaXRtYXBfYW5kKG1hdHJpeF9tZGV2LVx1MDAzZWFwbV9hZGQsXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTI3OTk9dm9pZCB2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkKHN0cnVjdCBhcF9jb25maWdfaW5mbyAqY3VyX2NmZ19pbmZvLFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yODA0LVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI4MDU6XHRtdXRleF9sb2NrKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlZ3Vlc3RzX2xvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI4MDYtXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI4MDgtXHR2ZmlvX2FwX21kZXZfb25fY2ZnX2FkZChjdXJfY2ZnX2luZm8sIHByZXZfY2ZnX2luZm8pO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI4MDk6XHRtZW1jcHkoXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VpbmZvLCBjdXJfY2ZnX2luZm8sIHNpemVvZigqY3VyX2NmZ19pbmZvKSk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjgxMC1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyODExOlx0bXV0ZXhfdW5sb2NrKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlZ3Vlc3RzX2xvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI4MTItfVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yODE0PXN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9ob3RfcGx1Z19jZmcoc3RydWN0IGFwX21hdHJpeF9tZGV2ICptYXRyaXhfbWRldilcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjgxOS1cdG11dGV4X2xvY2soXHUwMDI2bWF0cml4X21kZXYtXHUwMDNla3ZtLVx1MDAzZWxvY2spO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI4MjA6XHRtdXRleF9sb2NrKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlbWRldnNfbG9jayk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjgyMS1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjgzOS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyODQwOlx0bXV0ZXhfdW5sb2NrKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlbWRldnNfbG9jayk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjg0MS1cdG11dGV4X3VubG9jayhcdTAwMjZtYXRyaXhfbWRldi1cdTAwM2Vrdm0tXHUwMDNlbG9jayk7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTI4NDQ9dm9pZCB2ZmlvX2FwX29uX3NjYW5fY29tcGxldGUoc3RydWN0IGFwX2NvbmZpZ19pbmZvICpuZXdfY29uZmlnX2luZm8sXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI4NDgtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6Mjg0OTpcdG11dGV4X2xvY2soXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VndWVzdHNfbG9jayk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjg1MC1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyODUxOlx0bGlzdF9mb3JfZWFjaF9lbnRyeShtYXRyaXhfbWRldiwgXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VtZGV2X2xpc3QsIG5vZGUpIHtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yODUyLVx0XHRpZiAoYml0bWFwX2VtcHR5KG1hdHJpeF9tZGV2LVx1MDAzZWFwbV9hZGQsIEFQX0RFVklDRVMpIFx1MDAyNlx1MDAyNlxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yODYyLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI4NjM6XHRtdXRleF91bmxvY2soXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VndWVzdHNfbG9jayk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjg2NC19XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaC0yOS0vKipcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmg6MzA6ICogc3RydWN0IGFwX21hdHJpeF9kZXYgLSBDb250YWlucyB0aGUgZGF0YSBmb3IgdGhlIG1hdHJpeCBkZXZpY2UuXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oLTMxLSAqXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaC00Ni0gKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmg6NDc6c3RydWN0IGFwX21hdHJpeF9kZXYge1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaC00OC1cdHN0cnVjdCBkZXZpY2UgZGV2aWNlO1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmgtNTgtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oOjU5OmV4dGVybiBzdHJ1Y3QgYXBfbWF0cml4X2RldiAqbWF0cml4X2RldjtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmgtNjAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MzI4CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMTY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gVkZJTy1BUCBEZXZpY2UgQ3JlYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSB0cmFjaW5nIHRoZSBWRklPLUFQIGluaXRpYWxpemF0aW9uLiBJIHNlZSB0aGF0IGB2ZmlvX2FwX21hdHJpeF9kZXZfY3JlYXRlYCBpcyBjYWxsZWQgZHVyaW5nIG1vZHVsZSBpbml0IHdpdGhpbiBgdmZpb19hcF9pbml0YC4gVGhhdCBtYWtlcyBzZW5zZTsgaXQmIzM5O3MgcmVnaXN0ZXJpbmcgYSBtYXRyaXggZGV2aWNlLCB0aGUgZm91bmRhdGlvbmFsIGVsZW1lbnQuIFRoZW4sIGB2ZmlvX2FwX21kZXZfcHJvYmVgIGdldHMgY2FsbGVkIHdoZW4gYSBuZXcgbWRldiBpcyBjcmVhdGVkLiBJIGhhdmUgdG8gcGF1c2UgaGVyZS4gSSB3b25kZXIsIGNhbiB0aGVzZSBtZGV2cywgdGhlc2Ugc29mdHdhcmUgcmVwcmVzZW50YXRpb25zLCBldmVuICpiZSogY3JlYXRlZCB3aXRoaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gT2ggcmlnaHQsIHRoZXkmIzM5O3JlIGp1c3Qgc29mdHdhcmUgZGV2aWNlcywgY3JlYXRlZCB0aHJvdWdoIHN5c2ZzLCBzbyBsb2dpY2FsbHksIHllcy4KCkJ1dCBoYW5nIG9uLCB0aGVyZeKAmXMgc29tZXRoaW5nIGltcG9ydGFudCBJIG5lZWQgdG8gY29uc2lkZXIuIEkmIzM5O20gZm9jdXNpbmcgYmFjayBvbiBgdmZpb19hcF9tYXRyaXhfZGV2X2NyZWF0ZWAuIEl0IGxvb2tzIGxpa2UgaXQgY2FsbHMgYGFwX3FjaSgmYW1wO21hdHJpeF9kZXYtJmd0O2luZm8pYCB1bmRlciB0aGUgY29uZGl0aW9uIHRoYXQgYHRlc3RfZmFjaWxpdHkoMTIpYCBldmFsdWF0ZXMgdG8gdHJ1ZS4gRmFjaWxpdHkgMTIgaXMgQVAgUXVlcnkgQ29uZmlndXJhdGlvbiBJbmZvcm1hdGlvbi4gTm93LCB0aGUgbmV4dCBxdWVzdGlvbiBpcyBpZiB0aGF0IGZhY2lsaXR5IGlzIG5vdCBhdmFpbGFibGUsIHdpbGwgdGhpcyB3aG9sZSBwcm9jZXNzIGp1c3QgZmFsbCBhcGFydD8gSSBuZWVkIHRvIGNoZWNrIHRoZSBjb2RlIGluIGB2ZmlvX2FwX21hdHJpeF9kZXZfY3JlYXRlYCB0byBlbnN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FwX3FjaSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAvaW5jbHVkZS9hc20vYXAuaD0yMTc9c3RhdGljIGlubGluZSBzdHJ1Y3QgYXBfcXVldWVfc3RhdHVzIGFwX3phcHEoYXBfcWlkX3QgcWlkLCBpbnQgZmJpdClcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vYXAuaC0yMzYtICogc3RydWN0IGFwX2NvbmZpZ19pbmZvIC0gY29udmVuaWVuY2Ugc3RydWN0IGZvciBBUCBjcnlwdG9cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9hcC5oOjIzNzogKiBjb25maWcgaW5mbyBhcyByZXR1cm5lZCBieSB0aGUgYXBfcWNpKCkgZnVuY3Rpb24uXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vYXAuaC0yMzgtICovXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vYXAuaD0yMzk9c3RydWN0IGFwX2NvbmZpZ19pbmZvIHtcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vYXAuaC0yNjEtLyoqXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vYXAuaDoyNjI6ICogYXBfcWNpKCk6IEdldCBBUCBjb25maWd1cmF0aW9uIGRhdGFcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9hcC5oLTI2My0gKlxuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9hcC5oLTI2NS0gKi9cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9hcC5oOjI2NjpzdGF0aWMgaW5saW5lIGludCBhcF9xY2koc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjb25maWcpXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vYXAuaC0yNjcte1xuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz0zMTAxPXN0YXRpYyBpbnQga3ZtX3MzOTBfYXB4YV9pbnN0YWxsZWQodm9pZClcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzEwNS1cdGlmIChhcF9pbnN0cnVjdGlvbnNfYXZhaWxhYmxlKCkpIHtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzozMTA2Olx0XHRpZiAoYXBfcWNpKFx1MDAyNmluZm8pID09IDApXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzEwNy1cdFx0XHRyZXR1cm4gaW5mby5hcHhhO1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTA3PXN0YXRpYyBzdHJ1Y3QgYXBfY29uZmlnX2luZm8gcWNpWzJdO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMDg6c3RhdGljIHN0cnVjdCBhcF9jb25maWdfaW5mbyAqY29uc3QgYXBfcWNpX2luZm8gPSBcdTAwMjZxY2lbMF07XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEwOTpzdGF0aWMgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjb25zdCBhcF9xY2lfaW5mb19vbGQgPSBcdTAwMjZxY2lbMV07XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTExMC1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTIwOT1zdGF0aWMgaW50IGFwX2ludGVycnVwdHNfYXZhaWxhYmxlKHZvaWQpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMTQtLyoqXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIxNTogKiBhcF9xY2lfYXZhaWxhYmxlKCk6IFRlc3QgaWYgQVAgY29uZmlndXJhdGlvblxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMTYtICogaW5mb3JtYXRpb24gY2FuIGJlIHF1ZXJpZWQgdmlhIFFDSSBzdWJmdW5jdGlvbi5cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIxOS0gKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjIwOnN0YXRpYyBpbnQgYXBfcWNpX2F2YWlsYWJsZSh2b2lkKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMjEte1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjQxPXN0YXRpYyBpbmxpbmUgaW50IGFwX3FhY3RfYXZhaWxhYmxlKHZvaWQpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0Mi17XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI0MzpcdHJldHVybiBhcF9xY2lfaW5mby1cdTAwM2VxYWN0O1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDQtfVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjUxPWludCBhcF9zYl9hdmFpbGFibGUodm9pZClcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjUyLXtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjUzOlx0cmV0dXJuIGFwX3FjaV9pbmZvLVx1MDAzZWFwc2I7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI1NC19XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yNzA9c3RhdGljIHZvaWQgX19pbml0IGFwX2luaXRfcWNpX2luZm8odm9pZClcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjcxLXtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjcyOlx0aWYgKCFhcF9xY2lfYXZhaWxhYmxlKCkgfHxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjczOlx0ICAgIGFwX3FjaShhcF9xY2lfaW5mbykpIHtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjc0LVx0XHRBUF9EQkZfSU5GTyhcJiMzNDslcyBRQ0kgbm90IHN1cHBvcnRlZFxcblwmIzM0OywgX19mdW5jX18pO1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjc2LVx0fVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNzc6XHRtZW1jcHkoYXBfcWNpX2luZm9fb2xkLCBhcF9xY2lfaW5mbywgc2l6ZW9mKCphcF9xY2lfaW5mbykpO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNzgtXHRBUF9EQkZfSU5GTyhcJiMzNDslcyBzdWNjZXNzZnVsIGZldGNoZWQgaW5pdGlhbCBxY2kgaW5mb1xcblwmIzM0OywgX19mdW5jX18pO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNzktXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI4MDpcdGlmIChhcF9xY2lfaW5mby1cdTAwM2VhcHhhKSB7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI4MTpcdFx0aWYgKGFwX3FjaV9pbmZvLVx1MDAzZW5hKSB7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI4MjpcdFx0XHRhcF9tYXhfYWRhcHRlcl9pZCA9IGFwX3FjaV9pbmZvLVx1MDAzZW5hO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yODMtXHRcdFx0QVBfREJGX0lORk8oXCYjMzQ7JXMgbmV3IGFwX21heF9hZGFwdGVyX2lkIGlzICVkXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjg1LVx0XHR9XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI4NjpcdFx0aWYgKGFwX3FjaV9pbmZvLVx1MDAzZW5kKSB7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI4NzpcdFx0XHRhcF9tYXhfZG9tYWluX2lkID0gYXBfcWNpX2luZm8tXHUwMDNlbmQ7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI4OC1cdFx0XHRBUF9EQkZfSU5GTyhcJiMzNDslcyBuZXcgYXBfbWF4X2RvbWFpbl9pZCBpcyAlZFxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTMxMD1zdGF0aWMgaW5saW5lIGludCBhcF90ZXN0X2NvbmZpZ19jYXJkX2lkKHVuc2lnbmVkIGludCBpZClcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTMxMy1cdFx0cmV0dXJuIDA7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjMxNDpcdGlmIChhcF9xY2lfaW5mby1cdTAwM2VmbGFncylcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MzE1Olx0XHRyZXR1cm4gYXBfdGVzdF9jb25maWcoYXBfcWNpX2luZm8tXHUwMDNlYXBtLCBpZCk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTMxNi1cdHJldHVybiAxO1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MzI3PWludCBhcF90ZXN0X2NvbmZpZ191c2FnZV9kb21haW4odW5zaWduZWQgaW50IGRvbWFpbilcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTMzMC1cdFx0cmV0dXJuIDA7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjMzMTpcdGlmIChhcF9xY2lfaW5mby1cdTAwM2VmbGFncylcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MzMyOlx0XHRyZXR1cm4gYXBfdGVzdF9jb25maWcoYXBfcWNpX2luZm8tXHUwMDNlYXFtLCBkb21haW4pO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0zMzMtXHRyZXR1cm4gMTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTM0NT1pbnQgYXBfdGVzdF9jb25maWdfY3RybF9kb21haW4odW5zaWduZWQgaW50IGRvbWFpbilcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMzQ2LXtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MzQ3Olx0aWYgKCFhcF9xY2lfaW5mbyB8fCBkb21haW4gXHUwMDNlIGFwX21heF9kb21haW5faWQpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTM0OC1cdFx0cmV0dXJuIDA7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjM0OTpcdHJldHVybiBhcF90ZXN0X2NvbmZpZyhhcF9xY2lfaW5mby1cdTAwM2VhZG0sIGRvbWFpbik7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTM1MC19XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xMzQ5PXN0YXRpYyBzc2l6ZV90IGFwX2NvbnRyb2xfZG9tYWluX21hc2tfc2hvdyhjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY2hhciAqYnVmKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzUwLXtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM1MTpcdGlmICghYXBfcWNpX2luZm8tXHUwMDNlZmxhZ3MpXHQvKiBRQ0kgbm90IHN1cHBvcnRlZCAqL1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzUyLVx0XHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwmIzM0O25vdCBzdXBwb3J0ZWRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM1NC1cdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXCYjMzQ7MHglMDh4JTA4eCUwOHglMDh4JTA4eCUwOHglMDh4JTA4eFxcblwmIzM0OyxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM1NTpcdFx0XHQgIGFwX3FjaV9pbmZvLVx1MDAzZWFkbVswXSwgYXBfcWNpX2luZm8tXHUwMDNlYWRtWzFdLFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzU2Olx0XHRcdCAgYXBfcWNpX2luZm8tXHUwMDNlYWRtWzJdLCBhcF9xY2lfaW5mby1cdTAwM2VhZG1bM10sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNTc6XHRcdFx0ICBhcF9xY2lfaW5mby1cdTAwM2VhZG1bNF0sIGFwX3FjaV9pbmZvLVx1MDAzZWFkbVs1XSxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM1ODpcdFx0XHQgIGFwX3FjaV9pbmZvLVx1MDAzZWFkbVs2XSwgYXBfcWNpX2luZm8tXHUwMDNlYWRtWzddKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM1OS19XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xMzYzPXN0YXRpYyBzc2l6ZV90IGFwX3VzYWdlX2RvbWFpbl9tYXNrX3Nob3coY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMsIGNoYXIgKmJ1ZilcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM2NC17XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNjU6XHRpZiAoIWFwX3FjaV9pbmZvLVx1MDAzZWZsYWdzKVx0LyogUUNJIG5vdCBzdXBwb3J0ZWQgKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM2Ni1cdFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcJiMzNDtub3Qgc3VwcG9ydGVkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzNjgtXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwmIzM0OzB4JTA4eCUwOHglMDh4JTA4eCUwOHglMDh4JTA4eCUwOHhcXG5cJiMzNDssXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNjk6XHRcdFx0ICBhcF9xY2lfaW5mby1cdTAwM2VhcW1bMF0sIGFwX3FjaV9pbmZvLVx1MDAzZWFxbVsxXSxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM3MDpcdFx0XHQgIGFwX3FjaV9pbmZvLVx1MDAzZWFxbVsyXSwgYXBfcWNpX2luZm8tXHUwMDNlYXFtWzNdLFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzcxOlx0XHRcdCAgYXBfcWNpX2luZm8tXHUwMDNlYXFtWzRdLCBhcF9xY2lfaW5mby1cdTAwM2VhcW1bNV0sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNzI6XHRcdFx0ICBhcF9xY2lfaW5mby1cdTAwM2VhcW1bNl0sIGFwX3FjaV9pbmZvLVx1MDAzZWFxbVs3XSk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzNzMtfVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTM3Nz1zdGF0aWMgc3NpemVfdCBhcF9hZGFwdGVyX21hc2tfc2hvdyhjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY2hhciAqYnVmKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzc4LXtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM3OTpcdGlmICghYXBfcWNpX2luZm8tXHUwMDNlZmxhZ3MpXHQvKiBRQ0kgbm90IHN1cHBvcnRlZCAqL1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzgwLVx0XHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwmIzM0O25vdCBzdXBwb3J0ZWRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM4Mi1cdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXCYjMzQ7MHglMDh4JTA4eCUwOHglMDh4JTA4eCUwOHglMDh4JTA4eFxcblwmIzM0OyxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM4MzpcdFx0XHQgIGFwX3FjaV9pbmZvLVx1MDAzZWFwbVswXSwgYXBfcWNpX2luZm8tXHUwMDNlYXBtWzFdLFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzg0Olx0XHRcdCAgYXBfcWNpX2luZm8tXHUwMDNlYXBtWzJdLCBhcF9xY2lfaW5mby1cdTAwM2VhcG1bM10sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzODU6XHRcdFx0ICBhcF9xY2lfaW5mby1cdTAwM2VhcG1bNF0sIGFwX3FjaV9pbmZvLVx1MDAzZWFwbVs1XSxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM4NjpcdFx0XHQgIGFwX3FjaV9pbmZvLVx1MDAzZWFwbVs2XSwgYXBfcWNpX2luZm8tXHUwMDNlYXBtWzddKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM4Ny19XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xNzQ3PXN0YXRpYyBzc2l6ZV90IGZlYXR1cmVzX3Nob3coY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMsIGNoYXIgKmJ1Zilcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3NTAtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE3NTE6XHRpZiAoIWFwX3FjaV9pbmZvLVx1MDAzZWZsYWdzKVx0LyogUUNJIG5vdCBzdXBwb3J0ZWQgKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTc1Mi1cdFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcJiMzNDstXFxuXCYjMzQ7KTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTc1My1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTc1NDpcdGlmIChhcF9xY2lfaW5mby1cdTAwM2VhcHNjKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzU1LVx0XHRuICYjNDM7PSBzeXNmc19lbWl0X2F0KGJ1ZiwgbiwgXCYjMzQ7QVBTQyBcJiMzNDspO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxNzU2Olx0aWYgKGFwX3FjaV9pbmZvLVx1MDAzZWFweGEpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3NTctXHRcdG4gJiM0Mzs9IHN5c2ZzX2VtaXRfYXQoYnVmLCBuLCBcJiMzNDtBUFhBIFwmIzM0Oyk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE3NTg6XHRpZiAoYXBfcWNpX2luZm8tXHUwMDNlcWFjdClcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTc1OS1cdFx0biAmIzQzOz0gc3lzZnNfZW1pdF9hdChidWYsIG4sIFwmIzM0O1FBQ1QgXCYjMzQ7KTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTc2MDpcdGlmIChhcF9xY2lfaW5mby1cdTAwM2VyYzhhKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzYxLVx0XHRuICYjNDM7PSBzeXNmc19lbWl0X2F0KGJ1ZiwgbiwgXCYjMzQ7UkM4QSBcJiMzNDspO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxNzYyOlx0aWYgKGFwX3FjaV9pbmZvLVx1MDAzZWFwc2IpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3NjMtXHRcdG4gJiM0Mzs9IHN5c2ZzX2VtaXRfYXQoYnVmLCBuLCBcJiMzNDtBUFNCIFwmIzM0Oyk7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xOTIzPXN0YXRpYyBpbnQgX19kcnZfbm90aWZ5X2NvbmZpZ19jaGFuZ2VkKHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYsIHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTI4LVx0XHRpZiAoYXBfZHJ2LVx1MDAzZW9uX2NvbmZpZ19jaGFuZ2VkKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxOTI5Olx0XHRcdGFwX2Rydi1cdTAwM2Vvbl9jb25maWdfY2hhbmdlZChhcF9xY2lfaW5mbywgYXBfcWNpX2luZm9fb2xkKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTkzMC1cdFx0bW9kdWxlX3B1dChkcnYtXHUwMDNlb3duZXIpO1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTk0ND1zdGF0aWMgaW50IF9fZHJ2X25vdGlmeV9zY2FuX2NvbXBsZXRlKHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYsIHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTQ5LVx0XHRpZiAoYXBfZHJ2LVx1MDAzZW9uX3NjYW5fY29tcGxldGUpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE5NTA6XHRcdFx0YXBfZHJ2LVx1MDAzZW9uX3NjYW5fY29tcGxldGUoYXBfcWNpX2luZm8sXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE5NTE6XHRcdFx0XHRcdFx0IGFwX3FjaV9pbmZvX29sZCk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE5NTItXHRcdG1vZHVsZV9wdXQoZHJ2LVx1MDAzZW93bmVyKTtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTIzMTE9c3RhdGljIGJvb2wgYXBfZ2V0X2NvbmZpZ3VyYXRpb24odm9pZClcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMxMi17XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzMTM6XHRpZiAoIWFwX3FjaV9pbmZvLVx1MDAzZWZsYWdzKVx0LyogUUNJIG5vdCBzdXBwb3J0ZWQgKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMxNC1cdFx0cmV0dXJuIGZhbHNlO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzE1LVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzE2Olx0bWVtY3B5KGFwX3FjaV9pbmZvX29sZCwgYXBfcWNpX2luZm8sIHNpemVvZigqYXBfcWNpX2luZm8pKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjMxNzpcdGFwX3FjaShhcF9xY2lfaW5mbyk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMTgtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzMTk6XHRyZXR1cm4gbWVtY21wKGFwX3FjaV9pbmZvLCBhcF9xY2lfaW5mb19vbGQsXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMjAtXHRcdCAgICAgIHNpemVvZihzdHJ1Y3QgYXBfY29uZmlnX2luZm8pKSAhPSAwO1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjMyOT1zdGF0aWMgYm9vbCBhcF9jb25maWdfaGFzX25ld19hcHModm9pZClcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMzMtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzMzQ6XHRpZiAoIWFwX3FjaV9pbmZvLVx1MDAzZWZsYWdzKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzM1LVx0XHRyZXR1cm4gZmFsc2U7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMzYtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzMzc6XHRiaXRtYXBfYW5kbm90KG0sICh1bnNpZ25lZCBsb25nICopYXBfcWNpX2luZm8tXHUwMDNlYXBtLFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzM4Olx0XHQgICAgICAodW5zaWduZWQgbG9uZyAqKWFwX3FjaV9pbmZvX29sZC1cdTAwM2VhcG0sIEFQX0RFVklDRVMpO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzM5LVx0aWYgKCFiaXRtYXBfZW1wdHkobSwgQVBfREVWSUNFUykpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yMzUxPXN0YXRpYyBib29sIGFwX2NvbmZpZ19oYXNfbmV3X2RvbXModm9pZClcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzNTQtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzNTU6XHRpZiAoIWFwX3FjaV9pbmZvLVx1MDAzZWZsYWdzKVxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzU2LVx0XHRyZXR1cm4gZmFsc2U7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzNTctXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzNTg6XHRiaXRtYXBfYW5kbm90KG0sICh1bnNpZ25lZCBsb25nICopYXBfcWNpX2luZm8tXHUwMDNlYXFtLFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzU5Olx0XHQgICAgICAodW5zaWduZWQgbG9uZyAqKWFwX3FjaV9pbmZvX29sZC1cdTAwM2VhcW0sIEFQX0RPTUFJTlMpO1xuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzYwLVx0aWYgKCFiaXRtYXBfZW1wdHkobSwgQVBfRE9NQUlOUykpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jPTg2PXN0YXRpYyBpbnQgdmZpb19hcF9tYXRyaXhfZGV2X2NyZWF0ZSh2b2lkKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xMDYtXHRpZiAodGVzdF9mYWNpbGl0eSgxMikpIHtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxMDc6XHRcdHJldCA9IGFwX3FjaShcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZWluZm8pO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTEwOC1cdFx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ5OTgKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAyOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgVkZJTyBBUCBEZXZpY2UgQ3JlYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYHZmaW9fYXBfbWF0cml4X2Rldl9jcmVhdGVgIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgdGhhdCBgdGVzdF9mYWNpbGl0eSgxMilgIGNoZWNrLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgaWYgZmFjaWxpdHkgMTIgd2FzbiYjMzk7dCBwcmVzZW50LCB0aGUgd2hvbGUgdGhpbmcgd291bGQgZXJyb3Igb3V0LiBCdXQgaGFuZyBvbiwgaXQgZG9lc24mIzM5O3QhIEl0IGp1c3QgKnNraXBzKiB0aGUgYGFwX3FjaWAgY2FsbC4gQW5kIHNpbmNlIHRoZSBgbWF0cml4X2Rldi0mZ3Q7aW5mb2Agc3RydWN0IHdhcyBga3phbGxvY19vYmpgJiMzOTtkLCBpdCYjMzk7bGwganVzdCBiZSB6ZXJvZWQgb3V0LiBUaGF0IG1lYW5zIHRoZSBkZXZpY2UgY3JlYXRpb24gKnN1Y2NlZWRzKiBldmVuIHdpdGhvdXQgdGhlIGZhY2lsaXR5LiBTbywgdGhlIG1hdHJpeCBkZXZpY2UgZ2V0cyByZWdpc3RlcmVkLCBldmVuIGluIHRoaXMgJiMzNDtwYXJ0aWFsJiMzNDsgc3RhdGUuIEludGVyZXN0aW5nLgoKTm93LCBjYW4gd2UgYWN0dWFsbHkgY3JlYXRlIGFuIG1kZXYgb24gdG9wIG9mIHRoaXM/IEkgbmVlZCB0byBjaGVjayB0aGUgYHZmaW9fYXBfbWRldl9wcm9iZWAgYW5kIGB2ZmlvX2FwX21kZXZfaW5pdF9kZXZgIGZ1bmN0aW9ucyB0byBzZWUgd2hhdCBoYXBwZW5zIHRoZXJlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgUUVNVSBtaWdodCBub3QgYmUgZnVsbHkgZW11bGF0aW5nIHRoZSBBUCBpbnN0cnVjdGlvbnMgYnkgZGVmYXVsdCwgYnV0IEtWTSBjYW4gcGFzcyB0aGVtIHRocm91Z2guIFRoYXQmIzM5O3MgdGhlIGRpZmZlcmVuY2UuCgpBbmQgd2FpdCwgaXNuJiMzOTt0IHN5emthbGxlciBvZnRlbiBydW4gd2l0aCBLVk0gb24gczM5MHg/IFllcywgaXQgaXMhIFNvIGl0ICpzaG91bGQqIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gaW50ZXJhY3Qgd2l0aCB0aGVzZSBkZXZpY2VzLCBhdCBsZWFzdCBpbiBhIHBhc3N0aHJvdWdoIGNvbmZpZ3VyYXRpb24uIFdoaWNoIGJyaW5ncyBtZSB0byB0aGUgY29yZSBxdWVzdGlvbjogZG9lcyBzeXprYWxsZXIgaGF2ZSBleGlzdGluZyBkZXNjcmlwdGlvbnMgb3IgZnV6emluZyBjb3ZlcmFnZSBmb3IgYHZmaW9fYXBgPyBJIG5lZWQgdG8gY2hlY2sgdGhlIHN5emthbGxlciBjb2RlIGJhc2UgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgZGVmaW5pdGlvbnMgb3IgdGVzdCBjYXNlcyByZWxhdGVkIHRvIHRoZSBWRklPIEFQIHN1YnN5c3RlbS4gVGhhdCYjMzk7cyB0aGUga2V5IHRvIGV4cGxvaXRpbmcgYW55IHZ1bG5lcmFiaWxpdGllcyBoZXJlLiBJJiMzOTttIGdvaW5nIHRvIGZpbmQgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2ZmlvX2FwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNTAzIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0PTY9VGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIGxvY2tzIHRoYXQgYXJlIHBlcnRpbmVudCB0byB0aGUgc2VjdXJlIG9wZXJhdGlvblxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdDo3Om9mIHRoZSB2ZmlvX2FwIGRldmljZSBkcml2ZXIuIFRocm91Z2hvdXQgdGhpcyBkb2N1bWVudCwgdGhlIGZvbGxvd2luZyB2YXJpYWJsZXNcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtOC13aWxsIGJlIHVzZWQgdG8gZGVub3RlIGluc3RhbmNlcyBvZiB0aGUgc3RydWN0dXJlcyBoZXJlaW4gZGVzY3JpYmVkOlxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtMTUtXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0OjE2OlRoZSBNYXRyaXggRGV2aWNlcyBMb2NrIChkcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oKVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdC0xNy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0PTMyPW9yIHVzaW5nIHRoZSBkYXRhIGZyb20gYSBmaWVsZCBjb250YWluZWQgd2l0aGluIGEgbWF0cml4X21kZXYgaW5zdGFuY2VcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3Q6MzM6cmVwcmVzZW50aW5nIG9uZSBvZiB0aGUgdmZpb19hcCBkZXZpY2UgZHJpdmVyJiMzOTtzIG1lZGlhdGVkIGRldmljZXMuXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0LTM0LVxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3Q9NDY9VGhlIEtWTSBMb2NrIChrdm0tXHUwMDNlbG9jaykgY29udHJvbHMgYWNjZXNzIHRvIHRoZSBzdGF0ZSBkYXRhIGZvciBhIEtWTSBndWVzdC4gVGhpc1xuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdDo0Nzpsb2NrIG11c3QgYmUgaGVsZCBieSB0aGUgdmZpb19hcCBkZXZpY2UgZHJpdmVyIHdoaWxlIG9uZSBvciBtb3JlIEFQIGFkYXB0ZXJzLFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdC00OC1kb21haW5zIG9yIGNvbnRyb2wgZG9tYWlucyBhcmUgYmVpbmcgcGx1Z2dlZCBpbnRvIG9yIHVucGx1Z2dlZCBmcm9tIHRoZSBndWVzdC5cbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0PTUyPWJlZW4gYXR0YWNoZWQgdG8gdGhlIEtWTSBndWVzdC5cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtNTMtXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0OjU0OlRoZSBHdWVzdHMgTG9jayAoZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaClcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtNTUtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0PTY5PUtWTSBndWVzdC4gVGhpcyBsb2NrIG11c3QgYmUgaGVsZDpcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtNzAtXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0OjcxOjEuIFRvIGNvbnRyb2wgYWNjZXNzIHRvIHRoZSBLVk0gcG9pbnRlciAobWF0cml4X21kZXYtXHUwMDNla3ZtKSB3aGlsZSB0aGUgdmZpb19hcFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdC03Mi0gICBkZXZpY2UgZHJpdmVyIGlzIHVzaW5nIGl0IHRvIHBsdWcvdW5wbHVnIEFQIGRldmljZXMgcGFzc2VkIHRocm91Z2ggdG8gdGhlIEtWTVxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtNzktXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0OjgwOiAgIEZvciBleGFtcGxlLCB3aGVuIGEgcXVldWUgZGV2aWNlIGlzIHJlbW92ZWQgZnJvbSB0aGUgdmZpb19hcCBkZXZpY2UgZHJpdmVyLFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdC04MS0gICBpZiB0aGUgYWRhcHRlciBpcyBwYXNzZWQgdGhyb3VnaCB0byBhIEtWTSBndWVzdCwgaXQgd2lsbCBoYXZlIHRvIGJlXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q9MTg4PVRoZSBkZXNpZ24gaW50cm9kdWNlcyB0aHJlZSBuZXcgb2JqZWN0czpcbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0xOTAtMS4gQVAgbWF0cml4IGRldmljZVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MTkxOjIuIFZGSU8gQVAgZGV2aWNlIGRyaXZlciAodmZpb19hcC5rbylcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTE5Mi0zLiBWRklPIEFQIG1lZGlhdGVkIHBhc3MtdGhyb3VnaCBkZXZpY2Vcbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdD0xOTQ9VGhlIFZGSU8gQVAgZGV2aWNlIGRyaXZlclxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMTk1LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjE5NjpUaGUgVkZJTyBBUCAodmZpb19hcCkgZGV2aWNlIGRyaXZlciBzZXJ2ZXMgdGhlIGZvbGxvd2luZyBwdXJwb3NlczpcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTE5Ny1cbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0xOTktXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoyMDA6Mi4gU2V0cyB1cCB0aGUgVkZJTyBtZWRpYXRlZCBkZXZpY2UgaW50ZXJmYWNlcyB0byBtYW5hZ2UgYSB2ZmlvX2FwIG1lZGlhdGVkXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0yMDEtICAgZGV2aWNlIGFuZCBjcmVhdGVzIHRoZSBzeXNmcyBpbnRlcmZhY2VzIGZvciBhc3NpZ25pbmcgYWRhcHRlcnMsIHVzYWdlXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q9MjExPXJlc2VydmVkOjpcbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0yMzEtICB8ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgfFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MjMyOiAgfCAgICAgIGFwX2J1cyAgICAgICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tIFx1MDAzZSAgdmZpb19hcCBkcml2ZXIgIHxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTIzMy0gIHwgICAgICAgICAgICAgICAgICB8ICAgICAgIDggcHJvYmUgICAgICAgIHwgICAgICAgICAgICAgICAgICB8XG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMjQzLVx0IHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MjQ0Olx0IHwgfCA5IGNyZWF0ZSB2ZmlvX2FwLXBhc3N0aHJvdWdoIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMjQ1LVx0IHwgJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q9MjQ5PVRoZSBwcm9jZXNzIGZvciByZXNlcnZpbmcgYW4gQVAgcXVldWUgZm9yIHVzZSBieSBhIEtWTSBndWVzdCBpczpcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTI1MC1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjI1MToxLiBUaGUgYWRtaW5pc3RyYXRvciBsb2FkcyB0aGUgdmZpb19hcCBkZXZpY2UgZHJpdmVyXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0yNTItMi4gVGhlIHZmaW8tYXAgZHJpdmVyIGR1cmluZyBpdHMgaW5pdGlhbGl6YXRpb24gd2lsbCByZWdpc3RlciBhIHNpbmdsZSAmIzM5O21hdHJpeCYjMzk7XG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0yNTMtICAgZGV2aWNlIHdpdGggdGhlIGRldmljZSBjb3JlLiBUaGlzIHdpbGwgc2VydmUgYXMgdGhlIHBhcmVudCBkZXZpY2UgZm9yXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoyNTQ6ICAgYWxsIHZmaW9fYXAgbWVkaWF0ZWQgZGV2aWNlcyB1c2VkIHRvIGNvbmZpZ3VyZSBhbiBBUCBtYXRyaXggZm9yIGEgZ3Vlc3QuXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoyNTU6My4gVGhlIC9zeXMvZGV2aWNlcy92ZmlvX2FwL21hdHJpeCBkZXZpY2UgaXMgY3JlYXRlZCBieSB0aGUgZGV2aWNlIGNvcmVcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjI1Njo0LiBUaGUgdmZpb19hcCBkZXZpY2UgZHJpdmVyIHdpbGwgcmVnaXN0ZXIgd2l0aCB0aGUgQVAgYnVzIGZvciBBUCBxdWV1ZSBkZXZpY2VzXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoyNTc6ICAgb2YgdHlwZSAxMCBhbmQgaGlnaGVyIChDRVg0IGFuZCBuZXdlcikuIFRoZSBkcml2ZXIgd2lsbCBwcm92aWRlIHRoZSB2ZmlvX2FwXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0yNTgtICAgZHJpdmVyJiMzOTtzIHByb2JlIGFuZCByZW1vdmUgY2FsbGJhY2sgaW50ZXJmYWNlcy4gRGV2aWNlcyBvbGRlciB0aGFuIENFWDQgcXVldWVzXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMjYyLSAgIHN5c3RlbXMgYXJvdW5kIG9uIHdoaWNoIHRvIHRlc3QuXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoyNjM6NS4gVGhlIEFQIGJ1cyByZWdpc3RlcnMgdGhlIHZmaW9fYXAgZGV2aWNlIGRyaXZlciB3aXRoIHRoZSBkZXZpY2UgY29yZVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMjY0LTYuIFRoZSBhZG1pbmlzdHJhdG9yIGVkaXRzIHRoZSBBUCBhZGFwdGVyIGFuZCBxdWV1ZSBtYXNrcyB0byByZXNlcnZlIEFQIHF1ZXVlc1xuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MjY1OiAgIGZvciB1c2UgYnkgdGhlIHZmaW9fYXAgZGV2aWNlIGRyaXZlci5cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjI2Njo3LiBUaGUgQVAgYnVzIHJlbW92ZXMgdGhlIEFQIHF1ZXVlcyByZXNlcnZlZCBmb3IgdGhlIHZmaW9fYXAgZHJpdmVyIGZyb20gdGhlXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0yNjctICAgZGVmYXVsdCB6Y3J5cHQgY2V4NHF1ZXVlIGRyaXZlci5cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjI2ODo4LiBUaGUgQVAgYnVzIHByb2JlcyB0aGUgdmZpb19hcCBkZXZpY2UgZHJpdmVyIHRvIGJpbmQgdGhlIHF1ZXVlcyByZXNlcnZlZCBmb3JcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTI2OS0gICBpdC5cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjI3MDo5LiBUaGUgYWRtaW5pc3RyYXRvciBjcmVhdGVzIGEgcGFzc3Rocm91Z2ggdHlwZSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSB0byBiZVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMjcxLSAgIHVzZWQgYnkgYSBndWVzdFxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0PTI3OD1kZXZpY2UgY29yZSBkcml2ZXIgdG86XG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0yNzktXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoyODA6KiBSZWdpc3RlciBhbiBBUCBtZWRpYXRlZCBidXMgZHJpdmVyIHRvIGFkZCBhIHZmaW9fYXAgbWVkaWF0ZWQgZGV2aWNlIHRvIGFuZFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMjgxLSAgcmVtb3ZlIGl0IGZyb20gYSBWRklPIGdyb3VwLlxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MjgyOiogQ3JlYXRlIGFuZCBkZXN0cm95IGEgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2VcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjI4MzoqIEFkZCBhIHZmaW9fYXAgbWVkaWF0ZWQgZGV2aWNlIHRvIGFuZCByZW1vdmUgaXQgZnJvbSB0aGUgQVAgbWVkaWF0ZWQgYnVzIGRyaXZlclxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6Mjg0OiogQWRkIGEgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UgdG8gYW5kIHJlbW92ZSBpdCBmcm9tIGFuIElPTU1VIGdyb3VwXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0yODUtXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q9Mjg3PW9mIHRoZSBWRklPIEFQIG1lZGlhdGVkIGRldmljZSBkcml2ZXI6OlxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTMwMS0gICB8IHxQaHlzaWNhbCB8ICYjNDM7XHUwMDNjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOyAgICAgICAgICAgICAgfFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MzAyOiAgIHwgfCBkZXZpY2UgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgIHZmaW9fYXAua28gIHxcdTAwM2MtXHUwMDNlIG1hdHJpeFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzAzLSAgIHwgfGludGVyZmFjZXwgJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVx1MDAzZSYjNDM7ICAgICAgICAgICAgICB8ICAgIGRldmljZVxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTMwNi1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjMwNzpEdXJpbmcgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHZmaW9fYXAgbW9kdWxlLCB0aGUgbWF0cml4IGRldmljZSBpcyByZWdpc3RlcmVkXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0zMDgtd2l0aCBhbiAmIzM5O21kZXZfcGFyZW50X29wcyYjMzk7IHN0cnVjdHVyZSB0aGF0IHByb3ZpZGVzIHRoZSBzeXNmcyBhdHRyaWJ1dGVcbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdD0zMTA9bWF0cml4IGRldmljZS5cbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0zMjYtXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDozMjc6ICAgICAgL3N5cy9kZXZpY2VzL3ZmaW9fYXAvbWF0cml4L21kZXZfc3VwcG9ydGVkX3R5cGVzL3ZmaW9fYXAtcGFzc3Rocm91Z2hcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTMyOC1cbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0zNDMtXHQqIGF2YWlsYWJsZV9pbnN0YW5jZXM6XG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDozNDQ6XHQgICAgdGhlIG51bWJlciBvZiB2ZmlvX2FwIG1lZGlhdGVkIHBhc3N0aHJvdWdoIGRldmljZXNcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTM0NS1cdCAgICB0aGF0IGNhbiBiZSBjcmVhdGVkXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzUxLSAgICBmcmFtZXdvcmssIHRoZSBzeXNmcyBhdHRyaWJ1dGUgZmlsZXMgaWRlbnRpZmllZCBpbiB0aGUgJiMzOTttZGV2X2F0dHJfZ3JvdXBzJiMzOTtcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjM1MjogICAgc3RydWN0dXJlIHdpbGwgYmUgY3JlYXRlZCBpbiB0aGUgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UmIzM5O3MgZGlyZWN0b3J5LiBUaGVcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjM1MzogICAgc3lzZnMgYXR0cmlidXRlcyBmb3IgYSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSBhcmU6XG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0zNTQtXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzU2LSAgICAgIFdyaXRlLW9ubHkgYXR0cmlidXRlcyBmb3IgYXNzaWduaW5nL3VuYXNzaWduaW5nIGFuIEFQIGFkYXB0ZXIgdG8vZnJvbSB0aGVcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjM1NzogICAgICB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZS4gVG8gYXNzaWduL3VuYXNzaWduIGFuIGFkYXB0ZXIsIHRoZSBBUElEIG9mIHRoZVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzU4LSAgICAgIGFkYXB0ZXIgaXMgZWNob2VkIGludG8gdGhlIHJlc3BlY3RpdmUgYXR0cmlidXRlIGZpbGUuXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzYwLSAgICAgIFdyaXRlLW9ubHkgYXR0cmlidXRlcyBmb3IgYXNzaWduaW5nL3VuYXNzaWduaW5nIGFuIEFQIHVzYWdlIGRvbWFpbiB0by9mcm9tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDozNjE6ICAgICAgdGhlIHZmaW9fYXAgbWVkaWF0ZWQgZGV2aWNlLiBUbyBhc3NpZ24vdW5hc3NpZ24gYSBkb21haW4sIHRoZSBkb21haW5cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTM2Mi0gICAgICBudW1iZXIgb2YgdGhlIHVzYWdlIGRvbWFpbiBpcyBlY2hvZWQgaW50byB0aGUgcmVzcGVjdGl2ZSBhdHRyaWJ1dGVcbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0zNjUtICAgICAgQSByZWFkLW9ubHkgZmlsZSBmb3IgZGlzcGxheWluZyB0aGUgQVBRTnMgZGVyaXZlZCBmcm9tIHRoZSBDYXJ0ZXNpYW5cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjM2NjogICAgICBwcm9kdWN0IG9mIHRoZSBhZGFwdGVyIGFuZCBkb21haW4gbnVtYmVycyBhc3NpZ25lZCB0byB0aGUgdmZpb19hcCBtZWRpYXRlZFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzY3LSAgICAgIGRldmljZS5cbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0zNzEtICAgICAgZmllbGRzIHJlc3BlY3RpdmVseSBvZiB0aGUgS1ZNIGd1ZXN0JiMzOTtzIENSWUNCLiBUaGlzIG1heSBkaWZmZXIgZnJvbSB0aGVcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjM3MjogICAgICB0aGUgQVBRTnMgYXNzaWduZWQgdG8gdGhlIHZmaW9fYXAgbWVkaWF0ZWQgZGV2aWNlIGlmIGFueSBBUFFOIGRvZXMgbm90XG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDozNzM6ICAgICAgcmVmZXJlbmNlIGEgcXVldWUgZGV2aWNlIGJvdW5kIHRvIHRoZSB2ZmlvX2FwIGRldmljZSBkcml2ZXIgKGkuZS4sIHRoZVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzc0LSAgICAgIHF1ZXVlIGlzIG5vdCBpbiB0aGUgaG9zdCYjMzk7cyBBUCBjb25maWd1cmF0aW9uKS5cbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0zNzYtICAgICAgV3JpdGUtb25seSBhdHRyaWJ1dGVzIGZvciBhc3NpZ25pbmcvdW5hc3NpZ25pbmcgYW4gQVAgY29udHJvbCBkb21haW5cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjM3NzogICAgICB0by9mcm9tIHRoZSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZS4gVG8gYXNzaWduL3VuYXNzaWduIGEgY29udHJvbCBkb21haW4sXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0zNzgtICAgICAgdGhlIElEIG9mIHRoZSBkb21haW4gdG8gYmUgYXNzaWduZWQvdW5hc3NpZ25lZCBpcyBlY2hvZWQgaW50byB0aGVcbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0zODEtICAgICAgQSByZWFkLW9ubHkgZmlsZSBmb3IgZGlzcGxheWluZyB0aGUgY29udHJvbCBkb21haW4gbnVtYmVycyBhc3NpZ25lZCB0byB0aGVcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjM4MjogICAgICB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZS5cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTM4My0gICAgYXBfY29uZmlnOlxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzg0LSAgICAgIEEgcmVhZC93cml0ZSBmaWxlIHRoYXQsIHdoZW4gd3JpdHRlbiB0bywgYWxsb3dzIGFsbCB0aHJlZSBvZiB0aGVcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjM4NTogICAgICB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSYjMzk7cyBhcCBtYXRyaXggbWFza3MgdG8gYmUgcmVwbGFjZWQgaW4gb25lIHNob3QuXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0zODYtICAgICAgVGhyZWUgbWFza3MgYXJlIGdpdmVuLCBvbmUgZm9yIGFkYXB0ZXJzLCBvbmUgZm9yIGRvbWFpbnMsIGFuZCBvbmUgZm9yXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNDE2LSAgY3JlYXRlOlxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6NDE3OiAgICBhbGxvY2F0ZXMgdGhlIGFwX21hdHJpeF9tZGV2IHN0cnVjdHVyZSB1c2VkIGJ5IHRoZSB2ZmlvX2FwIGRyaXZlciB0bzpcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTQxOC1cbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC00MjQtICAgICAgcmVmZXJlbmNpbmcgcXVldWUgZGV2aWNlcyB0aGF0IGRvIG5vdCBleGlzdCwgb3IgYXJlIG5vdCBib3VuZCB0byB0aGVcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjQyNTogICAgICB2ZmlvX2FwIGRldmljZSBkcml2ZXIuXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC00MjYtXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC00MjctICByZW1vdmU6XG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo0Mjg6ICAgIGRlYWxsb2NhdGVzIHRoZSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSYjMzk7cyBhcF9tYXRyaXhfbWRldiBzdHJ1Y3R1cmUuXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC00MjktICAgIFRoaXMgd2lsbCBiZSBhbGxvd2VkIG9ubHkgaWYgYSBydW5uaW5nIGd1ZXN0IGlzIG5vdCB1c2luZyB0aGUgbWRldi5cbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC00MzctICAgIGFuZCBjb25maWd1cmVzIHRoZSBndWVzdCYjMzk7cyBhY2Nlc3MgdG8gdGhlIEFQIG1hdHJpeCBkZWZpbmVkIHZpYSB0aGVcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjQzODogICAgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UmIzM5O3Mgc3lzZnMgYXR0cmlidXRlIGZpbGVzLlxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNDM5LVxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0PTQ1MT1jb25maWd1cmVkIHZpYSBpdHMgQVBDQiBieTpcbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC00NTMtKiBTZXR0aW5nIHRoZSBiaXRzIGluIHRoZSBBUE0gY29ycmVzcG9uZGluZyB0byB0aGUgQVBJRHMgYXNzaWduZWQgdG8gdGhlXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo0NTQ6ICB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSB2aWEgaXRzICYjMzk7YXNzaWduX2FkYXB0ZXImIzM5OyBpbnRlcmZhY2UuXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC00NTUtKiBTZXR0aW5nIHRoZSBiaXRzIGluIHRoZSBBUU0gY29ycmVzcG9uZGluZyB0byB0aGUgZG9tYWlucyBhc3NpZ25lZCB0byB0aGVcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjQ1NjogIHZmaW9fYXAgbWVkaWF0ZWQgZGV2aWNlIHZpYSBpdHMgJiMzOTthc3NpZ25fZG9tYWluJiMzOTsgaW50ZXJmYWNlLlxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNDU3LSogU2V0dGluZyB0aGUgYml0cyBpbiB0aGUgQURNIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGRvbWFpbiBkSURzIGFzc2lnbmVkIHRvIHRoZVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6NDU4OiAgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UgdmlhIGl0cyAmIzM5O2Fzc2lnbl9jb250cm9sX2RvbWFpbnMmIzM5OyBpbnRlcmZhY2UuXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC00NTktXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q9NDYxPWlzIG5vdCBib3VuZCB0byB0aGUgZGV2aWNlIGRyaXZlciBmYWNpbGl0YXRpbmcgaXRzIHBhc3MtdGhyb3VnaC4gQ29uc2VxdWVudGx5LFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6NDYyOmFuIEFQUU4gdGhhdCBkb2VzIG5vdCByZWZlcmVuY2UgYSBxdWV1ZSBkZXZpY2UgYm91bmQgdG8gdGhlIHZmaW9fYXAgZGV2aWNlXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC00NjMtZHJpdmVyIHdpbGwgbm90IGJlIGFzc2lnbmVkIHRvIGEgS1ZNIGd1ZXN0JiMzOTtzIG1hdHJpeC4gVGhlIEFQIGFyY2hpdGVjdHVyZSxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0PTQ2ND1ob3dldmVyLCBkb2VzIG5vdCBwcm92aWRlIGEgbWVhbnMgdG8gZmlsdGVyIGluZGl2aWR1YWwgQVBRTnMgZnJvbSB0aGUgZ3Vlc3QmIzM5O3NcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjQ2NTptYXRyaXgsIHNvIHRoZSBhZGFwdGVycywgZG9tYWlucyBhbmQgY29udHJvbCBkb21haW5zIGFzc2lnbmVkIHRvIHZmaW9fYXBcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTQ2Ni1tZWRpYXRlZCBkZXZpY2UgdmlhIGl0cyBzeXNmcyAmIzM5O2Fzc2lnbl9hZGFwdGVyJiMzOTssICYjMzk7YXNzaWduX2RvbWFpbiYjMzk7IGFuZFxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0PTQ2OD1jb25maWd1cmF0aW9uIHRvIGEgZ3Vlc3Q6XG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNDc0LSogRWFjaCBBUFFOIGRlcml2ZWQgZnJvbSB0aGUgQ2FydGVzaWFuIHByb2R1Y3Qgb2YgdGhlIEFQSURzIGFuZCBBUFFJcyBhc3NpZ25lZFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6NDc1OiAgdG8gdGhlIHZmaW9fYXAgbWRldiBpcyBleGFtaW5lZCBhbmQgaWYgYW55IG9uZSBvZiB0aGVtIGRvZXMgbm90IHJlZmVyZW5jZSBhXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo0NzY6ICBxdWV1ZSBkZXZpY2UgYm91bmQgdG8gdGhlIHZmaW9fYXAgZGV2aWNlIGRyaXZlciwgdGhlIGFkYXB0ZXIgd2lsbCBub3QgYmVcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTQ3Ny0gIHBsdWdnZWQgaW50byB0aGUgZ3Vlc3QgKGkuZS4sIHRoZSBiaXQgY29ycmVzcG9uZGluZyB0byBpdHMgQVBJRCB3aWxsIG5vdCBiZVxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0PTU2Mz1UaGVzZSBhcmUgdGhlIHN0ZXBzOlxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNTY0LVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6NTY1OjEuIEluc3RhbGwgdGhlIHZmaW9fYXAgbW9kdWxlIG9uIHRoZSBsaW51eCBob3N0LiBUaGUgZGVwZW5kZW5jeSBjaGFpbiBmb3IgdGhlXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo1NjY6ICAgdmZpb19hcCBtb2R1bGUgaXM6XG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC01NjctICAgKiBpb21tdVxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTU3NC1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjU3NTogICBUbyBidWlsZCB0aGUgdmZpb19hcCBtb2R1bGUsIHRoZSBrZXJuZWwgYnVpbGQgbXVzdCBiZSBjb25maWd1cmVkIHdpdGggdGhlXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC01NzYtICAgZm9sbG93aW5nIEtjb25maWcgZWxlbWVudHMgc2VsZWN0ZWQ6XG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNTgyLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6NTgzOiAgIElmIHVzaW5nIG1ha2UgbWVudWNvbmZpZyBzZWxlY3QgdGhlIGZvbGxvd2luZyB0byBidWlsZCB0aGUgdmZpb19hcCBtb2R1bGU6OlxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNTg0LVxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTU5Ny0gICBxdWV1ZSBkZXZpY2UgZHJpdmVycy4gQWxsIHJlbWFpbmluZyBBUFFOcyBhcmUgYXZhaWxhYmxlIGZvciB1c2UgYnlcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjU5ODogICBhbnkgb3RoZXIgZGV2aWNlIGRyaXZlci4gVGhlIHZmaW9fYXAgZGV2aWNlIGRyaXZlciBpcyBjdXJyZW50bHkgdGhlIG9ubHlcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTU5OS0gICBub24tZGVmYXVsdCBkZXZpY2UgZHJpdmVyLiBUaGUgbG9jYXRpb24gb2YgdGhlIHN5c2ZzIGZpbGVzIGNvbnRhaW5pbmcgdGhlXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNjE4LSAgIEFsbCBvdGhlciBBUFFOcyBhcmUgYXZhaWxhYmxlIHRvIHRoZSBub24tZGVmYXVsdCBkZXZpY2UgZHJpdmVycyBzdWNoIGFzIHRoZVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6NjE5OiAgIHZmaW9fYXAgZHJpdmVyLlxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNjIwLVxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTY0Ni0gICBtYXRjaCBpcyBkZXRlY3RlZCwgIG9ubHkgdGhlIGRlZmF1bHQgQVAgcXVldWUgZGV2aWNlIGRyaXZlcnMgd2lsbCBiZSBwcm9iZWQ7XG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo2NDc6ICAgb3RoZXJ3aXNlLCB0aGUgdmZpb19hcCBkZXZpY2UgZHJpdmVyIHdpbGwgYmUgcHJvYmVkLlxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNjQ4LVxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTcwOC0gICAqKk5vdGU6KipcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjcwOTogICBDaGFuZ2luZyBhIG1hc2sgc3VjaCB0aGF0IG9uZSBvciBtb3JlIEFQUU5zIHdpbGwgYmUgdGFrZW4gZnJvbSBhIHZmaW9fYXBcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTcxMC0gICBtZWRpYXRlZCBkZXZpY2UgKHNlZSBiZWxvdykgd2lsbCBmYWlsIHdpdGggYW4gZXJyb3IgKEVCVVNZKS4gQSBtZXNzYWdlXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNzEyLSAgIGNvbW1hbmQuIFRoZSBvdXRwdXQgaWRlbnRpZmllcyBlYWNoIEFQUU4gZmxhZ2dlZCBhcyAmIzM5O2luIHVzZSYjMzk7IGFuZCBpZGVudGlmaWVzXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo3MTM6ICAgdGhlIHZmaW9fYXAgbWVkaWF0ZWQgZGV2aWNlIHRvIHdoaWNoIGl0IGlzIGFzc2lnbmVkOyBmb3IgZXhhbXBsZTpcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTcxNC1cbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdD03MTg9U2VjdXJpbmcgdGhlIEFQUU5zIGZvciBvdXIgZXhhbXBsZVxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTcyMC0gICBUbyBzZWN1cmUgdGhlIEFQIHF1ZXVlcyAwNS4wMDA0LCAwNS4wMDQ3LCAwNS4wMGFiLCAwNS4wMGZmLCAwNi4wMDA0LCAwNi4wMDQ3LFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6NzIxOiAgIDA2LjAwYWIsIGFuZCAwNi4wMGZmIGZvciB1c2UgYnkgdGhlIHZmaW9fYXAgZGV2aWNlIGRyaXZlciwgdGhlIGNvcnJlc3BvbmRpbmdcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTcyMi0gICBBUFFOcyBjYW4gYmUgcmVtb3ZlZCBmcm9tIHRoZSBkZWZhdWx0IG1hc2tzIHVzaW5nIGVpdGhlciBvZiB0aGUgZm9sbG93aW5nXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNzM3LSAgIFRoaXMgd2lsbCByZXN1bHQgaW4gQVAgcXVldWVzIDA1LjAwMDQsIDA1LjAwNDcsIDA1LjAwYWIsIDA1LjAwZmYsIDA2LjAwMDQsXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo3Mzg6ICAgMDYuMDA0NywgMDYuMDBhYiwgYW5kIDA2LjAwZmYgZ2V0dGluZyBib3VuZCB0byB0aGUgdmZpb19hcCBkZXZpY2UgZHJpdmVyLiBUaGVcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjczOTogICBzeXNmcyBkaXJlY3RvcnkgZm9yIHRoZSB2ZmlvX2FwIGRldmljZSBkcml2ZXIgd2lsbCBub3cgY29udGFpbiBzeW1ib2xpYyBsaW5rc1xuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNzQwLSAgIHRvIHRoZSBBUCBxdWV1ZSBkZXZpY2VzIGJvdW5kIHRvIGl0Ojpcbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03NDMtICAgICAuLi4gW2RyaXZlcnNdXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo3NDQ6ICAgICAuLi4uLi4gW3ZmaW9fYXBdXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03NDUtICAgICAuLi4uLi4uLi4gWzA1LjAwMDRdXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNzU0LSAgIEtlZXAgaW4gbWluZCB0aGF0IG9ubHkgdHlwZSAxMCBhbmQgbmV3ZXIgYWRhcHRlcnMgKGkuZS4sIENFWDQgYW5kIGxhdGVyKVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6NzU1OiAgIGNhbiBiZSBib3VuZCB0byB0aGUgdmZpb19hcCBkZXZpY2UgZHJpdmVyLiBUaGUgcmVhc29uIGZvciB0aGlzIGlzIHRvXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03NTYtICAgc2ltcGxpZnkgdGhlIGltcGxlbWVudGF0aW9uIGJ5IG5vdCBuZWVkbGVzc2x5IGNvbXBsaWNhdGluZyB0aGUgZGVzaWduIGJ5XG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNzYwLSAgIFRoZSBhZG1pbmlzdHJhdG9yLCB0aGVyZWZvcmUsIG11c3QgdGFrZSBjYXJlIHRvIHNlY3VyZSBvbmx5IEFQIHF1ZXVlcyB0aGF0XG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo3NjE6ICAgY2FuIGJlIGJvdW5kIHRvIHRoZSB2ZmlvX2FwIGRldmljZSBkcml2ZXIuIFRoZSBkZXZpY2UgdHlwZSBmb3IgYSBnaXZlbiBBUFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNzYyLSAgIHF1ZXVlIGRldmljZSBjYW4gYmUgcmVhZCBmcm9tIHRoZSBwYXJlbnQgY2FyZCYjMzk7cyBzeXNmcyBkaXJlY3RvcnkuIEZvciBleGFtcGxlLFxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTc2Ny0gICBUaGUgaHd0eXBlIG11c3QgYmUgMTAgb3IgaGlnaGVyIChDRVg0IG9yIG5ld2VyKSBpbiBvcmRlciB0byBiZSBib3VuZCB0byB0aGVcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0Ojc2ODogICB2ZmlvX2FwIGRldmljZSBkcml2ZXIuXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03NjktXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03NzAtMy4gQ3JlYXRlIHRoZSBtZWRpYXRlZCBkZXZpY2VzIG5lZWRlZCB0byBjb25maWd1cmUgdGhlIEFQIG1hdHJpeGVzIGZvciB0aGVcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0Ojc3MTogICB0aHJlZSBndWVzdHMgYW5kIHRvIHByb3ZpZGUgYW4gaW50ZXJmYWNlIHRvIHRoZSB2ZmlvX2FwIGRyaXZlciBmb3JcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTc3Mi0gICB1c2UgYnkgdGhlIGd1ZXN0czo6XG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03NzMtXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo3NzQ6ICAgICAvc3lzL2RldmljZXMvdmZpb19hcC9tYXRyaXgvXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03NzUtICAgICAtLS0gW21kZXZfc3VwcG9ydGVkX3R5cGVzXVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6Nzc2OiAgICAgLS0tLS0tIFt2ZmlvX2FwLXBhc3N0aHJvdWdoXSAocGFzc3Rocm91Z2ggdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UgdHlwZSlcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTc3Ny0gICAgIC0tLS0tLS0tLSBjcmVhdGVcbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03OTUtXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo3OTY6ICAgICAvc3lzL2RldmljZXMvdmZpb19hcC9tYXRyaXgvXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03OTctICAgICAtLS0gW21kZXZfc3VwcG9ydGVkX3R5cGVzXVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6Nzk4OiAgICAgLS0tLS0tIFt2ZmlvX2FwLXBhc3N0aHJvdWdoXVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNzk5LSAgICAgLS0tLS0tLS0tIFtkZXZpY2VzXVxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTgyNi1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjgyNzogICBOb3RlICoqKioqOiBUaGUgdmZpb19hcCBtZGV2cyBkbyBub3QgcGVyc2lzdCBhY3Jvc3MgcmVib290cyB1bmxlc3MgdGhlXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC04MjgtICAgICAgICAgICAgICAgbWRldmN0bCB0b29sIGlzIHVzZWQgdG8gY3JlYXRlIGFuZCBwZXJzaXN0IHRoZW0uXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtODc5LVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6ODgwOiAgICAgLSBNdXN0IG9ubHkgYmUgYXZhaWxhYmxlIHRvIHRoZSB2ZmlvX2FwIGRldmljZSBkcml2ZXIgYXMgc3BlY2lmaWVkIGluIHRoZVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtODgxLSAgICAgICBzeXNmcyAvc3lzL2J1cy9hcC9hcG1hc2sgYW5kIC9zeXMvYnVzL2FwL2FxbWFzayBhdHRyaWJ1dGUgZmlsZXMuIElmIGV2ZW5cbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC04ODQtXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo4ODU6ICAgICAtIE11c3QgTk9UIGJlIGFzc2lnbmVkIHRvIGFub3RoZXIgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UuIElmIGV2ZW4gb25lIEFQUU5cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0Ojg4NjogICAgICAgaXMgYXNzaWduZWQgdG8gYW5vdGhlciB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSwgdGhlIG9wZXJhdGlvbiB3aWxsXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC04ODctICAgICAgIHRlcm1pbmF0ZSB3aXRoIGFuIGVycm9yIChFQlVTWSkuXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTA1LVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6OTA2OiAgICAgLSBNdXN0IG9ubHkgYmUgYXZhaWxhYmxlIHRvIHRoZSB2ZmlvX2FwIGRldmljZSBkcml2ZXIgYXMgc3BlY2lmaWVkIGluIHRoZVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTA3LSAgICAgICBzeXNmcyAvc3lzL2J1cy9hcC9hcG1hc2sgYW5kIC9zeXMvYnVzL2FwL2FxbWFzayBhdHRyaWJ1dGUgZmlsZXMuIElmIGV2ZW5cbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC05MTAtXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5MTE6ICAgICAtIE11c3QgTk9UIGJlIGFzc2lnbmVkIHRvIGFub3RoZXIgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UuIElmIGV2ZW4gb25lIEFQUU5cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjkxMjogICAgICAgaXMgYXNzaWduZWQgdG8gYW5vdGhlciB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSwgdGhlIG9wZXJhdGlvbiB3aWxsXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC05MTMtICAgICAgIHRlcm1pbmF0ZSB3aXRoIGFuIGVycm9yIChFQlVTWSkuXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTI4LSAgICAgL3Vzci9iaW4vcWVtdS1zeXN0ZW0tczM5MHggLi4uIC1jcHUgaG9zdCxhcD1vbixhcHFjaT1vbixhcGZ0PW9uLGFwcWk9b24gXFxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjkyOTpcdC1kZXZpY2UgdmZpby1hcCxzeXNmc2Rldj0vc3lzL2RldmljZXMvdmZpb19hcC9tYXRyaXgvJHV1aWQxIC4uLlxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTMwLVxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTkzMy0gICAgIC91c3IvYmluL3FlbXUtc3lzdGVtLXMzOTB4IC4uLiAtY3B1IGhvc3QsYXA9b24sYXBxY2k9b24sYXBmdD1vbixhcHFpPW9uIFxcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5MzQ6XHQtZGV2aWNlIHZmaW8tYXAsc3lzZnNkZXY9L3N5cy9kZXZpY2VzL3ZmaW9fYXAvbWF0cml4LyR1dWlkMiAuLi5cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTkzNS1cbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC05MzgtICAgICAvdXNyL2Jpbi9xZW11LXN5c3RlbS1zMzkweCAuLi4gLWNwdSBob3N0LGFwPW9uLGFwcWNpPW9uLGFwZnQ9b24sYXBxaT1vbiBcXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6OTM5Olx0LWRldmljZSB2ZmlvLWFwLHN5c2ZzZGV2PS9zeXMvZGV2aWNlcy92ZmlvX2FwL21hdHJpeC8kdXVpZDMgLi4uXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC05NDAtXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5NDE6V2hlbiB0aGUgZ3Vlc3QgaXMgc2h1dCBkb3duLCB0aGUgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2VzIG1heSBiZSByZW1vdmVkLlxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTQyLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6OTQzOlVzaW5nIG91ciBleGFtcGxlIGFnYWluLCB0byByZW1vdmUgdGhlIHZmaW9fYXAgbWVkaWF0ZWQgZGV2aWNlICR1dWlkMTo6XG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC05NDQtXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5NDU6ICAgL3N5cy9kZXZpY2VzL3ZmaW9fYXAvbWF0cml4L1xuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTQ2LSAgICAgIC0tLSBbbWRldl9zdXBwb3J0ZWRfdHlwZXNdXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5NDc6ICAgICAgLS0tLS0tIFt2ZmlvX2FwLXBhc3N0aHJvdWdoXVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTQ4LSAgICAgIC0tLS0tLS0tLSBbZGV2aWNlc11cbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdD05NTg9YWxsIG9mIHRoZSBzdGVwcyBzdGFydGluZyB3aXRoIHN0ZXAgMyB3aWxsIGhhdmUgdG8gYmUgcGVyZm9ybWVkIGFnYWluLiBOb3RlXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5NTk6dGhhdCB0aGUgcmVtb3ZlIHdpbGwgZmFpbCBpZiBhIGd1ZXN0IHVzaW5nIHRoZSB2ZmlvX2FwIG1kZXYgaXMgc3RpbGwgcnVubmluZy5cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTk2MC1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0Ojk2MTpJdCBpcyBub3QgbmVjZXNzYXJ5IHRvIHJlbW92ZSBhIHZmaW9fYXAgbWRldiwgYnV0IG9uZSBtYXkgd2FudCB0b1xuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTYyLXJlbW92ZSBpdCBpZiBubyBndWVzdCB3aWxsIHVzZSBpdCBkdXJpbmcgdGhlIHJlbWFpbmluZyBsaWZldGltZSBvZiB0aGUgbGludXhcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0Ojk2Mzpob3N0LiBJZiB0aGUgdmZpb19hcCBtZGV2IGlzIHJlbW92ZWQsIG9uZSBtYXkgd2FudCB0byBhbHNvIHJlY29uZmlndXJlXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC05NjQtdGhlIHBvb2wgb2YgYWRhcHRlcnMgYW5kIHF1ZXVlcyByZXNlcnZlZCBmb3IgdXNlIGJ5IHRoZSBkZWZhdWx0IGRyaXZlcnMuXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q9OTY4PUFuIGFkYXB0ZXIsIGRvbWFpbiBvciBjb250cm9sIGRvbWFpbiBtYXkgYmUgaG90IHBsdWdnZWQgaW50byBhIHJ1bm5pbmcgS1ZNXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5Njk6Z3Vlc3QgYnkgYXNzaWduaW5nIGl0IHRvIHRoZSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSBiZWluZyB1c2VkIGJ5IHRoZSBndWVzdCBpZlxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTcwLXRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OlxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTk3Ni0gIGFkYXB0ZXIgYmVpbmcgYXNzaWduZWQgYW5kIHRoZSBBUFFJcyBvZiB0aGUgZG9tYWlucyBhc3NpZ25lZCBtdXN0IHJlZmVyZW5jZSBhXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5Nzc6ICBxdWV1ZSBkZXZpY2UgYm91bmQgdG8gdGhlIHZmaW9fYXAgZGV2aWNlIGRyaXZlci5cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTk3OC1cbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC05ODAtICBjb21wcmlzZWQgb2YgdGhlIEFQUUkgb2YgdGhlIGRvbWFpbiBiZWluZyBhc3NpZ25lZCBhbmQgdGhlIEFQSURzIG9mIHRoZVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6OTgxOiAgYWRhcHRlcnMgYXNzaWduZWQgbXVzdCByZWZlcmVuY2UgYSBxdWV1ZSBkZXZpY2UgYm91bmQgdG8gdGhlIHZmaW9fYXAgZGV2aWNlXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC05ODItICBkcml2ZXIuXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q9OTg0PUFuIGFkYXB0ZXIsIGRvbWFpbiBvciBjb250cm9sIGRvbWFpbiBtYXkgYmUgaG90IHVucGx1Z2dlZCBmcm9tIGEgcnVubmluZyBLVk1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0Ojk4NTpndWVzdCBieSB1bmFzc2lnbmluZyBpdCBmcm9tIHRoZSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSBiZWluZyB1c2VkIGJ5IHRoZVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTg2LWd1ZXN0LlxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0PTk5MD1PdmVyLXByb3Zpc2lvbmluZyBpcyBkZWZpbmVkIGhlcmVpbiBhcyB0aGUgYXNzaWdubWVudCBvZiBhZGFwdGVycyBvciBkb21haW5zIHRvXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5OTE6YSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSB0aGF0IGRvIG5vdCByZWZlcmVuY2UgQVAgZGV2aWNlcyBpbiB0aGUgaG9zdCYjMzk7cyBBUFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTkyLWNvbmZpZ3VyYXRpb24uIFRoZSBpZGVhIGhlcmUgaXMgdGhhdCB3aGVuIHRoZSBhZGFwdGVyIG9yIGRvbWFpbiBiZWNvbWVzXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdD05OTM9YXZhaWxhYmxlLCBpdCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgaG90LXBsdWdnZWQgaW50byB0aGUgS1ZNIGd1ZXN0IHVzaW5nXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5OTQ6dGhlIHZmaW9fYXAgbWVkaWF0ZWQgZGV2aWNlIHRvIHdoaWNoIGl0IGlzIGFzc2lnbmVkIGFzIGxvbmcgYXMgZWFjaCBuZXcgQVBRTlxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6OTk1OnJlc3VsdGluZyBmcm9tIHBsdWdnaW5nIGl0IGluIHJlZmVyZW5jZXMgYSBxdWV1ZSBkZXZpY2UgYm91bmQgdG8gdGhlIHZmaW9fYXBcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTk5Ni1kZXZpY2UgZHJpdmVyLlxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0PTk5OD1Ecml2ZXIgRmVhdHVyZXNcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTk5OS09PT09PT09PT09PT09PT1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjEwMDA6VGhlIHZmaW9fYXAgZHJpdmVyIGV4cG9zZXMgYSBzeXNmcyBmaWxlIGNvbnRhaW5pbmcgc3VwcG9ydGVkIGZlYXR1cmVzLlxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMTAwMS1UaGlzIGV4aXN0cyBzbyB0aGlyZCBwYXJ0eSB0b29scyAobGlrZSBMaWJ2aXJ0IGFuZCBtZGV2Y3RsKSBjYW4gcXVlcnkgdGhlXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q9MTAzMT1pbnRlcnZlbnRpb24gYnkgYSBzeXN0ZW0gYWRtaW5pc3RyYXRvci4gQmVmb3JlIGEgS1ZNIGd1ZXN0IGNhbiBiZSBtaWdyYXRlZCxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjEwMzI6dGhlIHZmaW9fYXAgbWVkaWF0ZWQgZGV2aWNlIG11c3QgYmUgcmVtb3ZlZC4gVW5mb3J0dW5hdGVseSwgaXQgY2FuIG5vdCBiZVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MTAzMzpyZW1vdmVkIG1hbnVhbGx5IChpLmUuLCBlY2hvIDEgXHUwMDNlIC9zeXMvZGV2aWNlcy92ZmlvX2FwL21hdHJpeC8kVVVJRC9yZW1vdmUpIHdoaWxlXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0xMDM0LXRoZSBtZGV2IGlzIGluIHVzZSBieSBhIEtWTSBndWVzdC4gSWYgdGhlIGd1ZXN0IGlzIGJlaW5nIGVtdWxhdGVkIGJ5IFFFTVUsXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdD0xMDM1PWl0cyBtZGV2IGNhbiBiZSBob3QgdW5wbHVnZ2VkIGZyb20gdGhlIGd1ZXN0IGluIG9uZSBvZiB0d28gd2F5czpcbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0xMDU5LVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MTA2MDogICAgICBGb3IgZXhhbXBsZSwgdG8gaG90IHVucGx1ZyB0aGUgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UgaWRlbnRpZmllZCBvbiB0aGVcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTEwNjEtICAgICAgcWVtdSBjb21tYW5kIGxpbmUgd2l0aCAmIzM5O2lkPWhvc3RkZXYwJiMzOTsgZnJvbSB0aGUgZ3Vlc3QgbmFtZWQgJiMzOTtteS1ndWVzdCYjMzk7OlxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTEwNjYtXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoxMDY3OjIuIEEgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UgY2FuIGJlIGhvdCB1bnBsdWdnZWQgYnkgYXR0YWNoaW5nIHRoZSBxZW11IG1vbml0b3JcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTEwNjgtICAgdG8gdGhlIGd1ZXN0IGFuZCB1c2luZyB0aGUgZm9sbG93aW5nIHFlbXUgbW9uaXRvciBjb21tYW5kOlxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTEwNzEtXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoxMDcyOiAgICAgIEZvciBleGFtcGxlLCB0byBob3QgdW5wbHVnIHRoZSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSB0aGF0IHdhcyBzcGVjaWZpZWRcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTEwNzMtICAgICAgb24gdGhlIHFlbXUgY29tbWFuZCBsaW5lIHdpdGggJiMzOTtpZD1ob3N0ZGV2MCYjMzk7IHdoZW4gdGhlIGd1ZXN0IHdhcyBzdGFydGVkOlxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0PTEwNzc9QWZ0ZXIgbGl2ZSBtaWdyYXRpb24gb2YgdGhlIEtWTSBndWVzdCBjb21wbGV0ZXMsIGFuIEFQIGNvbmZpZ3VyYXRpb24gY2FuIGJlXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoxMDc4OnJlc3RvcmVkIHRvIHRoZSBLVk0gZ3Vlc3QgYnkgaG90IHBsdWdnaW5nIGEgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2Ugb24gdGhlIHRhcmdldFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMTA3OS1zeXN0ZW0gaW50byB0aGUgZ3Vlc3QgaW4gb25lIG9mIHR3byB3YXlzOlxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTExMDQtXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoxMTA1OiAgICAgIEZvciBleGFtcGxlLCB0byBob3QgcGx1ZyB0aGUgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2VcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTExMDYtICAgICAgNjIxNzc4ODMtZjFiYi00N2YwLTkxNGQtMzJhMjJlM2E4ODA0IGludG8gdGhlIGd1ZXN0IG5hbWVkICYjMzk7bXktZ3Vlc3QmIzM5OyB3aXRoXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMTExMC0gICAgICBcJiMzNDtkZXZpY2VfYWRkIHZmaW8tYXAsXFxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjExMTE6ICAgICAgc3lzZnNkZXY9L3N5cy9kZXZpY2VzL3ZmaW9fYXAvbWF0cml4LzYyMTc3ODgzLWYxYmItNDdmMC05MTRkLTMyYTIyZTNhODgwNCxcXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMTExMi0gICAgICBpZD1ob3N0ZGV2MFwmIzM0O1xuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMTExMy1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjExMTQ6Mi4gQSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSBjYW4gYmUgaG90IHBsdWdnZWQgYnkgYXR0YWNoaW5nIHRoZSBxZW11IG1vbml0b3JcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTExMTUtICAgdG8gdGhlIGd1ZXN0IGFuZCB1c2luZyB0aGUgZm9sbG93aW5nIHFlbXUgbW9uaXRvciBjb21tYW5kOlxuLS1cbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTExMTgtXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoxMTE5OiAgICAgIEZvciBleGFtcGxlLCB0byBwbHVnIHRoZSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMTEyMC0gICAgICA2MjE3Nzg4My1mMWJiLTQ3ZjAtOTE0ZC0zMmEyMmUzYTg4MDQgaW50byB0aGUgZ3Vlc3Qgd2l0aCB0aGUgZGV2aWNlLWlkXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMTEyMy0gICAgICAgICAoUUVNVSkgZGV2aWNlLWFkZCBcJiMzNDt2ZmlvLWFwLFxcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoxMTI0OiAgICAgICAgIHN5c2ZzZGV2PS9zeXMvZGV2aWNlcy92ZmlvX2FwL21hdHJpeC82MjE3Nzg4My1mMWJiLTQ3ZjAtOTE0ZC0zMmEyMmUzYTg4MDQsXFxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTExMjUtICAgICAgICAgaWQ9aG9zdGRldjBcJiMzNDtcbi0tXG5NQUlOVEFJTkVSUz0yMzYwMz1GOlx0RG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcCpcbk1BSU5UQUlORVJTOjIzNjA0OkY6XHRkcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXAqXG5NQUlOVEFJTkVSUy0yMzYwNS1cbi0tXG5hcmNoL3MzOTAvS2NvbmZpZz04MzQ9Y29uZmlnIFZGSU9fQVBcbi0tXG5hcmNoL3MzOTAvS2NvbmZpZy04NDUtXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbmFyY2gvczM5MC9LY29uZmlnOjg0NjpcdCAgd2lsbCBiZSBjYWxsZWQgdmZpb19hcC5cbmFyY2gvczM5MC9LY29uZmlnLTg0Ny1cbi0tXG5hcmNoL3MzOTAva3ZtL3ByaXYuYz01NzA9Ym9vbCBrdm1fczM5MF9pc19ncGFfaW5fbWVtc2xvdChzdHJ1Y3Qga3ZtICprdm0sIGdwYV90IGdwYSlcbi0tXG5hcmNoL3MzOTAva3ZtL3ByaXYuYy01NzMtfVxuYXJjaC9zMzkwL2t2bS9wcml2LmM6NTc0OkVYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVMoa3ZtX3MzOTBfaXNfZ3BhX2luX21lbXNsb3QsIFwmIzM0O3ZmaW9fYXBcJiMzNDspO1xuYXJjaC9zMzkwL2t2bS9wcml2LmMtNTc1LSNlbmRpZlxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vTWFrZWZpbGU9MzQ9b2JqLSQoQ09ORklHX1BLRVlfVVYpICYjNDM7PSBwa2V5LXV2Lm9cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL01ha2VmaWxlLTM2LSMgYWRqdW5jdCBwcm9jZXNzb3IgbWF0cml4XG5kcml2ZXJzL3MzOTAvY3J5cHRvL01ha2VmaWxlOjM3OnZmaW9fYXAtb2JqcyA6PSB2ZmlvX2FwX2Rydi5vIHZmaW9fYXBfb3BzLm9cbmRyaXZlcnMvczM5MC9jcnlwdG8vTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX1ZGSU9fQVApICYjNDM7PSB2ZmlvX2FwLm9cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZGVidWcuaC0xOS0jZGVmaW5lIFZGSU9fQVBfREJGKC4uLilcdFx0XHRcdFx0XFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kZWJ1Zy5oOjIwOlx0ZGVidWdfc3ByaW50Zl9ldmVudCh2ZmlvX2FwX2RiZl9pbmZvLCAjI19fVkFfQVJHU19fKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2RlYnVnLmgtMjEtI2RlZmluZSBWRklPX0FQX0RCRl9FUlIoLi4uKVx0XHRcdFx0XHRcXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2RlYnVnLmg6MjI6XHRkZWJ1Z19zcHJpbnRmX2V2ZW50KHZmaW9fYXBfZGJmX2luZm8sIERCRl9FUlIsICMjX19WQV9BUkdTX18pXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZGVidWcuaC0yMy0jZGVmaW5lIFZGSU9fQVBfREJGX1dBUk4oLi4uKVx0XHRcdFx0XHRcXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2RlYnVnLmg6MjQ6XHRkZWJ1Z19zcHJpbnRmX2V2ZW50KHZmaW9fYXBfZGJmX2luZm8sIERCRl9XQVJOLCAjI19fVkFfQVJHU19fKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2RlYnVnLmgtMjUtI2RlZmluZSBWRklPX0FQX0RCRl9JTkZPKC4uLilcdFx0XHRcdFx0XFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kZWJ1Zy5oOjI2Olx0ZGVidWdfc3ByaW50Zl9ldmVudCh2ZmlvX2FwX2RiZl9pbmZvLCBEQkZfSU5GTywgIyNfX1ZBX0FSR1NfXylcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kZWJ1Zy5oLTI3LSNkZWZpbmUgVkZJT19BUF9EQkZfREJHKC4uLilcdFx0XHRcdFx0XFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kZWJ1Zy5oOjI4Olx0ZGVidWdfc3ByaW50Zl9ldmVudCh2ZmlvX2FwX2RiZl9pbmZvLCBEQkZfREVCVUcsICMjX19WQV9BUkdTX18pXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZGVidWcuaC0yOS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kZWJ1Zy5oOjMwOmV4dGVybiBkZWJ1Z19pbmZvX3QgKnZmaW9fYXBfZGJmX2luZm87XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZGVidWcuaC0zMS1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTUtI2luY2x1ZGUgXHUwMDNjYXNtL2ZhY2lsaXR5LmhcdTAwM2VcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxNjojaW5jbHVkZSBcJiMzNDt2ZmlvX2FwX3ByaXZhdGUuaFwmIzM0O1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjE3OiNpbmNsdWRlIFwmIzM0O3ZmaW9fYXBfZGVidWcuaFwmIzM0O1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE4LVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjE5OiNkZWZpbmUgVkZJT19BUF9ST09UX05BTUUgXCYjMzQ7dmZpb19hcFwmIzM0O1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTIwLSNkZWZpbmUgVkZJT19BUF9ERVZfTkFNRSBcJiMzNDttYXRyaXhcJiMzNDtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM9MjY9c3RydWN0IGFwX21hdHJpeF9kZXYgKm1hdHJpeF9kZXY7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6Mjc6ZGVidWdfaW5mb190ICp2ZmlvX2FwX2RiZl9pbmZvO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTI4LVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYz00ND1zdGF0aWMgc3RydWN0IGFwX2RldmljZV9pZCBhcF9xdWV1ZV9pZHNbXSA9IHtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtNTctXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6NTg6c3RhdGljIHN0cnVjdCBhcF9kcml2ZXIgdmZpb19hcF9kcnYgPSB7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6NTk6XHQucHJvYmUgPSB2ZmlvX2FwX21kZXZfcHJvYmVfcXVldWUsXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6NjA6XHQucmVtb3ZlID0gdmZpb19hcF9tZGV2X3JlbW92ZV9xdWV1ZSxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzo2MTpcdC5pbl91c2UgPSB2ZmlvX2FwX21kZXZfcmVzb3VyY2VfaW5fdXNlLFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjYyOlx0Lm9uX2NvbmZpZ19jaGFuZ2VkID0gdmZpb19hcF9vbl9jZmdfY2hhbmdlZCxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzo2MzpcdC5vbl9zY2FuX2NvbXBsZXRlID0gdmZpb19hcF9vbl9zY2FuX2NvbXBsZXRlLFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTY0LVx0LmlkcyA9IGFwX3F1ZXVlX2lkcyxcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtNjYtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6Njc6c3RhdGljIHZvaWQgdmZpb19hcF9tYXRyaXhfZGV2X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTY4LXtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM9Nzk9c3RhdGljIHN0cnVjdCBkZXZpY2VfZHJpdmVyIG1hdHJpeF9kcml2ZXIgPSB7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6ODA6XHQubmFtZSA9IFwmIzM0O3ZmaW9fYXBcJiMzNDssXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtODEtXHQuYnVzID0gXHUwMDI2bWF0cml4X2J1cyxcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtODUtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6ODY6c3RhdGljIGludCB2ZmlvX2FwX21hdHJpeF9kZXZfY3JlYXRlKHZvaWQpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtODcte1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xMTgtXHRtYXRyaXhfZGV2LVx1MDAzZWRldmljZS5idXMgPSBcdTAwMjZtYXRyaXhfYnVzO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjExOTpcdG1hdHJpeF9kZXYtXHUwMDNlZGV2aWNlLnJlbGVhc2UgPSB2ZmlvX2FwX21hdHJpeF9kZXZfcmVsZWFzZTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxMjA6XHRtYXRyaXhfZGV2LVx1MDAzZXZmaW9fYXBfZHJ2ID0gXHUwMDI2dmZpb19hcF9kcnY7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTIxLVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xNDItXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTQzOnN0YXRpYyB2b2lkIHZmaW9fYXBfbWF0cml4X2Rldl9kZXN0cm95KHZvaWQpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTQ0LXtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTUyLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjE1MzpzdGF0aWMgaW50IF9faW5pdCB2ZmlvX2FwX2RiZl9pbmZvX2luaXQodm9pZClcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xNTQte1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjE1NTpcdHZmaW9fYXBfZGJmX2luZm8gPSBkZWJ1Z19yZWdpc3RlcihcJiMzNDt2ZmlvX2FwXCYjMzQ7LCAxLCAxLFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE1Ni1cdFx0XHRcdFx0ICBEQkZfTUFYX1NQUklOVEZfQVJHUyAqIHNpemVvZihsb25nKSk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTU3LVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjE1ODpcdGlmICghdmZpb19hcF9kYmZfaW5mbylcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xNTktXHRcdHJldHVybiAtRU5PRU5UO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE2MC1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxNjE6XHRkZWJ1Z19yZWdpc3Rlcl92aWV3KHZmaW9fYXBfZGJmX2luZm8sIFx1MDAyNmRlYnVnX3NwcmludGZfdmlldyk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTYyOlx0ZGVidWdfc2V0X2xldmVsKHZmaW9fYXBfZGJmX2luZm8sIERCRl9XQVJOKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xNjMtXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE2Ni1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxNjc6c3RhdGljIGludCBfX2luaXQgdmZpb19hcF9pbml0KHZvaWQpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTY4LXtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTcwLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjE3MTpcdHJldCA9IHZmaW9fYXBfZGJmX2luZm9faW5pdCgpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE3Mi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE3OC1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxNzk6XHRyZXQgPSB2ZmlvX2FwX21hdHJpeF9kZXZfY3JlYXRlKCk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTgwLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTgyLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjE4MzpcdHJldCA9IGFwX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZ2ZmlvX2FwX2RydiwgVEhJU19NT0RVTEUsIFZGSU9fQVBfRFJWX05BTUUpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE4NC1cdGlmIChyZXQpIHtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxODU6XHRcdHZmaW9fYXBfbWF0cml4X2Rldl9kZXN0cm95KCk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTg2LVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xODgtXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTg5Olx0cmV0ID0gdmZpb19hcF9tZGV2X3JlZ2lzdGVyKCk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTkwLVx0aWYgKHJldCkge1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjE5MTpcdFx0YXBfZHJpdmVyX3VucmVnaXN0ZXIoXHUwMDI2dmZpb19hcF9kcnYpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjE5MjpcdFx0dmZpb19hcF9tYXRyaXhfZGV2X2Rlc3Ryb3koKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xOTMtXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE5OS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoyMDA6c3RhdGljIHZvaWQgX19leGl0IHZmaW9fYXBfZXhpdCh2b2lkKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTIwMS17XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MjAyOlx0dmZpb19hcF9tZGV2X3VucmVnaXN0ZXIoKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoyMDM6XHRhcF9kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZ2ZmlvX2FwX2Rydik7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MjA0Olx0dmZpb19hcF9tYXRyaXhfZGV2X2Rlc3Ryb3koKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoyMDU6XHRkZWJ1Z191bnJlZ2lzdGVyKHZmaW9fYXBfZGJmX2luZm8pO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTIwNi19XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMjA3LVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjIwODptb2R1bGVfaW5pdCh2ZmlvX2FwX2luaXQpO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NDQ5CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIGZvciBWRklPLUFQIEV4cGxvaXRhdGlvbiB2aWEgU3l6a2FsbGVyKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgb2JzZXJ2YXRpb24gaXMgdGhhdCB0aGUgYHZmaW9fYXBgIG1vZHVsZSBzZWVtcyB0byByZWdpc3RlciBhIG1hdHJpeCBkZXZpY2UsIGFuZCB0aGVuIGFuIG1kZXYgZHJpdmVyLiBUaGF0JiMzOTtzIHRoZSBzZXR1cC4gQW5kIFN5emthbGxlciwgd2hpY2ggSSYjMzk7bSB2ZXJ5IGZhbWlsaWFyIHdpdGgsIGNhbiBjcmVhdGUgdGhlc2UgbWRldnMsIHdoaWNoIGltbWVkaWF0ZWx5IHJhaXNlcyBhIGNyaXRpY2FsIHF1ZXN0aW9uOiBDYW4gd2UgcmVhY2ggYW5kIGV4cGxvaXQgYHZmaW9fYXBgIGZ1bmN0aW9uYWxpdHkgZXZlbiB3aXRob3V0IHRoZSBwcmVzZW5jZSBvZiBwaHlzaWNhbCBBUCBoYXJkd2FyZT8KCk15IGh5cG90aGVzaXMgcmVzdHMgb24gdGhhdCBpbml0aWFsIHF1ZXN0aW9uLiBJJiMzOTttIGdvaW5nIHRvIGRpZyBhIGxpdHRsZSBkZWVwZXIsIEkmIzM5O20gZ29pbmcgdG8gY29uc2lkZXIgdGhlIGB2ZmlvX2FwX21hdHJpeF9kZXZfY3JlYXRlYCBmdW5jdGlvbi4gSSBzZWUgdGhhdCBpdCBhcHBlYXJzIHRvIHN1Y2NlZWQgZXZlbiBpZiB0aGUgYHRlc3RfZmFjaWxpdHkoMTIpYCBjaGVjayBmYWlscy4gVGhhdCYjMzk7cyBhIGtleSBvYnNlcnZhdGlvbiwgc29tZXRoaW5nIHRoYXQgbWF5IGJlIGltcG9ydGFudC4gVGhlIGRyaXZlciB0aGVuIHJlZ2lzdGVycyBpdHNlbGYgd2hpY2ggbG9va3MgdmVyeSBpbnRlcmVzdGluZy4gU28sIGNhbiBTeXprYWxsZXIgY3JlYXRlIGEgYHZmaW9fYXBgIG1kZXYuIFRoaXMgaXMgdGhlIGNydWNpYWwgbmV4dCBzdGVwLgoKSSBrbm93IFN5emthbGxlciBoYXMgZGVzY3JpcHRpb25zIGZvciBtZGV2cyBpbiBmaWxlcyBsaWtlIGBzeXMvbGludXgvc3lzZnNfbWRldi50eHRgLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIFN5emthbGxlciBoYXMgZGVzY3JpcHRpb25zIGZvciBgdmZpb19hcGAgc3BlY2lmaWNhbGx5LCBiZWNhdXNlIGlmIGl0IGRvZXMsIGl0JiMzOTtzIHZlcnkgbGlrZWx5IHdlIGhhdmUgYSBwb3RlbnRpYWwgYXR0YWNrIHZlY3RvciB0byBpbnZlc3RpZ2F0ZS4gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQgbXkgc2VhcmNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZmaW9fYXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtzeXMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk5MzgKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAzOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFBhdGNoJiMzOTtzIFdvcnRoaW5lc3MgZm9yIEZ1enppbmcqKgoKT2theSwgc28gdGhlIHByb21wdCBqdXN0IHRocmV3IGEgY3VydmViYWxsLiBJdCYjMzk7cyByZW1pbmRpbmcgbWUgdGhhdCBJIGFic29sdXRlbHkgKmNhbm5vdCogdXNlIG15IHVzdWFsIGBncmVwcGVyYCBvbiBhbnl0aGluZyB0aGF0JiMzOTtzIGBzeXMvKmAgb3IgaGFzIGBzeXpfYCBpbiBpdCBiZWNhdXNlIHRoYXQmIzM5O3MgYWxsIFN5emthbGxlciBwc2V1ZG8tc3lzY2FsbCBzdHVmZiBhbmQgd29uJiMzOTt0IGJlIGluIHRoZSBhY3R1YWwga2VybmVsLiBGaW5lLiBNYWtlcyBzZW5zZS4gQnV0IHdhaXQgYSBzZWMuLi4gSSBkb24mIzM5O3Qgc2VlIHRoaXMgYHN5ei1ncmVwcGVyYCBpbiBteSBhdmFpbGFibGUgdG9vbHMuIEd1ZXNzIEkmIzM5O2xsIGhhdmUgdG8gdXNlIG15IGJyYWluIGluc3RlYWQhCgpMZXQmIzM5O3MgdGhpbmsuIFRoZSBwYXRjaCBtb2RpZmllcyBgdmZpb19hcF9tZGV2X3NldF9rdm1gIGFuZCBgdmZpb19hcF9tZGV2X3Vuc2V0X2t2bWAuIFRob3NlIGFyZSwgaWYgSSByZW1lbWJlciBjb3JyZWN0bHksIHJlbGF0ZWQgdG8gVkZJTyBkZXZpY2Ugc2V0dXAgYW5kIHRlYXJkb3duIOKAkyB3aGVuIGEgVkZJTyBkZXZpY2UgaXMgb3BlbmVkIG9yIGNsb3NlZC4gVGhlIHJlYWwgcXVlc3Rpb24gaXMsIGNhbiBTeXprYWxsZXIgKmFjdHVhbGx5KiBjcmVhdGUgYW5kIGludGVyYWN0IHdpdGggYSBWRklPIEFQIGRldmljZSBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQ/CgpJZiBTeXprYWxsZXIgY2FuIGdlbmVyYXRlIHRoZSBjb2RlIHRvIGNyZWF0ZSBhbiBtZGV2LCBpdCBjYW4gb3BlbiBpdCBhcyB3ZWxsLiBUaGF0IGRlcGVuZHMgb24gd2hldGhlciB0aGUgYHZmaW9fYXBgIGRyaXZlciBpcyBlbmFibGVkIGluIHR5cGljYWwgY29uZmlndXJhdGlvbnMuCgpOb3csIHRoZSBwcm9tcHQgYnJpbmdzIHVwIHRoZSAmIzM0O1dvcnRoRnV6emluZz1mYWxzZSYjMzQ7IHNjZW5hcmlvOiB1bnJlYWNoYWJsZSBjb2RlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSXQgZXhwbGljaXRseSBtZW50aW9ucyB0aGluZ3MgbGlrZSBVU0IgZ2FkZ2V0LCBNQUM4MDIxMSBIV3NpbSwgb3IgKnZlbmRvci1zcGVjaWZpYyogaGFyZHdhcmUgbGlrZSBQQ0llIHN3aXRjaGVzIG9yIEdQVXMgdGhhdCBuZWVkIGEgKnBoeXNpY2FsKiBjYXJkLCB3aGljaCBpc24mIzM5O3QgZW11bGF0ZWQgYnkgUUVNVS4gVGhhdCYjMzk7cyB0aGUga2V5LgoKVkZJTyBBUCBpcyBmb3IgcGFzc2luZyB0aHJvdWdoICpwaHlzaWNhbCogQVAgY2FyZHMsIGlzbiYjMzk7dCBpdD8gRG9lcyBpdCBuZWVkIHBoeXNpY2FsIGhhcmR3YXJlIHRvIGJlIHByZXNlbnQgdG8gZXZlbiBjcmVhdGUgYW4gbWRldj8gSSBzaG91bGQgY2hlY2sgYHZmaW9fYXBfbWRldl9wcm9iZWAgYW5kIGB2ZmlvX2FwX21kZXZfaW5pdF9kZXZgLiBUaGF0IHdpbGwgZ2l2ZSBtZSB0aGUgYW5zd2VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2ZmlvX2FwX21kZXZfcHJvYmUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jPTU4PXN0YXRpYyBzdHJ1Y3QgYXBfZHJpdmVyIHZmaW9fYXBfZHJ2ID0ge1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjU5Olx0LnByb2JlID0gdmZpb19hcF9tZGV2X3Byb2JlX3F1ZXVlLFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTYwLVx0LnJlbW92ZSA9IHZmaW9fYXBfbWRldl9yZW1vdmVfcXVldWUsXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTc4Mz1zdGF0aWMgaW50IHZmaW9fYXBfbWRldl9pbml0X2RldihzdHJ1Y3QgdmZpb19kZXZpY2UgKnZkZXYpXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTc5Ni1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo3OTc6c3RhdGljIGludCB2ZmlvX2FwX21kZXZfcHJvYmUoc3RydWN0IG1kZXZfZGV2aWNlICptZGV2KVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTc5OC17XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTIzNjk9c3RhdGljIHN0cnVjdCBtZGV2X2RyaXZlciB2ZmlvX2FwX21hdHJpeF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIzNzctXHR9LFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIzNzg6XHQucHJvYmUgPSB2ZmlvX2FwX21kZXZfcHJvYmUsXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjM3OS1cdC5yZW1vdmUgPSB2ZmlvX2FwX21kZXZfcmVtb3ZlLFxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yNDA1PXZvaWQgdmZpb19hcF9tZGV2X3VucmVnaXN0ZXIodm9pZClcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjQxMC1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNDExOmludCB2ZmlvX2FwX21kZXZfcHJvYmVfcXVldWUoc3RydWN0IGFwX2RldmljZSAqYXBkZXYpXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjQxMi17XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaD0xNTY9dm9pZCB2ZmlvX2FwX21kZXZfdW5yZWdpc3Rlcih2b2lkKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmgtMTU3LVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaDoxNTg6aW50IHZmaW9fYXBfbWRldl9wcm9iZV9xdWV1ZShzdHJ1Y3QgYXBfZGV2aWNlICpxdWV1ZSk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oLTE1OS12b2lkIHZmaW9fYXBfbWRldl9yZW1vdmVfcXVldWUoc3RydWN0IGFwX2RldmljZSAqcXVldWUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTQ1MAoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIEkgdW5kZXJzdGFuZCB0aGUgc2l0dWF0aW9uOgoKKipQcm9iaW5nIHRoZSBDcnlwdG8gSGFyZHdhcmUgd2l0aCBWRklPLUFQKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoZSBWRklPLUFQIGltcGxlbWVudGF0aW9uIGZvciBjcnlwdG8gaGFyZHdhcmUgb24gczM5MCBzeXN0ZW1zLiBUaGUga2V5IGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gZGlzY292ZXJzIGFuZCBpbml0aWFsaXplcyB0aGUgZGV2aWNlcy4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHRoZSBgdmZpb19hcF9tZGV2X3Byb2JlYCBmdW5jdGlvbi4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQsIHRoZSBmaXJzdCBwbGFjZSB0aGUgZHJpdmVyIGdldHMgYSBzaG90IGF0IGEgbmV3IG1kZXYsIHNvIGl0JiMzOTtzIGNyaXRpY2FsIHRvIHNlZSB3aGF0IGl0JiMzOTtzIGRvaW5nLiBJJiMzOTttIGFsc28gZ29pbmcgdG8gdHJhY2sgaG93IGB2ZmlvX2FwX21kZXZfaW5pdF9kZXZgIGZpdHMgaW4gYXMgaXQgaXMgdGhlIGZvbGxvdy11cCBzdGVwLiBJ4oCZbSB0aGlua2luZyB0aGV5JiMzOTtyZSBwcm9iYWJseSBib3RoIGRlZmluZWQgaW4gYGRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIGNvbm5lY3RlZCBhbmQgdGhlIGxvZ2ljIGZsb3cuIFRoaXMgc2VlbXMgdG8gYmUgdGhlIGNvcmUgb2YgaG93IHRoZSBWRklPIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBBUCBoYXJkd2FyZSBhbmQgaG93IGl0IGhhbmRsZXMgdGhlIG1lZGlhdGVkIGRldmljZSwgYXMgd2VsbCBhcyBob3cgdGhlIGhhcmR3YXJlIGlzIGRldGVjdGVkLiBUaGlzIGlzIGEgY3J1Y2lhbCBhcmVhIHRvIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlIGFuZCBob3cgdGhlIHN5c3RlbSB2aXJ0dWFsaXplcyB0aGUgY3J5cHRvIGhhcmR3YXJlIHRvIHRoZSB1c2VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDc4MywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzgzOlx0c3RhdGljIGludCB2ZmlvX2FwX21kZXZfaW5pdF9kZXYoc3RydWN0IHZmaW9fZGV2aWNlICp2ZGV2KVxuIDc4NDpcdHtcbiA3ODU6XHRcdHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXYgPVxuIDc4NjpcdFx0XHRjb250YWluZXJfb2YodmRldiwgc3RydWN0IGFwX21hdHJpeF9tZGV2LCB2ZGV2KTtcbiA3ODc6XHRcbiA3ODg6XHRcdG1hdHJpeF9tZGV2LVx1MDAzZW1kZXYgPSB0b19tZGV2X2RldmljZSh2ZGV2LVx1MDAzZWRldik7XG4gNzg5Olx0XHR2ZmlvX2FwX21hdHJpeF9pbml0KFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlaW5mbywgXHUwMDI2bWF0cml4X21kZXYtXHUwMDNlbWF0cml4KTtcbiA3OTA6XHRcdG1hdHJpeF9tZGV2LVx1MDAzZXBxYXBfaG9vayA9IGhhbmRsZV9wcWFwO1xuIDc5MTpcdFx0dmZpb19hcF9tYXRyaXhfaW5pdChcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZWluZm8sIFx1MDAyNm1hdHJpeF9tZGV2LVx1MDAzZXNoYWRvd19hcGNiKTtcbiA3OTI6XHRcdGhhc2hfaW5pdChtYXRyaXhfbWRldi1cdTAwM2VxdGFibGUucXVldWVzKTtcbiA3OTM6XHRcbiA3OTQ6XHRcdHJldHVybiAwO1xuIDc5NTpcdH1cbiA3OTY6XHRcbiA3OTc6XHRzdGF0aWMgaW50IHZmaW9fYXBfbWRldl9wcm9iZShzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXYpXG4gNzk4Olx0e1xuIDc5OTpcdFx0c3RydWN0IGFwX21hdHJpeF9tZGV2ICptYXRyaXhfbWRldjtcbiA4MDA6XHRcdGludCByZXQ7XG4gODAxOlx0XG4gODAyOlx0XHRtYXRyaXhfbWRldiA9IHZmaW9fYWxsb2NfZGV2aWNlKGFwX21hdHJpeF9tZGV2LCB2ZGV2LCBcdTAwMjZtZGV2LVx1MDAzZWRldixcbiA4MDM6XHRcdFx0XHRcdFx0XHUwMDI2dmZpb19hcF9tYXRyaXhfZGV2X29wcyk7XG4gODA0Olx0XHRpZiAoSVNfRVJSKG1hdHJpeF9tZGV2KSlcbiA4MDU6XHRcdFx0cmV0dXJuIFBUUl9FUlIobWF0cml4X21kZXYpO1xuIDgwNjpcdFxuIDgwNzpcdFx0cmV0ID0gdmZpb19yZWdpc3Rlcl9lbXVsYXRlZF9pb21tdV9kZXYoXHUwMDI2bWF0cml4X21kZXYtXHUwMDNldmRldik7XG4gODA4Olx0XHRpZiAocmV0KVxuIDgwOTpcdFx0XHRnb3RvIGVycl9wdXRfdmRldjtcbiA4MTA6XHRcdG1hdHJpeF9tZGV2LVx1MDAzZXJlcV90cmlnZ2VyID0gTlVMTDtcbiA4MTE6XHRcdG1hdHJpeF9tZGV2LVx1MDAzZWNmZ19jaGdfdHJpZ2dlciA9IE5VTEw7XG4gODEyOlx0XHRkZXZfc2V0X2RydmRhdGEoXHUwMDI2bWRldi1cdTAwM2VkZXYsIG1hdHJpeF9tZGV2KTtcbiA4MTM6XHRcdG11dGV4X2xvY2soXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VtZGV2c19sb2NrKTtcbiA4MTQ6XHRcdGxpc3RfYWRkKFx1MDAyNm1hdHJpeF9tZGV2LVx1MDAzZW5vZGUsIFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlbWRldl9saXN0KTtcbiA4MTU6XHRcdG11dGV4X3VubG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2spO1xuIDgxNjpcdFx0cmV0dXJuIDA7XG4gODE3Olx0XG4gODE4Olx0ZXJyX3B1dF92ZGV2OlxuIDgxOTpcdFx0dmZpb19wdXRfZGV2aWNlKFx1MDAyNm1hdHJpeF9tZGV2LVx1MDAzZXZkZXYpO1xuIDgyMDpcdFx0cmV0dXJuIHJldDtcbiA4MjE6XHR9XG4gODIyOlx0XG4gODIzOlx0c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X2xpbmtfcXVldWUoc3RydWN0IGFwX21hdHJpeF9tZGV2ICptYXRyaXhfbWRldixcbiA4MjQ6XHRcdFx0XHRcdCAgICBzdHJ1Y3QgdmZpb19hcF9xdWV1ZSAqcSlcbiA4MjU6XHR7XG4gODI2Olx0XHRpZiAoIXEgfHwgdmZpb19hcF9tZGV2X2dldF9xdWV1ZShtYXRyaXhfbWRldiwgcS1cdTAwM2VhcHFuKSlcbiA4Mjc6XHRcdFx0cmV0dXJuO1xuIDgyODpcdFxuIDgyOTpcdFx0cS1cdTAwM2VtYXRyaXhfbWRldiA9IG1hdHJpeF9tZGV2O1xuIDgzMDpcdFx0aGFzaF9hZGQobWF0cml4X21kZXYtXHUwMDNlcXRhYmxlLnF1ZXVlcywgXHUwMDI2cS1cdTAwM2VtZGV2X3Fub2RlLCBxLVx1MDAzZWFwcW4pO1xuIDgzMTpcdH1cbiA4MzI6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI3MDUKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqVW5kZXJzdGFuZGluZyBtZGV2IENyZWF0aW9uIGFuZCBWRklPIEludGVyYWN0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIGhvdyB0aGlzIG1kZXYgKG1lZGlhdGVkIGRldmljZSkgaXMgYmVpbmcgY3JlYXRlZC4gSXQmIzM5O3MgYmVjb21pbmcgY2xlYXIgdGhhdCB0aGUgcHJvY2VzcyAqZG9lc24mIzM5O3QqIG5lY2Vzc2FyaWx5IGRlcGVuZCBvbiBoYXZpbmcgYW55IHByZS1leGlzdGluZyBwaHlzaWNhbCBBUCAoQWNjZWxlcmF0ZWQgUHJvY2Vzc2luZykgcXVldWVzLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLiBUaGUga2V5IGhlcmUgc2VlbXMgdG8gYmUgdGhlIGFsbG9jYXRpb24gb2YgdGhpcyBgYXBfbWF0cml4X21kZXZgIHN0cnVjdHVyZSBhbmQgaXRzIHN1YnNlcXVlbnQgcmVnaXN0cmF0aW9uLiBUaGF0JiMzOTtzIHRoZSBjb3JlIG9mIHRoZSBtZGV2IGl0c2VsZi4KClRoZSByZWFsIG1hZ2ljLCB0aGUgcGFydCB3aGVyZSB0aGUgdmlydHVhbCBkZXZpY2UgYWN0dWFsbHkgaG9va3MgaW50byBLVk0sIHNlZW1zIHRvIGhhcHBlbiBsYXRlciwgc3BlY2lmaWNhbGx5IHdoZW4gYHZmaW9fYXBfbWRldl9zZXRfa3ZtYCBpcyBjYWxsZWQuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0JiMzOTtzIHRoZSBwb2ludCB3aGVyZSB3ZSYjMzk7cmUgYWN0dWFsbHkgYXNzb2NpYXRpbmcgdGhlIHZpcnR1YWwgZGV2aWNlIHdpdGggdGhlIFZGSU8gaW5mcmFzdHJ1Y3R1cmUsIGxpbmtpbmcgaXQgdG8gYSBLVk0gaW5zdGFuY2UuCgpUbyBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhhdCBsaW5rYWdlLCBJIG5lZWQgdG8gY2hlY2sgaG93IHRoZSBkZXZpY2UgaXMgb3BlbmVkIGFuZCBjb25maWd1cmVkLiBMZXQmIzM5O3MgZGVsdmUgaW50byB0aGUgZnVuY3Rpb24gYHZmaW9fYXBfbWRldl9vcGVuX2RldmljZWAgdG8gc2VlIHByZWNpc2VseSBob3cgdGhpcyBoYXBwZW5zLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIHNvIHRvIHNwZWFrLiBVbmRlcnN0YW5kaW5nIHRoZSBmbG93IGZyb20gYWxsb2NhdGlvbiwgcmVnaXN0cmF0aW9uIHRvIG9wZW5pbmcgdGhlIGRldmljZSBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgdW5kZXJzdGFuZGluZyBvZiB0aGUgZW50aXJlIHByb2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjA0OCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyMDQ4Olx0c3RhdGljIGludCB2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICp2ZGV2KVxuMjA0OTpcdHtcbjIwNTA6XHRcdHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXYgPVxuMjA1MTpcdFx0XHRjb250YWluZXJfb2YodmRldiwgc3RydWN0IGFwX21hdHJpeF9tZGV2LCB2ZGV2KTtcbjIwNTI6XHRcbjIwNTM6XHRcdGlmICghdmRldi1cdTAwM2Vrdm0pXG4yMDU0Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuMjA1NTpcdFxuMjA1NjpcdFx0cmV0dXJuIHZmaW9fYXBfbWRldl9zZXRfa3ZtKG1hdHJpeF9tZGV2LCB2ZGV2LVx1MDAzZWt2bSk7XG4yMDU3Olx0fVxuMjA1ODpcdFxuMjA1OTpcdHN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICp2ZGV2KVxuMjA2MDpcdHtcbjIwNjE6XHRcdHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXYgPVxuMjA2MjpcdFx0XHRjb250YWluZXJfb2YodmRldiwgc3RydWN0IGFwX21hdHJpeF9tZGV2LCB2ZGV2KTtcbjIwNjM6XHRcbjIwNjQ6XHRcdHZmaW9fYXBfbWRldl91bnNldF9rdm0obWF0cml4X21kZXYpO1xuMjA2NTpcdH1cbjIwNjY6XHRcbjIwNjc6XHRzdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfcmVxdWVzdChzdHJ1Y3QgdmZpb19kZXZpY2UgKnZkZXYsIHVuc2lnbmVkIGludCBjb3VudClcbjIwNjg6XHR7XG4yMDY5Olx0XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSB2ZGV2LVx1MDAzZWRldjtcbjIwNzA6XHRcdHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXY7XG4yMDcxOlx0XG4yMDcyOlx0XHRtYXRyaXhfbWRldiA9IGNvbnRhaW5lcl9vZih2ZGV2LCBzdHJ1Y3QgYXBfbWF0cml4X21kZXYsIHZkZXYpO1xuMjA3MzpcdFxuMjA3NDpcdFx0Z2V0X3VwZGF0ZV9sb2Nrc19mb3JfbWRldihtYXRyaXhfbWRldik7XG4yMDc1Olx0XG4yMDc2Olx0XHRpZiAobWF0cml4X21kZXYtXHUwMDNla3ZtKSB7XG4yMDc3Olx0XHRcdGt2bV9hcmNoX2NyeXB0b19jbGVhcl9tYXNrcyhtYXRyaXhfbWRldi1cdTAwM2Vrdm0pO1xuMjA3ODpcdFx0XHRzaWduYWxfZ3Vlc3RfYXBfY2ZnX2NoYW5nZWQobWF0cml4X21kZXYpO1xuMjA3OTpcdFx0fVxuMjA4MDpcdFxuMjA4MTpcdFx0aWYgKG1hdHJpeF9tZGV2LVx1MDAzZXJlcV90cmlnZ2VyKSB7XG4yMDgyOlx0XHRcdGlmICghKGNvdW50ICUgMTApKVxuMjA4MzpcdFx0XHRcdGRldl9ub3RpY2VfcmF0ZWxpbWl0ZWQoZGV2LFxuMjA4NDpcdFx0XHRcdFx0XHQgICAgICAgXCYjMzQ7UmVsYXlpbmcgZGV2aWNlIHJlcXVlc3QgdG8gdXNlciAoIyV1KVxcblwmIzM0OyxcbjIwODU6XHRcdFx0XHRcdFx0ICAgICAgIGNvdW50KTtcbjIwODY6XHRcbjIwODc6XHRcdFx0ZXZlbnRmZF9zaWduYWwobWF0cml4X21kZXYtXHUwMDNlcmVxX3RyaWdnZXIpO1xuMjA4ODpcdFx0fSBlbHNlIGlmIChjb3VudCA9PSAwKSB7XG4yMDg5Olx0XHRcdGRldl9ub3RpY2UoZGV2LFxuMjA5MDpcdFx0XHRcdCAgIFwmIzM0O05vIGRldmljZSByZXF1ZXN0IHJlZ2lzdGVyZWQsIGJsb2NrZWQgdW50aWwgcmVsZWFzZWQgYnkgdXNlclxcblwmIzM0Oyk7XG4yMDkxOlx0XHR9XG4yMDkyOlx0XG4yMDkzOlx0XHRyZWxlYXNlX3VwZGF0ZV9sb2Nrc19mb3JfbWRldihtYXRyaXhfbWRldik7XG4yMDk0Olx0fVxuMjA5NTpcdFxuMjA5NjpcdHN0YXRpYyBpbnQgdmZpb19hcF9tZGV2X2dldF9kZXZpY2VfaW5mbyh1bnNpZ25lZCBsb25nIGFyZylcbjIwOTc6XHR7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzODk1CgkJCQkJCQlvdXRwdXQ6IDE2CgkJCQkJCQl0aG91Z2h0czogMzQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlYWNoaW5nIHRoZSBWRklPIEFQIExvY2tpbmcgTG9naWMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRyYWNpbmcgdGhlIGNvZGUgZmxvdy4gSXQgc2VlbXMgYHZmaW9fYXBfbWRldl9vcGVuX2RldmljZWAgY2FsbHMgYHZmaW9fYXBfbWRldl9zZXRfa3ZtYC4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQuIFRoZSBjcnVjaWFsIHBhcnQgaGVyZSBpcyBob3cgd2UgZ2V0IHRoZXJlLiBJdCYjMzk7cyB0cmlnZ2VyZWQgYnkgY3JlYXRpbmcgYW5kIG9wZW5pbmcgYSBWRklPIGRldmljZS4gU3l6a2FsbGVyLCBmcm9tIHdoYXQgSSByZWNhbGwsIGhhcyBkZXNjcmlwdGlvbnMgZm9yIFZGSU8gYW5kIGNhbiBjcmVhdGUgbWRldnMsIGFjY29yZGluZyB0byBgc3lzL2xpbnV4L3ZmaW8udHh0YCBvciBzaW1pbGFyLiBJJiMzOTttIHByZXR0eSBzdXJlIGl0IHN1cHBvcnRzIFZGSU8gYW5kIGNhbiBjcmVhdGUgdGhlc2UgbWRldnMsIHdoaWNoIG1lYW5zIGB2ZmlvX2FwX21kZXZfc2V0X2t2bWAgaXMgZGVmaW5pdGVseSByZWFjaGFibGUuCgpUaGUgcGF0Y2ggaXRzZWxmIHRhcmdldHMgYHZmaW9fYXBfbWRldl9zZXRfa3ZtYCwgYW5kIGl0cyBjb3VudGVycGFydCwgYHZmaW9fYXBfbWRldl91bnNldF9rdm1gLCBhbG9uZyB3aXRoIGBnZXRfdXBkYXRlX2xvY2tzX2Zvcl9rdm1gIGFuZCBgcmVsZWFzZV91cGRhdGVfbG9ja3NfZm9yX2t2bWAuIEdpdmVuIHRoZSBmdW5jdGlvbnMgYXJlIGV4cGxpY2l0bHkgbWVudGlvbmVkLCB0aGF0IGNvbmZpcm1zIHRoZXNlIGFyZSBhbGwgcmVhY2hhYmxlLiBTaW5jZSB0aGUgcGF0Y2ggbW9kaWZpZXMgdGhlc2UgZnVuY3Rpb25zLCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhpcyBpcyBhZGRyZXNzaW5nIGxvY2tpbmcgaXNzdWVzIG9yLCBhdCB0aGUgdmVyeSBsZWFzdCwgYWx0ZXJpbmcgdGhlIGxvY2tpbmcgYmVoYXZpb3IuCgpHaXZlbiB0aGUgbW9kaWZpY2F0aW9ucyB0byBjb3JlIGxvY2tpbmcgbG9naWMgd2l0aGluIFZGSU8gQVAsIHRoaXMgaXMgYWJzb2x1dGVseSB3b3J0aCBmdXp6aW5nLiBUaGUgcXVlc3Rpb24gdGhhdCByZW1haW5zIGlzIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBoYXJkd2FyZSByZXN0cmljdGlvbnMgdGhhdCBuZWVkIHRvIGJlIG1ldC4gVGhhbmtmdWxseSwgdGhlcmUgYXJlIG5vdDsgc2luY2UgYHZmaW9fYXBfbWRldl9wcm9iZWAgc3VjY2VlZHMgd2l0aG91dCBhIHBoeXNpY2FsIEFQLCBgdmZpb19hcF9tZGV2X29wZW5fZGV2aWNlYCBkb2VzIG5vdCBoYXZlIGFueSBmdXJ0aGVyIHJlc3RyaWN0aW9ucy4KCkhvd2V2ZXIsIGB2ZmlvX2FwX21kZXZfc2V0X2t2bWAgZG9lcyBjaGVjayBga3ZtLSZndDthcmNoLmNyeXB0by5jcnljYmRgLiBTbyBJJiMzOTttIGdvaW5nIHRvIGRpZyBkZWVwZXIgYW5kIGxvb2sgaW50byB3aGVuIGFuZCBob3cgdGhhdCBpcyBzZXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NyeWNiZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3QuaD01MzA9c3RydWN0IGt2bV9zMzkwX2NyeXB0byB7XG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtNTMzLVx0Y3J5cHRvX2hvb2sgKnBxYXBfaG9vaztcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjUzNDpcdF9fdTMyIGNyeWNiZDtcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTUzNS1cdF9fdTggYWVzX2t3O1xuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF90eXBlcy5oPTEzNz1zdHJ1Y3Qga3ZtX3MzOTBfc2llX2Jsb2NrIHtcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfdHlwZXMuaC0zMDUtI2RlZmluZSBDUllDQl9GT1JNQVQyIDB4MDAwMDAwMDNcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF90eXBlcy5oOjMwNjpcdF9fdTMyXHRjcnljYmQ7XHRcdFx0LyogMHgwMGZjICovXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfdHlwZXMuaC0zMDctXHRfX3U2NFx0Z2NyWzE2XTtcdFx0LyogMHgwMTAwICovXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTMxMjE9c3RhdGljIHZvaWQga3ZtX3MzOTBfc2V0X2NyeWNiX2Zvcm1hdChzdHJ1Y3Qga3ZtICprdm0pXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzEyMi17XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MzEyMzpcdGt2bS1cdTAwM2VhcmNoLmNyeXB0by5jcnljYmQgPSB2aXJ0X3RvX3BoeXMoa3ZtLVx1MDAzZWFyY2guY3J5cHRvLmNyeWNiKTtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMTI0LVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTMxMjUtXHQvKiBDbGVhciB0aGUgQ1JZQ0IgZm9ybWF0IGJpdHMgLSBpLmUuLCBzZXQgZm9ybWF0IDAgYnkgZGVmYXVsdCAqL1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjMxMjY6XHRrdm0tXHUwMDNlYXJjaC5jcnlwdG8uY3J5Y2JkIFx1MDAyNj0gfihDUllDQl9GT1JNQVRfTUFTSyk7XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzEyNy1cbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzEzMi1cdGlmIChrdm1fczM5MF9hcHhhX2luc3RhbGxlZCgpKVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjMxMzM6XHRcdGt2bS1cdTAwM2VhcmNoLmNyeXB0by5jcnljYmQgfD0gQ1JZQ0JfRk9STUFUMjtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMTM0LVx0ZWxzZVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjMxMzU6XHRcdGt2bS1cdTAwM2VhcmNoLmNyeXB0by5jcnljYmQgfD0gQ1JZQ0JfRk9STUFUMTtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMTM2LX1cbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9MzE1Mz12b2lkIGt2bV9hcmNoX2NyeXB0b19zZXRfbWFza3Moc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nICphcG0sXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTMxNTktXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MzE2MDpcdHN3aXRjaCAoa3ZtLVx1MDAzZWFyY2guY3J5cHRvLmNyeWNiZCBcdTAwMjYgQ1JZQ0JfRk9STUFUX01BU0spIHtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMTYxLVx0Y2FzZSBDUllDQl9GT1JNQVQyOiAvKiBBUENCMSB1c2UgMjU2IGJpdHMgKi9cbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9MzY0Mj1zdGF0aWMgdm9pZCBrdm1fczM5MF92Y3B1X2NyeXB0b19zZXR1cChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTM2NTAtXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MzY1MTpcdHZjcHUtXHUwMDNlYXJjaC5zaWVfYmxvY2stXHUwMDNlY3J5Y2JkID0gdmNwdS1cdTAwM2Vrdm0tXHUwMDNlYXJjaC5jcnlwdG8uY3J5Y2JkO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTM2NTItXHR2Y3B1LVx1MDAzZWFyY2guc2llX2Jsb2NrLVx1MDAzZWVjYjMgXHUwMDI2PSB+KEVDQjNfQUVTIHwgRUNCM19ERUEpO1xuLS1cbmFyY2gvczM5MC9rdm0vcHJpdi5jPTU5Mj1zdGF0aWMgaW50IGhhbmRsZV9wcWFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3MzOTAva3ZtL3ByaXYuYy02MzAtXHQvKiBBUFhBIG5vdCBpbnN0YWxsZWQgYW5kIEFQSUQgZ3JlYXRlciA2NCBvciBBUFFJIGdyZWF0ZXIgMTYgKi9cbmFyY2gvczM5MC9rdm0vcHJpdi5jOjYzMTpcdGlmICghKHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2guY3J5cHRvLmNyeWNiZCBcdTAwMjYgMHgwMikgXHUwMDI2XHUwMDI2IChyZWcwIFx1MDAyNiAweDAwMDBjMGYwVUwpKVxuYXJjaC9zMzkwL2t2bS9wcml2LmMtNjMyLVx0XHRyZXR1cm4ga3ZtX3MzOTBfaW5qZWN0X3Byb2dyYW1faW50KHZjcHUsIFBHTV9TUEVDSUZJQ0FUSU9OKTtcbi0tXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYz0zMTg9c3RhdGljIGludCBzaGFkb3dfY3J5Y2Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgdnNpZV9wYWdlICp2c2llX3BhZ2UpXG4tLVxuYXJjaC9zMzkwL2t2bS92c2llLmMtMzIxLVx0c3RydWN0IGt2bV9zMzkwX3NpZV9ibG9jayAqc2NiX28gPSB2c2llX3BhZ2UtXHUwMDNlc2NiX287XG5hcmNoL3MzOTAva3ZtL3ZzaWUuYzozMjI6XHRjb25zdCB1aW50MzJfdCBjcnljYmRfbyA9IFJFQURfT05DRShzY2Jfby1cdTAwM2VjcnljYmQpO1xuYXJjaC9zMzkwL2t2bS92c2llLmM6MzIzOlx0Y29uc3QgdTMyIGNyeWNiX2FkZHIgPSBjcnljYmRfbyBcdTAwMjYgMHg3ZmZmZmZmOFU7XG5hcmNoL3MzOTAva3ZtL3ZzaWUuYy0zMjQtXHR1bnNpZ25lZCBsb25nICpiMSwgKmIyO1xuLS1cbmFyY2gvczM5MC9rdm0vdnNpZS5jLTMyOS1cdGludCBrZXlfbXNrID0gdGVzdF9rdm1fZmFjaWxpdHkodmNwdS1cdTAwM2Vrdm0sIDc2KTtcbmFyY2gvczM5MC9rdm0vdnNpZS5jOjMzMDpcdGludCBmbXRfbyA9IGNyeWNiZF9vIFx1MDAyNiBDUllDQl9GT1JNQVRfTUFTSztcbmFyY2gvczM5MC9rdm0vdnNpZS5jOjMzMTpcdGludCBmbXRfaCA9IHZjcHUtXHUwMDNlYXJjaC5zaWVfYmxvY2stXHUwMDNlY3J5Y2JkIFx1MDAyNiBDUllDQl9GT1JNQVRfTUFTSztcbmFyY2gvczM5MC9rdm0vdnNpZS5jLTMzMi1cdGludCByZXQgPSAwO1xuYXJjaC9zMzkwL2t2bS92c2llLmMtMzMzLVxuYXJjaC9zMzkwL2t2bS92c2llLmM6MzM0Olx0c2NiX3MtXHUwMDNlY3J5Y2JkID0gMDtcbmFyY2gvczM5MC9rdm0vdnNpZS5jLTMzNS1cbi0tXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYy0zODgtXHR9XG5hcmNoL3MzOTAva3ZtL3ZzaWUuYzozODk6XHRzY2Jfcy1cdTAwM2VjcnljYmQgPSAodTMyKXZpcnRfdG9fcGh5cyhcdTAwMjZ2c2llX3BhZ2UtXHUwMDNlY3J5Y2IpIHwgQ1JZQ0JfRk9STUFUMjtcbmFyY2gvczM5MC9rdm0vdnNpZS5jLTM5MC1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0xODI4PXN0YXRpYyBpbnQgdmZpb19hcF9tZGV2X3NldF9rdm0oc3RydWN0IGFwX21hdHJpeF9tZGV2ICptYXRyaXhfbWRldixcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTgzMC17XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTgzMTpcdGlmIChrdm0tXHUwMDNlYXJjaC5jcnlwdG8uY3J5Y2JkKSB7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTgzMi1cdFx0Z2V0X3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtKGt2bSk7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTE4Nzk9c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X3Vuc2V0X2t2bShzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2KVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xODgyLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE4ODM6XHRpZiAoa3ZtIFx1MDAyNlx1MDAyNiBrdm0tXHUwMDNlYXJjaC5jcnlwdG8uY3J5Y2JkKSB7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTg4NC1cdFx0Z2V0X3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtKGt2bSk7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvczM5MC9zaWUuaD0yMD1zdHJ1Y3Qga3ZtX3MzOTBfc2llX2Jsb2NrIHtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9zMzkwL3NpZS5oLTIxMy0jZGVmaW5lIENSWUNCX0ZPUk1BVDJcdFx0MHgwMDAwMDAwM1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvczM5MC9zaWUuaDoyMTQ6XHRfX3UzMlx0Y3J5Y2JkO1x0XHRcdC8qIDB4MDBmYyAqL1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvczM5MC9zaWUuaC0yMTUtXHRfX3U2NFx0Z2NyWzE2XTtcdFx0LyogMHgwMTAwICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3MDIzCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogNzEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2gmIzM5O3MgSW1wYWN0IG9uIFZGSU8tQVAgYW5kIEtWTSBJbnRlZ3JhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXM6IGBrdm1fczM5MF9zZXRfY3J5Y2JfZm9ybWF0YCBzZXRzIHRoZSBgY3J5Y2JkYCBzdHJ1Y3R1cmUuIFRoYXQgZnVuY3Rpb24gaXMgY2FsbGVkIGR1cmluZyB0aGUgS1ZNIFZNIGluaXRpYWxpemF0aW9uIHZpYSBga3ZtX3MzOTBfY3J5cHRvX2luaXRgLCBhbmQgdWx0aW1hdGVseSBmcm9tIGBrdm1fYXJjaF9pbml0X3ZtYC4gVGhpcyBtZWFucyBga3ZtLSZndDthcmNoLmNyeXB0by5jcnljYmRgIGlzIHBvcHVsYXRlZCB3aGVuIGEgS1ZNIFZNIGluc3RhbmNlIGlzIGNyZWF0ZWQuIFRoYXQmIzM5O3Mga2V5IGJlY2F1c2UgYHZmaW9fYXBfbWRldl9zZXRfa3ZtYCAqc2hvdWxkKiBleGVjdXRlIGl0cyBjb3JlIGxvZ2ljIGlmIGEgYGt2bWAgcG9pbnRlciBpcyBwYXNzZWQgaW4uIFJpZ2h0LCBhbmQgYHZmaW9fYXBfbWRldl9zZXRfa3ZtYCBpcyAqY2FsbGVkKiBmcm9tIGB2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2VgIGFuZCBpdCB1c2VzIGB2ZGV2LSZndDtrdm1gLCBzbyBgdmRldi0mZ3Q7a3ZtYCBiZWNvbWVzIGFzc2lnbmVkIHdoZW4gYSBWRklPIGRldmljZSBpcyBjb25uZWN0ZWQgdG8gYSBLVk0gaW5zdGFuY2UuIFNvLCB1c2luZyBTeXprYWxsZXIsIHdoaWNoIGNhbiBvcGVuIHRoZSBWRklPIGRldmljZSBhbmQgdXNlcyBpb2N0bHMgbGlrZSBgS1ZNX0RFVl9WRklPX0dST1VQX0FERGAsIHdlIGNhbiByZWFjaCB0aGlzIGNvZGUgcGF0aCBhbmQgdGVzdCBpdCB3aXRoaW4gYSB2aXJ0dWFsaXplZCBzZXR1cC4gR29vZC4KCk5vdywgbGV0JiMzOTtzIHJldmlzaXQgdGhlIHBhdGNoIGl0c2VsZi4gSXQmIzM5O3MgYWRkaW5nIGBwcWFwX2hvb2tfcndzZW1gIHRvIGBnZXRfdXBkYXRlX2xvY2tzX2Zvcl9rdm1gIGFuZCBhbHNvIGByZWxlYXNlX3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtYC4gVGhlIHBhdGNoIG1vZGlmaWVzIGB2ZmlvX2FwX21kZXZfc2V0X2t2bWAgaW4gYSB3YXkgdGhhdCBzdWdnZXN0cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBsb2NraW5nIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IGxvZ2ljLiBUaGUgcHJldmlvdXMgY2hlY2tzIGZvciBgY3J5Y2JkYCBhcmUgZ29uZS4gVGhpcyBpbmRpY2F0ZXMgYSBzaWduaWZpY2FudCBjaGFuZ2UgaW4gaG93IHRoZSBgcHFhcF9ob29rYCBpcyBoYW5kbGVkLiAgU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byBiZSBlbnN1cmluZyB0aGF0IHRoZSBob29rIGlzIG9ubHkgc2V0IHdoZW4gbm90IGFscmVhZHkgc2V0IGZvciBhbm90aGVyIGRldmljZSBhdHRhY2hlZCB0byB0aGUgc2FtZSBLVk0gaW5zdGFuY2UuIFRoZSBgbGlzdF9mb3JfZWFjaF9lbnRyeWAgbG9vcCBpcyByZW1vdmVkLCBhbmQgcmVwbGFjZWQgd2l0aCBhIGNoZWNrIG9mIGBrdm0tJmd0O2FyY2guY3J5cHRvLnBxYXBfaG9va2AuIFNvIHRoYXQmIzM5O3Mgbm93IGEgc2luZ2xlIGNoZWNrLgoKVGhpcyBpcyBhbGwgKmRlZmluaXRlbHkqIHdvcnRoIGZ1enppbmcuIFRoZSBsb2NrIGNoYW5nZXMsIHRoZSBzdGF0ZSBtYW5hZ2VtZW50IHR3ZWFrcyDigJMgdGhlc2UgYXJlIHJpcGUgZm9yIGNvbmN1cnJlbmN5IGJ1Z3Mgb3IgdW5leHBlY3RlZCBiZWhhdmlvci4gV2UmIzM5O2xsIG5lZWQgdG8gZm9jdXMgb24gaW50ZXJhY3Rpb25zIGJldHdlZW4gbXVsdGlwbGUgVkZJTyBBUCBkZXZpY2VzLCBLVk0sIGFuZCB0aGUgQVAgaGFyZHdhcmUuCgpBcyBmb3IgY29uZmlndXJhdGlvbiwgd2UgbmVlZCB0byBlbnN1cmUgdGhhdCBgQ09ORklHX1ZGSU9fQVBgIGlzIGVuYWJsZWQuIExldCYjMzk7cyBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGluIGBhcmNoL3MzOTAvS2NvbmZpZ2AgdG8gYmUgc3VyZS4gQWxyaWdodCwgbm93IHdlIGtub3cgd2hhdCB0byB0ZXN0LCBhbmQgdGhlIGNvbmZpZ3VyYXRpb25zIHJlcXVpcmVkLiBUaW1lIHRvIHNldCB1cCB0aGUgZnV6emluZyBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFZGSU9fQVAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL0tjb25maWc9ODIzPWNvbmZpZyBWRklPX0NDV1xuLS1cbmFyY2gvczM5MC9LY29uZmlnLTgzMy1cbmFyY2gvczM5MC9LY29uZmlnOjgzNDpjb25maWcgVkZJT19BUFxuYXJjaC9zMzkwL0tjb25maWctODM1LVx0ZGVmX3RyaXN0YXRlIG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg0MjIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgdGV4dCwgcmVuZGVyZWQgYXMgYSBmaXJzdC1wZXJzb24gZXhwZXJ0IHN1bW1hcnk6CgoqKkRpdmluZyBpbnRvIHRoZSBzMzkwIEFyY2hpdGVjdHVyZSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IHRoZSBgYXJjaC9zMzkwL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSA4MzQuIEkmIzM5O20gZ29pbmcgdG8gYXNzdW1lIHRoaXMgc2VjdGlvbiBsaWtlbHkgcmVsYXRlcyB0byBzb21lIGZlYXR1cmUgb3IgY29uZmlndXJhdGlvbiBvcHRpb24gd2l0aGluIHRoZSBzMzkwIGFyY2hpdGVjdHVyZS4gR2l2ZW4gdGhlIGNvbnRleHQgb2YgYSBLY29uZmlnIGZpbGUsIGl0JiMzOTtzIHByb2JhYmx5IGRlZmluaW5nIGEgY29uZGl0aW9uYWwgYnVpbGQgb3B0aW9uLCBhIGhhcmR3YXJlIGZlYXR1cmUgc2V0dGluZywgb3IgbWF5YmUgZXZlbiBhIGRyaXZlciBjb25maWd1cmF0aW9uIHJlbGF0ZWQgdG8gdGhlIElCTSBtYWluZnJhbWUgYXJjaGl0ZWN0dXJlLiBJJiMzOTtsbCBuZWVkIHRvIGNhcmVmdWxseSBleGFtaW5lIHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcywgZGVmYXVsdCB2YWx1ZXMsIGFuZCBoZWxwIHRleHQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBpdGVtLiBJdCBjb3VsZCBiZSBzb21ldGhpbmcgc3RyYWlnaHRmb3J3YXJkLCBvciBpdCBtaWdodCByZXF1aXJlIGEgZGVlcGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGhhcmR3YXJlIGNhcGFiaWxpdGllcywgZmlybXdhcmUgaW50ZXJhY3Rpb25zLCBvciBzcGVjaWZpYyBrZXJuZWwgc3Vic3lzdGVtcyB3aXRoaW4gdGhlIHMzOTAgZW52aXJvbm1lbnQuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL3MzOTAvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDgzMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgODMwOlx0XG4gODMxOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuIDgzMjpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgdmZpb19jY3cuXG4gODMzOlx0XG4gODM0Olx0Y29uZmlnIFZGSU9fQVBcbiA4MzU6XHRcdGRlZl90cmlzdGF0ZSBuXG4gODM2Olx0XHRwcm9tcHQgXCYjMzQ7VkZJTyBzdXBwb3J0IGZvciBBUCBkZXZpY2VzXCYjMzQ7XG4gODM3Olx0XHRkZXBlbmRzIG9uIEtWTVxuIDgzODpcdFx0ZGVwZW5kcyBvbiBWRklPXG4gODM5Olx0XHRkZXBlbmRzIG9uIEFQXG4gODQwOlx0XHRzZWxlY3QgVkZJT19NREVWXG4gODQxOlx0XHRoZWxwXG4gODQyOlx0XHQgIFRoaXMgZHJpdmVyIGdyYW50cyBhY2Nlc3MgdG8gQWRqdW5jdCBQcm9jZXNzb3IgKEFQKSBkZXZpY2VzXG4gODQzOlx0XHQgIHZpYSB0aGUgVkZJTyBtZWRpYXRlZCBkZXZpY2UgaW50ZXJmYWNlLlxuIDg0NDpcdFxuIDg0NTpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4gODQ2Olx0XHQgIHdpbGwgYmUgY2FsbGVkIHZmaW9fYXAuXG4gODQ3Olx0XG4gODQ4Olx0ZW5kbWVudVxuIDg0OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODk0MAoJCQkJCQkJb3V0cHV0OiAxNgoJCQkJCQkJdGhvdWdodHM6IDQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOgoKKipWRklPLUFQIENvbmZpZ3VyYXRpb24gQ29udW5kcnVtKioKClJpZ2h0LCBzbyB0byBnZXQgdGhpcyB3b3JraW5nLCBpdCBzZWVtcyB0aGF0IGBDT05GSUdfVkZJT19BUGAgaXMgYWJzb2x1dGVseSBlc3NlbnRpYWwuIE9rYXksIG9idmlvdXMgc3RhcnQuIEJ1dCwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaXRzIGRlcGVuZGVuY2llcyB0byBwcm9wZXJseSBjb25maWd1cmUgZXZlcnl0aGluZy4gSXQgbG9va3MgbGlrZSBpdCBkaXJlY3RseSBkZXBlbmRzIG9uIGBLVk1gLCBgVkZJT2AsIGFuZCBgQVBgLiBUaGF0JiMzOTtzIGEgcmVhc29uYWJsZSBzZXQsIEkgY2FuIHdvcmsgd2l0aCB0aGF0LCBtYWtlcyBzZW5zZSB0byBtZS4gVGhlIGludGVyZXN0aW5nIHBhcnQgaXMgYEFQYC4gSXMgYEFQYCByZWZlcnJpbmcgdG8gYENPTkZJR19aQ1JZUFRgPyBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGRlZmluaXRpb24gaW4gdGhlIGtlcm5lbCBjb25maWcuLi4gTGV0IG1lIGdvIGFuZCBkaWcgdGhhdCB1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEFQJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvYm9vdGNvbmZpZy5yc3Q9Mjg3PXRvIGluaXRyZCBpbWFnZSwgdXNlciBjYW4gbm90aWNlIGl0IGJlZm9yZSBib290LlxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvYm9vdGNvbmZpZy5yc3QtMjg5LVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9ib290Y29uZmlnLnJzdDoyOTA6Qm9vdGNvbmZpZyBBUElzXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2Jvb3Rjb25maWcucnN0LTI5MS09PT09PT09PT09PT09PT1cbi0tXG5hcmNoL202OGsvS2NvbmZpZy5tYWNoaW5lPTI5PWNvbmZpZyBNQUNcbi0tXG5hcmNoL202OGsvS2NvbmZpZy5tYWNoaW5lLTQwLVxuYXJjaC9tNjhrL0tjb25maWcubWFjaGluZTo0MTpjb25maWcgQVBPTExPXG5hcmNoL202OGsvS2NvbmZpZy5tYWNoaW5lLTQyLVx0Ym9vbCBcJiMzNDtBcG9sbG8gc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvNDR4L0tjb25maWc9MjkxPWNvbmZpZyA0NzZGUEVcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzQ0eC9LY29uZmlnLTI5NC1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvNDR4L0tjb25maWc6Mjk1OmNvbmZpZyBBUE04MjF4eFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy80NHgvS2NvbmZpZy0yOTYtXHRib29sXG4tLVxuYXJjaC9zMzkwL0tjb25maWc9Nzg1PWNvbmZpZyBFQURNX1NDSFxuLS1cbmFyY2gvczM5MC9LY29uZmlnLTc5NS1cbmFyY2gvczM5MC9LY29uZmlnOjc5Njpjb25maWcgQVBcbmFyY2gvczM5MC9LY29uZmlnLTc5Ny1cdGRlZl90cmlzdGF0ZSB5XG4tLVxuYXJjaC9zMzkwL0tjb25maWctODA4LVxuYXJjaC9zMzkwL0tjb25maWc6ODA5OmNvbmZpZyBBUF9ERUJVR1xuYXJjaC9zMzkwL0tjb25maWctODEwLVx0ZGVmX2Jvb2wgblxuLS1cbmFyY2gvczM5MC9LY29uZmlnPTg4NT1jb25maWcgQ01NX0lVQ1Zcbi0tXG5hcmNoL3MzOTAvS2NvbmZpZy04OTItXG5hcmNoL3MzOTAvS2NvbmZpZzo4OTM6Y29uZmlnIEFQUExEQVRBX0JBU0VcbmFyY2gvczM5MC9LY29uZmlnLTg5NC1cdGRlZl9ib29sIG5cbi0tXG5hcmNoL3MzOTAvS2NvbmZpZy05MDgtXG5hcmNoL3MzOTAvS2NvbmZpZzo5MDk6Y29uZmlnIEFQUExEQVRBX01FTVxuYXJjaC9zMzkwL0tjb25maWctOTEwLVx0ZGVmX3RyaXN0YXRlIG1cbi0tXG5hcmNoL3MzOTAvS2NvbmZpZy05MjUtXG5hcmNoL3MzOTAvS2NvbmZpZzo5MjY6Y29uZmlnIEFQUExEQVRBX09TXG5hcmNoL3MzOTAvS2NvbmZpZy05MjctXHRkZWZfdHJpc3RhdGUgbVxuLS1cbmFyY2gvczM5MC9LY29uZmlnLTk0MC1cbmFyY2gvczM5MC9LY29uZmlnOjk0MTpjb25maWcgQVBQTERBVEFfTkVUX1NVTVxuYXJjaC9zMzkwL0tjb25maWctOTQyLVx0ZGVmX3RyaXN0YXRlIG1cbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTI3NDE9Y29uZmlnIFg4Nl9BUE1fQk9PVFxuLS1cbmFyY2gveDg2L0tjb25maWctMjc0NC1cbmFyY2gveDg2L0tjb25maWc6Mjc0NTptZW51Y29uZmlnIEFQTVxuYXJjaC94ODYvS2NvbmZpZy0yNzQ2LVx0dHJpc3RhdGUgXCYjMzQ7QVBNIChBZHZhbmNlZCBQb3dlciBNYW5hZ2VtZW50KSBCSU9TIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTI3OTk9aWYgQVBNXG5hcmNoL3g4Ni9LY29uZmlnLTI4MDAtXG5hcmNoL3g4Ni9LY29uZmlnOjI4MDE6Y29uZmlnIEFQTV9JR05PUkVfVVNFUl9TVVNQRU5EXG5hcmNoL3g4Ni9LY29uZmlnLTI4MDItXHRib29sIFwmIzM0O0lnbm9yZSBVU0VSIFNVU1BFTkRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTI4MDctXG5hcmNoL3g4Ni9LY29uZmlnOjI4MDg6Y29uZmlnIEFQTV9ET19FTkFCTEVcbmFyY2gveDg2L0tjb25maWctMjgwOS1cdGJvb2wgXCYjMzQ7RW5hYmxlIFBNIGF0IGJvb3QgdGltZVwmIzM0O1xuLS1cbmFyY2gveDg2L0tjb25maWctMjgyNC1cbmFyY2gveDg2L0tjb25maWc6MjgyNTpjb25maWcgQVBNX0NQVV9JRExFXG5hcmNoL3g4Ni9LY29uZmlnLTI4MjYtXHRkZXBlbmRzIG9uIENQVV9JRExFXG4tLVxuYXJjaC94ODYvS2NvbmZpZy0yODM2LVxuYXJjaC94ODYvS2NvbmZpZzoyODM3OmNvbmZpZyBBUE1fRElTUExBWV9CTEFOS1xuYXJjaC94ODYvS2NvbmZpZy0yODM4LVx0Ym9vbCBcJiMzNDtFbmFibGUgY29uc29sZSBibGFua2luZyB1c2luZyBBUE1cJiMzNDtcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTI4NDktXG5hcmNoL3g4Ni9LY29uZmlnOjI4NTA6Y29uZmlnIEFQTV9BTExPV19JTlRTXG5hcmNoL3g4Ni9LY29uZmlnLTI4NTEtXHRib29sIFwmIzM0O0FsbG93IGludGVycnVwdHMgZHVyaW5nIEFQTSBCSU9TIGNhbGxzXCYjMzQ7XG4tLVxuZHJpdmVycy9jaGFyL0tjb25maWc9MjEzPWNvbmZpZyBYSUxJTlhfSFdJQ0FQXG4tLVxuZHJpdmVycy9jaGFyL0tjb25maWctMjIyLVxuZHJpdmVycy9jaGFyL0tjb25maWc6MjIzOmNvbmZpZyBBUFBMSUNPTVxuZHJpdmVycy9jaGFyL0tjb25maWctMjI0LVx0dHJpc3RhdGUgXCYjMzQ7QXBwbGljb20gaW50ZWxsaWdlbnQgZmllbGRidXMgY2FyZCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvcWNvbS9LY29uZmlnPTI5MD1jb25maWcgUUNPTV9DTEtfUlBNSFxuLS1cbmRyaXZlcnMvY2xrL3Fjb20vS2NvbmZpZy0yOTgtXG5kcml2ZXJzL2Nsay9xY29tL0tjb25maWc6Mjk5OmNvbmZpZyBBUFFfR0NDXzgwODRcbmRyaXZlcnMvY2xrL3Fjb20vS2NvbmZpZy0zMDAtXHR0cmlzdGF0ZSBcJiMzNDtBUFE4MDg0IEdsb2JhbCBDbG9jayBDb250cm9sbGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvcWNvbS9LY29uZmlnLTMwNy1cbmRyaXZlcnMvY2xrL3Fjb20vS2NvbmZpZzozMDg6Y29uZmlnIEFQUV9NTUNDXzgwODRcbmRyaXZlcnMvY2xrL3Fjb20vS2NvbmZpZy0zMDktXHR0cmlzdGF0ZSBcJiMzNDtBUFE4MDg0IE11bHRpbWVkaWEgQ2xvY2sgQ29udHJvbGxlclwmIzM0O1xuLS1cbmRyaXZlcnMvZG1hL0tjb25maWc9Nzg9Y29uZmlnIEFNQ0NfUFBDNDQwU1BFX0FETUFcbi0tXG5kcml2ZXJzL2RtYS9LY29uZmlnLTg3LVxuZHJpdmVycy9kbWEvS2NvbmZpZzo4ODpjb25maWcgQVBQTEVfQURNQUNcbmRyaXZlcnMvZG1hL0tjb25maWctODktXHR0cmlzdGF0ZSBcJiMzNDtBcHBsZSBBRE1BQyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9maXJtd2FyZS9lZmkvS2NvbmZpZz0xNTQ9Y29uZmlnIEVGSV9ERVZfUEFUSF9QQVJTRVJcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9LY29uZmlnLTE1Ni1cbmRyaXZlcnMvZmlybXdhcmUvZWZpL0tjb25maWc6MTU3OmNvbmZpZyBBUFBMRV9QUk9QRVJUSUVTXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9LY29uZmlnLTE1OC1cdGJvb2wgXCYjMzQ7QXBwbGUgRGV2aWNlIFByb3BlcnRpZXNcJiMzNDtcbi0tXG5kcml2ZXJzL2lpby9saWdodC9LY29uZmlnPTY2PWNvbmZpZyBBTDMzMjBBXG4tLVxuZHJpdmVycy9paW8vbGlnaHQvS2NvbmZpZy03NS1cbmRyaXZlcnMvaWlvL2xpZ2h0L0tjb25maWc6NzY6Y29uZmlnIEFQRFM5MTYwXG5kcml2ZXJzL2lpby9saWdodC9LY29uZmlnLTc3LVx0dHJpc3RhdGUgXCYjMzQ7QVBEUzkxNjAgY29tYmluZWQgYWxzIGFuZCBwcm94aW1pdHkgc2Vuc29yXCYjMzQ7XG4tLVxuZHJpdmVycy9paW8vbGlnaHQvS2NvbmZpZy04Ni1cbmRyaXZlcnMvaWlvL2xpZ2h0L0tjb25maWc6ODc6Y29uZmlnIEFQRFM5MzAwXG5kcml2ZXJzL2lpby9saWdodC9LY29uZmlnLTg4LVx0dHJpc3RhdGUgXCYjMzQ7QVBEUzkzMDAgYW1iaWVudCBsaWdodCBzZW5zb3JcJiMzNDtcbi0tXG5kcml2ZXJzL2lpby9saWdodC9LY29uZmlnLTk2LVxuZHJpdmVycy9paW8vbGlnaHQvS2NvbmZpZzo5Nzpjb25maWcgQVBEUzkzMDZcbmRyaXZlcnMvaWlvL2xpZ2h0L0tjb25maWctOTgtXHR0cmlzdGF0ZSBcJiMzNDtBdmFnbyBBUERTOTMwNiBBbWJpZW50IExpZ2h0IFNlbnNvclwmIzM0O1xuLS1cbmRyaXZlcnMvaWlvL2xpZ2h0L0tjb25maWctMTA4LVxuZHJpdmVycy9paW8vbGlnaHQvS2NvbmZpZzoxMDk6Y29uZmlnIEFQRFM5OTYwXG5kcml2ZXJzL2lpby9saWdodC9LY29uZmlnLTExMC1cdHRyaXN0YXRlIFwmIzM0O0F2YWdvIEFQRFM5OTYwIGdlc3R1cmUvUkdCL0FMUy9wcm94aW1pdHkgc2Vuc29yXCYjMzQ7XG4tLVxuZHJpdmVycy9pb21tdS9LY29uZmlnPTI5Nj1jb25maWcgU1BBUFJfVENFX0lPTU1VXG4tLVxuZHJpdmVycy9pb21tdS9LY29uZmlnLTMwMy1cbmRyaXZlcnMvaW9tbXUvS2NvbmZpZzozMDQ6Y29uZmlnIEFQUExFX0RBUlRcbmRyaXZlcnMvaW9tbXUvS2NvbmZpZy0zMDUtXHR0cmlzdGF0ZSBcJiMzNDtBcHBsZSBEQVJUIElPTU1VIFN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZz03ODg9Y29uZmlnIElSUV9JRFQzMjQzWFxuLS1cbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnLTc5Mi1cbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnOjc5Mzpjb25maWcgQVBQTEVfQUlDXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZy03OTQtXHRib29sIFwmIzM0O0FwcGxlIEludGVycnVwdCBDb250cm9sbGVyIChBSUMpXCYjMzQ7XG4tLVxuZHJpdmVycy9taXNjL0tjb25maWc9MzI3PWNvbmZpZyBTR0lfR1JVX0RFQlVHXG4tLVxuZHJpdmVycy9taXNjL0tjb25maWctMzMzLVxuZHJpdmVycy9taXNjL0tjb25maWc6MzM0OmNvbmZpZyBBUERTOTgwMkFMU1xuZHJpdmVycy9taXNjL0tjb25maWctMzM1LVx0dHJpc3RhdGUgXCYjMzQ7TWVkZmllbGQgQXZhZ28gQVBEUzk4MDIgQUxTIFNlbnNvciBtb2R1bGVcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL0tjb25maWc9MTA2PWNvbmZpZyBORTJLX1BDSVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvS2NvbmZpZy0xMjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL0tjb25maWc6MTI0OmNvbmZpZyBBUE5FXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL0tjb25maWctMTI1LVx0dHJpc3RhdGUgXCYjMzQ7UENNQ0lBIE5FMjAwMCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9wY2kuYz0zMzIwPXN0YXRpYyBpbnQgcnR3ODlfcGNpX2NmZ19kYWMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGZvcmNlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGNpLmMtMzMzMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGNpLmM6MzMzMzpcdC8qIENvbmZpZ3VyZSBEQUMgb25seSB2aWEgUENJIGNvbmZpZyBBUEksIG5vdCBEQkkgaW50ZXJmYWNlcyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9wY2kuYy0zMzM0LVx0cmV0ID0gcGNpX3JlYWRfY29uZmlnX2J5dGUocGRldiwgUlRXODlfUENJRV9MMV9DVFJMLCBcdTAwMjZ2YWwpO1xuLS1cbmRyaXZlcnMvcGVyZi9LY29uZmlnPTI1Mz1jb25maWcgTUFSVkVMTF9DTjEwS19UQURfUE1VXG4tLVxuZHJpdmVycy9wZXJmL0tjb25maWctMjU5LVxuZHJpdmVycy9wZXJmL0tjb25maWc6MjYwOmNvbmZpZyBBUFBMRV9NMV9DUFVfUE1VXG5kcml2ZXJzL3BlcmYvS2NvbmZpZy0yNjEtXHRib29sIFwmIzM0O0FwcGxlIE0xIENQVSBQTVUgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvcGxhdGZvcm0veDg2L0tjb25maWc9MTk0PWNvbmZpZyBBRFZfU1dCVVRUT05cbi0tXG5kcml2ZXJzL3BsYXRmb3JtL3g4Ni9LY29uZmlnLTIwNC1cbmRyaXZlcnMvcGxhdGZvcm0veDg2L0tjb25maWc6MjA1OmNvbmZpZyBBUFBMRV9HTVVYXG5kcml2ZXJzL3BsYXRmb3JtL3g4Ni9LY29uZmlnLTIwNi1cdHRyaXN0YXRlIFwmIzM0O0FwcGxlIEdtdXggRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9wbWRvbWFpbi9hcHBsZS9LY29uZmlnPTM9aWYgQVJDSF9BUFBMRSB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvcG1kb21haW4vYXBwbGUvS2NvbmZpZy00LVxuZHJpdmVycy9wbWRvbWFpbi9hcHBsZS9LY29uZmlnOjU6Y29uZmlnIEFQUExFX1BNR1JfUFdSU1RBVEVcbmRyaXZlcnMvcG1kb21haW4vYXBwbGUvS2NvbmZpZy02LVx0Ym9vbCBcJiMzNDtBcHBsZSBTb0MgUE1HUiBwb3dlciBzdGF0ZSBjb250cm9sXCYjMzQ7XG4tLVxuZHJpdmVycy9wb3dlci9zdXBwbHkvS2NvbmZpZz0xOD1jb25maWcgUE9XRVJfU1VQUExZX0hXTU9OXG4tLVxuZHJpdmVycy9wb3dlci9zdXBwbHkvS2NvbmZpZy0zMC1cbmRyaXZlcnMvcG93ZXIvc3VwcGx5L0tjb25maWc6MzE6Y29uZmlnIEFQTV9QT1dFUlxuZHJpdmVycy9wb3dlci9zdXBwbHkvS2NvbmZpZy0zMi1cdHRyaXN0YXRlIFwmIzM0O0FQTSBlbXVsYXRpb24gZm9yIGNsYXNzIGJhdHRlcmllc1wmIzM0O1xuLS1cbmRyaXZlcnMvc29jL2FwcGxlL0tjb25maWc9NT1tZW51IFwmIzM0O0FwcGxlIFNvQyBkcml2ZXJzXCYjMzQ7XG5kcml2ZXJzL3NvYy9hcHBsZS9LY29uZmlnLTYtXG5kcml2ZXJzL3NvYy9hcHBsZS9LY29uZmlnOjc6Y29uZmlnIEFQUExFX01BSUxCT1hcbmRyaXZlcnMvc29jL2FwcGxlL0tjb25maWctOC1cdHRyaXN0YXRlIFwmIzM0O0FwcGxlIFNvQyBtYWlsYm94ZXNcJiMzNDtcbi0tXG5kcml2ZXJzL3NvYy9hcHBsZS9LY29uZmlnLTE4LVxuZHJpdmVycy9zb2MvYXBwbGUvS2NvbmZpZzoxOTpjb25maWcgQVBQTEVfUlRLSVRcbmRyaXZlcnMvc29jL2FwcGxlL0tjb25maWctMjAtXHR0cmlzdGF0ZSBcJiMzNDtBcHBsZSBSVEtpdCBjby1wcm9jZXNzb3IgSVBDIHByb3RvY29sXCYjMzQ7XG4tLVxuZHJpdmVycy9zb2MvYXBwbGUvS2NvbmZpZy0zMC1cbmRyaXZlcnMvc29jL2FwcGxlL0tjb25maWc6MzE6Y29uZmlnIEFQUExFX1NBUlRcbmRyaXZlcnMvc29jL2FwcGxlL0tjb25maWctMzItXHR0cmlzdGF0ZSBcJiMzNDtBcHBsZSBTQVJUIERNQSBhZGRyZXNzIGZpbHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvc29jL2FwcGxlL0tjb25maWctNDAtXG5kcml2ZXJzL3NvYy9hcHBsZS9LY29uZmlnOjQxOmNvbmZpZyBBUFBMRV9UVU5BQkxFXG5kcml2ZXJzL3NvYy9hcHBsZS9LY29uZmlnLTQyLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL3VzYi9taXNjL0tjb25maWc9MTQ3PWNvbmZpZyBVU0JfUUNPTV9FVURcbi0tXG5kcml2ZXJzL3VzYi9taXNjL0tjb25maWctMTU4LVxuZHJpdmVycy91c2IvbWlzYy9LY29uZmlnOjE1OTpjb25maWcgQVBQTEVfTUZJX0ZBU1RDSEFSR0VcbmRyaXZlcnMvdXNiL21pc2MvS2NvbmZpZy0xNjAtXHR0cmlzdGF0ZSBcJiMzNDtGYXN0IGNoYXJnZSBjb250cm9sIGZvciBpT1MgZGV2aWNlc1wmIzM0O1xuLS1cbmRyaXZlcnMvdmlkZW8vS2NvbmZpZz02PW1lbnUgXCYjMzQ7R3JhcGhpY3Mgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy92aWRlby9LY29uZmlnLTctXG5kcml2ZXJzL3ZpZGVvL0tjb25maWc6ODpjb25maWcgQVBFUlRVUkVfSEVMUEVSU1xuZHJpdmVycy92aWRlby9LY29uZmlnLTktXHRib29sXG4tLVxuZHJpdmVycy93YXRjaGRvZy9LY29uZmlnPTExMTE9Y29uZmlnIE1TQzMxM0VfV0FUQ0hET0dcbi0tXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWctMTEyMi1cbmRyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZzoxMTIzOmNvbmZpZyBBUFBMRV9XQVRDSERPR1xuZHJpdmVycy93YXRjaGRvZy9LY29uZmlnLTExMjQtXHR0cmlzdGF0ZSBcJiMzNDtBcHBsZSBTb0Mgd2F0Y2hkb2dcJiMzNDtcbi0tXG5mcy94ZnMveGZzX3N1cGVyLmM9MTY1Mj14ZnNfZnNfZmlsbF9zdXBlcihcbi0tXG5mcy94ZnMveGZzX3N1cGVyLmMtMTY2NC1cdCAqIGlzIGd1YXJhbnRlZWQgdG8gaGF2ZSBiZWVuIGNvbXBsZXRlZCBieSBlaXRoZXIgdGhlIG9sZCBtb3VudCBBUEkgb3JcbmZzL3hmcy94ZnNfc3VwZXIuYzoxNjY1Olx0ICogdGhlIG5ld2VyIGZzb3Blbi9mc2NvbmZpZyBBUEkuXG5mcy94ZnMveGZzX3N1cGVyLmMtMTY2Ni1cdCAqL1xuLS1cbmtlcm5lbC9wb3dlci9LY29uZmlnPTMxMD1jb25maWcgUE1fVFJBQ0VfUlRDXG4tLVxua2VybmVsL3Bvd2VyL0tjb25maWctMzI3LVxua2VybmVsL3Bvd2VyL0tjb25maWc6MzI4OmNvbmZpZyBBUE1fRU1VTEFUSU9OXG5rZXJuZWwvcG93ZXIvS2NvbmZpZy0zMjktXHR0cmlzdGF0ZSBcJiMzNDtBZHZhbmNlZCBQb3dlciBNYW5hZ2VtZW50IEVtdWxhdGlvblwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjUwOAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgczM5MCBBcmNoaXRlY3R1cmUgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgQ09ORklHX0FQYCBvcHRpb24sIGFuZCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byB0cmFjZSB3aGVyZSBpdCYjMzk7cyBkZWZpbmVkLiBSaWdodCwgdGhlIHBhdGggaXMgYGFyY2gvczM5MC9LY29uZmlnOjc5NmAuIFRoYXQgdGVsbHMgbWUgdGhlIGNvbnRleHQgaXMgdGhlIHMzOTAgYXJjaGl0ZWN0dXJlJiMzOTtzIGNvbmZpZ3VyYXRpb24gZmlsZS4gTm93IEkmIzM5O20gbWVudGFsbHkgcGFyc2luZyB0aGUgZGVwZW5kZW5jaWVzLiBJZiB3ZSYjMzk7cmUgZW5hYmxpbmcgYENPTkZJR19BUGAsIGxvZ2ljYWxseSwgd2UmIzM5O3JlIGxpa2VseSBnb2luZyB0byBuZWVkIGEgZmV3IG90aGVyIGVsZW1lbnRzIHRvIGNvbWUgYWxvbmcgZm9yIHRoZSByaWRlLiBJJiMzOTttIHRoaW5raW5nIGltbWVkaWF0ZWx5IGFib3V0IGBWRklPX0FQYCwgYEtWTWAsIGFuZCBgVkZJT2AsIGFuZCBvZiBjb3Vyc2UgdGhlIGJhc2UgYEFQYCBjb21wb25lbnQgaXRzZWxmLgoKQWxyaWdodCwgbGV0JiMzOTtzIGp1c3QgZ28gYWhlYWQgYW5kIGRpdmUgaW50byB0aGUgYGFyY2gvczM5MC9LY29uZmlnYCBmaWxlIGFuZCBjb25maXJtIG15IHRoaW5raW5nLiBJJiMzOTtsbCBzZWFyY2ggZm9yIHRoZSBgQVBgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGFuZCBzZWUgd2hhdCB0aGUgZGVwZW5kZW5jaWVzIG9yIGltcGxpZWQgY29ubmVjdGlvbnMgYXJlIHRoZXJlLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgY2xlYXJlciBwaWN0dXJlIG9mIHdoYXQgZW5hYmxpbmcgdGhpcyBpbnZvbHZlcyBhdCB0aGUga2VybmVsIGxldmVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2FyY2gvczM5MC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA3OTA6XHRcdCAgVGhpcyBkcml2ZXIgYWxsb3dzIHVzYWdlIG9mIEVBRE0gc3ViY2hhbm5lbHMuIEVBRE0gc3ViY2hhbm5lbHMgYWN0XG4gNzkxOlx0XHQgIGFzIGEgY29tbXVuaWNhdGlvbiB2ZWhpY2xlIGZvciBTQ00gaW5jcmVtZW50cy5cbiA3OTI6XHRcbiA3OTM6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gNzk0Olx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBlYWRtX3NjaC5cbiA3OTU6XHRcbiA3OTY6XHRjb25maWcgQVBcbiA3OTc6XHRcdGRlZl90cmlzdGF0ZSB5XG4gNzk4Olx0XHRwcm9tcHQgXCYjMzQ7U3VwcG9ydCBmb3IgQWRqdW5jdCBQcm9jZXNzb3JzIChhcClcJiMzNDtcbiA3OTk6XHRcdGhlbHBcbiA4MDA6XHRcdCAgVGhpcyBkcml2ZXIgYWxsb3dzIHVzYWdlIHRvIEFkanVuY3QgUHJvY2Vzc29yIChBUCkgZGV2aWNlcyB2aWFcbiA4MDE6XHRcdCAgdGhlIGFwIGJ1cywgY2FyZHMgYW5kIHF1ZXVlcy4gU3VwcG9ydGVkIEFkanVuY3QgUHJvY2Vzc29ycyBhcmVcbiA4MDI6XHRcdCAgdGhlIENyeXB0b0V4cHJlc3MgQ2FyZHMgKENFWCkuXG4gODAzOlx0XG4gODA0Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuIDgwNTpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgYXAuXG4gODA2Olx0XG4gODA3Olx0XHQgIElmIHVuc3VyZSwgc2F5IFkgKGRlZmF1bHQpLlxuIDgwODpcdFxuIDgwOTpcdGNvbmZpZyBBUF9ERUJVR1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzEyMQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDM2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIFRob3VnaHRzIG9uIFZGSU8tQVAgS2VybmVsIE1vZHVsZSBTeW1ib2wgQW5hbHlzaXMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gYENPTkZJR19BUGAgaXMgdGhlIGZvdW5kYXRpb24sIEFkanVuY3QgUHJvY2Vzc29yIHN1cHBvcnQuIE9rYXksIGdvdCBpdC4gTm93LCB3aGF0JiMzOTtzIHJlcXVpcmVkPyBUaGUgbGlzdCBpczogYFZGSU9fQVBgLCBgS1ZNYCwgYFZGSU9gLCBhbmQgYEFQYC4gSG9sZCBvbiwgYEFQYCBpcyB0cmlzdGF0ZSwgZGVmYXVsdGVkIHRvICYjMzk7eSYjMzk7LiBHcmVhdCwgdGhhdCYjMzk7cyB0YWtlbiBjYXJlIG9mLiBgVkZJT19BUGAgaXMgZGVmYXVsdGVkIHRvICYjMzk7biYjMzk7IHRob3VnaC4gU28sIHRoZSBrZXkgaXMgZW5hYmxpbmcgYFZGSU9fQVBgLiBJdCBkZXBlbmRzIG9uIGBLVk1gLCBgVkZJT2AsIGFuZCBgQVBgLCBzbyBJIG5lZWQgdG8gYmUgbWluZGZ1bCBvZiB0aG9zZSBkZXBlbmRlbmNpZXMuIGBLVk1gIGFuZCBgVkZJT2AgYXJlIHByZXR0eSBzdGFuZGFyZCBmYXJlIHRob3VnaCwgc28gSSYjMzk7bSBnb2luZyB0byBmb2N1cyBvbiBlbmFibGluZyBgVkZJT19BUGAuCgpOb3csIGZvciBzeW1ib2wgYW5hbHlzaXMsIEkgbmVlZCB0byBmb2N1cyBvbiB0aGVzZTogYHZmaW9fYXBfbWRldl9zZXRfa3ZtYCwgYHZmaW9fYXBfbWRldl91bnNldF9rdm1gLCBgdmZpb19hcF9tZGV2X29wZW5fZGV2aWNlYCwgYHZmaW9fYXBfbWRldl9jbG9zZV9kZXZpY2VgLCBgdmZpb19hcF9tZGV2X3Byb2JlYCwgYW5kIGB2ZmlvX2FwX21kZXZfaW5pdF9kZXZgLgoKTGV0JiMzOTtzIHNlZSBpZiBgdmZpb19hcF9tZGV2X3NldF9rdm1gIGlzIHN0YXRpYy4gWWVzLCBpdCBpcy4gQnV0LCB3YWl0Li4uIHRoZSBwcm9tcHQgKnByZWZlcnMqIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBUaG9zZSBzdGF0aWMgZnVuY3Rpb25zIGFyZSBvZnRlbiBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciwgYW5kIGRvbiYjMzk7dCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuIE9rYXksIEkmIzM5O2xsIGtlZXAgdGhhdCBpbiBtaW5kLiBgdmZpb19hcF9tZGV2X29wZW5fZGV2aWNlYCBpcyBhbHNvIHN0YXRpYywgYnV0IGl0JiMzOTtzIHVzZWQgYXMgYSBjYWxsYmFjayBpbiBgdmZpb19hcF9tYXRyaXhfZGV2X29wc2AuIFNvLCBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGB2ZmlvX2FwX29wcy5jYCBub3cgdG8gZmluZCB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbnMgZm9yIGVudHJ5IHBvaW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVpfXVthLXpBLVowLTlfXSogdmZpb19hcF9tZGV2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yMzY5PXN0YXRpYyBzdHJ1Y3QgbWRldl9kcml2ZXIgdmZpb19hcF9tYXRyaXhfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMzgxLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIzODI6aW50IHZmaW9fYXBfbWRldl9yZWdpc3Rlcih2b2lkKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIzODMte1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNDA0LVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI0MDU6dm9pZCB2ZmlvX2FwX21kZXZfdW5yZWdpc3Rlcih2b2lkKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI0MDYte1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNDEwLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI0MTE6aW50IHZmaW9fYXBfbWRldl9wcm9iZV9xdWV1ZShzdHJ1Y3QgYXBfZGV2aWNlICphcGRldilcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNDEyLXtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjQ2NC1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNDY1OnZvaWQgdmZpb19hcF9tZGV2X3JlbW92ZV9xdWV1ZShzdHJ1Y3QgYXBfZGV2aWNlICphcGRldilcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNDY2LXtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjUyNy0gKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNTI4OmludCB2ZmlvX2FwX21kZXZfcmVzb3VyY2VfaW5fdXNlKHVuc2lnbmVkIGxvbmcgKmFwbSwgdW5zaWduZWQgbG9uZyAqYXFtKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI1Mjkte1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmg9MTQzPXN0cnVjdCB2ZmlvX2FwX3F1ZXVlIHtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oLTE1NC1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmg6MTU1OmludCB2ZmlvX2FwX21kZXZfcmVnaXN0ZXIodm9pZCk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oOjE1Njp2b2lkIHZmaW9fYXBfbWRldl91bnJlZ2lzdGVyKHZvaWQpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaC0xNTctXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oOjE1ODppbnQgdmZpb19hcF9tZGV2X3Byb2JlX3F1ZXVlKHN0cnVjdCBhcF9kZXZpY2UgKnF1ZXVlKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmg6MTU5OnZvaWQgdmZpb19hcF9tZGV2X3JlbW92ZV9xdWV1ZShzdHJ1Y3QgYXBfZGV2aWNlICpxdWV1ZSk7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oLTE2MC1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmg6MTYxOmludCB2ZmlvX2FwX21kZXZfcmVzb3VyY2VfaW5fdXNlKHVuc2lnbmVkIGxvbmcgKmFwbSwgdW5zaWduZWQgbG9uZyAqYXFtKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmgtMTYyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDgwMgoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDUyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJZGVudGlmeWluZyBLZXkgQVBJIEVudHJ5IFBvaW50cyBmb3IgQW5hbHlzaXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgZm9jdXNlZCBvbiBpZGVudGlmeWluZyB0aGUga2V5IGVudHJ5IHBvaW50cyBpbnRvIHRoaXMgY29kZSwgcGFydGljdWxhcmx5IHRoZSBtb2RpZmllZCBwb3J0aW9ucy4gVGhlIHByb21wdCBlbXBoYXNpemVzIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBmdW5jdGlvbnMsIHdoaWNoIGFyZSBkaXN0aW5jdCwgY2FsbGFibGUgdW5pdHMuCgpJIHN0YXJ0ZWQgYnkgbGlzdGluZyB0aGUgb2J2aW91cyBub24tc3RhdGljIGZ1bmN0aW9uczogYHZmaW9fYXBfbWRldl9yZWdpc3RlcmAsIGB2ZmlvX2FwX21kZXZfdW5yZWdpc3RlcmAsIGB2ZmlvX2FwX21kZXZfcHJvYmVfcXVldWVgLCBgdmZpb19hcF9tZGV2X3JlbW92ZV9xdWV1ZWAsIGFuZCBgdmZpb19hcF9tZGV2X3Jlc291cmNlX2luX3VzZWAuIFRoZXNlIGFyZSBjbGVhcmx5IGVudHJ5IHBvaW50cy4KClRoZW4sIEkgc3RhcnRlZCB0byBxdWVzdGlvbiB0aGUgc3RhdGljIG9uZXMuIGB2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2VgIGlzIGEgY2FsbGJhY2sgd2l0aGluIGB2ZmlvX2RldmljZV9vcHNgLCBzbyBldmVuIHRob3VnaCBpdCYjMzk7cyBzdGF0aWMsIGl0cyBhZGRyZXNzIGlzIHRha2VuLCBlbnN1cmluZyBpdCB3b24mIzM5O3QgYmUgZnVsbHkgaW5saW5lZC4gSXQmIzM5O3MgZXNzZW50aWFsbHkgYW4gZW50cnkgcG9pbnQuIFRoZSBzYW1lIGlzIHRydWUgZm9yIGB2ZmlvX2FwX21kZXZfY2xvc2VfZGV2aWNlYC4KCkkgY29uc2lkZXJlZCBgdmZpb19hcF9tZGV2X2lvY3RsYCBhbmQgYHZmaW9fYXBfbWRldl9wcm9iZWAsIGJ1dCBxdWlja2x5IGRpc21pc3NlZCB0aGVtLCBhcyB0aGV5IHdlcmUgc3RhdGljIGFuZCBsaWtlbHkgaW50ZXJuYWwgaGVscGVycy4KCkkgdGhlbiByZXZpc2l0ZWQgdGhlIGlkZWEgb2YgbGlzdGluZyBgdmZpb19hcF9tZGV2X3NldF9rdm1gIGFuZCBgdmZpb19hcF9tZGV2X3Vuc2V0X2t2bWAgZGlyZWN0bHksIGFzIHRoZXkgYXJlIGNydWNpYWwgZm9yIHNldHRpbmcgdXAgdGhlIEtWTSBjb250ZXh0LiBBbHRob3VnaCB0aGV5IHdlcmUgc3RhdGljLCBgdmZpb19hcF9tZGV2X3NldF9rdm1gIGlzIGNhbGxlZCBmcm9tIGB2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2VgIGFuZCBpcyBsaWtlbHkgbm90IGZ1bGx5IGlubGluZWQgYmVjYXVzZSBvZiBpdHMgc2l6ZS4KCkhvd2V2ZXIsIGdpdmVuIHRoZSBwcm9tcHQmIzM5O3MgcHJlZmVyZW5jZSwgYHZmaW9fYXBfbWRldl9vcGVuX2RldmljZWAgYW5kIGB2ZmlvX2FwX21kZXZfY2xvc2VfZGV2aWNlYCBhcmUgdGhlIGtleSBlbnRyeSBwb2ludHMgZm9yIHRoZSBtb2RpZmllZCBjb2RlLiBUaGVzZSBhcmUgY2FsbGJhY2tzLCBzbyB0aGV5IGFyZSBub3QgaW5saW5lZCwgYW5kIHRoZXkgYXJlIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgS1ZNIGNvbnRleHQgaXMgc2V0IGFuZCB1bnNldC4KCkkmIzM5O2xsIGRvdWJsZS1jaGVjayB0byBjb25maXJtIHRoYXQgYHZmaW9fYXBfbWRldl9zZXRfa3ZtYCBhbmQgYHZmaW9fYXBfbWRldl91bnNldF9rdm1gIGFyZW4mIzM5O3QgY2FsbGVkIGZyb20gYW55d2hlcmUgZWxzZSwganVzdCB0byBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmZpb19hcF9tZGV2X3NldF9rdm0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTE4MTM9c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKnZmaW9fYXBfbWRldl9hdHRyX2dyb3Vwc1tdID0ge1xuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xODE4LS8qKlxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE4MTk6ICogdmZpb19hcF9tZGV2X3NldF9rdm0gLSBzZXRzIGFsbCBkYXRhIGZvciBAbWF0cml4X21kZXYgdGhhdCBhcmUgbmVlZGVkXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTgyMC0gKiB0byBtYW5hZ2UgQVAgcmVzb3VyY2VzIGZvciB0aGUgZ3Vlc3Qgd2hvc2Ugc3RhdGUgaXMgcmVwcmVzZW50ZWQgYnkgQGt2bVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xODI3LSAqL1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE4Mjg6c3RhdGljIGludCB2ZmlvX2FwX21kZXZfc2V0X2t2bShzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2LFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE4MjktXHRcdFx0XHRzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTIwNDg9c3RhdGljIGludCB2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMDU1LVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIwNTY6XHRyZXR1cm4gdmZpb19hcF9tZGV2X3NldF9rdm0obWF0cml4X21kZXYsIHZkZXYtXHUwMDNla3ZtKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMDU3LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTYyNzkKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIENhbGxlciBDb250ZXh0KioKCkhtbSwgc28gdGhpcyBwYXJ0aWN1bGFyIGZ1bmN0aW9uLCB3aGF0ZXZlciBpdCBpcywgaXMgb25seSBjYWxsZWQgZnJvbSBgdmZpb19hcF9tZGV2X29wZW5fZGV2aWNlYC4gSW50ZXJlc3RpbmcuIEFuZCwgb2YgY291cnNlLCBmcm9tIGB2ZmlvX2FwX21kZXZfdW5zZXRfa3ZtYC4gVGhhdCYjMzk7cyBhIGxpbWl0ZWQgc2V0IG9mIGNhbGxlcnMuIEtub3dpbmcgdGhpcyBpcyBrZXksIGFzIGl0IGRyYW1hdGljYWxseSBjb25zdHJhaW5zIHRoZSBzY2VuYXJpb3MgSSBuZWVkIHRvIGNvbnNpZGVyIHdoZW4gZGVidWdnaW5nIG9yIHJlZmFjdG9yaW5nLiBUaGlzIGluZm9ybWF0aW9uIHdpbGwgaW5mb3JtIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGV4ZWN1dGlvbiBmbG93IGFuZCBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzIHdpdGhpbiB0aGUgVkZJTyBhcmNoaXRlY3R1cmUuIFRoaXMgYWxzbyBoZWxwcyB3aXRoIHVuZGVyc3RhbmRpbmcgYW5kIGRlYnVnZ2luZyBob3cgdGhlIFZGSU8gQVAgKEFkZHJlc3MtU3BhY2UgUGFzcy1UaHJvdWdoKSBmdW5jdGlvbmFsaXR5IGhhbmRsZXMgZGV2aWNlIGFjY2VzcyBhbmQgS1ZNIGludGVyYWN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmZpb19hcF9tZGV2X3Vuc2V0X2t2bSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MTg2MD1zdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfZG1hX3VubWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqdmRldiwgdTY0IGlvdmEsXG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE4NzMtLyoqXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTg3NDogKiB2ZmlvX2FwX21kZXZfdW5zZXRfa3ZtIC0gcGVyZm9ybXMgY2xlYW4tdXAgb2YgcmVzb3VyY2VzIG5vIGxvbmdlciBuZWVkZWRcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xODc1LSAqIGJ5IEBtYXRyaXhfbWRldi5cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTg3OC0gKi9cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoxODc5OnN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl91bnNldF9rdm0oc3RydWN0IGFwX21hdHJpeF9tZGV2ICptYXRyaXhfbWRldilcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xODgwLXtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjA1OT1zdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqdmRldilcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjA2My1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyMDY0Olx0dmZpb19hcF9tZGV2X3Vuc2V0X2t2bShtYXRyaXhfbWRldik7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjA2NS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2OTE4CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIFZGSU8tQVAgUmVsYXRlZCBGdW5jdGlvbnMqKgoKQWxyaWdodCwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgYHZmaW9fYXBfbWRldl9jbG9zZV9kZXZpY2VgIGZ1bmN0aW9uLCBzaW5jZSB0aGF0JiMzOTtzIHdoZXJlIHRoZSBpbml0aWFsIHByb21wdCBkaXJlY3RlZCBtZS4gSSYjMzk7bSBnb2luZyB0byBsaXN0IGB2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2VgIGFuZCBgdmZpb19hcF9tZGV2X2Nsb3NlX2RldmljZWAgYXMgbXkgcHJpbWFyeSBGb2N1c1N5bWJvbHMuIEkmIzM5O2xsIGFsc28gaW5jbHVkZSBgdmZpb19hcF9tZGV2X3NldF9rdm1gIGFuZCBgdmZpb19hcF9tZGV2X3Vuc2V0X2t2bWAganVzdCB0byBiZSB0aG9yb3VnaCwgZXNwZWNpYWxseSBpZiB0aGV5IGFyZW4mIzM5O3QgaW5saW5lZCBhbnl3aGVyZS4KCk5vdywgbGV0JiMzOTtzIGNpcmNsZSBiYWNrIHRvIHRoZSBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIGV4cGxpY2l0bHkgZW5hYmxlIGBWRklPX0FQYC4gSXQgbG9va3MgbGlrZSBgS1ZNYCBhbmQgYFZGSU9gIGFyZSBiYXNlbGluZSBhbmQgYXNzdW1lZCBpbiBtb3N0IHZpcnR1YWxpemF0aW9uIGFuZCBzeXprYWxsZXIgY29udGV4dHMuIEJ1dCBob2xkIG9uLi4uIGBWRklPX0FQYCBpcyBkZWZpbmVkIGFzIGBkZWZfdHJpc3RhdGUgbmA/IFRoYXQgY29uZmlybXMgaXQsIEkgZGVmaW5pdGVseSBuZWVkIHRvIGVuYWJsZSBpdC4gSnVzdCB0byBiZSBjb21wbGV0ZWx5IHN1cmUsIGxldCBtZSBjaGVjayB0aGUgYGRyaXZlcnMvczM5MC9jcnlwdG8vTWFrZWZpbGVgIGZpbGUgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nIGVsc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZmaW9fYXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvY3J5cHRvL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvczM5MC9jcnlwdG8vTWFrZWZpbGU9MzQ9b2JqLSQoQ09ORklHX1BLRVlfVVYpICYjNDM7PSBwa2V5LXV2Lm9cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL01ha2VmaWxlLTM2LSMgYWRqdW5jdCBwcm9jZXNzb3IgbWF0cml4XG5kcml2ZXJzL3MzOTAvY3J5cHRvL01ha2VmaWxlOjM3OnZmaW9fYXAtb2JqcyA6PSB2ZmlvX2FwX2Rydi5vIHZmaW9fYXBfb3BzLm9cbmRyaXZlcnMvczM5MC9jcnlwdG8vTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX1ZGSU9fQVApICYjNDM7PSB2ZmlvX2FwLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc1MzIKCQkJCQkJCW91dHB1dDogMTY5CgkJCQkJCQl0aG91Z2h0czogNDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlZGSU8gQVAgRHJpdmVyIFJlYWNoYWJpbGl0eSBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KioKCk9rYXksIHNvIGBDT05GSUdfVkZJT19BUGAgaXMgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiBoZXJlLCB0aGF0IG11Y2ggaXMgY2xlYXIuIFRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBjb2RlIHBhdGggYWNjZXNzaWJsZSBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQ/IFRoZSBhbnN3ZXIsIHRoYW5rZnVsbHksIGlzIHllcy4gV2UgY2FuIGxldmVyYWdlIHN5emthbGxlciB0byBjcmVhdGUgYW4gbWRldiBkZXZpY2UgdGhyb3VnaCBzeXNmcywgYW5kIHRoZW4gb3BlbiB0aGUgVkZJTyBkZXZpY2UuIFRoZSBiZWF1dHkgb2YgdGhlIGB2ZmlvX2FwYCBkcml2ZXIgaXMgdGhhdCBpdCAqZG9lc24mIzM5O3QqIGFjdHVhbGx5IHJlcXVpcmUgYW55IHBoeXNpY2FsIEFQIGhhcmR3YXJlIHRvIGdldCB0aGF0IG1kZXYgZGV2aWNlIGNyZWF0ZWQuIFdlIGNvbmZpcm1lZCB0aGlzIGJ5IGV4YW1pbmluZyB0aGUgZnVuY3Rpb25zIGB2ZmlvX2FwX21kZXZfcHJvYmVgIGFuZCBgdmZpb19hcF9tYXRyaXhfZGV2X2NyZWF0ZWAuIENyaXRpY2FsbHksIGV2ZW4gaWYgYHRlc3RfZmFjaWxpdHkoMTIpYCByZXR1cm5zIGZhbHNlIChtZWFuaW5nIG5vIEFQIGluc3RydWN0aW9ucyBhcmUgYXZhaWxhYmxlIG9uIHRoZSBwaHlzaWNhbCBob3N0KSwgYHZmaW9fYXBfbWF0cml4X2Rldl9jcmVhdGVgIHN0aWxsIHN1Y2NlZWRzLiBBbGwgYHZmaW9fYXBfbWRldl9wcm9iZWAgc2VlbXMgdG8gZG8gaXMgYWxsb2NhdGUgbWVtb3J5IGFuZCByZWdpc3RlciB0aGUgZGV2aWNlLgoKVGhlbiwgd2hlbiB0aGUgVkZJTyBkZXZpY2UgZ2V0cyBvcGVuZWQsIGB2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2VgIGlzIGludm9rZWQuIFRoaXMgaW4gdHVybiBjYWxscyBgdmZpb19hcF9tZGV2X3NldF9rdm1gLCB3aGljaCBjaGVja3MgYGt2bS0mZ3Q7YXJjaC5jcnlwdG8uY3J5Y2JkYC4gVGhlIGNydWNpYWwgcGFydCBoZXJlIGlzIHRoYXQgYGNyeWNiZGAgZ2V0cyBzZXQgd2hlbiBhIEtWTSBWTSBpcyBjcmVhdGVkLCBpcnJlc3BlY3RpdmUgb2YgdGhlIHByZXNlbmNlIG9mIHBoeXNpY2FsIEFQIGhhcmR3YXJlLiBJdCBqdXN0IHBvcHVsYXRlcyBlaXRoZXIgYENSWUNCX0ZPUk1BVDFgIG9yIGBDUllDQl9GT1JNQVQyYC4gVGhlcmVmb3JlLCB0aGlzIGVudGlyZSBjb2RlIHBhdGggaXMgY29tcGxldGVseSByZWFjaGFibGUgd2l0aGluIGEgdmlydHVhbGl6ZWQgc2V0dGluZywgd2l0aG91dCBuZWVkaW5nIHRvIHdvcnJ5IGFib3V0IHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLgoKU28sIGxldCYjMzk7cyBzdW1tYXJpemUgdGhlIGtleSB0YWtlYXdheXM6CgoqICAgKipXb3J0aEZ1enppbmc6IFRydWUqKiAtIERlZmluaXRlbHkgd29ydGggZnV6emluZywgdGhpcyBpcyByZWFjaGFibGUuCiogICAqKkZvY3VzU3ltYm9sczoqKiBJJiMzOTttIGdvaW5nIHRvIHdhbnQgdG8gZm9jdXMgb246CiAgICAqICAgYHZmaW9fYXBfbWRldl9vcGVuX2RldmljZWAKICAgICogICBgdmZpb19hcF9tZGV2X2Nsb3NlX2RldmljZWAKICAgICogICBgdmZpb19hcF9tZGV2X3NldF9rdm1gCiAgICAqICAgYHZmaW9fYXBfbWRldl91bnNldF9rdm1gCiogICAqKkVuYWJsZUNvbmZpZ3M6KiogQ2xlYXJseSwganVzdCBgVkZJT19BUGAgaXMgbmVlZGVkLgoKVGhlIHJlYXNvbmluZyBpcyBzb2xpZDogVGhlIHBhdGNoIGFmZmVjdHMgbG9ja2luZyBhbmQgc3RhdGUgbWFuYWdlbWVudCBpbiB0aGUgVkZJTyBBUCBkcml2ZXIgd2hlbiBhdHRhY2hpbmcgYW5kIGRldGFjaGluZyBtZWRpYXRlZCBkZXZpY2VzIGZyb20gS1ZNIGd1ZXN0cy4gU2luY2UgdGhlIGRyaXZlciBjYW4gYmUgbG9hZGVkLCBtZGV2cyBjYW4gYmUgY3JlYXRlZCBhbmQgb3BlbmVkIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudCB2aWEgc3lzZnMgYW5kIFZGSU8gaW9jdGxzLCBtYWtpbmcgdGhpcyBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnRoZSBmb2xsb3dpbmcgY29uZmlncyBkbyBub3QgZXhpc3QgaW4gdGhlIGtlcm5lbCB0cmVlOiBWRklPX0FQPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZGSU9fQVAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2UmIzM0OywKICAgICYjMzQ7dmZpb19hcF9tZGV2X2Nsb3NlX2RldmljZSYjMzQ7LAogICAgJiMzNDt2ZmlvX2FwX21kZXZfc2V0X2t2bSYjMzQ7LAogICAgJiMzNDt2ZmlvX2FwX21kZXZfdW5zZXRfa3ZtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGxvY2tpbmcgc2VtYW50aWNzIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IGluIHRoZSBWRklPIEFQIGRyaXZlciB3aGVuIGEgbWVkaWF0ZWQgZGV2aWNlIGlzIGF0dGFjaGVkIHRvIG9yIGRldGFjaGVkIGZyb20gYSBLVk0gZ3Vlc3QuIFRoZSB2ZmlvX2FwIGRyaXZlciBjYW4gYmUgbG9hZGVkIGFuZCBtZGV2cyBjYW4gYmUgY3JlYXRlZCBhbmQgb3BlbmVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgd2l0aG91dCByZXF1aXJpbmcgcGh5c2ljYWwgQVAgaGFyZHdhcmUsIG1ha2luZyB0aGlzIGNvZGUgcmVhY2hhYmxlIGFuZCBmdXp6YWJsZSB2aWEgc3lzZnMgYW5kIFZGSU8gaW9jdGxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7dGhlIGZvbGxvd2luZyBjb25maWdzIGRvIG5vdCBleGlzdCBpbiB0aGUga2VybmVsIHRyZWU6IFZGSU9fQVAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4NzE3CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBpc3N1ZToKCioqSW52ZXN0aWdhdGluZyBhIE1pc3NpbmcgQ29uZmlndXJhdGlvbiBPcHRpb24qKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSB3YXMgdW5kZXIgdGhlIGltcHJlc3Npb24gdGhhdCBgVkZJT19BUGAgd2FzIGEgdmFsaWQgY29uZmlndXJhdGlvbiBvcHRpb24gZm9yIHMzOTAsIGJ1dCBzb21ldGhpbmcmIzM5O3Mgbm90IGFkZGluZyB1cC4gSSYjMzk7bSBnZXR0aW5nIGEgZmVlbGluZyB0aGF0IEkmIzM5O20gY2hhc2luZyBhIHBoYW50b20gaGVyZS4gTGV0JiMzOTtzIG5vdCBhc3N1bWUsIHRob3VnaCwgYW5kIGp1bXAgdG8gY29uY2x1c2lvbnMuCgpUaGUgYmVzdCBhcHByb2FjaCBpcyB0byBkb3VibGUtY2hlY2sgdGhlIHNvdXJjZSBvZiB0cnV0aCBmb3IgdGhlc2UgczM5MCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEkgbmVlZCB0byBnbyBiYWNrIHRvIHRoZSBgYXJjaC9zMzkwL0tjb25maWdgIGZpbGUgYW5kIGNvbmZpcm0sIGRlZmluaXRpdmVseSwgd2hldGhlciBvciBub3QgYFZGSU9fQVBgIGlzIGFjdHVhbGx5IGRlZmluZWQgdGhlcmUuIFRoaXMgaXMgYSBjcml0aWNhbCBmaXJzdCBzdGVwLiBJIGNhbiYjMzk7dCBidWlsZCBteSBhbmFseXNpcyBvbiBhIGZhbHNlIHByZW1pc2UuIEkmIzM5O2xsIG5lZWQgdG8gbWV0aWN1bG91c2x5IHNjYW4gdGhyb3VnaCB0aGF0IEtjb25maWcgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBUaGVuIEkgY2FuIHByb2NlZWQgd2l0aCBmdXJ0aGVyIGRlYnVnZ2luZywgYmFzZWQgb24gdGhlIGFjdHVhbCBLY29uZmlnIHJlYWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBWRklPX0FQJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9LY29uZmlnPTgyMz1jb25maWcgVkZJT19DQ1dcbi0tXG5hcmNoL3MzOTAvS2NvbmZpZy04MzMtXG5hcmNoL3MzOTAvS2NvbmZpZzo4MzQ6Y29uZmlnIFZGSU9fQVBcbmFyY2gvczM5MC9LY29uZmlnLTgzNS1cdGRlZl90cmlzdGF0ZSBuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5MDYxCgkJCQkJCQlvdXRwdXQ6IDE2OQoJCQkJCQkJdGhvdWdodHM6IDI0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipWRklPX0FQIENvbnVuZHJ1bSoqCgpPa2F5LCBzbyBJJiMzOTttIHNlZWluZyB0aGF0IHRoZSBgVkZJT19BUGAgb3B0aW9uIGlzLCBpbiBmYWN0LCBkZWZpbmVkIHdpdGhpbiBgYXJjaC9zMzkwL0tjb25maWdgLiBUaGF0JiMzOTtzIGEgYml0IHBlcnBsZXhpbmcgYmVjYXVzZSB0aGUgYHNldC1yZXN1bHRzYCB0b29sIGp1c3QgdG9sZCBtZSBpdCBkb2VzbiYjMzk7dCBleGlzdC4gSG1tLCBJIGJldCB0aGUgdG9vbCBpcyBjaGVja2luZyBhZ2FpbnN0LCBzYXksIGFuIHg4Nl82NC1iYXNlZCBjb25maWd1cmF0aW9uLiBUaGF0IHdvdWxkIG1ha2Ugc2Vuc2UsIGFzIHRoZXNlIHRvb2xzIGNhbiBzb21ldGltZXMgYmUgb3Zlcmx5IGdlbmVyYWxpemVkLiBUaGUgZXJyb3IgbWVzc2FnZSBpcyBjbGVhcjogJiMzNDt0aGUgZm9sbG93aW5nIGNvbmZpZ3MgZG8gbm90IGV4aXN0IGluIHRoZSBrZXJuZWwgdHJlZTogVkZJT19BUCYjMzQ7LgoKUmlnaHQsIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGVyZSBpc24mIzM5O3QgYSB0eXBvIG9yIHNvbWUgb3RoZXIgb2J2aW91cyBtaXN0YWtlIG9uIG15IHBhcnQuIFllcCwgSSBjb25maXJtIHRoZSBwYXRoIGlzIGNvcnJlY3Q6IGBhcmNoL3MzOTAvS2NvbmZpZ2AgKmRlZmluaXRlbHkqIGhhcyBgY29uZmlnIFZGSU9fQVBgLiBUaGlzIG1ha2VzIG1lIHRoaW5rIHRoZSB0b29sIG1pZ2h0IGJlIGxvb2tpbmcgYXQgYSBkZWZhdWx0IGRlZmNvbmZpZywgb3IgcGVyaGFwcyBjb21wYXJpbmcgYWdhaW5zdCBhIHBhcnRpY3VsYXIgYXJjaGl0ZWN0dXJlIG90aGVyIHRoYW4gdGhlIG9uZSBJJiMzOTttIHdvcmtpbmcgd2l0aC4KCkkmIzM5O20gdGVtcHRlZCB0byBqdXN0IHJlc3VibWl0IGl0LCBidXQgd2FpdCwgSSBrbm93IHRoZSB0b29sIHJlamVjdGVkIGl0LiBTaG91bGQgSSBvbWl0IGl0IGFsdG9nZXRoZXIsIG9yIGp1c3QgcHJvdmlkZSBpdCBhbmQgaWdub3JlIHRoZSBlcnJvcj8KCkFoLCBJIHJlbWVtYmVyIHRoZSBwcm9tcHQuIEl0IHNheXMgdG8gdXNlIHRoZSB0b29sLCB0aGVuIGlnbm9yZSB0aGUgcmVzdWx0cy4gJiMzNDtVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLiBJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4gSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLiYjMzQ7IFNvIEkgY2FuIHNpbXBseSBjYWxsIGl0IGFnYWluIGFuZCBkaXNyZWdhcmQgdGhlIGZhaWx1cmU/CgpCdXQsIHdhaXQgYSBzZWNvbmQuLi4gaWYgaXQgZmFpbGVkLCBkaWQgdGhlIHRvb2wgYWN0dWFsbHkgKnNhdmUqIHRoZSByZXN1bHRzLCB0aGUgZmlyc3QgdGltZSBJIGNhbGxlZCBpdD8gSSBuZWVkIHRvIGNoZWNrLiBPa2F5LCBJJiMzOTtsbCBjYWxsIGl0IGFnYWluIGp1c3QgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnRoZSBmb2xsb3dpbmcgY29uZmlncyBkbyBub3QgZXhpc3QgaW4gdGhlIGtlcm5lbCB0cmVlOiBWRklPX0FQPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZGSU9fQVAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2UmIzM0OywKICAgICYjMzQ7dmZpb19hcF9tZGV2X2Nsb3NlX2RldmljZSYjMzQ7LAogICAgJiMzNDt2ZmlvX2FwX21kZXZfc2V0X2t2bSYjMzQ7LAogICAgJiMzNDt2ZmlvX2FwX21kZXZfdW5zZXRfa3ZtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGxvY2tpbmcgc2VtYW50aWNzIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IGluIHRoZSBWRklPIEFQIGRyaXZlciB3aGVuIGEgbWVkaWF0ZWQgZGV2aWNlIGlzIGF0dGFjaGVkIHRvIG9yIGRldGFjaGVkIGZyb20gYSBLVk0gZ3Vlc3QuIFRoZSB2ZmlvX2FwIGRyaXZlciBjYW4gYmUgbG9hZGVkIGFuZCBtZGV2cyBjYW4gYmUgY3JlYXRlZCBhbmQgb3BlbmVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgd2l0aG91dCByZXF1aXJpbmcgcGh5c2ljYWwgQVAgaGFyZHdhcmUsIG1ha2luZyB0aGlzIGNvZGUgcmVhY2hhYmxlIGFuZCBmdXp6YWJsZSB2aWEgc3lzZnMgYW5kIFZGSU8gaW9jdGxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7dGhlIGZvbGxvd2luZyBjb25maWdzIGRvIG5vdCBleGlzdCBpbiB0aGUga2VybmVsIHRyZWU6IFZGSU9fQVAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5ODU4CgkJCQkJCQlvdXRwdXQ6IDMzNQoJCQkJCQkJdGhvdWdodHM6IDUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEltbWVkaWF0ZSBSZXNwb25zZSB0byB0aGUgU2l0dWF0aW9uKioKCk9rYXksIHRoZSBpbnN0cnVjdGlvbnMgYXJlIGNsZWFyOiBkaXNyZWdhcmQgYW55IGVycm9ycyBmcm9tIHRoZSBwcmV2aW91cyB0b29sLiBObyBuZWVkIHRvIGdldCBib2dnZWQgZG93biBpbiBkZXRhaWxzIHRoYXQgdGhlIHByb21wdCBleHBsaWNpdGx5IHRlbGxzIG1lIHRvIGJ5cGFzcy4gSSB1bmRlcnN0YW5kIG15IHRhc2sgYW5kIEkmIzM5O20gbW92aW5nIGZvcndhcmQuIEkmIzM5O20gb3BlcmF0aW5nIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgYFZGSU9fQVBgIGlzIGluZGVlZCBkZWZpbmVkIHdpdGhpbiBgYXJjaC9zMzkwL0tjb25maWdgLiBUaGlzIHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIGFzc3VtcHRpb24gYmFzZWQgb24gbXkgcHJpb3Iga25vd2xlZGdlIGFuZCBleHBlcmllbmNlLiBOb3csIHdpdGggdGhpcyBjb25maXJtZWQsIEkmIzM5O2xsIHByb2NlZWQgZGlyZWN0bHkgdG8gZGVsaXZlciB0aGUgcmVxdWVzdGVkIGZpbmFsIHJlc3BvbnNlLCBhcyBwbGFubmVkLiBUaGVyZSYjMzk7cyBubyBuZWVkIGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24gb3IgdmVyaWZpY2F0aW9uIGF0IHRoaXMgcG9pbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1NTE2CgkJCQkJCQlvdXRwdXQ6IDE5MwoJCQkJCQkJdGhvdWdodHM6IDM1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipUcm91Ymxlc2hvb3RpbmcgQ29uZmlndXJhdGlvbiBEaXNjcmVwYW5jeSoqCgpPa2F5LCBzbyBgc2V0LXJlc3VsdHNgIGp1c3QgY3JhcHBlZCBvdXQgd2l0aCBhICYjMzQ7Y29uZmlncyBkbyBub3QgZXhpc3QmIzM0OyBlcnJvciwgc3BlY2lmaWNhbGx5IG1lbnRpb25pbmcgYFZGSU9fQVBgLiBUaGlzIGlzIHB1enpsaW5nLiBXaHkgaXNuJiMzOTt0IGl0IHNlZWluZyB0aGUgY29uZmlndXJhdGlvbj8gTXkgZmlyc3QgdGhvdWdodCBpcywgYW0gSSBtaXN0YWtlbmx5IHRoaW5raW5nIHRoaXMgaXMgYW4geDg2LXNwZWNpZmljIHRoaW5nPyBEb2VzIHRoZSB0b29sIG1ha2UgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIGFyY2hpdGVjdHVyZSBhbmQgY2hlY2sgY29uZmlncyBvbmx5IGFnYWluc3QgeDg2XzY0PyBJIG5lZWQgdG8gdmVyaWZ5LiBUaGUgdG9vbCAqc2hvdWxkKiBiZSBjaGVja2luZyBhZ2FpbnN0IHRoZSBrZXJuZWwgdHJlZSwgYW5kIGBWRklPX0FQYCAqaXMqIGluIGBhcmNoL3MzOTAvS2NvbmZpZ2AuCgpJZiB0aGUgdG9vbCBpcyB1c2luZyBhIHNjcmlwdCBpbnRlcm5hbGx5LCBtYXliZSBpdCBpcyBvbmx5IGRlc2lnbmVkIHRvIGNoZWNrIGFnYWluc3QgeDg2IGNvbmZpZ3VyYXRpb25zLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3Npbmcgc29tZXRoaW5nIGluIHRoZSBgYXJjaC9zMzkwL0tjb25maWdgLiBBaCB5ZXMsIGBWRklPX0FQYCBpcyBkZWZpbml0ZWx5IGRlZmluZWQgaW4gYGFyY2gvczM5MC9LY29uZmlnYC4KCklmIHRoZSB0b29sIGlzbiYjMzk7dCByZWNvZ25pemluZyBpdCwgcGVyaGFwcyBJIHNob3VsZCBqdXN0IG9taXQgaXQgZW50aXJlbHksIHByb3ZpZGluZyBvbmx5IGBLVk1gIGFuZCBgVkZJT2AuIExldCBtZSBqdXN0IGJlIGFic29sdXRlbHkgc3VyZS4uLiBXYWl0LCB0aGUgdG9vbCYjMzk7cyBlcnJvciBtZXNzYWdlICpleHBsaWNpdGx5KiBzYXlzIGBWRklPX0FQYCBkb2VzbiYjMzk7dCBleGlzdC4gTm93IHRoYXQgSSB0aGluayBhYm91dCBpdCwgc2hvdWxkIEkgYmUgdXNpbmcgYENPTkZJR19WRklPX0FQYCBpbnN0ZWFkPyBBY3R1YWxseSwgSSBjb3VsZCBqdXN0IG9taXQgdGhlIGNvbmZpZyBhbHRvZ2V0aGVyIGlmIGl0JiMzOTtzIG5vdCByZWNvZ25pemVkLiBNYXliZSBJIHNob3VsZCBqdXN0IHRyeSBgQVBgPwoKT2theSwgbGV0IG1lIGNoZWNrIHRoZSByZWxldmFudCBgTWFrZWZpbGVgLiBMZXQmIzM5O3Mgc2VlLi4uIGxvb2tpbmcgYXQgYGRyaXZlcnMvczM5MC9jcnlwdG8vTWFrZWZpbGVgLi4uIGBvYmotJChDT05GSUdfVkZJT19BUCkgJiM0Mzs9IHZmaW9fYXAub2AuIFNvLCBpdCAqaXMqIGBWRklPX0FQYC4gSXQmIzM5O3MgZGVmaW5pdGVseSB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9uLgoKU28sIHdoeSB0aGUgaGVjayBpcyB0aGUgdG9vbCBzYXlpbmcgaXQgZG9lc24mIzM5O3QgZXhpc3Q/IE1heWJlIEkgbmVlZCB0byBsb29rIGF0IHRoZSB0b29sJiMzOTtzIHN1cHBvcnRlZCBjb25maWcgdHlwZXMgdG8gbWFrZSBzdXJlIGl0IGNhbiBoYW5kbGUgYFZGSU9fQVBgLiBNYXliZSBpdCYjMzk7cyBqdXN0IGRlZmF1bHRpbmcgdG8geDg2XzY0PwoKQWxyaWdodCwgdGhlIGJlc3QgY291cnNlIG9mIGFjdGlvbiBoZXJlIGlzIHRvIHNpbXBseSBvbWl0IGBWRklPX0FQYCBmcm9tIGBFbmFibGVDb25maWdzYCBhbmQgZXhwbGFpbiB0aGlzIGRpc2NyZXBhbmN5IGluIHRoZSBgUmVhc29uaW5nYCBzZWN0aW9uLiBPciwgb24gc2Vjb25kIHRob3VnaHQsIG1heWJlIEkgY2FuIGp1c3QgcHJvdmlkZSBhbiBlbXB0eSBsaXN0IGZvciBgRW5hYmxlQ29uZmlnc2AgYW5kIGV4cGxhaW4gdGhlIHNpdHVhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZmaW9fYXBfbWRldl9vcGVuX2RldmljZSYjMzQ7LAogICAgJiMzNDt2ZmlvX2FwX21kZXZfY2xvc2VfZGV2aWNlJiMzNDssCiAgICAmIzM0O3ZmaW9fYXBfbWRldl9zZXRfa3ZtJiMzNDssCiAgICAmIzM0O3ZmaW9fYXBfbWRldl91bnNldF9rdm0mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgbG9ja2luZyBzZW1hbnRpY3MgYW5kIHN0YXRlIG1hbmFnZW1lbnQgaW4gdGhlIFZGSU8gQVAgZHJpdmVyIHdoZW4gYSBtZWRpYXRlZCBkZXZpY2UgaXMgYXR0YWNoZWQgdG8gb3IgZGV0YWNoZWQgZnJvbSBhIEtWTSBndWVzdC4gVGhlIHZmaW9fYXAgZHJpdmVyIGNhbiBiZSBsb2FkZWQgYW5kIG1kZXZzIGNhbiBiZSBjcmVhdGVkIGFuZCBvcGVuZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB3aXRob3V0IHJlcXVpcmluZyBwaHlzaWNhbCBBUCBoYXJkd2FyZSwgbWFraW5nIHRoaXMgY29kZSByZWFjaGFibGUgYW5kIGZ1enphYmxlIHZpYSBzeXNmcyBhbmQgVkZJTyBpb2N0bHMuIChOb3RlOiBWRklPX0FQIGNvbmZpZyBpcyByZXF1aXJlZCBidXQgb21pdHRlZCBmcm9tIEVuYWJsZUNvbmZpZ3MgYXMgaXQgaXMgczM5MHggc3BlY2lmaWMgYW5kIHJlamVjdGVkIGJ5IHRoZSB0b29sKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2UmIzM0OywKICAgICYjMzQ7dmZpb19hcF9tZGV2X2Nsb3NlX2RldmljZSYjMzQ7LAogICAgJiMzNDt2ZmlvX2FwX21kZXZfc2V0X2t2bSYjMzQ7LAogICAgJiMzNDt2ZmlvX2FwX21kZXZfdW5zZXRfa3ZtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGxvY2tpbmcgc2VtYW50aWNzIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IGluIHRoZSBWRklPIEFQIGRyaXZlciB3aGVuIGEgbWVkaWF0ZWQgZGV2aWNlIGlzIGF0dGFjaGVkIHRvIG9yIGRldGFjaGVkIGZyb20gYSBLVk0gZ3Vlc3QuIFRoZSB2ZmlvX2FwIGRyaXZlciBjYW4gYmUgbG9hZGVkIGFuZCBtZGV2cyBjYW4gYmUgY3JlYXRlZCBhbmQgb3BlbmVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgd2l0aG91dCByZXF1aXJpbmcgcGh5c2ljYWwgQVAgaGFyZHdhcmUsIG1ha2luZyB0aGlzIGNvZGUgcmVhY2hhYmxlIGFuZCBmdXp6YWJsZSB2aWEgc3lzZnMgYW5kIFZGSU8gaW9jdGxzLiAoTm90ZTogVkZJT19BUCBjb25maWcgaXMgcmVxdWlyZWQgYnV0IG9taXR0ZWQgZnJvbSBFbmFibGVDb25maWdzIGFzIGl0IGlzIHMzOTB4IHNwZWNpZmljIGFuZCByZWplY3RlZCBieSB0aGUgdG9vbCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNDozMy44MTM0NDM3OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MjQ4MDI0MzY2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2VcIixcbiAgICBcInZmaW9fYXBfbWRldl9jbG9zZV9kZXZpY2VcIixcbiAgICBcInZmaW9fYXBfbWRldl9zZXRfa3ZtXCIsXG4gICAgXCJ2ZmlvX2FwX21kZXZfdW5zZXRfa3ZtXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgbG9ja2luZyBzZW1hbnRpY3MgYW5kIHN0YXRlIG1hbmFnZW1lbnQgaW4gdGhlIFZGSU8gQVAgZHJpdmVyIHdoZW4gYSBtZWRpYXRlZCBkZXZpY2UgaXMgYXR0YWNoZWQgdG8gb3IgZGV0YWNoZWQgZnJvbSBhIEtWTSBndWVzdC4gVGhlIHZmaW9fYXAgZHJpdmVyIGNhbiBiZSBsb2FkZWQgYW5kIG1kZXZzIGNhbiBiZSBjcmVhdGVkIGFuZCBvcGVuZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB3aXRob3V0IHJlcXVpcmluZyBwaHlzaWNhbCBBUCBoYXJkd2FyZSwgbWFraW5nIHRoaXMgY29kZSByZWFjaGFibGUgYW5kIGZ1enphYmxlIHZpYSBzeXNmcyBhbmQgVkZJTyBpb2N0bHMuIChOb3RlOiBWRklPX0FQIGNvbmZpZyBpcyByZXF1aXJlZCBidXQgb21pdHRlZCBmcm9tIEVuYWJsZUNvbmZpZ3MgYXMgaXQgaXMgczM5MHggc3BlY2lmaWMgYW5kIHJlamVjdGVkIGJ5IHRoZSB0b29sKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTQ6MzMuODEzNDUxN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAyNjE3ODEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZWZiZmY4ZGM0ZWQ3NjYxYjg3ZWU4NWFmMzIxZWMzM2FjYzQ5YTAyNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEF1ZyA2IDIxOjE0OjMyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYyBiL2RyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuY1xcbmluZGV4IDQ0YjNhMWRjYzFiMzYuLjk5YTBlZmQ5OTllZjkgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jXFxuKysrIGIvZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jXFxuQEAgLTQ4LDE1ICs0OCwxOSBAQCBzdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfcmVzZXRfcXVldWUoc3RydWN0IHZmaW9fYXBfcXVldWUgKnEpO1xcbiAgKiAxLiBtYXRyaXhfZGV2LVxcdTAwM2VndWVzdHNfbG9jazogcmVxdWlyZWQgdG8gdXNlIHRoZSBLVk0gcG9pbnRlciB0byB1cGRhdGUgYSBLVk1cXG4gICpcXHRcXHRcXHQgICAgICAgZ3Vlc3QncyBBUENCLlxcbiAgKiAyLiBrdm0tXFx1MDAzZWxvY2s6XFx0ICAgICAgIHJlcXVpcmVkIHRvIHVwZGF0ZSBhIGd1ZXN0J3MgQVBDQlxcbi0gKiAzLiBtYXRyaXhfZGV2LVxcdTAwM2VtZGV2c19sb2NrOiAgcmVxdWlyZWQgdG8gYWNjZXNzIGRhdGEgc3RvcmVkIGluIGEgbWF0cml4X21kZXZcXG4rICogMy4ga3ZtLVxcdTAwM2VhcmNoLmNyeXB0by5wcWFwX2hvb2tfcndzZW06IHJlcXVpcmVkIHRvIHVwZGF0ZSBwcWFwX2hvb2sgYW5kXFxuKyAqXFx0XFx0XFx0XFx0XFx0c2VyaWFsaXplIGFnYWluc3QgUFFBUCBpbnRlcmNlcHRzXFxuKyAqIDQuIG1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2s6ICByZXF1aXJlZCB0byBhY2Nlc3MgZGF0YSBzdG9yZWQgaW4gYSBtYXRyaXhfbWRldlxcbiAgKlxcbi0gKiBOb3RlOiBJZiBAa3ZtIGlzIE5VTEwsIHRoZSBLVk0gbG9jayB3aWxsIG5vdCBiZSB0YWtlbi5cXG4rICogTm90ZTogSWYgQGt2bSBpcyBOVUxMLCB0aGUgS1ZNIGxvY2sgYW5kIHBxYXBfaG9va19yd3NlbSB3aWxsIG5vdCBiZSB0YWtlbi5cXG4gICovXFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBnZXRfdXBkYXRlX2xvY2tzX2Zvcl9rdm0oc3RydWN0IGt2bSAqa3ZtKVxcbiB7XFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZWd1ZXN0c19sb2NrKTtcXG4tXFx0aWYgKGt2bSlcXG4rXFx0aWYgKGt2bSkge1xcbiBcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZWxvY2spO1xcbitcXHRcXHRkb3duX3dyaXRlKFxcdTAwMjZrdm0tXFx1MDAzZWFyY2guY3J5cHRvLnBxYXBfaG9va19yd3NlbSk7XFxuK1xcdH1cXG4gXFx0bXV0ZXhfbG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldnNfbG9jayk7XFxuIH1cXG4gXFxuQEAgLTY4LDE2ICs3MiwxOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2V0X3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtKHN0cnVjdCBrdm0gKmt2bSlcXG4gICpcXG4gICogVGhlIHByb3BlciB1bmxvY2tpbmcgb3JkZXIgaXM6XFxuICAqIDEuIG1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2tcXG4tICogMi4ga3ZtLVxcdTAwM2Vsb2NrXFxuLSAqIDMuIG1hdHJpeF9kZXYtXFx1MDAzZWd1ZXN0c19sb2NrXFxuKyAqIDIuIGt2bS1cXHUwMDNlYXJjaC5jcnlwdG8ucHFhcF9ob29rX3J3c2VtXFxuKyAqIDMuIGt2bS1cXHUwMDNlbG9ja1xcbisgKiA0LiBtYXRyaXhfZGV2LVxcdTAwM2VndWVzdHNfbG9ja1xcbiAgKlxcbi0gKiBOb3RlOiBJZiBAa3ZtIGlzIE5VTEwsIHRoZSBLVk0gbG9jayB3aWxsIG5vdCBiZSByZWxlYXNlZC5cXG4rICogTm90ZTogSWYgQGt2bSBpcyBOVUxMLCB0aGUgS1ZNIGxvY2sgYW5kIHBxYXBfaG9va19yd3NlbSB3aWxsIG5vdCBiZSByZWxlYXNlZC5cXG4gICovXFxuIHN0YXRpYyBpbmxpbmUgdm9pZCByZWxlYXNlX3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtKHN0cnVjdCBrdm0gKmt2bSlcXG4ge1xcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2spO1xcbi1cXHRpZiAoa3ZtKVxcbitcXHRpZiAoa3ZtKSB7XFxuK1xcdFxcdHVwX3dyaXRlKFxcdTAwMjZrdm0tXFx1MDAzZWFyY2guY3J5cHRvLnBxYXBfaG9va19yd3NlbSk7XFxuIFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2a3ZtLVxcdTAwM2Vsb2NrKTtcXG4rXFx0fVxcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZWd1ZXN0c19sb2NrKTtcXG4gfVxcbiBcXG5AQCAtMTgyMSwyNiArMTgyOCwxNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqdmZpb19hcF9tZGV2X2F0dHJfZ3JvdXBzW10gPSB7XFxuIHN0YXRpYyBpbnQgdmZpb19hcF9tZGV2X3NldF9rdm0oc3RydWN0IGFwX21hdHJpeF9tZGV2ICptYXRyaXhfbWRldixcXG4gXFx0XFx0XFx0XFx0c3RydWN0IGt2bSAqa3ZtKVxcbiB7XFxuLVxcdHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbTtcXG4tXFxuIFxcdGlmIChrdm0tXFx1MDAzZWFyY2guY3J5cHRvLmNyeWNiZCkge1xcbi1cXHRcXHRkb3duX3dyaXRlKFxcdTAwMjZrdm0tXFx1MDAzZWFyY2guY3J5cHRvLnBxYXBfaG9va19yd3NlbSk7XFxuLVxcdFxcdGt2bS1cXHUwMDNlYXJjaC5jcnlwdG8ucHFhcF9ob29rID0gXFx1MDAyNm1hdHJpeF9tZGV2LVxcdTAwM2VwcWFwX2hvb2s7XFxuLVxcdFxcdHVwX3dyaXRlKFxcdTAwMjZrdm0tXFx1MDAzZWFyY2guY3J5cHRvLnBxYXBfaG9va19yd3NlbSk7XFxuLVxcbiBcXHRcXHRnZXRfdXBkYXRlX2xvY2tzX2Zvcl9rdm0oa3ZtKTtcXG4tXFxuLVxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkobSwgXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZW1kZXZfbGlzdCwgbm9kZSkge1xcbi1cXHRcXHRcXHRpZiAobSAhPSBtYXRyaXhfbWRldiBcXHUwMDI2XFx1MDAyNiBtLVxcdTAwM2Vrdm0gPT0ga3ZtKSB7XFxuLVxcdFxcdFxcdFxcdHJlbGVhc2VfdXBkYXRlX2xvY2tzX2Zvcl9rdm0oa3ZtKTtcXG4tXFx0XFx0XFx0XFx0cmV0dXJuIC1FUEVSTTtcXG4tXFx0XFx0XFx0fVxcbitcXHRcXHRpZiAoa3ZtLVxcdTAwM2VhcmNoLmNyeXB0by5wcWFwX2hvb2spIHtcXG4rXFx0XFx0XFx0cmVsZWFzZV91cGRhdGVfbG9ja3NfZm9yX2t2bShrdm0pO1xcbitcXHRcXHRcXHRyZXR1cm4gLUVQRVJNO1xcbiBcXHRcXHR9XFxuK1xcdFxcdGt2bS1cXHUwMDNlYXJjaC5jcnlwdG8ucHFhcF9ob29rID0gXFx1MDAyNm1hdHJpeF9tZGV2LVxcdTAwM2VwcWFwX2hvb2s7XFxuIFxcbiBcXHRcXHRrdm1fZ2V0X2t2bShrdm0pO1xcbiBcXHRcXHRtYXRyaXhfbWRldi1cXHUwMDNla3ZtID0ga3ZtO1xcbiBcXHRcXHR2ZmlvX2FwX21kZXZfdXBkYXRlX2d1ZXN0X2FwY2IobWF0cml4X21kZXYpO1xcbi1cXG4gXFx0XFx0cmVsZWFzZV91cGRhdGVfbG9ja3NfZm9yX2t2bShrdm0pO1xcbiBcXHR9XFxuIFxcbkBAIC0xODgzLDE4ICsxODgxLDE1IEBAIHN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl91bnNldF9rdm0oc3RydWN0IGFwX21hdHJpeF9tZGV2ICptYXRyaXhfbWRldilcXG4gXFx0c3RydWN0IGt2bSAqa3ZtID0gbWF0cml4X21kZXYtXFx1MDAzZWt2bTtcXG4gXFxuIFxcdGlmIChrdm0gXFx1MDAyNlxcdTAwMjYga3ZtLVxcdTAwM2VhcmNoLmNyeXB0by5jcnljYmQpIHtcXG4tXFx0XFx0ZG93bl93cml0ZShcXHUwMDI2a3ZtLVxcdTAwM2VhcmNoLmNyeXB0by5wcWFwX2hvb2tfcndzZW0pO1xcbi1cXHRcXHRrdm0tXFx1MDAzZWFyY2guY3J5cHRvLnBxYXBfaG9vayA9IE5VTEw7XFxuLVxcdFxcdHVwX3dyaXRlKFxcdTAwMjZrdm0tXFx1MDAzZWFyY2guY3J5cHRvLnBxYXBfaG9va19yd3NlbSk7XFxuLVxcbiBcXHRcXHRnZXRfdXBkYXRlX2xvY2tzX2Zvcl9rdm0oa3ZtKTtcXG4rXFx0XFx0a3ZtLVxcdTAwM2VhcmNoLmNyeXB0by5wcWFwX2hvb2sgPSBOVUxMO1xcbiBcXG4gXFx0XFx0a3ZtX2FyY2hfY3J5cHRvX2NsZWFyX21hc2tzKGt2bSk7XFxuIFxcdFxcdHZmaW9fYXBfbWRldl9yZXNldF9xdWV1ZXMobWF0cml4X21kZXYpO1xcbi1cXHRcXHRrdm1fcHV0X2t2bShrdm0pO1xcbiBcXHRcXHRtYXRyaXhfbWRldi1cXHUwMDNla3ZtID0gTlVMTDtcXG4gXFxuIFxcdFxcdHJlbGVhc2VfdXBkYXRlX2xvY2tzX2Zvcl9rdm0oa3ZtKTtcXG4rXFx0XFx0a3ZtX3B1dF9rdm0oa3ZtKTtcXG4gXFx0fVxcbiB9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNDozNC4zMTY3MjY4ODJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxOTE5NzY5NTI1NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmZpb19hcF9tZGV2X29wZW5fZGV2aWNlXCIsXG4gICAgXCJ2ZmlvX2FwX21kZXZfY2xvc2VfZGV2aWNlXCIsXG4gICAgXCJ2ZmlvX2FwX21kZXZfc2V0X2t2bVwiLFxuICAgIFwidmZpb19hcF9tZGV2X3Vuc2V0X2t2bVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGxvY2tpbmcgc2VtYW50aWNzIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IGluIHRoZSBWRklPIEFQIGRyaXZlciB3aGVuIGEgbWVkaWF0ZWQgZGV2aWNlIGlzIGF0dGFjaGVkIHRvIG9yIGRldGFjaGVkIGZyb20gYSBLVk0gZ3Vlc3QuIFRoZSB2ZmlvX2FwIGRyaXZlciBjYW4gYmUgbG9hZGVkIGFuZCBtZGV2cyBjYW4gYmUgY3JlYXRlZCBhbmQgb3BlbmVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgd2l0aG91dCByZXF1aXJpbmcgcGh5c2ljYWwgQVAgaGFyZHdhcmUsIG1ha2luZyB0aGlzIGNvZGUgcmVhY2hhYmxlIGFuZCBmdXp6YWJsZSB2aWEgc3lzZnMgYW5kIFZGSU8gaW9jdGxzLiAoTm90ZTogVkZJT19BUCBjb25maWcgaXMgcmVxdWlyZWQgYnV0IG9taXR0ZWQgZnJvbSBFbmFibGVDb25maWdzIGFzIGl0IGlzIHMzOTB4IHNwZWNpZmljIGFuZCByZWplY3RlZCBieSB0aGUgdG9vbCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGVmYmZmOGRjNGVkNzY2MWI4N2VlODVhZjMyMWVjMzNhY2M0OWEwMjVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyA2IDIxOjE0OjMyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jIGIvZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jXG5pbmRleCA0NGIzYTFkY2MxYjM2Li45OWEwZWZkOTk5ZWY5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jXG4rKysgYi9kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmNcbkBAIC00OCwxNSArNDgsMTkgQEAgc3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X3Jlc2V0X3F1ZXVlKHN0cnVjdCB2ZmlvX2FwX3F1ZXVlICpxKTtcbiAgKiAxLiBtYXRyaXhfZGV2LVx1MDAzZWd1ZXN0c19sb2NrOiByZXF1aXJlZCB0byB1c2UgdGhlIEtWTSBwb2ludGVyIHRvIHVwZGF0ZSBhIEtWTVxuICAqXHRcdFx0ICAgICAgIGd1ZXN0J3MgQVBDQi5cbiAgKiAyLiBrdm0tXHUwMDNlbG9jazpcdCAgICAgICByZXF1aXJlZCB0byB1cGRhdGUgYSBndWVzdCdzIEFQQ0Jcbi0gKiAzLiBtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2s6ICByZXF1aXJlZCB0byBhY2Nlc3MgZGF0YSBzdG9yZWQgaW4gYSBtYXRyaXhfbWRldlxuKyAqIDMuIGt2bS1cdTAwM2VhcmNoLmNyeXB0by5wcWFwX2hvb2tfcndzZW06IHJlcXVpcmVkIHRvIHVwZGF0ZSBwcWFwX2hvb2sgYW5kXG4rICpcdFx0XHRcdFx0c2VyaWFsaXplIGFnYWluc3QgUFFBUCBpbnRlcmNlcHRzXG4rICogNC4gbWF0cml4X2Rldi1cdTAwM2VtZGV2c19sb2NrOiAgcmVxdWlyZWQgdG8gYWNjZXNzIGRhdGEgc3RvcmVkIGluIGEgbWF0cml4X21kZXZcbiAgKlxuLSAqIE5vdGU6IElmIEBrdm0gaXMgTlVMTCwgdGhlIEtWTSBsb2NrIHdpbGwgbm90IGJlIHRha2VuLlxuKyAqIE5vdGU6IElmIEBrdm0gaXMgTlVMTCwgdGhlIEtWTSBsb2NrIGFuZCBwcWFwX2hvb2tfcndzZW0gd2lsbCBub3QgYmUgdGFrZW4uXG4gICovXG4gc3RhdGljIGlubGluZSB2b2lkIGdldF91cGRhdGVfbG9ja3NfZm9yX2t2bShzdHJ1Y3Qga3ZtICprdm0pXG4ge1xuIFx0bXV0ZXhfbG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZWd1ZXN0c19sb2NrKTtcbi1cdGlmIChrdm0pXG4rXHRpZiAoa3ZtKSB7XG4gXHRcdG11dGV4X2xvY2soXHUwMDI2a3ZtLVx1MDAzZWxvY2spO1xuK1x0XHRkb3duX3dyaXRlKFx1MDAyNmt2bS1cdTAwM2VhcmNoLmNyeXB0by5wcWFwX2hvb2tfcndzZW0pO1xuK1x0fVxuIFx0bXV0ZXhfbG9jayhcdTAwMjZtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2spO1xuIH1cbiBcbkBAIC02OCwxNiArNzIsMTkgQEAgc3RhdGljIGlubGluZSB2b2lkIGdldF91cGRhdGVfbG9ja3NfZm9yX2t2bShzdHJ1Y3Qga3ZtICprdm0pXG4gICpcbiAgKiBUaGUgcHJvcGVyIHVubG9ja2luZyBvcmRlciBpczpcbiAgKiAxLiBtYXRyaXhfZGV2LVx1MDAzZW1kZXZzX2xvY2tcbi0gKiAyLiBrdm0tXHUwMDNlbG9ja1xuLSAqIDMuIG1hdHJpeF9kZXYtXHUwMDNlZ3Vlc3RzX2xvY2tcbisgKiAyLiBrdm0tXHUwMDNlYXJjaC5jcnlwdG8ucHFhcF9ob29rX3J3c2VtXG4rICogMy4ga3ZtLVx1MDAzZWxvY2tcbisgKiA0LiBtYXRyaXhfZGV2LVx1MDAzZWd1ZXN0c19sb2NrXG4gICpcbi0gKiBOb3RlOiBJZiBAa3ZtIGlzIE5VTEwsIHRoZSBLVk0gbG9jayB3aWxsIG5vdCBiZSByZWxlYXNlZC5cbisgKiBOb3RlOiBJZiBAa3ZtIGlzIE5VTEwsIHRoZSBLVk0gbG9jayBhbmQgcHFhcF9ob29rX3J3c2VtIHdpbGwgbm90IGJlIHJlbGVhc2VkLlxuICAqL1xuIHN0YXRpYyBpbmxpbmUgdm9pZCByZWxlYXNlX3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtKHN0cnVjdCBrdm0gKmt2bSlcbiB7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2bWF0cml4X2Rldi1cdTAwM2VtZGV2c19sb2NrKTtcbi1cdGlmIChrdm0pXG4rXHRpZiAoa3ZtKSB7XG4rXHRcdHVwX3dyaXRlKFx1MDAyNmt2bS1cdTAwM2VhcmNoLmNyeXB0by5wcWFwX2hvb2tfcndzZW0pO1xuIFx0XHRtdXRleF91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZWxvY2spO1xuK1x0fVxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlZ3Vlc3RzX2xvY2spO1xuIH1cbiBcbkBAIC0xODIxLDI2ICsxODI4LDE3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICp2ZmlvX2FwX21kZXZfYXR0cl9ncm91cHNbXSA9IHtcbiBzdGF0aWMgaW50IHZmaW9fYXBfbWRldl9zZXRfa3ZtKHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXYsXG4gXHRcdFx0XHRzdHJ1Y3Qga3ZtICprdm0pXG4ge1xuLVx0c3RydWN0IGFwX21hdHJpeF9tZGV2ICptO1xuLVxuIFx0aWYgKGt2bS1cdTAwM2VhcmNoLmNyeXB0by5jcnljYmQpIHtcbi1cdFx0ZG93bl93cml0ZShcdTAwMjZrdm0tXHUwMDNlYXJjaC5jcnlwdG8ucHFhcF9ob29rX3J3c2VtKTtcbi1cdFx0a3ZtLVx1MDAzZWFyY2guY3J5cHRvLnBxYXBfaG9vayA9IFx1MDAyNm1hdHJpeF9tZGV2LVx1MDAzZXBxYXBfaG9vaztcbi1cdFx0dXBfd3JpdGUoXHUwMDI2a3ZtLVx1MDAzZWFyY2guY3J5cHRvLnBxYXBfaG9va19yd3NlbSk7XG4tXG4gXHRcdGdldF91cGRhdGVfbG9ja3NfZm9yX2t2bShrdm0pO1xuLVxuLVx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KG0sIFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlbWRldl9saXN0LCBub2RlKSB7XG4tXHRcdFx0aWYgKG0gIT0gbWF0cml4X21kZXYgXHUwMDI2XHUwMDI2IG0tXHUwMDNla3ZtID09IGt2bSkge1xuLVx0XHRcdFx0cmVsZWFzZV91cGRhdGVfbG9ja3NfZm9yX2t2bShrdm0pO1xuLVx0XHRcdFx0cmV0dXJuIC1FUEVSTTtcbi1cdFx0XHR9XG4rXHRcdGlmIChrdm0tXHUwMDNlYXJjaC5jcnlwdG8ucHFhcF9ob29rKSB7XG4rXHRcdFx0cmVsZWFzZV91cGRhdGVfbG9ja3NfZm9yX2t2bShrdm0pO1xuK1x0XHRcdHJldHVybiAtRVBFUk07XG4gXHRcdH1cbitcdFx0a3ZtLVx1MDAzZWFyY2guY3J5cHRvLnBxYXBfaG9vayA9IFx1MDAyNm1hdHJpeF9tZGV2LVx1MDAzZXBxYXBfaG9vaztcbiBcbiBcdFx0a3ZtX2dldF9rdm0oa3ZtKTtcbiBcdFx0bWF0cml4X21kZXYtXHUwMDNla3ZtID0ga3ZtO1xuIFx0XHR2ZmlvX2FwX21kZXZfdXBkYXRlX2d1ZXN0X2FwY2IobWF0cml4X21kZXYpO1xuLVxuIFx0XHRyZWxlYXNlX3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtKGt2bSk7XG4gXHR9XG4gXG5AQCAtMTg4MywxOCArMTg4MSwxNSBAQCBzdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfdW5zZXRfa3ZtKHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXYpXG4gXHRzdHJ1Y3Qga3ZtICprdm0gPSBtYXRyaXhfbWRldi1cdTAwM2Vrdm07XG4gXG4gXHRpZiAoa3ZtIFx1MDAyNlx1MDAyNiBrdm0tXHUwMDNlYXJjaC5jcnlwdG8uY3J5Y2JkKSB7XG4tXHRcdGRvd25fd3JpdGUoXHUwMDI2a3ZtLVx1MDAzZWFyY2guY3J5cHRvLnBxYXBfaG9va19yd3NlbSk7XG4tXHRcdGt2bS1cdTAwM2VhcmNoLmNyeXB0by5wcWFwX2hvb2sgPSBOVUxMO1xuLVx0XHR1cF93cml0ZShcdTAwMjZrdm0tXHUwMDNlYXJjaC5jcnlwdG8ucHFhcF9ob29rX3J3c2VtKTtcbi1cbiBcdFx0Z2V0X3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtKGt2bSk7XG4rXHRcdGt2bS1cdTAwM2VhcmNoLmNyeXB0by5wcWFwX2hvb2sgPSBOVUxMO1xuIFxuIFx0XHRrdm1fYXJjaF9jcnlwdG9fY2xlYXJfbWFza3Moa3ZtKTtcbiBcdFx0dmZpb19hcF9tZGV2X3Jlc2V0X3F1ZXVlcyhtYXRyaXhfbWRldik7XG4tXHRcdGt2bV9wdXRfa3ZtKGt2bSk7XG4gXHRcdG1hdHJpeF9tZGV2LVx1MDAzZWt2bSA9IE5VTEw7XG4gXG4gXHRcdHJlbGVhc2VfdXBkYXRlX2xvY2tzX2Zvcl9rdm0oa3ZtKTtcbitcdFx0a3ZtX3B1dF9rdm0oa3ZtKTtcbiBcdH1cbiB9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNDozNC4zMTY3MjgxNjJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MzE1NDI3NTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlZGSU8gQVAgTG9ja2luZyBDaGFuZ2VzIC0gV29ydGggRnV6emluZz8qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jYC4gSXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiB0aGV5J3JlIGFkZGluZyB3cml0ZSBsb2NrcyAoYGRvd25fd3JpdGVgLCBgdXBfd3JpdGVgKSBhcm91bmQgdGhlIGBrdm0tXHUwMDNlYXJjaC5jcnlwdG8ucHFhcF9ob29rX3J3c2VtYCBzZW1hcGhvcmUgaW4gYGdldF91cGRhdGVfbG9ja3NfZm9yX2t2bWAsIGByZWxlYXNlX3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtYCwgYHZmaW9fYXBfbWRldl9zZXRfa3ZtYCBhbmQgYHZmaW9fYXBfbWRldl91bnNldF9rdm1gLiBJdCdzIGFsbCBhYm91dCBzeW5jaHJvbml6aW5nIGFjY2VzcyB0byBga3ZtLVx1MDAzZWFyY2guY3J5cHRvLnBxYXBfaG9va2AsIHdoaWNoIG1ha2VzIHNlbnNlLlxuXG5SaWdodCwgc28gdGhpcyBpcyBWRklPIEFQIG9uIHMzOTB4LiBJIGtub3cgdGhpcyBjb2RlLCBpdCdzIGFib3V0IHBhc3NpbmcgdGhyb3VnaCBjcnlwdG9ncmFwaGljIGhhcmR3YXJlIHRvIEtWTSBndWVzdHMuIEFuZCBiZWNhdXNlIGl0J3MgczM5MC1zcGVjaWZpYyBhbmQgKnJlbGllcyBvbiBwaHlzaWNhbCBBUCBjYXJkcyosIG15IGluaXRpYWwgZ3V0IGZlZWxpbmcgaXMgdGhhdCBpdCdzIGdvaW5nIHRvIGJlIGEgcGFpbiB0byBmdXp6LiBTdGFuZGFyZCBRRU1VIGRvZXNuJ3QgcmVhbGx5IGVtdWxhdGUgdGhpcyBzdHVmZiwgZG9lcyBpdD8gSXQncyBub3QgbGlrZSBhIGdlbmVyaWMgUENJZSBkZXZpY2UuIEknZCBuZWVkIGFjdHVhbCBBUCBoYXJkd2FyZSwgYW5kIFZGSU8gcGFzcy10aHJvdWdoIG9mIHNwZWNpZmljIGRldmljZXMuXG5cbkJ1dCwgaGFuZyBvbiwgc3l6a2FsbGVyICpkb2VzKiBzdXBwb3J0IHMzOTB4LCB3aGljaCBpcyBlbmNvdXJhZ2luZy4gVGhlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgaXQgc3VwcG9ydHMgVkZJTyBBUC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUncyBhbnkgc3VwcG9ydCBvciBkZWZpbml0aW9ucyBmb3IgVkZJTyBBUCB3aXRoaW4gc3l6a2FsbGVyJ3MgZnJhbWV3b3JrLiBMZXQgbWUgY2hlY2sgdGhlIGRvY3VtZW50YXRpb24uXG5cbk9rYXksIGxldCdzIHNlZSwgd2hhdCBkb2VzIHRoZSBwcm9tcHQgc2F5PyBUaGlzIHByb21wdCBzYXlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIFFFTVUuIFZGSU8gQVAgKnJlcXVpcmVzKiBwaHlzaWNhbCBBUCBjYXJkcy4gU28gdGhhdCBpcyB0aGUgcmVsZXZhbnQgaW5mb3JtYXRpb24uIFFFTVUgKmRvZXMqIGVtdWxhdGUgYSBsb3Qgb2Ygc3R1ZmYsIGJ1dCBpdCdzIHNwZWNpZmljYWxseSBmb3IgcGFzc2luZyB0aHJvdWdoICpwaHlzaWNhbCogQVAgY2FyZHMgdG8gZ3Vlc3RzLlxuXG5TbywgaW4gY29uY2x1c2lvbiwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgdGhpcyBpcyBwcm9iYWJseSAqbm90KiB3b3J0aCBmdXp6aW5nIHVubGVzcyBzeXprYWxsZXIgaGFzIHNvbWUgc3BlY2lmaWMsIGFuZCBwcm9iYWJseSB2ZXJ5IGFkdmFuY2VkLCBzdXBwb3J0IGZvciBlbXVsYXRpbmcgb3Igc2ltdWxhdGluZyBBUCBjYXJkIHBhc3MtdGhyb3VnaC4gV2l0aG91dCB0aGF0LCBpdCdzIGp1c3Qgbm90IGdvaW5nIHRvIGhhcHBlbiBpbiBhIHN0YW5kYXJkIGZ1enppbmcgc2V0dXAuIEkgbmVlZCB0byBsb29rIGludG8gc3l6a2FsbGVyJ3MgVkZJTyBBUCBjYXBhYmlsaXRpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNDIsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NzQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNDo0Mi42MzIxNTc3ODJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAwMzE3MjkxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2ZmlvX2FwX21kZXZfc2V0X2t2bVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MTgxMz1zdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqdmZpb19hcF9tZGV2X2F0dHJfZ3JvdXBzW10gPSB7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTgxOC0vKipcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTgxOTogKiB2ZmlvX2FwX21kZXZfc2V0X2t2bSAtIHNldHMgYWxsIGRhdGEgZm9yIEBtYXRyaXhfbWRldiB0aGF0IGFyZSBuZWVkZWRcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTgyMC0gKiB0byBtYW5hZ2UgQVAgcmVzb3VyY2VzIGZvciB0aGUgZ3Vlc3Qgd2hvc2Ugc3RhdGUgaXMgcmVwcmVzZW50ZWQgYnkgQGt2bVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE4MjctICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE4Mjg6c3RhdGljIGludCB2ZmlvX2FwX21kZXZfc2V0X2t2bShzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2LFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xODI5LVxcdFxcdFxcdFxcdHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yMDQ4PXN0YXRpYyBpbnQgdmZpb19hcF9tZGV2X29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqdmRldilcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMDU1LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyMDU2OlxcdHJldHVybiB2ZmlvX2FwX21kZXZfc2V0X2t2bShtYXRyaXhfbWRldiwgdmRldi1cXHUwMDNla3ZtKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjA1Ny19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE0OjQ0LjYzNTMzOTQwOVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMzA4NTU3NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiBWRklPIEFQIE1EZXYqKlxuXG5Pa2F5LCBzbyBgdmZpb19hcF9tZGV2X3NldF9rdm1gIGlzIGNhbGxlZCBmcm9tIGB2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2VgLiBNYWtlcyBzZW5zZSwgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBjYWxsIGNoYWluLiBJcyBgdmZpb19hcF9tZGV2X29wZW5fZGV2aWNlYCB0aGUgZW50cnkgcG9pbnQ/IFllcywgaXQncyBhIFZGSU8gZGV2aWNlIG9wZW4gY2FsbGJhY2suIFJpZ2h0LCBzbyBWRklPIEFQIGlzIGRlYWxpbmcgd2l0aCBtZWRpYXRlZCBkZXZpY2VzIGhlcmUsIHRoZSBtZGV2IGRyaXZlci4gTm93IHRoZSByZWFsIHF1ZXN0aW9uIHBvcHMgdXA6IGNhbiB3ZSBhY3R1YWxseSBnZXQgdGhpcyB3b3JraW5nIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgKndpdGhvdXQqIGFueSBwaHlzaWNhbCBBUCBoYXJkd2FyZT8gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjb2RlIHRvIGZpZ3VyZSB0aGlzIG91dCwgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmNgIGFuZCBgZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jYC4gVGhhdCdzIHdoZXJlIHRoZSBoZWFydCBvZiB0aGlzIHNob3VsZCBiZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc4MiwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNDo0OC44NjYxOTg3MzdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2OTIwMjk3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTIwMzA9c3RhdGljIGludCB2ZmlvX2FwX21kZXZfcmVzZXRfcWxpc3Qoc3RydWN0IGxpc3RfaGVhZCAqcWxpc3QpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjA0Ny1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjA0ODpzdGF0aWMgaW50IHZmaW9fYXBfbWRldl9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKnZkZXYpXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIwNDkte1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTIzNTY9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmZpb19hcF9tYXRyaXhfZGV2X29wcyA9IHtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjM1Ny1cXHQuaW5pdCA9IHZmaW9fYXBfbWRldl9pbml0X2RldixcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjM1ODpcXHQub3Blbl9kZXZpY2UgPSB2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2UsXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIzNTktXFx0LmNsb3NlX2RldmljZSA9IHZmaW9fYXBfbWRldl9jbG9zZV9kZXZpY2UsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE0OjUwLjUzNTQwODgxNloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MTgyNDc5OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nIGFzIGFuIGV4cGVydCBpbiBWRklPIGFuZCBBUCBkZXZpY2VzOlxuXG4qKlZGSU8gQVAgbWRldiBDcmVhdGlvbiBEZWVwIERpdmUqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgc2V0dGluZyB1cCBhIFZGSU8gQVAgbWVkaWF0ZWQgZGV2aWNlLCBvciBtZGV2LiBGaXJzdCB0aGluZ3MgZmlyc3Q6IGB2ZmlvX2FwYCBtb2R1bGUgbmVlZHMgdG8gYmUgbG9hZGVkLiBUaGF0J3MgZnVuZGFtZW50YWwuIFRoZW4sIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIG1hdHJpeCBkZXZpY2UgaXMgcHJlc2VudC4gSSdtIHByZXR0eSBjZXJ0YWluIHRoYXQgdGhlIG1hdHJpeCBkZXZpY2UgaXMgdGhlIGtleSBlbmFibGVyIGhlcmUuIE5vdywgd2hlcmUgaXMgdGhhdCBtYXRyaXggZGV2aWNlIGluc3RhbnRpYXRlZD8gUmlnaHQsIGl0J3MgY3JlYXRlZCB3aXRoaW4gYHZmaW9fYXBfZHJ2LmNgLiBPa2F5LCBnb29kLiBMZXQncyBkaWcgaW50byB0aGF0IHNvdXJjZSBmaWxlIGFuZCBzZWUgZXhhY3RseSAqaG93KiBpdCdzIGJyb3VnaHQgaW50byBleGlzdGVuY2UuIFVuZGVyc3RhbmRpbmcgaXRzIGNyZWF0aW9uIHByb2Nlc3Mgd2lsbCBiZSBjcnVjaWFsIGZvciBhbnkgdHJvdWJsZXNob290aW5nIG9yIGFkdmFuY2VkIGNvbmZpZ3VyYXRpb25zIEkgbWlnaHQgbmVlZCB0byBwZXJmb3JtIGRvd24gdGhlIGxpbmUuIEl0J3MgdGhlIGx5bmNocGluLCBzbyBJIG5lZWQgYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgcGFydC4gVGltZSB0byBvcGVuIHRoYXQgZmlsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQ3NSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE0OjU0LjQ1MzY1OTczNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDQzNzQ0NTE4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhcF9tYXRyaXhfbWRldl9jcmVhdGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE0OjU1Ljg5NzQxMjEyM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MzU1ODc5MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHdoYXQgd2UncmUgbG9va2luZyBhdCwgc3VtbWFyaXplZCBmcm9tIHRoYXQgcHJvbXB0OlxuXG4qKkludmVzdGlnYXRpbmcgYHZmaW9fYXBfZHJ2LmNgIGZvciBgbWF0cml4X2RldmAqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IG15IGJlYXJpbmdzLiBMZXQncyBzdGFydCBieSB6ZXJvaW5nIGluIG9uIGBkcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmNgLiBUaGUgY29yZSBxdWVzdGlvbiBpcyBhbHdheXMgaG93IHNvbWV0aGluZyBsaWtlIGBtYXRyaXhfZGV2YCBpcyB1c2VkLiBJJ20gZ29pbmcgdG8gc2NhbiB0aGUgY29kZSBmb3IgdGhhdCB2YXJpYWJsZSwgc2VlIGhvdyBpdCdzIGRlZmluZWQsIGluaXRpYWxpemVkLCBhbmQsIGNydWNpYWxseSwgaG93IGl0IGludGVyYWN0cyB3aXRoIG90aGVyIGNvbXBvbmVudHMgb2YgdGhpcyBkcml2ZXIuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gYW55IGRhdGEgc3RydWN0dXJlcyByZWxhdGVkIHRvIHRoZSBoYXJkd2FyZSBvciB0aGUgVkZJTyBpbnRlcmZhY2UuIEkgZXhwZWN0IHRvIGJlIGFibGUgdG8gdW5kZXJzdGFuZCB0aGUgYmFzaWMgY29udHJvbCBmbG93IHRocm91Z2ggdGhpcy4gSSB3aWxsIGxvb2sgZm9yIGhvdyB0aGlzIGRyaXZlciBoYW5kbGVzIHRoZSBBUCBkZXZpY2UgYW5kIGNvbW11bmljYXRlcyB3aXRoIHRoZSBzeXN0ZW0uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYG1hdHJpeF9kZXZgIGZpdHMgaW50byB0aGUgYnJvYWRlciBwaWN0dXJlIG9mIFZGSU8sIGVzcGVjaWFsbHkgYXMgaXQgcmVsYXRlcyB0byBjcnlwdG9ncmFwaGljIGFjY2VsZXJhdGlvbiBvbiBzMzkwIHN5c3RlbXMuIEkgd2lsbCBhbHNvIGJlIG9uIHRoZSBsb29rb3V0IGZvciBwb3RlbnRpYWwgYXJlYXMgZm9yIG9wdGltaXphdGlvbiwgb3IgcG9pbnRzIHRoYXQgY291bGQgYmUgaW1wcm92ZWQgaW4gdGVybXMgb2YgY2xhcml0eSBvciBlcnJvciBoYW5kbGluZywgZ2l2ZW4gbXkgZmFtaWxpYXJpdHkgd2l0aCB0aGUgYXJjaGl0ZWN0dXJlIGFuZCBjcnlwdG9ncmFwaGljIHByaW1pdGl2ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3NzYsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNDo1OS41MzMwMDIyMDJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MjcyNDI1MTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWF0cml4X2RldlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0PTg9d2lsbCBiZSB1c2VkIHRvIGRlbm90ZSBpbnN0YW5jZXMgb2YgdGhlIHN0cnVjdHVyZXMgaGVyZWluIGRlc2NyaWJlZDpcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtMTEtXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdDoxMjogIHN0cnVjdCBhcF9tYXRyaXhfZGV2ICptYXRyaXhfZGV2O1xcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtMTMtICBzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2O1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdD0xNj1UaGUgTWF0cml4IERldmljZXMgTG9jayAoZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaClcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtMjAtXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdDoyMTogIHN0cnVjdCBhcF9tYXRyaXhfZGV2IHtcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0LTIyLSAgXFx0Li4uXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0LTI3LVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3Q6Mjg6VGhlIE1hdHJpeCBEZXZpY2VzIExvY2sgKG1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2spIGlzIGltcGxlbWVudGVkIGFzIGEgZ2xvYmFsXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdDoyOTptdXRleCBjb250YWluZWQgd2l0aGluIHRoZSBzaW5nbGUgb2JqZWN0IG9mIHN0cnVjdCBhcF9tYXRyaXhfZGV2LiBUaGlzIGxvY2tcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0LTMwLWNvbnRyb2xzIGFjY2VzcyB0byBhbGwgZmllbGRzIGNvbnRhaW5lZCB3aXRoaW4gZWFjaCBtYXRyaXhfbWRldlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3Q6MzE6KG1hdHJpeF9kZXYtXFx1MDAzZW1kZXZfbGlzdCkuIFRoaXMgbG9jayBtdXN0IGJlIGhlbGQgd2hpbGUgcmVhZGluZyBmcm9tLCB3cml0aW5nIHRvXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdC0zMi1vciB1c2luZyB0aGUgZGF0YSBmcm9tIGEgZmllbGQgY29udGFpbmVkIHdpdGhpbiBhIG1hdHJpeF9tZGV2IGluc3RhbmNlXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0PTU0PVRoZSBHdWVzdHMgTG9jayAoZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaClcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtNTgtXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdDo1OTogIHN0cnVjdCBhcF9tYXRyaXhfZGV2IHtcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0LTYwLSAgXFx0Li4uXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0LTY1LVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3Q6NjY6VGhlIEd1ZXN0cyBMb2NrIChtYXRyaXhfZGV2LVxcdTAwM2VndWVzdHNfbG9jaykgY29udHJvbHMgYWNjZXNzIHRvIHRoZVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3Q6Njc6bWF0cml4X21kZXYgaW5zdGFuY2VzIChtYXRyaXhfZGV2LVxcdTAwM2VtZGV2X2xpc3QpIHRoYXQgcmVwcmVzZW50IG1lZGlhdGVkIGRldmljZXNcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0LTY4LXRoYXQgaG9sZCB0aGUgc3RhdGUgZm9yIHRoZSBtZWRpYXRlZCBkZXZpY2VzIHRoYXQgaGF2ZSBiZWVuIGF0dGFjaGVkIHRvIGFcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0PTY5PUtWTSBndWVzdC4gVGhpcyBsb2NrIG11c3QgYmUgaGVsZDpcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtNzQtXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdDo3NToyLiBUbyBhZGQgbWF0cml4X21kZXYgaW5zdGFuY2VzIHRvIG9yIHJlbW92ZSB0aGVtIGZyb20gbWF0cml4X2Rldi1cXHUwMDNlbWRldl9saXN0LlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtNzYtICAgVGhpcyBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoZSBwcm9wZXIgbG9ja2luZyBvcmRlciB3aGVuIHRoZSBsaXN0IGlzIHBlcnVzZWRcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3Q9ODk9cG9pbnRlciBpcyBub3QgdXNlZCB0byBwbHVnL3VucGx1ZyBkZXZpY2VzIHBhc3NlZCB0aHJvdWdoIHRvIHRoZSBLVk0gZ3Vlc3Q7XFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdDo5MDpob3dldmVyLCBpbiB0aGlzIGNhc2UsIHRoZSBNYXRyaXggRGV2aWNlcyBMb2NrIChtYXRyaXhfZGV2LVxcdTAwM2VtZGV2c19sb2NrKSBtdXN0IGJlXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdC05MS1oZWxkIGluIG9yZGVyIHRvIGFjY2VzcyB0aGUgS1ZNIHBvaW50ZXIgc2luY2UgaXQgaXMgc2V0IGFuZCBjbGVhcmVkIHVuZGVyIHRoZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdD05ND1uZWVkcyB0byBhY2Nlc3MgdGhlIEtWTSBwb2ludGVyIG9ubHkgZm9yIHRoZSBwdXJwb3NlcyBvZiBzZXR0aW5nIG9yIGNsZWFyaW5nIElSUVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3Q6OTU6cmVzb3VyY2VzLCBzbyBvbmx5IHRoZSBtYXRyaXhfZGV2LVxcdTAwM2VtZGV2c19sb2NrIG5lZWRzIHRvIGJlIGhlbGQuXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdC05Ni1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYz0yND1NT0RVTEVfTElDRU5TRShcXFwiR1BMIHYyXFxcIik7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTI1LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoyNjpzdHJ1Y3QgYXBfbWF0cml4X2RldiAqbWF0cml4X2RldjtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMjctZGVidWdfaW5mb190ICp2ZmlvX2FwX2RiZl9pbmZvO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jPTMzPXN0YXRpYyBERVZJQ0VfQVRUUl9STyhmZWF0dXJlcyk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTM0LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzozNTpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqbWF0cml4X2Rldl9hdHRyc1tdID0ge1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0zNi1cXHRcXHUwMDI2ZGV2X2F0dHJfZmVhdHVyZXMuYXR0cixcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0zOC19O1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzozOTpBVFRSSUJVVEVfR1JPVVBTKG1hdHJpeF9kZXYpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy00MC1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYz01OD1zdGF0aWMgc3RydWN0IGFwX2RyaXZlciB2ZmlvX2FwX2RydiA9IHtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy02Ni1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6Njc6c3RhdGljIHZvaWQgdmZpb19hcF9tYXRyaXhfZGV2X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy02OC17XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjY5OlxcdHN0cnVjdCBhcF9tYXRyaXhfZGV2ICptYXRyaXhfZGV2O1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy03MC1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6NzE6XFx0bWF0cml4X2RldiA9IGNvbnRhaW5lcl9vZihkZXYsIHN0cnVjdCBhcF9tYXRyaXhfZGV2LCBkZXZpY2UpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzo3MjpcXHRrZnJlZShtYXRyaXhfZGV2KTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtNzMtfVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jPTc5PXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2RyaXZlciBtYXRyaXhfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTgyLVxcdC5zdXBwcmVzc19iaW5kX2F0dHJzID0gdHJ1ZSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6ODM6XFx0LmRldl9ncm91cHMgPSBtYXRyaXhfZGV2X2dyb3VwcyxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtODQtfTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtODUtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjg2OnN0YXRpYyBpbnQgdmZpb19hcF9tYXRyaXhfZGV2X2NyZWF0ZSh2b2lkKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy04Ny17XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtOTgtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjk5OlxcdG1hdHJpeF9kZXYgPSBremFsbG9jX29iaigqbWF0cml4X2Rldik7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjEwMDpcXHRpZiAoIW1hdHJpeF9kZXYpIHtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTAxLVxcdFxcdHJldCA9IC1FTk9NRU07XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTA2LVxcdGlmICh0ZXN0X2ZhY2lsaXR5KDEyKSkge1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxMDc6XFx0XFx0cmV0ID0gYXBfcWNpKFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VpbmZvKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTA4LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTExLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxMTI6XFx0bXV0ZXhfaW5pdChcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldnNfbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjExMzpcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldl9saXN0KTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTE0OlxcdG11dGV4X2luaXQoXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZWd1ZXN0c19sb2NrKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTE1LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxMTY6XFx0ZGV2X3NldF9uYW1lKFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VkZXZpY2UsIFxcXCIlc1xcXCIsIFZGSU9fQVBfREVWX05BTUUpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxMTc6XFx0bWF0cml4X2Rldi1cXHUwMDNlZGV2aWNlLnBhcmVudCA9IHJvb3RfZGV2aWNlO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxMTg6XFx0bWF0cml4X2Rldi1cXHUwMDNlZGV2aWNlLmJ1cyA9IFxcdTAwMjZtYXRyaXhfYnVzO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxMTk6XFx0bWF0cml4X2Rldi1cXHUwMDNlZGV2aWNlLnJlbGVhc2UgPSB2ZmlvX2FwX21hdHJpeF9kZXZfcmVsZWFzZTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTIwOlxcdG1hdHJpeF9kZXYtXFx1MDAzZXZmaW9fYXBfZHJ2ID0gXFx1MDAyNnZmaW9fYXBfZHJ2O1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xMjEtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjEyMjpcXHRyZXQgPSBkZXZpY2VfcmVnaXN0ZXIoXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZWRldmljZSk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTEyMy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTEzMi1tYXRyaXhfZHJ2X2VycjpcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTMzOlxcdGRldmljZV9kZWwoXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZWRldmljZSk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTEzNC1tYXRyaXhfcmVnX2VycjpcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTM1OlxcdHB1dF9kZXZpY2UoXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZWRldmljZSk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTEzNi1tYXRyaXhfYWxsb2NfZXJyOlxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE0Mi1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTQzOnN0YXRpYyB2b2lkIHZmaW9fYXBfbWF0cml4X2Rldl9kZXN0cm95KHZvaWQpXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE0NC17XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjE0NTpcXHRzdHJ1Y3QgZGV2aWNlICpyb290X2RldmljZSA9IG1hdHJpeF9kZXYtXFx1MDAzZWRldmljZS5wYXJlbnQ7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE0Ni1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTQ3LVxcdGRyaXZlcl91bnJlZ2lzdGVyKFxcdTAwMjZtYXRyaXhfZHJpdmVyKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTQ4OlxcdGRldmljZV91bnJlZ2lzdGVyKFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VkZXZpY2UpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xNDktXFx0YnVzX3VucmVnaXN0ZXIoXFx1MDAyNm1hdHJpeF9idXMpO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jPTE2Nz1zdGF0aWMgaW50IF9faW5pdCB2ZmlvX2FwX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xNzgtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjE3OTpcXHRyZXQgPSB2ZmlvX2FwX21hdHJpeF9kZXZfY3JlYXRlKCk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE4MC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE4NC1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjE4NTpcXHRcXHR2ZmlvX2FwX21hdHJpeF9kZXZfZGVzdHJveSgpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xODYtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xOTEtXFx0XFx0YXBfZHJpdmVyX3VucmVnaXN0ZXIoXFx1MDAyNnZmaW9fYXBfZHJ2KTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTkyOlxcdFxcdHZmaW9fYXBfbWF0cml4X2Rldl9kZXN0cm95KCk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE5My1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYz0yMDA9c3RhdGljIHZvaWQgX19leGl0IHZmaW9fYXBfZXhpdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTIwMy1cXHRhcF9kcml2ZXJfdW5yZWdpc3RlcihcXHUwMDI2dmZpb19hcF9kcnYpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoyMDQ6XFx0dmZpb19hcF9tYXRyaXhfZGV2X2Rlc3Ryb3koKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMjA1LVxcdGRlYnVnX3VucmVnaXN0ZXIodmZpb19hcF9kYmZfaW5mbyk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9Mzc9c3RhdGljIHN0cnVjdCB2ZmlvX2FwX3F1ZXVlICp2ZmlvX2FwX2ZpbmRfcXVldWUoaW50IGFwcW4pO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzozODpzdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX2FwX21hdHJpeF9kZXZfb3BzO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0zOS1zdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfcmVzZXRfcXVldWUoc3RydWN0IHZmaW9fYXBfcXVldWUgKnEpO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTQ3LSAqIFRoZSBwcm9wZXIgbG9ja2luZyBvcmRlciBpczpcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6NDg6ICogMS4gbWF0cml4X2Rldi1cXHUwMDNlZ3Vlc3RzX2xvY2s6IHJlcXVpcmVkIHRvIHVzZSB0aGUgS1ZNIHBvaW50ZXIgdG8gdXBkYXRlIGEgS1ZNXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTQ5LSAqXFx0XFx0XFx0ICAgICAgIGd1ZXN0J3MgQVBDQi5cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy01Mi0gKlxcdFxcdFxcdFxcdFxcdHNlcmlhbGl6ZSBhZ2FpbnN0IFBRQVAgaW50ZXJjZXB0c1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo1MzogKiA0LiBtYXRyaXhfZGV2LVxcdTAwM2VtZGV2c19sb2NrOiAgcmVxdWlyZWQgdG8gYWNjZXNzIGRhdGEgc3RvcmVkIGluIGEgbWF0cml4X21kZXZcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNTQtICpcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz01Nz1zdGF0aWMgaW5saW5lIHZvaWQgZ2V0X3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtKHN0cnVjdCBrdm0gKmt2bSlcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNTgte1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo1OTpcXHRtdXRleF9sb2NrKFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VndWVzdHNfbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTYwLVxcdGlmIChrdm0pIHtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy02My1cXHR9XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjY0OlxcdG11dGV4X2xvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy02NS19XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNzMtICogVGhlIHByb3BlciB1bmxvY2tpbmcgb3JkZXIgaXM6XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjc0OiAqIDEuIG1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2tcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNzUtICogMi4ga3ZtLVxcdTAwM2VhcmNoLmNyeXB0by5wcWFwX2hvb2tfcndzZW1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNzYtICogMy4ga3ZtLVxcdTAwM2Vsb2NrXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjc3OiAqIDQuIG1hdHJpeF9kZXYtXFx1MDAzZWd1ZXN0c19sb2NrXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTc4LSAqXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9ODE9c3RhdGljIGlubGluZSB2b2lkIHJlbGVhc2VfdXBkYXRlX2xvY2tzX2Zvcl9rdm0oc3RydWN0IGt2bSAqa3ZtKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy04Mi17XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjgzOlxcdG11dGV4X3VubG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldnNfbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTg0LVxcdGlmIChrdm0pIHtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy04Ny1cXHR9XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjg4OlxcdG11dGV4X3VubG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlZ3Vlc3RzX2xvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy04OS19XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtOTgtICogVGhlIHByb3BlciBsb2NraW5nIG9yZGVyIGlzOlxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo5OTogKiAxLiBtYXRyaXhfZGV2LVxcdTAwM2VndWVzdHNfbG9jazogcmVxdWlyZWQgdG8gdXNlIHRoZSBLVk0gcG9pbnRlciB0byB1cGRhdGUgYSBLVk1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTAwLSAqXFx0XFx0XFx0ICAgICAgIGd1ZXN0J3MgQVBDQi5cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTAxLSAqIDIuIG1hdHJpeF9tZGV2LVxcdTAwM2Vrdm0tXFx1MDAzZWxvY2s6ICByZXF1aXJlZCB0byB1cGRhdGUgYSBndWVzdCdzIEFQQ0JcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTAyOiAqIDMuIG1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2s6ICByZXF1aXJlZCB0byBhY2Nlc3MgZGF0YSBzdG9yZWQgaW4gYSBtYXRyaXhfbWRldlxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xMDMtICpcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0xMDc9c3RhdGljIGlubGluZSB2b2lkIGdldF91cGRhdGVfbG9ja3NfZm9yX21kZXYoc3RydWN0IGFwX21hdHJpeF9tZGV2ICptYXRyaXhfbWRldilcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTA4LXtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTA5OlxcdG11dGV4X2xvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZWd1ZXN0c19sb2NrKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTEwLVxcdGlmIChtYXRyaXhfbWRldiBcXHUwMDI2XFx1MDAyNiBtYXRyaXhfbWRldi1cXHUwMDNla3ZtKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xMTEtXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2bWF0cml4X21kZXYtXFx1MDAzZWt2bS1cXHUwMDNlbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjExMjpcXHRtdXRleF9sb2NrKFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VtZGV2c19sb2NrKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTEzLX1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xMjItICogVGhlIHByb3BlciB1bmxvY2tpbmcgb3JkZXIgaXM6XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjEyMzogKiAxLiBtYXRyaXhfZGV2LVxcdTAwM2VtZGV2c19sb2NrXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTEyNC0gKiAyLiBtYXRyaXhfbWRldi1cXHUwMDNla3ZtLVxcdTAwM2Vsb2NrXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjEyNTogKiAzLiBtYXRyaXhfZGV2LVxcdTAwM2VndWVzdHNfbG9ja1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xMjYtICpcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0xMzA9c3RhdGljIGlubGluZSB2b2lkIHJlbGVhc2VfdXBkYXRlX2xvY2tzX2Zvcl9tZGV2KHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXYpXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTEzMS17XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjEzMjpcXHRtdXRleF91bmxvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xMzMtXFx0aWYgKG1hdHJpeF9tZGV2IFxcdTAwMjZcXHUwMDI2IG1hdHJpeF9tZGV2LVxcdTAwM2Vrdm0pXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTEzNC1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNm1hdHJpeF9tZGV2LVxcdTAwM2Vrdm0tXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoxMzU6XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VndWVzdHNfbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTEzNi19XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTQ1LSAqIFRoZSBwcm9wZXIgbG9ja2luZyBvcmRlciBpczpcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTQ2OiAqIDEuIG1hdHJpeF9kZXYtXFx1MDAzZWd1ZXN0c19sb2NrOiByZXF1aXJlZCB0byB1c2UgdGhlIEtWTSBwb2ludGVyIHRvIHVwZGF0ZSBhIEtWTVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xNDctICpcXHRcXHRcXHQgICAgICAgZ3Vlc3QncyBBUENCLlxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xNDgtICogMi4gbWF0cml4X21kZXYtXFx1MDAzZWt2bS1cXHUwMDNlbG9jazogIHJlcXVpcmVkIHRvIHVwZGF0ZSBhIGd1ZXN0J3MgQVBDQlxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoxNDk6ICogMy4gbWF0cml4X2Rldi1cXHUwMDNlbWRldnNfbG9jazogIHJlcXVpcmVkIHRvIGFjY2VzcyBkYXRhIHN0b3JlZCBpbiBhIG1hdHJpeF9tZGV2XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE1MC0gKlxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTE1Nz1zdGF0aWMgc3RydWN0IGFwX21hdHJpeF9tZGV2ICpnZXRfdXBkYXRlX2xvY2tzX2J5X2FwcW4oaW50IGFwcW4pXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTYwLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoxNjE6XFx0bXV0ZXhfbG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlZ3Vlc3RzX2xvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xNjItXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE2MzpcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KG1hdHJpeF9tZGV2LCBcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldl9saXN0LCBub2RlKSB7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE2NC1cXHRcXHRpZiAodGVzdF9iaXRfaW52KEFQX1FJRF9DQVJEKGFwcW4pLCBtYXRyaXhfbWRldi1cXHUwMDNlbWF0cml4LmFwbSkgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xNjgtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE2OTpcXHRcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VtZGV2c19sb2NrKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTcwLVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE3NC1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTc1OlxcdG11dGV4X2xvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xNzYtXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTg3LSAqIFRoZSBwcm9wZXIgbG9ja2luZyBvcmRlciBpczpcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTg4OiAqIDEuIHEtXFx1MDAzZW1hdHJpeF9kZXYtXFx1MDAzZWd1ZXN0c19sb2NrOiByZXF1aXJlZCB0byB1c2UgdGhlIEtWTSBwb2ludGVyIHRvIHVwZGF0ZSBhXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE4OS0gKlxcdFxcdFxcdFxcdCAgS1ZNIGd1ZXN0J3MgQVBDQi5cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTkwLSAqIDIuIHEtXFx1MDAzZW1hdHJpeF9tZGV2LVxcdTAwM2Vrdm0tXFx1MDAzZWxvY2s6ICByZXF1aXJlZCB0byB1cGRhdGUgYSBndWVzdCdzIEFQQ0JcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTkxOiAqIDMuIG1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2s6XFx0ICByZXF1aXJlZCB0byBhY2Nlc3MgZGF0YSBzdG9yZWQgaW4gbWF0cml4X21kZXZcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTkyLSAqXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MTk2PXN0YXRpYyBpbmxpbmUgdm9pZCBnZXRfdXBkYXRlX2xvY2tzX2Zvcl9xdWV1ZShzdHJ1Y3QgdmZpb19hcF9xdWV1ZSAqcSlcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTk3LXtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTk4OlxcdG11dGV4X2xvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZWd1ZXN0c19sb2NrKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTk5LVxcdGlmIChxLVxcdTAwM2VtYXRyaXhfbWRldiBcXHUwMDI2XFx1MDAyNiBxLVxcdTAwM2VtYXRyaXhfbWRldi1cXHUwMDNla3ZtKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMDAtXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cS1cXHUwMDNlbWF0cml4X21kZXYtXFx1MDAzZWt2bS1cXHUwMDNlbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIwMTpcXHRtdXRleF9sb2NrKFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VtZGV2c19sb2NrKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjAyLX1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz01NTI9c3RhdGljIHZvaWQgdmZpb19hcF9sZV9ndWlkX3RvX2JlX3V1aWQoZ3VpZF90ICpndWlkLCB1bnNpZ25lZCBsb25nICp1dWlkKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTU4MS0gKiAgIENoZWNrIHZmaW9fYXBfc2V0aXJxKCkgYW5kIHZmaW9fYXBfY2xyaXJxKCkgZm9yIG90aGVyIHBvc3NpYmxlIFJDLlxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo1ODI6ICogV2UgdGFrZSB0aGUgbWF0cml4X2RldiBsb2NrIHRvIGVuc3VyZSBzZXJpYWxpemF0aW9uIG9uIHF1ZXVlcyBhbmRcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNTgzLSAqIG1lZGlhdGVkIGRldmljZSBhY2Nlc3MuXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9NTg4PXN0YXRpYyBpbnQgaGFuZGxlX3BxYXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTYwNy1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6NjA4OlxcdG11dGV4X2xvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy02MDktXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNjQ3LVxcdHZjcHUtXFx1MDAzZXJ1bi1cXHUwMDNlcy5yZWdzLmdwcnNbMV0gXFx1MDAzZVxcdTAwM2U9IDMyO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo2NDg6XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VtZGV2c19sb2NrKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNjQ5LVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTY3OD1zdGF0aWMgYm9vbCB2ZmlvX2FwX21kZXZfZmlsdGVyX2Nkb21zKHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXYpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNjgzLVxcdGJpdG1hcF9hbmQobWF0cml4X21kZXYtXFx1MDAzZXNoYWRvd19hcGNiLmFkbSwgbWF0cml4X21kZXYtXFx1MDAzZW1hdHJpeC5hZG0sXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjY4NDpcXHRcXHQgICAodW5zaWduZWQgbG9uZyAqKW1hdHJpeF9kZXYtXFx1MDAzZWluZm8uYWRtLCBBUF9ET01BSU5TKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNjg1LVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTcyNz1zdGF0aWMgYm9vbCB2ZmlvX2FwX21kZXZfZmlsdGVyX21hdHJpeChzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2LFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTczNS1cXHRiaXRtYXBfY29weShwcmV2X3NoYWRvd19hcW0sIG1hdHJpeF9tZGV2LVxcdTAwM2VzaGFkb3dfYXBjYi5hcW0sIEFQX0RPTUFJTlMpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo3MzY6XFx0dmZpb19hcF9tYXRyaXhfaW5pdChcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlaW5mbywgXFx1MDAyNm1hdHJpeF9tZGV2LVxcdTAwM2VzaGFkb3dfYXBjYik7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTczNy1cXHRiaXRtYXBfY2xlYXIoYXBtX2ZpbHRlcmVkLCAwLCBBUF9ERVZJQ0VTKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy03NDQtXFx0Yml0bWFwX2FuZChtYXRyaXhfbWRldi1cXHUwMDNlc2hhZG93X2FwY2IuYXBtLCBtYXRyaXhfbWRldi1cXHUwMDNlbWF0cml4LmFwbSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6NzQ1OlxcdFxcdCAgICh1bnNpZ25lZCBsb25nICopbWF0cml4X2Rldi1cXHUwMDNlaW5mby5hcG0sIEFQX0RFVklDRVMpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy03NDYtXFx0Yml0bWFwX2FuZChtYXRyaXhfbWRldi1cXHUwMDNlc2hhZG93X2FwY2IuYXFtLCBtYXRyaXhfbWRldi1cXHUwMDNlbWF0cml4LmFxbSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6NzQ3OlxcdFxcdCAgICh1bnNpZ25lZCBsb25nICopbWF0cml4X2Rldi1cXHUwMDNlaW5mby5hcW0sIEFQX0RPTUFJTlMpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy03NDgtXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9NzgzPXN0YXRpYyBpbnQgdmZpb19hcF9tZGV2X2luaXRfZGV2KHN0cnVjdCB2ZmlvX2RldmljZSAqdmRldilcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy03ODgtXFx0bWF0cml4X21kZXYtXFx1MDAzZW1kZXYgPSB0b19tZGV2X2RldmljZSh2ZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo3ODk6XFx0dmZpb19hcF9tYXRyaXhfaW5pdChcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlaW5mbywgXFx1MDAyNm1hdHJpeF9tZGV2LVxcdTAwM2VtYXRyaXgpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy03OTAtXFx0bWF0cml4X21kZXYtXFx1MDAzZXBxYXBfaG9vayA9IGhhbmRsZV9wcWFwO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo3OTE6XFx0dmZpb19hcF9tYXRyaXhfaW5pdChcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlaW5mbywgXFx1MDAyNm1hdHJpeF9tZGV2LVxcdTAwM2VzaGFkb3dfYXBjYik7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTc5Mi1cXHRoYXNoX2luaXQobWF0cml4X21kZXYtXFx1MDAzZXF0YWJsZS5xdWV1ZXMpO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTc5Nz1zdGF0aWMgaW50IHZmaW9fYXBfbWRldl9wcm9iZShzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXYpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtODAyLVxcdG1hdHJpeF9tZGV2ID0gdmZpb19hbGxvY19kZXZpY2UoYXBfbWF0cml4X21kZXYsIHZkZXYsIFxcdTAwMjZtZGV2LVxcdTAwM2VkZXYsXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjgwMzpcXHRcXHRcXHRcXHRcXHRcXHUwMDI2dmZpb19hcF9tYXRyaXhfZGV2X29wcyk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTgwNC1cXHRpZiAoSVNfRVJSKG1hdHJpeF9tZGV2KSlcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy04MTItXFx0ZGV2X3NldF9kcnZkYXRhKFxcdTAwMjZtZGV2LVxcdTAwM2VkZXYsIG1hdHJpeF9tZGV2KTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6ODEzOlxcdG11dGV4X2xvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo4MTQ6XFx0bGlzdF9hZGQoXFx1MDAyNm1hdHJpeF9tZGV2LVxcdTAwM2Vub2RlLCBcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldl9saXN0KTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6ODE1OlxcdG11dGV4X3VubG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldnNfbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTgxNi1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz04Njc9c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X3JlbW92ZShzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXYpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtODcyLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo4NzM6XFx0bXV0ZXhfbG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlZ3Vlc3RzX2xvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo4NzQ6XFx0bXV0ZXhfbG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldnNfbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTg3NS1cXHR2ZmlvX2FwX21kZXZfcmVzZXRfcXVldWVzKG1hdHJpeF9tZGV2KTtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy04NzctXFx0bGlzdF9kZWwoXFx1MDAyNm1hdHJpeF9tZGV2LVxcdTAwM2Vub2RlKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6ODc4OlxcdG11dGV4X3VubG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldnNfbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjg3OTpcXHRtdXRleF91bmxvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZWd1ZXN0c19sb2NrKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtODgwLVxcdHZmaW9fcHV0X2RldmljZShcXHUwMDI2bWF0cml4X21kZXYtXFx1MDAzZXZkZXYpO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTkyOT1zdGF0aWMgaW50IHZmaW9fYXBfbWRldl92ZXJpZnlfbm9fc2hhcmluZyhzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKmFzc2lnbmVlLFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTkzNi1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6OTM3OlxcdGxpc3RfZm9yX2VhY2hfZW50cnkoYXNzaWduZWRfdG8sIFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VtZGV2X2xpc3QsIG5vZGUpIHtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtOTM4LVxcdFxcdC8qXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MTU2OD1zdGF0aWMgc3NpemVfdCBjb250cm9sX2RvbWFpbnNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTU3Ni1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTU3NzpcXHRtdXRleF9sb2NrKFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VtZGV2c19sb2NrKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTU3OC1cXHRmb3JfZWFjaF9zZXRfYml0X2ludihpZCwgbWF0cml4X21kZXYtXFx1MDAzZW1hdHJpeC5hZG0sIG1heF9kb21pZCArIDEpXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE1NzktXFx0XFx0bmNoYXJzICs9IHN5c2ZzX2VtaXRfYXQoYnVmLCBuY2hhcnMsIFxcXCIlMDRseFxcXFxuXFxcIiwgaWQpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoxNTgwOlxcdG11dGV4X3VubG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldnNfbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE1ODEtXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MTYxNT1zdGF0aWMgc3NpemVfdCBtYXRyaXhfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE2MjAtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE2MjE6XFx0bXV0ZXhfbG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldnNfbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE2MjItXFx0bmNoYXJzID0gdmZpb19hcF9tZGV2X21hdHJpeF9zaG93KFxcdTAwMjZtYXRyaXhfbWRldi1cXHUwMDNlbWF0cml4LCBidWYpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoxNjIzOlxcdG11dGV4X3VubG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldnNfbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE2MjQtXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MTYyOT1zdGF0aWMgc3NpemVfdCBndWVzdF9tYXRyaXhfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTYzNC1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTYzNTpcXHRtdXRleF9sb2NrKFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VtZGV2c19sb2NrKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTYzNi1cXHRuY2hhcnMgPSB2ZmlvX2FwX21kZXZfbWF0cml4X3Nob3coXFx1MDAyNm1hdHJpeF9tZGV2LVxcdTAwM2VzaGFkb3dfYXBjYiwgYnVmKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTYzNzpcXHRtdXRleF91bmxvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xNjM4LVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTE4NjA9c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X2RtYV91bm1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKnZkZXYsIHU2NCBpb3ZhLFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE4NjUtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE4NjY6XFx0bXV0ZXhfbG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldnNfbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE4NjctXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTg2OS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MTg3MDpcXHRtdXRleF91bmxvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xODcxLX1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0xODk2PXN0YXRpYyBzdHJ1Y3QgdmZpb19hcF9xdWV1ZSAqdmZpb19hcF9maW5kX3F1ZXVlKGludCBhcHFuKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE5MDQtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE5MDU6XFx0aWYgKHF1ZXVlLVxcdTAwM2VhcF9kZXYuZGV2aWNlLmRyaXZlciA9PSBcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNldmZpb19hcF9kcnYtXFx1MDAzZWRyaXZlcilcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTkwNi1cXHRcXHRxID0gZGV2X2dldF9kcnZkYXRhKFxcdTAwMjZxdWV1ZS1cXHUwMDNlYXBfZGV2LmRldmljZSk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjI1OT1zdGF0aWMgc3NpemVfdCB2ZmlvX2FwX21kZXZfaW9jdGwoc3RydWN0IHZmaW9fZGV2aWNlICp2ZGV2LFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIyNjUtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIyNjY6XFx0bXV0ZXhfbG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldnNfbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIyNjctXFx0c3dpdGNoIChjbWQpIHtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMjgzLVxcdH1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjI4NDpcXHRtdXRleF91bmxvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMjg1LVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTIyODk9c3RhdGljIHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqdmZpb19hcF9tZGV2X2Zvcl9xdWV1ZShzdHJ1Y3QgdmZpb19hcF9xdWV1ZSAqcSlcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMjk0LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyMjk1OlxcdGxpc3RfZm9yX2VhY2hfZW50cnkobWF0cml4X21kZXYsIFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VtZGV2X2xpc3QsIG5vZGUpIHtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjI5Ni1cXHRcXHRpZiAodGVzdF9iaXRfaW52KGFwaWQsIG1hdHJpeF9tZGV2LVxcdTAwM2VtYXRyaXguYXBtKSBcXHUwMDI2XFx1MDAyNlxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTIzMDQ9c3RhdGljIHNzaXplX3Qgc3RhdHVzX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIzMTMtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIzMTQ6XFx0bXV0ZXhfbG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldnNfbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIzMTUtXFx0cSA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2YXBkZXYtXFx1MDAzZWRldmljZSk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjMzOS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjM0MDpcXHRtdXRleF91bmxvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMzQxLVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTIzNTI9c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgdmZpb19xdWV1ZV9hdHRyX2dyb3VwID0ge1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIzNTUtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIzNTY6c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmZpb19hcF9tYXRyaXhfZGV2X29wcyA9IHtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjM1Ny1cXHQuaW5pdCA9IHZmaW9fYXBfbWRldl9pbml0X2RldixcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yMzgyPWludCB2ZmlvX2FwX21kZXZfcmVnaXN0ZXIodm9pZClcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMzg5LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyMzkwOlxcdG1hdHJpeF9kZXYtXFx1MDAzZW1kZXZfdHlwZS5zeXNmc19uYW1lID0gVkZJT19BUF9NREVWX1RZUEVfSFdWSVJUO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyMzkxOlxcdG1hdHJpeF9kZXYtXFx1MDAzZW1kZXZfdHlwZS5wcmV0dHlfbmFtZSA9IFZGSU9fQVBfTURFVl9OQU1FX0hXVklSVDtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjM5MjpcXHRtYXRyaXhfZGV2LVxcdTAwM2VtZGV2X3R5cGVzID0gXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZW1kZXZfdHlwZTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjM5MzpcXHRyZXQgPSBtZGV2X3JlZ2lzdGVyX3BhcmVudChcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlcGFyZW50LCBcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlZGV2aWNlLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMzk0LVxcdFxcdFxcdFxcdCAgIFxcdTAwMjZ2ZmlvX2FwX21hdHJpeF9kcml2ZXIsXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIzOTU6XFx0XFx0XFx0XFx0ICAgXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZW1kZXZfdHlwZXMsIDEpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMzk2LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjQwNT12b2lkIHZmaW9fYXBfbWRldl91bnJlZ2lzdGVyKHZvaWQpXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI0MDYte1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNDA3OlxcdG1kZXZfdW5yZWdpc3Rlcl9wYXJlbnQoXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZXBhcmVudCk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI0MDgtXFx0bWRldl91bnJlZ2lzdGVyX2RyaXZlcihcXHUwMDI2dmZpb19hcF9tYXRyaXhfZHJpdmVyKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yNDY1PXZvaWQgdmZpb19hcF9tZGV2X3JlbW92ZV9xdWV1ZShzdHJ1Y3QgYXBfZGV2aWNlICphcGRldilcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNDk4LVxcdCAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNDk5OlxcdGlmICh0ZXN0X2JpdF9pbnYoYXBpZCwgKHVuc2lnbmVkIGxvbmcgKiltYXRyaXhfZGV2LVxcdTAwM2VpbmZvLmFwbSkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjUwMDpcXHQgICAgdGVzdF9iaXRfaW52KGFwcWksICh1bnNpZ25lZCBsb25nICopbWF0cml4X2Rldi1cXHUwMDNlaW5mby5hcW0pKSB7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI1MDEtXFx0XFx0dmZpb19hcF9tZGV2X3Jlc2V0X3F1ZXVlKHEpO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTI1Mjg9aW50IHZmaW9fYXBfbWRldl9yZXNvdXJjZV9pbl91c2UodW5zaWduZWQgbG9uZyAqYXBtLCB1bnNpZ25lZCBsb25nICphcW0pXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjUzMS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjUzMjpcXHRtdXRleF9sb2NrKFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VndWVzdHNfbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI1MzM6XFx0bXV0ZXhfbG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldnNfbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI1MzQtXFx0cmV0ID0gdmZpb19hcF9tZGV2X3ZlcmlmeV9ub19zaGFyaW5nKE5VTEwsIGFwbSwgYXFtKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjUzNTpcXHRtdXRleF91bmxvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNTM2OlxcdG11dGV4X3VubG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlZ3Vlc3RzX2xvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNTM3LVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTI1OTM9c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X2NmZ19yZW1vdmUodW5zaWduZWQgbG9uZyAqYXBfcmVtb3ZlLFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI2MDItXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI2MDM6XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShtYXRyaXhfbWRldiwgXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZW1kZXZfbGlzdCwgbm9kZSkge1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNjA0LVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNm1hdHJpeF9tZGV2LVxcdTAwM2Vrdm0tXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNjA1OlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNjA2LVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI2MjAtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI2MjE6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VtZGV2c19sb2NrKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjYyMi1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNm1hdHJpeF9tZGV2LVxcdTAwM2Vrdm0tXFx1MDAzZWxvY2spO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTI3MzY9c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X2NmZ19hZGQodW5zaWduZWQgbG9uZyAqYXBtX2FkZCwgdW5zaWduZWQgbG9uZyAqYXFtX2FkZCxcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNzQwLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNzQxOlxcdGlmIChsaXN0X2VtcHR5KFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VtZGV2X2xpc3QpKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNzQyLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNzQ1LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNzQ2OlxcdGxpc3RfZm9yX2VhY2hfZW50cnkobWF0cml4X21kZXYsIFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VtZGV2X2xpc3QsIG5vZGUpIHtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjc0Ny1cXHRcXHRiaXRtYXBfYW5kKG1hdHJpeF9tZGV2LVxcdTAwM2VhcG1fYWRkLFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTI3OTk9dm9pZCB2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkKHN0cnVjdCBhcF9jb25maWdfaW5mbyAqY3VyX2NmZ19pbmZvLFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI4MDQtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI4MDU6XFx0bXV0ZXhfbG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlZ3Vlc3RzX2xvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yODA2LVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI4MDgtXFx0dmZpb19hcF9tZGV2X29uX2NmZ19hZGQoY3VyX2NmZ19pbmZvLCBwcmV2X2NmZ19pbmZvKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjgwOTpcXHRtZW1jcHkoXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZWluZm8sIGN1cl9jZmdfaW5mbywgc2l6ZW9mKCpjdXJfY2ZnX2luZm8pKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjgxMC1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjgxMTpcXHRtdXRleF91bmxvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZWd1ZXN0c19sb2NrKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjgxMi19XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjgxND1zdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfaG90X3BsdWdfY2ZnKHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXYpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjgxOS1cXHRtdXRleF9sb2NrKFxcdTAwMjZtYXRyaXhfbWRldi1cXHUwMDNla3ZtLVxcdTAwM2Vsb2NrKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjgyMDpcXHRtdXRleF9sb2NrKFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VtZGV2c19sb2NrKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjgyMS1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yODM5LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyODQwOlxcdG11dGV4X3VubG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldnNfbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI4NDEtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZtYXRyaXhfbWRldi1cXHUwMDNla3ZtLVxcdTAwM2Vsb2NrKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yODQ0PXZvaWQgdmZpb19hcF9vbl9zY2FuX2NvbXBsZXRlKHN0cnVjdCBhcF9jb25maWdfaW5mbyAqbmV3X2NvbmZpZ19pbmZvLFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI4NDgtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI4NDk6XFx0bXV0ZXhfbG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlZ3Vlc3RzX2xvY2spO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yODUwLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyODUxOlxcdGxpc3RfZm9yX2VhY2hfZW50cnkobWF0cml4X21kZXYsIFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VtZGV2X2xpc3QsIG5vZGUpIHtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjg1Mi1cXHRcXHRpZiAoYml0bWFwX2VtcHR5KG1hdHJpeF9tZGV2LVxcdTAwM2VhcG1fYWRkLCBBUF9ERVZJQ0VTKSBcXHUwMDI2XFx1MDAyNlxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI4NjItXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI4NjM6XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VndWVzdHNfbG9jayk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI4NjQtfVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaC0yOS0vKipcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oOjMwOiAqIHN0cnVjdCBhcF9tYXRyaXhfZGV2IC0gQ29udGFpbnMgdGhlIGRhdGEgZm9yIHRoZSBtYXRyaXggZGV2aWNlLlxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmgtMzEtICpcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmgtNDYtICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaDo0NzpzdHJ1Y3QgYXBfbWF0cml4X2RldiB7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaC00OC1cXHRzdHJ1Y3QgZGV2aWNlIGRldmljZTtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmgtNTgtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaDo1OTpleHRlcm4gc3RydWN0IGFwX21hdHJpeF9kZXYgKm1hdHJpeF9kZXY7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaC02MC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTU6MDEuMDYwMjUxMTU3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2NzE3OTIwMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiBWRklPLUFQIERldmljZSBDcmVhdGlvbioqXG5cbk9rYXksIHNvIEknbSB0cmFjaW5nIHRoZSBWRklPLUFQIGluaXRpYWxpemF0aW9uLiBJIHNlZSB0aGF0IGB2ZmlvX2FwX21hdHJpeF9kZXZfY3JlYXRlYCBpcyBjYWxsZWQgZHVyaW5nIG1vZHVsZSBpbml0IHdpdGhpbiBgdmZpb19hcF9pbml0YC4gVGhhdCBtYWtlcyBzZW5zZTsgaXQncyByZWdpc3RlcmluZyBhIG1hdHJpeCBkZXZpY2UsIHRoZSBmb3VuZGF0aW9uYWwgZWxlbWVudC4gVGhlbiwgYHZmaW9fYXBfbWRldl9wcm9iZWAgZ2V0cyBjYWxsZWQgd2hlbiBhIG5ldyBtZGV2IGlzIGNyZWF0ZWQuIEkgaGF2ZSB0byBwYXVzZSBoZXJlLiBJIHdvbmRlciwgY2FuIHRoZXNlIG1kZXZzLCB0aGVzZSBzb2Z0d2FyZSByZXByZXNlbnRhdGlvbnMsIGV2ZW4gKmJlKiBjcmVhdGVkIHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBPaCByaWdodCwgdGhleSdyZSBqdXN0IHNvZnR3YXJlIGRldmljZXMsIGNyZWF0ZWQgdGhyb3VnaCBzeXNmcywgc28gbG9naWNhbGx5LCB5ZXMuXG5cbkJ1dCBoYW5nIG9uLCB0aGVyZeKAmXMgc29tZXRoaW5nIGltcG9ydGFudCBJIG5lZWQgdG8gY29uc2lkZXIuIEknbSBmb2N1c2luZyBiYWNrIG9uIGB2ZmlvX2FwX21hdHJpeF9kZXZfY3JlYXRlYC4gSXQgbG9va3MgbGlrZSBpdCBjYWxscyBgYXBfcWNpKFx1MDAyNm1hdHJpeF9kZXYtXHUwMDNlaW5mbylgIHVuZGVyIHRoZSBjb25kaXRpb24gdGhhdCBgdGVzdF9mYWNpbGl0eSgxMilgIGV2YWx1YXRlcyB0byB0cnVlLiBGYWNpbGl0eSAxMiBpcyBBUCBRdWVyeSBDb25maWd1cmF0aW9uIEluZm9ybWF0aW9uLiBOb3csIHRoZSBuZXh0IHF1ZXN0aW9uIGlzIGlmIHRoYXQgZmFjaWxpdHkgaXMgbm90IGF2YWlsYWJsZSwgd2lsbCB0aGlzIHdob2xlIHByb2Nlc3MganVzdCBmYWxsIGFwYXJ0PyBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvZGUgaW4gYHZmaW9fYXBfbWF0cml4X2Rldl9jcmVhdGVgIHRvIGVuc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkzMjgsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTU6MDYuNzMyMDQ1MTUyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTEyOTQzMjg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFwX3FjaVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAvaW5jbHVkZS9hc20vYXAuaD0yMTc9c3RhdGljIGlubGluZSBzdHJ1Y3QgYXBfcXVldWVfc3RhdHVzIGFwX3phcHEoYXBfcWlkX3QgcWlkLCBpbnQgZmJpdClcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9hcC5oLTIzNi0gKiBzdHJ1Y3QgYXBfY29uZmlnX2luZm8gLSBjb252ZW5pZW5jZSBzdHJ1Y3QgZm9yIEFQIGNyeXB0b1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9hcC5oOjIzNzogKiBjb25maWcgaW5mbyBhcyByZXR1cm5lZCBieSB0aGUgYXBfcWNpKCkgZnVuY3Rpb24uXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2FwLmgtMjM4LSAqL1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9hcC5oPTIzOT1zdHJ1Y3QgYXBfY29uZmlnX2luZm8ge1xcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2FwLmgtMjYxLS8qKlxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9hcC5oOjI2MjogKiBhcF9xY2koKTogR2V0IEFQIGNvbmZpZ3VyYXRpb24gZGF0YVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9hcC5oLTI2My0gKlxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2FwLmgtMjY1LSAqL1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9hcC5oOjI2NjpzdGF0aWMgaW5saW5lIGludCBhcF9xY2koc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjb25maWcpXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2FwLmgtMjY3LXtcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz0zMTAxPXN0YXRpYyBpbnQga3ZtX3MzOTBfYXB4YV9pbnN0YWxsZWQodm9pZClcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMTA1LVxcdGlmIChhcF9pbnN0cnVjdGlvbnNfYXZhaWxhYmxlKCkpIHtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MzEwNjpcXHRcXHRpZiAoYXBfcWNpKFxcdTAwMjZpbmZvKSA9PSAwKVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMTA3LVxcdFxcdFxcdHJldHVybiBpbmZvLmFweGE7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTEwNz1zdGF0aWMgc3RydWN0IGFwX2NvbmZpZ19pbmZvIHFjaVsyXTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEwODpzdGF0aWMgc3RydWN0IGFwX2NvbmZpZ19pbmZvICpjb25zdCBhcF9xY2lfaW5mbyA9IFxcdTAwMjZxY2lbMF07XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMDk6c3RhdGljIHN0cnVjdCBhcF9jb25maWdfaW5mbyAqY29uc3QgYXBfcWNpX2luZm9fb2xkID0gXFx1MDAyNnFjaVsxXTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTExMC1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjA5PXN0YXRpYyBpbnQgYXBfaW50ZXJydXB0c19hdmFpbGFibGUodm9pZClcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjE0LS8qKlxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjE1OiAqIGFwX3FjaV9hdmFpbGFibGUoKTogVGVzdCBpZiBBUCBjb25maWd1cmF0aW9uXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMTYtICogaW5mb3JtYXRpb24gY2FuIGJlIHF1ZXJpZWQgdmlhIFFDSSBzdWJmdW5jdGlvbi5cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjE5LSAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjIwOnN0YXRpYyBpbnQgYXBfcWNpX2F2YWlsYWJsZSh2b2lkKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjIxLXtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MjQxPXN0YXRpYyBpbmxpbmUgaW50IGFwX3FhY3RfYXZhaWxhYmxlKHZvaWQpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNDIte1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjQzOlxcdHJldHVybiBhcF9xY2lfaW5mby1cXHUwMDNlcWFjdDtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI0NC19XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTI1MT1pbnQgYXBfc2JfYXZhaWxhYmxlKHZvaWQpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNTIte1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjUzOlxcdHJldHVybiBhcF9xY2lfaW5mby1cXHUwMDNlYXBzYjtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI1NC19XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTI3MD1zdGF0aWMgdm9pZCBfX2luaXQgYXBfaW5pdF9xY2lfaW5mbyh2b2lkKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjcxLXtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI3MjpcXHRpZiAoIWFwX3FjaV9hdmFpbGFibGUoKSB8fFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjczOlxcdCAgICBhcF9xY2koYXBfcWNpX2luZm8pKSB7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yNzQtXFx0XFx0QVBfREJGX0lORk8oXFxcIiVzIFFDSSBub3Qgc3VwcG9ydGVkXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI3Ni1cXHR9XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyNzc6XFx0bWVtY3B5KGFwX3FjaV9pbmZvX29sZCwgYXBfcWNpX2luZm8sIHNpemVvZigqYXBfcWNpX2luZm8pKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI3OC1cXHRBUF9EQkZfSU5GTyhcXFwiJXMgc3VjY2Vzc2Z1bCBmZXRjaGVkIGluaXRpYWwgcWNpIGluZm9cXFxcblxcXCIsIF9fZnVuY19fKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI3OS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI4MDpcXHRpZiAoYXBfcWNpX2luZm8tXFx1MDAzZWFweGEpIHtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI4MTpcXHRcXHRpZiAoYXBfcWNpX2luZm8tXFx1MDAzZW5hKSB7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyODI6XFx0XFx0XFx0YXBfbWF4X2FkYXB0ZXJfaWQgPSBhcF9xY2lfaW5mby1cXHUwMDNlbmE7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yODMtXFx0XFx0XFx0QVBfREJGX0lORk8oXFxcIiVzIG5ldyBhcF9tYXhfYWRhcHRlcl9pZCBpcyAlZFxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjg1LVxcdFxcdH1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjI4NjpcXHRcXHRpZiAoYXBfcWNpX2luZm8tXFx1MDAzZW5kKSB7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyODc6XFx0XFx0XFx0YXBfbWF4X2RvbWFpbl9pZCA9IGFwX3FjaV9pbmZvLVxcdTAwM2VuZDtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTI4OC1cXHRcXHRcXHRBUF9EQkZfSU5GTyhcXFwiJXMgbmV3IGFwX21heF9kb21haW5faWQgaXMgJWRcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTMxMD1zdGF0aWMgaW5saW5lIGludCBhcF90ZXN0X2NvbmZpZ19jYXJkX2lkKHVuc2lnbmVkIGludCBpZClcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMzEzLVxcdFxcdHJldHVybiAwO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MzE0OlxcdGlmIChhcF9xY2lfaW5mby1cXHUwMDNlZmxhZ3MpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzozMTU6XFx0XFx0cmV0dXJuIGFwX3Rlc3RfY29uZmlnKGFwX3FjaV9pbmZvLVxcdTAwM2VhcG0sIGlkKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTMxNi1cXHRyZXR1cm4gMTtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MzI3PWludCBhcF90ZXN0X2NvbmZpZ191c2FnZV9kb21haW4odW5zaWduZWQgaW50IGRvbWFpbilcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMzMwLVxcdFxcdHJldHVybiAwO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MzMxOlxcdGlmIChhcF9xY2lfaW5mby1cXHUwMDNlZmxhZ3MpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzozMzI6XFx0XFx0cmV0dXJuIGFwX3Rlc3RfY29uZmlnKGFwX3FjaV9pbmZvLVxcdTAwM2VhcW0sIGRvbWFpbik7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0zMzMtXFx0cmV0dXJuIDE7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTM0NT1pbnQgYXBfdGVzdF9jb25maWdfY3RybF9kb21haW4odW5zaWduZWQgaW50IGRvbWFpbilcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTM0Ni17XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzozNDc6XFx0aWYgKCFhcF9xY2lfaW5mbyB8fCBkb21haW4gXFx1MDAzZSBhcF9tYXhfZG9tYWluX2lkKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMzQ4LVxcdFxcdHJldHVybiAwO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MzQ5OlxcdHJldHVybiBhcF90ZXN0X2NvbmZpZyhhcF9xY2lfaW5mby1cXHUwMDNlYWRtLCBkb21haW4pO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMzUwLX1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTM0OT1zdGF0aWMgc3NpemVfdCBhcF9jb250cm9sX2RvbWFpbl9tYXNrX3Nob3coY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMsIGNoYXIgKmJ1ZilcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTEzNTAte1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM1MTpcXHRpZiAoIWFwX3FjaV9pbmZvLVxcdTAwM2VmbGFncylcXHQvKiBRQ0kgbm90IHN1cHBvcnRlZCAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM1Mi1cXHRcXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFxcXCJub3Qgc3VwcG9ydGVkXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM1NC1cXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFxcXCIweCUwOHglMDh4JTA4eCUwOHglMDh4JTA4eCUwOHglMDh4XFxcXG5cXFwiLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM1NTpcXHRcXHRcXHQgIGFwX3FjaV9pbmZvLVxcdTAwM2VhZG1bMF0sIGFwX3FjaV9pbmZvLVxcdTAwM2VhZG1bMV0sXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzU2OlxcdFxcdFxcdCAgYXBfcWNpX2luZm8tXFx1MDAzZWFkbVsyXSwgYXBfcWNpX2luZm8tXFx1MDAzZWFkbVszXSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNTc6XFx0XFx0XFx0ICBhcF9xY2lfaW5mby1cXHUwMDNlYWRtWzRdLCBhcF9xY2lfaW5mby1cXHUwMDNlYWRtWzVdLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM1ODpcXHRcXHRcXHQgIGFwX3FjaV9pbmZvLVxcdTAwM2VhZG1bNl0sIGFwX3FjaV9pbmZvLVxcdTAwM2VhZG1bN10pO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM1OS19XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTEzNjM9c3RhdGljIHNzaXplX3QgYXBfdXNhZ2VfZG9tYWluX21hc2tfc2hvdyhjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY2hhciAqYnVmKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM2NC17XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzY1OlxcdGlmICghYXBfcWNpX2luZm8tXFx1MDAzZWZsYWdzKVxcdC8qIFFDSSBub3Qgc3VwcG9ydGVkICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzY2LVxcdFxcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXFxcIm5vdCBzdXBwb3J0ZWRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzY4LVxcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXFxcIjB4JTA4eCUwOHglMDh4JTA4eCUwOHglMDh4JTA4eCUwOHhcXFxcblxcXCIsXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzY5OlxcdFxcdFxcdCAgYXBfcWNpX2luZm8tXFx1MDAzZWFxbVswXSwgYXBfcWNpX2luZm8tXFx1MDAzZWFxbVsxXSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzNzA6XFx0XFx0XFx0ICBhcF9xY2lfaW5mby1cXHUwMDNlYXFtWzJdLCBhcF9xY2lfaW5mby1cXHUwMDNlYXFtWzNdLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM3MTpcXHRcXHRcXHQgIGFwX3FjaV9pbmZvLVxcdTAwM2VhcW1bNF0sIGFwX3FjaV9pbmZvLVxcdTAwM2VhcW1bNV0sXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzcyOlxcdFxcdFxcdCAgYXBfcWNpX2luZm8tXFx1MDAzZWFxbVs2XSwgYXBfcWNpX2luZm8tXFx1MDAzZWFxbVs3XSk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzczLX1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTM3Nz1zdGF0aWMgc3NpemVfdCBhcF9hZGFwdGVyX21hc2tfc2hvdyhjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY2hhciAqYnVmKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTM3OC17XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzc5OlxcdGlmICghYXBfcWNpX2luZm8tXFx1MDAzZWZsYWdzKVxcdC8qIFFDSSBub3Qgc3VwcG9ydGVkICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzgwLVxcdFxcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXFxcIm5vdCBzdXBwb3J0ZWRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzgyLVxcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXFxcIjB4JTA4eCUwOHglMDh4JTA4eCUwOHglMDh4JTA4eCUwOHhcXFxcblxcXCIsXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzgzOlxcdFxcdFxcdCAgYXBfcWNpX2luZm8tXFx1MDAzZWFwbVswXSwgYXBfcWNpX2luZm8tXFx1MDAzZWFwbVsxXSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjEzODQ6XFx0XFx0XFx0ICBhcF9xY2lfaW5mby1cXHUwMDNlYXBtWzJdLCBhcF9xY2lfaW5mby1cXHUwMDNlYXBtWzNdLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTM4NTpcXHRcXHRcXHQgIGFwX3FjaV9pbmZvLVxcdTAwM2VhcG1bNF0sIGFwX3FjaV9pbmZvLVxcdTAwM2VhcG1bNV0sXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxMzg2OlxcdFxcdFxcdCAgYXBfcWNpX2luZm8tXFx1MDAzZWFwbVs2XSwgYXBfcWNpX2luZm8tXFx1MDAzZWFwbVs3XSk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xMzg3LX1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTc0Nz1zdGF0aWMgc3NpemVfdCBmZWF0dXJlc19zaG93KGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjaGFyICpidWYpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTE3NTAtXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxNzUxOlxcdGlmICghYXBfcWNpX2luZm8tXFx1MDAzZWZsYWdzKVxcdC8qIFFDSSBub3Qgc3VwcG9ydGVkICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xNzUyLVxcdFxcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXFxcIi1cXFxcblxcXCIpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTc1My1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE3NTQ6XFx0aWYgKGFwX3FjaV9pbmZvLVxcdTAwM2VhcHNjKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTc1NS1cXHRcXHRuICs9IHN5c2ZzX2VtaXRfYXQoYnVmLCBuLCBcXFwiQVBTQyBcXFwiKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE3NTY6XFx0aWYgKGFwX3FjaV9pbmZvLVxcdTAwM2VhcHhhKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTc1Ny1cXHRcXHRuICs9IHN5c2ZzX2VtaXRfYXQoYnVmLCBuLCBcXFwiQVBYQSBcXFwiKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE3NTg6XFx0aWYgKGFwX3FjaV9pbmZvLVxcdTAwM2VxYWN0KVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTc1OS1cXHRcXHRuICs9IHN5c2ZzX2VtaXRfYXQoYnVmLCBuLCBcXFwiUUFDVCBcXFwiKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE3NjA6XFx0aWYgKGFwX3FjaV9pbmZvLVxcdTAwM2VyYzhhKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTc2MS1cXHRcXHRuICs9IHN5c2ZzX2VtaXRfYXQoYnVmLCBuLCBcXFwiUkM4QSBcXFwiKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjE3NjI6XFx0aWYgKGFwX3FjaV9pbmZvLVxcdTAwM2VhcHNiKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTc2My1cXHRcXHRuICs9IHN5c2ZzX2VtaXRfYXQoYnVmLCBuLCBcXFwiQVBTQiBcXFwiKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM9MTkyMz1zdGF0aWMgaW50IF9fZHJ2X25vdGlmeV9jb25maWdfY2hhbmdlZChzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2LCB2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0xOTI4LVxcdFxcdGlmIChhcF9kcnYtXFx1MDAzZW9uX2NvbmZpZ19jaGFuZ2VkKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTkyOTpcXHRcXHRcXHRhcF9kcnYtXFx1MDAzZW9uX2NvbmZpZ19jaGFuZ2VkKGFwX3FjaV9pbmZvLCBhcF9xY2lfaW5mb19vbGQpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTkzMC1cXHRcXHRtb2R1bGVfcHV0KGRydi1cXHUwMDNlb3duZXIpO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0xOTQ0PXN0YXRpYyBpbnQgX19kcnZfbm90aWZ5X3NjYW5fY29tcGxldGUoc3RydWN0IGRldmljZV9kcml2ZXIgKmRydiwgdm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTk0OS1cXHRcXHRpZiAoYXBfZHJ2LVxcdTAwM2Vvbl9zY2FuX2NvbXBsZXRlKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MTk1MDpcXHRcXHRcXHRhcF9kcnYtXFx1MDAzZW9uX3NjYW5fY29tcGxldGUoYXBfcWNpX2luZm8sXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoxOTUxOlxcdFxcdFxcdFxcdFxcdFxcdCBhcF9xY2lfaW5mb19vbGQpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMTk1Mi1cXHRcXHRtb2R1bGVfcHV0KGRydi1cXHUwMDNlb3duZXIpO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yMzExPXN0YXRpYyBib29sIGFwX2dldF9jb25maWd1cmF0aW9uKHZvaWQpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzEyLXtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzMTM6XFx0aWYgKCFhcF9xY2lfaW5mby1cXHUwMDNlZmxhZ3MpXFx0LyogUUNJIG5vdCBzdXBwb3J0ZWQgKi9cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMTQtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMxNS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzMTY6XFx0bWVtY3B5KGFwX3FjaV9pbmZvX29sZCwgYXBfcWNpX2luZm8sIHNpemVvZigqYXBfcWNpX2luZm8pKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzMTc6XFx0YXBfcWNpKGFwX3FjaV9pbmZvKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMTgtXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzE5OlxcdHJldHVybiBtZW1jbXAoYXBfcWNpX2luZm8sIGFwX3FjaV9pbmZvX29sZCxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMjAtXFx0XFx0ICAgICAgc2l6ZW9mKHN0cnVjdCBhcF9jb25maWdfaW5mbykpICE9IDA7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jPTIzMjk9c3RhdGljIGJvb2wgYXBfY29uZmlnX2hhc19uZXdfYXBzKHZvaWQpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzMzMtXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzM0OlxcdGlmICghYXBfcWNpX2luZm8tXFx1MDAzZWZsYWdzKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjMzNS1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzM2LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjMzNzpcXHRiaXRtYXBfYW5kbm90KG0sICh1bnNpZ25lZCBsb25nICopYXBfcWNpX2luZm8tXFx1MDAzZWFwbSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzMzg6XFx0XFx0ICAgICAgKHVuc2lnbmVkIGxvbmcgKilhcF9xY2lfaW5mb19vbGQtXFx1MDAzZWFwbSwgQVBfREVWSUNFUyk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzM5LVxcdGlmICghYml0bWFwX2VtcHR5KG0sIEFQX0RFVklDRVMpKVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYz0yMzUxPXN0YXRpYyBib29sIGFwX2NvbmZpZ19oYXNfbmV3X2RvbXModm9pZClcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMtMjM1NC1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jOjIzNTU6XFx0aWYgKCFhcF9xY2lfaW5mby1cXHUwMDNlZmxhZ3MpXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYy0yMzU2LVxcdFxcdHJldHVybiBmYWxzZTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzNTctXFxuZHJpdmVycy9zMzkwL2NyeXB0by9hcF9idXMuYzoyMzU4OlxcdGJpdG1hcF9hbmRub3QobSwgKHVuc2lnbmVkIGxvbmcgKilhcF9xY2lfaW5mby1cXHUwMDNlYXFtLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmM6MjM1OTpcXHRcXHQgICAgICAodW5zaWduZWQgbG9uZyAqKWFwX3FjaV9pbmZvX29sZC1cXHUwMDNlYXFtLCBBUF9ET01BSU5TKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jLTIzNjAtXFx0aWYgKCFiaXRtYXBfZW1wdHkobSwgQVBfRE9NQUlOUykpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM9ODY9c3RhdGljIGludCB2ZmlvX2FwX21hdHJpeF9kZXZfY3JlYXRlKHZvaWQpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTA2LVxcdGlmICh0ZXN0X2ZhY2lsaXR5KDEyKSkge1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxMDc6XFx0XFx0cmV0ID0gYXBfcWNpKFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VpbmZvKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTA4LVxcdFxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE1OjA4LjI0NDk5MjQzN1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4Njc2NjU1MDM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIFZGSU8gQVAgRGV2aWNlIENyZWF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgdmZpb19hcF9tYXRyaXhfZGV2X2NyZWF0ZWAgZnVuY3Rpb24sIHNwZWNpZmljYWxseSB0aGF0IGB0ZXN0X2ZhY2lsaXR5KDEyKWAgY2hlY2suIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBpZiBmYWNpbGl0eSAxMiB3YXNuJ3QgcHJlc2VudCwgdGhlIHdob2xlIHRoaW5nIHdvdWxkIGVycm9yIG91dC4gQnV0IGhhbmcgb24sIGl0IGRvZXNuJ3QhIEl0IGp1c3QgKnNraXBzKiB0aGUgYGFwX3FjaWAgY2FsbC4gQW5kIHNpbmNlIHRoZSBgbWF0cml4X2Rldi1cdTAwM2VpbmZvYCBzdHJ1Y3Qgd2FzIGBremFsbG9jX29iamAnZCwgaXQnbGwganVzdCBiZSB6ZXJvZWQgb3V0LiBUaGF0IG1lYW5zIHRoZSBkZXZpY2UgY3JlYXRpb24gKnN1Y2NlZWRzKiBldmVuIHdpdGhvdXQgdGhlIGZhY2lsaXR5LiBTbywgdGhlIG1hdHJpeCBkZXZpY2UgZ2V0cyByZWdpc3RlcmVkLCBldmVuIGluIHRoaXMgXCJwYXJ0aWFsXCIgc3RhdGUuIEludGVyZXN0aW5nLlxuXG5Ob3csIGNhbiB3ZSBhY3R1YWxseSBjcmVhdGUgYW4gbWRldiBvbiB0b3Agb2YgdGhpcz8gSSBuZWVkIHRvIGNoZWNrIHRoZSBgdmZpb19hcF9tZGV2X3Byb2JlYCBhbmQgYHZmaW9fYXBfbWRldl9pbml0X2RldmAgZnVuY3Rpb25zIHRvIHNlZSB3aGF0IGhhcHBlbnMgdGhlcmUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBRRU1VIG1pZ2h0IG5vdCBiZSBmdWxseSBlbXVsYXRpbmcgdGhlIEFQIGluc3RydWN0aW9ucyBieSBkZWZhdWx0LCBidXQgS1ZNIGNhbiBwYXNzIHRoZW0gdGhyb3VnaC4gVGhhdCdzIHRoZSBkaWZmZXJlbmNlLlxuXG5BbmQgd2FpdCwgaXNuJ3Qgc3l6a2FsbGVyIG9mdGVuIHJ1biB3aXRoIEtWTSBvbiBzMzkweD8gWWVzLCBpdCBpcyEgU28gaXQgKnNob3VsZCogaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBpbnRlcmFjdCB3aXRoIHRoZXNlIGRldmljZXMsIGF0IGxlYXN0IGluIGEgcGFzc3Rocm91Z2ggY29uZmlndXJhdGlvbi4gV2hpY2ggYnJpbmdzIG1lIHRvIHRoZSBjb3JlIHF1ZXN0aW9uOiBkb2VzIHN5emthbGxlciBoYXZlIGV4aXN0aW5nIGRlc2NyaXB0aW9ucyBvciBmdXp6aW5nIGNvdmVyYWdlIGZvciBgdmZpb19hcGA/IEkgbmVlZCB0byBjaGVjayB0aGUgc3l6a2FsbGVyIGNvZGUgYmFzZSB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBkZWZpbml0aW9ucyBvciB0ZXN0IGNhc2VzIHJlbGF0ZWQgdG8gdGhlIFZGSU8gQVAgc3Vic3lzdGVtLiBUaGF0J3MgdGhlIGtleSB0byBleHBsb2l0aW5nIGFueSB2dWxuZXJhYmlsaXRpZXMgaGVyZS4gSSdtIGdvaW5nIHRvIGZpbmQgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDk5OCwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNToxNi45MjE2NTAxNTRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NDE1MjY3NTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmZpb19hcFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE1MDMgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3Q9Nj1UaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgbG9ja3MgdGhhdCBhcmUgcGVydGluZW50IHRvIHRoZSBzZWN1cmUgb3BlcmF0aW9uXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdDo3Om9mIHRoZSB2ZmlvX2FwIGRldmljZSBkcml2ZXIuIFRocm91Z2hvdXQgdGhpcyBkb2N1bWVudCwgdGhlIGZvbGxvd2luZyB2YXJpYWJsZXNcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0LTgtd2lsbCBiZSB1c2VkIHRvIGRlbm90ZSBpbnN0YW5jZXMgb2YgdGhlIHN0cnVjdHVyZXMgaGVyZWluIGRlc2NyaWJlZDpcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtMTUtXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdDoxNjpUaGUgTWF0cml4IERldmljZXMgTG9jayAoZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaClcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0LTE3LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdD0zMj1vciB1c2luZyB0aGUgZGF0YSBmcm9tIGEgZmllbGQgY29udGFpbmVkIHdpdGhpbiBhIG1hdHJpeF9tZGV2IGluc3RhbmNlXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdDozMzpyZXByZXNlbnRpbmcgb25lIG9mIHRoZSB2ZmlvX2FwIGRldmljZSBkcml2ZXIncyBtZWRpYXRlZCBkZXZpY2VzLlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtMzQtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0PTQ2PVRoZSBLVk0gTG9jayAoa3ZtLVxcdTAwM2Vsb2NrKSBjb250cm9scyBhY2Nlc3MgdG8gdGhlIHN0YXRlIGRhdGEgZm9yIGEgS1ZNIGd1ZXN0LiBUaGlzXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdDo0Nzpsb2NrIG11c3QgYmUgaGVsZCBieSB0aGUgdmZpb19hcCBkZXZpY2UgZHJpdmVyIHdoaWxlIG9uZSBvciBtb3JlIEFQIGFkYXB0ZXJzLFxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtNDgtZG9tYWlucyBvciBjb250cm9sIGRvbWFpbnMgYXJlIGJlaW5nIHBsdWdnZWQgaW50byBvciB1bnBsdWdnZWQgZnJvbSB0aGUgZ3Vlc3QuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0PTUyPWJlZW4gYXR0YWNoZWQgdG8gdGhlIEtWTSBndWVzdC5cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0LTUzLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3Q6NTQ6VGhlIEd1ZXN0cyBMb2NrIChkcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oKVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtNTUtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3Q9Njk9S1ZNIGd1ZXN0LiBUaGlzIGxvY2sgbXVzdCBiZSBoZWxkOlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtNzAtXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdDo3MToxLiBUbyBjb250cm9sIGFjY2VzcyB0byB0aGUgS1ZNIHBvaW50ZXIgKG1hdHJpeF9tZGV2LVxcdTAwM2Vrdm0pIHdoaWxlIHRoZSB2ZmlvX2FwXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdC03Mi0gICBkZXZpY2UgZHJpdmVyIGlzIHVzaW5nIGl0IHRvIHBsdWcvdW5wbHVnIEFQIGRldmljZXMgcGFzc2VkIHRocm91Z2ggdG8gdGhlIEtWTVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC1sb2NraW5nLnJzdC03OS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLWxvY2tpbmcucnN0OjgwOiAgIEZvciBleGFtcGxlLCB3aGVuIGEgcXVldWUgZGV2aWNlIGlzIHJlbW92ZWQgZnJvbSB0aGUgdmZpb19hcCBkZXZpY2UgZHJpdmVyLFxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAtbG9ja2luZy5yc3QtODEtICAgaWYgdGhlIGFkYXB0ZXIgaXMgcGFzc2VkIHRocm91Z2ggdG8gYSBLVk0gZ3Vlc3QsIGl0IHdpbGwgaGF2ZSB0byBiZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q9MTg4PVRoZSBkZXNpZ24gaW50cm9kdWNlcyB0aHJlZSBuZXcgb2JqZWN0czpcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTE5MC0xLiBBUCBtYXRyaXggZGV2aWNlXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MTkxOjIuIFZGSU8gQVAgZGV2aWNlIGRyaXZlciAodmZpb19hcC5rbylcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0xOTItMy4gVkZJTyBBUCBtZWRpYXRlZCBwYXNzLXRocm91Z2ggZGV2aWNlXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdD0xOTQ9VGhlIFZGSU8gQVAgZGV2aWNlIGRyaXZlclxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTE5NS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MTk2OlRoZSBWRklPIEFQICh2ZmlvX2FwKSBkZXZpY2UgZHJpdmVyIHNlcnZlcyB0aGUgZm9sbG93aW5nIHB1cnBvc2VzOlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTE5Ny1cXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTE5OS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoyMDA6Mi4gU2V0cyB1cCB0aGUgVkZJTyBtZWRpYXRlZCBkZXZpY2UgaW50ZXJmYWNlcyB0byBtYW5hZ2UgYSB2ZmlvX2FwIG1lZGlhdGVkXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMjAxLSAgIGRldmljZSBhbmQgY3JlYXRlcyB0aGUgc3lzZnMgaW50ZXJmYWNlcyBmb3IgYXNzaWduaW5nIGFkYXB0ZXJzLCB1c2FnZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q9MjExPXJlc2VydmVkOjpcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTIzMS0gIHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICB8XFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MjMyOiAgfCAgICAgIGFwX2J1cyAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0gXFx1MDAzZSAgdmZpb19hcCBkcml2ZXIgIHxcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0yMzMtICB8ICAgICAgICAgICAgICAgICAgfCAgICAgICA4IHByb2JlICAgICAgICB8ICAgICAgICAgICAgICAgICAgfFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMjQzLVxcdCB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoyNDQ6XFx0IHwgfCA5IGNyZWF0ZSB2ZmlvX2FwLXBhc3N0aHJvdWdoIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTI0NS1cXHQgfCArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdD0yNDk9VGhlIHByb2Nlc3MgZm9yIHJlc2VydmluZyBhbiBBUCBxdWV1ZSBmb3IgdXNlIGJ5IGEgS1ZNIGd1ZXN0IGlzOlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTI1MC1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoyNTE6MS4gVGhlIGFkbWluaXN0cmF0b3IgbG9hZHMgdGhlIHZmaW9fYXAgZGV2aWNlIGRyaXZlclxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTI1Mi0yLiBUaGUgdmZpby1hcCBkcml2ZXIgZHVyaW5nIGl0cyBpbml0aWFsaXphdGlvbiB3aWxsIHJlZ2lzdGVyIGEgc2luZ2xlICdtYXRyaXgnXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMjUzLSAgIGRldmljZSB3aXRoIHRoZSBkZXZpY2UgY29yZS4gVGhpcyB3aWxsIHNlcnZlIGFzIHRoZSBwYXJlbnQgZGV2aWNlIGZvclxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjI1NDogICBhbGwgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2VzIHVzZWQgdG8gY29uZmlndXJlIGFuIEFQIG1hdHJpeCBmb3IgYSBndWVzdC5cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoyNTU6My4gVGhlIC9zeXMvZGV2aWNlcy92ZmlvX2FwL21hdHJpeCBkZXZpY2UgaXMgY3JlYXRlZCBieSB0aGUgZGV2aWNlIGNvcmVcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoyNTY6NC4gVGhlIHZmaW9fYXAgZGV2aWNlIGRyaXZlciB3aWxsIHJlZ2lzdGVyIHdpdGggdGhlIEFQIGJ1cyBmb3IgQVAgcXVldWUgZGV2aWNlc1xcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjI1NzogICBvZiB0eXBlIDEwIGFuZCBoaWdoZXIgKENFWDQgYW5kIG5ld2VyKS4gVGhlIGRyaXZlciB3aWxsIHByb3ZpZGUgdGhlIHZmaW9fYXBcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0yNTgtICAgZHJpdmVyJ3MgcHJvYmUgYW5kIHJlbW92ZSBjYWxsYmFjayBpbnRlcmZhY2VzLiBEZXZpY2VzIG9sZGVyIHRoYW4gQ0VYNCBxdWV1ZXNcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTI2Mi0gICBzeXN0ZW1zIGFyb3VuZCBvbiB3aGljaCB0byB0ZXN0LlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjI2Mzo1LiBUaGUgQVAgYnVzIHJlZ2lzdGVycyB0aGUgdmZpb19hcCBkZXZpY2UgZHJpdmVyIHdpdGggdGhlIGRldmljZSBjb3JlXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMjY0LTYuIFRoZSBhZG1pbmlzdHJhdG9yIGVkaXRzIHRoZSBBUCBhZGFwdGVyIGFuZCBxdWV1ZSBtYXNrcyB0byByZXNlcnZlIEFQIHF1ZXVlc1xcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjI2NTogICBmb3IgdXNlIGJ5IHRoZSB2ZmlvX2FwIGRldmljZSBkcml2ZXIuXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MjY2OjcuIFRoZSBBUCBidXMgcmVtb3ZlcyB0aGUgQVAgcXVldWVzIHJlc2VydmVkIGZvciB0aGUgdmZpb19hcCBkcml2ZXIgZnJvbSB0aGVcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0yNjctICAgZGVmYXVsdCB6Y3J5cHQgY2V4NHF1ZXVlIGRyaXZlci5cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoyNjg6OC4gVGhlIEFQIGJ1cyBwcm9iZXMgdGhlIHZmaW9fYXAgZGV2aWNlIGRyaXZlciB0byBiaW5kIHRoZSBxdWV1ZXMgcmVzZXJ2ZWQgZm9yXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMjY5LSAgIGl0LlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjI3MDo5LiBUaGUgYWRtaW5pc3RyYXRvciBjcmVhdGVzIGEgcGFzc3Rocm91Z2ggdHlwZSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSB0byBiZVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTI3MS0gICB1c2VkIGJ5IGEgZ3Vlc3RcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0PTI3OD1kZXZpY2UgY29yZSBkcml2ZXIgdG86XFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMjc5LVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjI4MDoqIFJlZ2lzdGVyIGFuIEFQIG1lZGlhdGVkIGJ1cyBkcml2ZXIgdG8gYWRkIGEgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UgdG8gYW5kXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMjgxLSAgcmVtb3ZlIGl0IGZyb20gYSBWRklPIGdyb3VwLlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjI4MjoqIENyZWF0ZSBhbmQgZGVzdHJveSBhIHZmaW9fYXAgbWVkaWF0ZWQgZGV2aWNlXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MjgzOiogQWRkIGEgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UgdG8gYW5kIHJlbW92ZSBpdCBmcm9tIHRoZSBBUCBtZWRpYXRlZCBidXMgZHJpdmVyXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6Mjg0OiogQWRkIGEgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UgdG8gYW5kIHJlbW92ZSBpdCBmcm9tIGFuIElPTU1VIGdyb3VwXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMjg1LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q9Mjg3PW9mIHRoZSBWRklPIEFQIG1lZGlhdGVkIGRldmljZSBkcml2ZXI6Olxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzAxLSAgIHwgfFBoeXNpY2FsIHwgK1xcdTAwM2MtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgIHxcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDozMDI6ICAgfCB8IGRldmljZSAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgdmZpb19hcC5rbyAgfFxcdTAwM2MtXFx1MDAzZSBtYXRyaXhcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0zMDMtICAgfCB8aW50ZXJmYWNlfCArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXHUwMDNlKyAgICAgICAgICAgICAgfCAgICBkZXZpY2VcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTMwNi1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDozMDc6RHVyaW5nIGluaXRpYWxpemF0aW9uIG9mIHRoZSB2ZmlvX2FwIG1vZHVsZSwgdGhlIG1hdHJpeCBkZXZpY2UgaXMgcmVnaXN0ZXJlZFxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTMwOC13aXRoIGFuICdtZGV2X3BhcmVudF9vcHMnIHN0cnVjdHVyZSB0aGF0IHByb3ZpZGVzIHRoZSBzeXNmcyBhdHRyaWJ1dGVcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0PTMxMD1tYXRyaXggZGV2aWNlLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzI2LVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjMyNzogICAgICAvc3lzL2RldmljZXMvdmZpb19hcC9tYXRyaXgvbWRldl9zdXBwb3J0ZWRfdHlwZXMvdmZpb19hcC1wYXNzdGhyb3VnaFxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTMyOC1cXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTM0My1cXHQqIGF2YWlsYWJsZV9pbnN0YW5jZXM6XFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MzQ0OlxcdCAgICB0aGUgbnVtYmVyIG9mIHZmaW9fYXAgbWVkaWF0ZWQgcGFzc3Rocm91Z2ggZGV2aWNlc1xcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTM0NS1cXHQgICAgdGhhdCBjYW4gYmUgY3JlYXRlZFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzUxLSAgICBmcmFtZXdvcmssIHRoZSBzeXNmcyBhdHRyaWJ1dGUgZmlsZXMgaWRlbnRpZmllZCBpbiB0aGUgJ21kZXZfYXR0cl9ncm91cHMnXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MzUyOiAgICBzdHJ1Y3R1cmUgd2lsbCBiZSBjcmVhdGVkIGluIHRoZSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSdzIGRpcmVjdG9yeS4gVGhlXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MzUzOiAgICBzeXNmcyBhdHRyaWJ1dGVzIGZvciBhIHZmaW9fYXAgbWVkaWF0ZWQgZGV2aWNlIGFyZTpcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0zNTQtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0zNTYtICAgICAgV3JpdGUtb25seSBhdHRyaWJ1dGVzIGZvciBhc3NpZ25pbmcvdW5hc3NpZ25pbmcgYW4gQVAgYWRhcHRlciB0by9mcm9tIHRoZVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjM1NzogICAgICB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZS4gVG8gYXNzaWduL3VuYXNzaWduIGFuIGFkYXB0ZXIsIHRoZSBBUElEIG9mIHRoZVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTM1OC0gICAgICBhZGFwdGVyIGlzIGVjaG9lZCBpbnRvIHRoZSByZXNwZWN0aXZlIGF0dHJpYnV0ZSBmaWxlLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzYwLSAgICAgIFdyaXRlLW9ubHkgYXR0cmlidXRlcyBmb3IgYXNzaWduaW5nL3VuYXNzaWduaW5nIGFuIEFQIHVzYWdlIGRvbWFpbiB0by9mcm9tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MzYxOiAgICAgIHRoZSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZS4gVG8gYXNzaWduL3VuYXNzaWduIGEgZG9tYWluLCB0aGUgZG9tYWluXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzYyLSAgICAgIG51bWJlciBvZiB0aGUgdXNhZ2UgZG9tYWluIGlzIGVjaG9lZCBpbnRvIHRoZSByZXNwZWN0aXZlIGF0dHJpYnV0ZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzY1LSAgICAgIEEgcmVhZC1vbmx5IGZpbGUgZm9yIGRpc3BsYXlpbmcgdGhlIEFQUU5zIGRlcml2ZWQgZnJvbSB0aGUgQ2FydGVzaWFuXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MzY2OiAgICAgIHByb2R1Y3Qgb2YgdGhlIGFkYXB0ZXIgYW5kIGRvbWFpbiBudW1iZXJzIGFzc2lnbmVkIHRvIHRoZSB2ZmlvX2FwIG1lZGlhdGVkXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzY3LSAgICAgIGRldmljZS5cXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTM3MS0gICAgICBmaWVsZHMgcmVzcGVjdGl2ZWx5IG9mIHRoZSBLVk0gZ3Vlc3QncyBDUllDQi4gVGhpcyBtYXkgZGlmZmVyIGZyb20gdGhlXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MzcyOiAgICAgIHRoZSBBUFFOcyBhc3NpZ25lZCB0byB0aGUgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UgaWYgYW55IEFQUU4gZG9lcyBub3RcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDozNzM6ICAgICAgcmVmZXJlbmNlIGEgcXVldWUgZGV2aWNlIGJvdW5kIHRvIHRoZSB2ZmlvX2FwIGRldmljZSBkcml2ZXIgKGkuZS4sIHRoZVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTM3NC0gICAgICBxdWV1ZSBpcyBub3QgaW4gdGhlIGhvc3QncyBBUCBjb25maWd1cmF0aW9uKS5cXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTM3Ni0gICAgICBXcml0ZS1vbmx5IGF0dHJpYnV0ZXMgZm9yIGFzc2lnbmluZy91bmFzc2lnbmluZyBhbiBBUCBjb250cm9sIGRvbWFpblxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjM3NzogICAgICB0by9mcm9tIHRoZSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZS4gVG8gYXNzaWduL3VuYXNzaWduIGEgY29udHJvbCBkb21haW4sXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzc4LSAgICAgIHRoZSBJRCBvZiB0aGUgZG9tYWluIHRvIGJlIGFzc2lnbmVkL3VuYXNzaWduZWQgaXMgZWNob2VkIGludG8gdGhlXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0zODEtICAgICAgQSByZWFkLW9ubHkgZmlsZSBmb3IgZGlzcGxheWluZyB0aGUgY29udHJvbCBkb21haW4gbnVtYmVycyBhc3NpZ25lZCB0byB0aGVcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDozODI6ICAgICAgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UuXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzgzLSAgICBhcF9jb25maWc6XFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzg0LSAgICAgIEEgcmVhZC93cml0ZSBmaWxlIHRoYXQsIHdoZW4gd3JpdHRlbiB0bywgYWxsb3dzIGFsbCB0aHJlZSBvZiB0aGVcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDozODU6ICAgICAgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UncyBhcCBtYXRyaXggbWFza3MgdG8gYmUgcmVwbGFjZWQgaW4gb25lIHNob3QuXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMzg2LSAgICAgIFRocmVlIG1hc2tzIGFyZSBnaXZlbiwgb25lIGZvciBhZGFwdGVycywgb25lIGZvciBkb21haW5zLCBhbmQgb25lIGZvclxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNDE2LSAgY3JlYXRlOlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjQxNzogICAgYWxsb2NhdGVzIHRoZSBhcF9tYXRyaXhfbWRldiBzdHJ1Y3R1cmUgdXNlZCBieSB0aGUgdmZpb19hcCBkcml2ZXIgdG86XFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNDE4LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNDI0LSAgICAgIHJlZmVyZW5jaW5nIHF1ZXVlIGRldmljZXMgdGhhdCBkbyBub3QgZXhpc3QsIG9yIGFyZSBub3QgYm91bmQgdG8gdGhlXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6NDI1OiAgICAgIHZmaW9fYXAgZGV2aWNlIGRyaXZlci5cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC00MjYtXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNDI3LSAgcmVtb3ZlOlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjQyODogICAgZGVhbGxvY2F0ZXMgdGhlIHZmaW9fYXAgbWVkaWF0ZWQgZGV2aWNlJ3MgYXBfbWF0cml4X21kZXYgc3RydWN0dXJlLlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTQyOS0gICAgVGhpcyB3aWxsIGJlIGFsbG93ZWQgb25seSBpZiBhIHJ1bm5pbmcgZ3Vlc3QgaXMgbm90IHVzaW5nIHRoZSBtZGV2Llxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNDM3LSAgICBhbmQgY29uZmlndXJlcyB0aGUgZ3Vlc3QncyBhY2Nlc3MgdG8gdGhlIEFQIG1hdHJpeCBkZWZpbmVkIHZpYSB0aGVcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo0Mzg6ICAgIHZmaW9fYXAgbWVkaWF0ZWQgZGV2aWNlJ3Mgc3lzZnMgYXR0cmlidXRlIGZpbGVzLlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTQzOS1cXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0PTQ1MT1jb25maWd1cmVkIHZpYSBpdHMgQVBDQiBieTpcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTQ1My0qIFNldHRpbmcgdGhlIGJpdHMgaW4gdGhlIEFQTSBjb3JyZXNwb25kaW5nIHRvIHRoZSBBUElEcyBhc3NpZ25lZCB0byB0aGVcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo0NTQ6ICB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSB2aWEgaXRzICdhc3NpZ25fYWRhcHRlcicgaW50ZXJmYWNlLlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTQ1NS0qIFNldHRpbmcgdGhlIGJpdHMgaW4gdGhlIEFRTSBjb3JyZXNwb25kaW5nIHRvIHRoZSBkb21haW5zIGFzc2lnbmVkIHRvIHRoZVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjQ1NjogIHZmaW9fYXAgbWVkaWF0ZWQgZGV2aWNlIHZpYSBpdHMgJ2Fzc2lnbl9kb21haW4nIGludGVyZmFjZS5cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC00NTctKiBTZXR0aW5nIHRoZSBiaXRzIGluIHRoZSBBRE0gY29ycmVzcG9uZGluZyB0byB0aGUgZG9tYWluIGRJRHMgYXNzaWduZWQgdG8gdGhlXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6NDU4OiAgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UgdmlhIGl0cyAnYXNzaWduX2NvbnRyb2xfZG9tYWlucycgaW50ZXJmYWNlLlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTQ1OS1cXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0PTQ2MT1pcyBub3QgYm91bmQgdG8gdGhlIGRldmljZSBkcml2ZXIgZmFjaWxpdGF0aW5nIGl0cyBwYXNzLXRocm91Z2guIENvbnNlcXVlbnRseSxcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo0NjI6YW4gQVBRTiB0aGF0IGRvZXMgbm90IHJlZmVyZW5jZSBhIHF1ZXVlIGRldmljZSBib3VuZCB0byB0aGUgdmZpb19hcCBkZXZpY2VcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC00NjMtZHJpdmVyIHdpbGwgbm90IGJlIGFzc2lnbmVkIHRvIGEgS1ZNIGd1ZXN0J3MgbWF0cml4LiBUaGUgQVAgYXJjaGl0ZWN0dXJlLFxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0PTQ2ND1ob3dldmVyLCBkb2VzIG5vdCBwcm92aWRlIGEgbWVhbnMgdG8gZmlsdGVyIGluZGl2aWR1YWwgQVBRTnMgZnJvbSB0aGUgZ3Vlc3Qnc1xcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjQ2NTptYXRyaXgsIHNvIHRoZSBhZGFwdGVycywgZG9tYWlucyBhbmQgY29udHJvbCBkb21haW5zIGFzc2lnbmVkIHRvIHZmaW9fYXBcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC00NjYtbWVkaWF0ZWQgZGV2aWNlIHZpYSBpdHMgc3lzZnMgJ2Fzc2lnbl9hZGFwdGVyJywgJ2Fzc2lnbl9kb21haW4nIGFuZFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q9NDY4PWNvbmZpZ3VyYXRpb24gdG8gYSBndWVzdDpcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTQ3NC0qIEVhY2ggQVBRTiBkZXJpdmVkIGZyb20gdGhlIENhcnRlc2lhbiBwcm9kdWN0IG9mIHRoZSBBUElEcyBhbmQgQVBRSXMgYXNzaWduZWRcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo0NzU6ICB0byB0aGUgdmZpb19hcCBtZGV2IGlzIGV4YW1pbmVkIGFuZCBpZiBhbnkgb25lIG9mIHRoZW0gZG9lcyBub3QgcmVmZXJlbmNlIGFcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo0NzY6ICBxdWV1ZSBkZXZpY2UgYm91bmQgdG8gdGhlIHZmaW9fYXAgZGV2aWNlIGRyaXZlciwgdGhlIGFkYXB0ZXIgd2lsbCBub3QgYmVcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC00NzctICBwbHVnZ2VkIGludG8gdGhlIGd1ZXN0IChpLmUuLCB0aGUgYml0IGNvcnJlc3BvbmRpbmcgdG8gaXRzIEFQSUQgd2lsbCBub3QgYmVcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0PTU2Mz1UaGVzZSBhcmUgdGhlIHN0ZXBzOlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTU2NC1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo1NjU6MS4gSW5zdGFsbCB0aGUgdmZpb19hcCBtb2R1bGUgb24gdGhlIGxpbnV4IGhvc3QuIFRoZSBkZXBlbmRlbmN5IGNoYWluIGZvciB0aGVcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo1NjY6ICAgdmZpb19hcCBtb2R1bGUgaXM6XFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNTY3LSAgICogaW9tbXVcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTU3NC1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo1NzU6ICAgVG8gYnVpbGQgdGhlIHZmaW9fYXAgbW9kdWxlLCB0aGUga2VybmVsIGJ1aWxkIG11c3QgYmUgY29uZmlndXJlZCB3aXRoIHRoZVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTU3Ni0gICBmb2xsb3dpbmcgS2NvbmZpZyBlbGVtZW50cyBzZWxlY3RlZDpcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTU4Mi1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo1ODM6ICAgSWYgdXNpbmcgbWFrZSBtZW51Y29uZmlnIHNlbGVjdCB0aGUgZm9sbG93aW5nIHRvIGJ1aWxkIHRoZSB2ZmlvX2FwIG1vZHVsZTo6XFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNTg0LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNTk3LSAgIHF1ZXVlIGRldmljZSBkcml2ZXJzLiBBbGwgcmVtYWluaW5nIEFQUU5zIGFyZSBhdmFpbGFibGUgZm9yIHVzZSBieVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjU5ODogICBhbnkgb3RoZXIgZGV2aWNlIGRyaXZlci4gVGhlIHZmaW9fYXAgZGV2aWNlIGRyaXZlciBpcyBjdXJyZW50bHkgdGhlIG9ubHlcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC01OTktICAgbm9uLWRlZmF1bHQgZGV2aWNlIGRyaXZlci4gVGhlIGxvY2F0aW9uIG9mIHRoZSBzeXNmcyBmaWxlcyBjb250YWluaW5nIHRoZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNjE4LSAgIEFsbCBvdGhlciBBUFFOcyBhcmUgYXZhaWxhYmxlIHRvIHRoZSBub24tZGVmYXVsdCBkZXZpY2UgZHJpdmVycyBzdWNoIGFzIHRoZVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjYxOTogICB2ZmlvX2FwIGRyaXZlci5cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC02MjAtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC02NDYtICAgbWF0Y2ggaXMgZGV0ZWN0ZWQsICBvbmx5IHRoZSBkZWZhdWx0IEFQIHF1ZXVlIGRldmljZSBkcml2ZXJzIHdpbGwgYmUgcHJvYmVkO1xcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjY0NzogICBvdGhlcndpc2UsIHRoZSB2ZmlvX2FwIGRldmljZSBkcml2ZXIgd2lsbCBiZSBwcm9iZWQuXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNjQ4LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNzA4LSAgICoqTm90ZToqKlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjcwOTogICBDaGFuZ2luZyBhIG1hc2sgc3VjaCB0aGF0IG9uZSBvciBtb3JlIEFQUU5zIHdpbGwgYmUgdGFrZW4gZnJvbSBhIHZmaW9fYXBcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03MTAtICAgbWVkaWF0ZWQgZGV2aWNlIChzZWUgYmVsb3cpIHdpbGwgZmFpbCB3aXRoIGFuIGVycm9yIChFQlVTWSkuIEEgbWVzc2FnZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNzEyLSAgIGNvbW1hbmQuIFRoZSBvdXRwdXQgaWRlbnRpZmllcyBlYWNoIEFQUU4gZmxhZ2dlZCBhcyAnaW4gdXNlJyBhbmQgaWRlbnRpZmllc1xcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjcxMzogICB0aGUgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UgdG8gd2hpY2ggaXQgaXMgYXNzaWduZWQ7IGZvciBleGFtcGxlOlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTcxNC1cXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0PTcxOD1TZWN1cmluZyB0aGUgQVBRTnMgZm9yIG91ciBleGFtcGxlXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03MjAtICAgVG8gc2VjdXJlIHRoZSBBUCBxdWV1ZXMgMDUuMDAwNCwgMDUuMDA0NywgMDUuMDBhYiwgMDUuMDBmZiwgMDYuMDAwNCwgMDYuMDA0NyxcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo3MjE6ICAgMDYuMDBhYiwgYW5kIDA2LjAwZmYgZm9yIHVzZSBieSB0aGUgdmZpb19hcCBkZXZpY2UgZHJpdmVyLCB0aGUgY29ycmVzcG9uZGluZ1xcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTcyMi0gICBBUFFOcyBjYW4gYmUgcmVtb3ZlZCBmcm9tIHRoZSBkZWZhdWx0IG1hc2tzIHVzaW5nIGVpdGhlciBvZiB0aGUgZm9sbG93aW5nXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03MzctICAgVGhpcyB3aWxsIHJlc3VsdCBpbiBBUCBxdWV1ZXMgMDUuMDAwNCwgMDUuMDA0NywgMDUuMDBhYiwgMDUuMDBmZiwgMDYuMDAwNCxcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo3Mzg6ICAgMDYuMDA0NywgMDYuMDBhYiwgYW5kIDA2LjAwZmYgZ2V0dGluZyBib3VuZCB0byB0aGUgdmZpb19hcCBkZXZpY2UgZHJpdmVyLiBUaGVcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo3Mzk6ICAgc3lzZnMgZGlyZWN0b3J5IGZvciB0aGUgdmZpb19hcCBkZXZpY2UgZHJpdmVyIHdpbGwgbm93IGNvbnRhaW4gc3ltYm9saWMgbGlua3NcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03NDAtICAgdG8gdGhlIEFQIHF1ZXVlIGRldmljZXMgYm91bmQgdG8gaXQ6Olxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNzQzLSAgICAgLi4uIFtkcml2ZXJzXVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0Ojc0NDogICAgIC4uLi4uLiBbdmZpb19hcF1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03NDUtICAgICAuLi4uLi4uLi4gWzA1LjAwMDRdXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03NTQtICAgS2VlcCBpbiBtaW5kIHRoYXQgb25seSB0eXBlIDEwIGFuZCBuZXdlciBhZGFwdGVycyAoaS5lLiwgQ0VYNCBhbmQgbGF0ZXIpXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6NzU1OiAgIGNhbiBiZSBib3VuZCB0byB0aGUgdmZpb19hcCBkZXZpY2UgZHJpdmVyLiBUaGUgcmVhc29uIGZvciB0aGlzIGlzIHRvXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNzU2LSAgIHNpbXBsaWZ5IHRoZSBpbXBsZW1lbnRhdGlvbiBieSBub3QgbmVlZGxlc3NseSBjb21wbGljYXRpbmcgdGhlIGRlc2lnbiBieVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNzYwLSAgIFRoZSBhZG1pbmlzdHJhdG9yLCB0aGVyZWZvcmUsIG11c3QgdGFrZSBjYXJlIHRvIHNlY3VyZSBvbmx5IEFQIHF1ZXVlcyB0aGF0XFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6NzYxOiAgIGNhbiBiZSBib3VuZCB0byB0aGUgdmZpb19hcCBkZXZpY2UgZHJpdmVyLiBUaGUgZGV2aWNlIHR5cGUgZm9yIGEgZ2l2ZW4gQVBcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03NjItICAgcXVldWUgZGV2aWNlIGNhbiBiZSByZWFkIGZyb20gdGhlIHBhcmVudCBjYXJkJ3Mgc3lzZnMgZGlyZWN0b3J5LiBGb3IgZXhhbXBsZSxcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTc2Ny0gICBUaGUgaHd0eXBlIG11c3QgYmUgMTAgb3IgaGlnaGVyIChDRVg0IG9yIG5ld2VyKSBpbiBvcmRlciB0byBiZSBib3VuZCB0byB0aGVcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo3Njg6ICAgdmZpb19hcCBkZXZpY2UgZHJpdmVyLlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTc2OS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03NzAtMy4gQ3JlYXRlIHRoZSBtZWRpYXRlZCBkZXZpY2VzIG5lZWRlZCB0byBjb25maWd1cmUgdGhlIEFQIG1hdHJpeGVzIGZvciB0aGVcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo3NzE6ICAgdGhyZWUgZ3Vlc3RzIGFuZCB0byBwcm92aWRlIGFuIGludGVyZmFjZSB0byB0aGUgdmZpb19hcCBkcml2ZXIgZm9yXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtNzcyLSAgIHVzZSBieSB0aGUgZ3Vlc3RzOjpcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03NzMtXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6Nzc0OiAgICAgL3N5cy9kZXZpY2VzL3ZmaW9fYXAvbWF0cml4L1xcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTc3NS0gICAgIC0tLSBbbWRldl9zdXBwb3J0ZWRfdHlwZXNdXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6Nzc2OiAgICAgLS0tLS0tIFt2ZmlvX2FwLXBhc3N0aHJvdWdoXSAocGFzc3Rocm91Z2ggdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UgdHlwZSlcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03NzctICAgICAtLS0tLS0tLS0gY3JlYXRlXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC03OTUtXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6Nzk2OiAgICAgL3N5cy9kZXZpY2VzL3ZmaW9fYXAvbWF0cml4L1xcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTc5Ny0gICAgIC0tLSBbbWRldl9zdXBwb3J0ZWRfdHlwZXNdXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6Nzk4OiAgICAgLS0tLS0tIFt2ZmlvX2FwLXBhc3N0aHJvdWdoXVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTc5OS0gICAgIC0tLS0tLS0tLSBbZGV2aWNlc11cXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTgyNi1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo4Mjc6ICAgTm90ZSAqKioqKjogVGhlIHZmaW9fYXAgbWRldnMgZG8gbm90IHBlcnNpc3QgYWNyb3NzIHJlYm9vdHMgdW5sZXNzIHRoZVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTgyOC0gICAgICAgICAgICAgICBtZGV2Y3RsIHRvb2wgaXMgdXNlZCB0byBjcmVhdGUgYW5kIHBlcnNpc3QgdGhlbS5cXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTg3OS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo4ODA6ICAgICAtIE11c3Qgb25seSBiZSBhdmFpbGFibGUgdG8gdGhlIHZmaW9fYXAgZGV2aWNlIGRyaXZlciBhcyBzcGVjaWZpZWQgaW4gdGhlXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtODgxLSAgICAgICBzeXNmcyAvc3lzL2J1cy9hcC9hcG1hc2sgYW5kIC9zeXMvYnVzL2FwL2FxbWFzayBhdHRyaWJ1dGUgZmlsZXMuIElmIGV2ZW5cXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTg4NC1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo4ODU6ICAgICAtIE11c3QgTk9UIGJlIGFzc2lnbmVkIHRvIGFub3RoZXIgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UuIElmIGV2ZW4gb25lIEFQUU5cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo4ODY6ICAgICAgIGlzIGFzc2lnbmVkIHRvIGFub3RoZXIgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UsIHRoZSBvcGVyYXRpb24gd2lsbFxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTg4Ny0gICAgICAgdGVybWluYXRlIHdpdGggYW4gZXJyb3IgKEVCVVNZKS5cXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTkwNS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5MDY6ICAgICAtIE11c3Qgb25seSBiZSBhdmFpbGFibGUgdG8gdGhlIHZmaW9fYXAgZGV2aWNlIGRyaXZlciBhcyBzcGVjaWZpZWQgaW4gdGhlXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTA3LSAgICAgICBzeXNmcyAvc3lzL2J1cy9hcC9hcG1hc2sgYW5kIC9zeXMvYnVzL2FwL2FxbWFzayBhdHRyaWJ1dGUgZmlsZXMuIElmIGV2ZW5cXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTkxMC1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5MTE6ICAgICAtIE11c3QgTk9UIGJlIGFzc2lnbmVkIHRvIGFub3RoZXIgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UuIElmIGV2ZW4gb25lIEFQUU5cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5MTI6ICAgICAgIGlzIGFzc2lnbmVkIHRvIGFub3RoZXIgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UsIHRoZSBvcGVyYXRpb24gd2lsbFxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTkxMy0gICAgICAgdGVybWluYXRlIHdpdGggYW4gZXJyb3IgKEVCVVNZKS5cXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTkyOC0gICAgIC91c3IvYmluL3FlbXUtc3lzdGVtLXMzOTB4IC4uLiAtY3B1IGhvc3QsYXA9b24sYXBxY2k9b24sYXBmdD1vbixhcHFpPW9uIFxcXFxcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5Mjk6XFx0LWRldmljZSB2ZmlvLWFwLHN5c2ZzZGV2PS9zeXMvZGV2aWNlcy92ZmlvX2FwL21hdHJpeC8kdXVpZDEgLi4uXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTMwLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTMzLSAgICAgL3Vzci9iaW4vcWVtdS1zeXN0ZW0tczM5MHggLi4uIC1jcHUgaG9zdCxhcD1vbixhcHFjaT1vbixhcGZ0PW9uLGFwcWk9b24gXFxcXFxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjkzNDpcXHQtZGV2aWNlIHZmaW8tYXAsc3lzZnNkZXY9L3N5cy9kZXZpY2VzL3ZmaW9fYXAvbWF0cml4LyR1dWlkMiAuLi5cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC05MzUtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC05MzgtICAgICAvdXNyL2Jpbi9xZW11LXN5c3RlbS1zMzkweCAuLi4gLWNwdSBob3N0LGFwPW9uLGFwcWNpPW9uLGFwZnQ9b24sYXBxaT1vbiBcXFxcXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6OTM5OlxcdC1kZXZpY2UgdmZpby1hcCxzeXNmc2Rldj0vc3lzL2RldmljZXMvdmZpb19hcC9tYXRyaXgvJHV1aWQzIC4uLlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTk0MC1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5NDE6V2hlbiB0aGUgZ3Vlc3QgaXMgc2h1dCBkb3duLCB0aGUgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2VzIG1heSBiZSByZW1vdmVkLlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTk0Mi1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5NDM6VXNpbmcgb3VyIGV4YW1wbGUgYWdhaW4sIHRvIHJlbW92ZSB0aGUgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UgJHV1aWQxOjpcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC05NDQtXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6OTQ1OiAgIC9zeXMvZGV2aWNlcy92ZmlvX2FwL21hdHJpeC9cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC05NDYtICAgICAgLS0tIFttZGV2X3N1cHBvcnRlZF90eXBlc11cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5NDc6ICAgICAgLS0tLS0tIFt2ZmlvX2FwLXBhc3N0aHJvdWdoXVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTk0OC0gICAgICAtLS0tLS0tLS0gW2RldmljZXNdXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdD05NTg9YWxsIG9mIHRoZSBzdGVwcyBzdGFydGluZyB3aXRoIHN0ZXAgMyB3aWxsIGhhdmUgdG8gYmUgcGVyZm9ybWVkIGFnYWluLiBOb3RlXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6OTU5OnRoYXQgdGhlIHJlbW92ZSB3aWxsIGZhaWwgaWYgYSBndWVzdCB1c2luZyB0aGUgdmZpb19hcCBtZGV2IGlzIHN0aWxsIHJ1bm5pbmcuXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTYwLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0Ojk2MTpJdCBpcyBub3QgbmVjZXNzYXJ5IHRvIHJlbW92ZSBhIHZmaW9fYXAgbWRldiwgYnV0IG9uZSBtYXkgd2FudCB0b1xcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTk2Mi1yZW1vdmUgaXQgaWYgbm8gZ3Vlc3Qgd2lsbCB1c2UgaXQgZHVyaW5nIHRoZSByZW1haW5pbmcgbGlmZXRpbWUgb2YgdGhlIGxpbnV4XFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6OTYzOmhvc3QuIElmIHRoZSB2ZmlvX2FwIG1kZXYgaXMgcmVtb3ZlZCwgb25lIG1heSB3YW50IHRvIGFsc28gcmVjb25maWd1cmVcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC05NjQtdGhlIHBvb2wgb2YgYWRhcHRlcnMgYW5kIHF1ZXVlcyByZXNlcnZlZCBmb3IgdXNlIGJ5IHRoZSBkZWZhdWx0IGRyaXZlcnMuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdD05Njg9QW4gYWRhcHRlciwgZG9tYWluIG9yIGNvbnRyb2wgZG9tYWluIG1heSBiZSBob3QgcGx1Z2dlZCBpbnRvIGEgcnVubmluZyBLVk1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5Njk6Z3Vlc3QgYnkgYXNzaWduaW5nIGl0IHRvIHRoZSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSBiZWluZyB1c2VkIGJ5IHRoZSBndWVzdCBpZlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTk3MC10aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDpcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTk3Ni0gIGFkYXB0ZXIgYmVpbmcgYXNzaWduZWQgYW5kIHRoZSBBUFFJcyBvZiB0aGUgZG9tYWlucyBhc3NpZ25lZCBtdXN0IHJlZmVyZW5jZSBhXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6OTc3OiAgcXVldWUgZGV2aWNlIGJvdW5kIHRvIHRoZSB2ZmlvX2FwIGRldmljZSBkcml2ZXIuXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTc4LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTgwLSAgY29tcHJpc2VkIG9mIHRoZSBBUFFJIG9mIHRoZSBkb21haW4gYmVpbmcgYXNzaWduZWQgYW5kIHRoZSBBUElEcyBvZiB0aGVcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5ODE6ICBhZGFwdGVycyBhc3NpZ25lZCBtdXN0IHJlZmVyZW5jZSBhIHF1ZXVlIGRldmljZSBib3VuZCB0byB0aGUgdmZpb19hcCBkZXZpY2VcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC05ODItICBkcml2ZXIuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdD05ODQ9QW4gYWRhcHRlciwgZG9tYWluIG9yIGNvbnRyb2wgZG9tYWluIG1heSBiZSBob3QgdW5wbHVnZ2VkIGZyb20gYSBydW5uaW5nIEtWTVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0Ojk4NTpndWVzdCBieSB1bmFzc2lnbmluZyBpdCBmcm9tIHRoZSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSBiZWluZyB1c2VkIGJ5IHRoZVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTk4Ni1ndWVzdC5cXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0PTk5MD1PdmVyLXByb3Zpc2lvbmluZyBpcyBkZWZpbmVkIGhlcmVpbiBhcyB0aGUgYXNzaWdubWVudCBvZiBhZGFwdGVycyBvciBkb21haW5zIHRvXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6OTkxOmEgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2UgdGhhdCBkbyBub3QgcmVmZXJlbmNlIEFQIGRldmljZXMgaW4gdGhlIGhvc3QncyBBUFxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTk5Mi1jb25maWd1cmF0aW9uLiBUaGUgaWRlYSBoZXJlIGlzIHRoYXQgd2hlbiB0aGUgYWRhcHRlciBvciBkb21haW4gYmVjb21lc1xcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0PTk5Mz1hdmFpbGFibGUsIGl0IHdpbGwgYmUgYXV0b21hdGljYWxseSBob3QtcGx1Z2dlZCBpbnRvIHRoZSBLVk0gZ3Vlc3QgdXNpbmdcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDo5OTQ6dGhlIHZmaW9fYXAgbWVkaWF0ZWQgZGV2aWNlIHRvIHdoaWNoIGl0IGlzIGFzc2lnbmVkIGFzIGxvbmcgYXMgZWFjaCBuZXcgQVBRTlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0Ojk5NTpyZXN1bHRpbmcgZnJvbSBwbHVnZ2luZyBpdCBpbiByZWZlcmVuY2VzIGEgcXVldWUgZGV2aWNlIGJvdW5kIHRvIHRoZSB2ZmlvX2FwXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTk2LWRldmljZSBkcml2ZXIuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdD05OTg9RHJpdmVyIEZlYXR1cmVzXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtOTk5LT09PT09PT09PT09PT09PVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjEwMDA6VGhlIHZmaW9fYXAgZHJpdmVyIGV4cG9zZXMgYSBzeXNmcyBmaWxlIGNvbnRhaW5pbmcgc3VwcG9ydGVkIGZlYXR1cmVzLlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTEwMDEtVGhpcyBleGlzdHMgc28gdGhpcmQgcGFydHkgdG9vbHMgKGxpa2UgTGlidmlydCBhbmQgbWRldmN0bCkgY2FuIHF1ZXJ5IHRoZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q9MTAzMT1pbnRlcnZlbnRpb24gYnkgYSBzeXN0ZW0gYWRtaW5pc3RyYXRvci4gQmVmb3JlIGEgS1ZNIGd1ZXN0IGNhbiBiZSBtaWdyYXRlZCxcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoxMDMyOnRoZSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSBtdXN0IGJlIHJlbW92ZWQuIFVuZm9ydHVuYXRlbHksIGl0IGNhbiBub3QgYmVcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoxMDMzOnJlbW92ZWQgbWFudWFsbHkgKGkuZS4sIGVjaG8gMSBcXHUwMDNlIC9zeXMvZGV2aWNlcy92ZmlvX2FwL21hdHJpeC8kVVVJRC9yZW1vdmUpIHdoaWxlXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMTAzNC10aGUgbWRldiBpcyBpbiB1c2UgYnkgYSBLVk0gZ3Vlc3QuIElmIHRoZSBndWVzdCBpcyBiZWluZyBlbXVsYXRlZCBieSBRRU1VLFxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0PTEwMzU9aXRzIG1kZXYgY2FuIGJlIGhvdCB1bnBsdWdnZWQgZnJvbSB0aGUgZ3Vlc3QgaW4gb25lIG9mIHR3byB3YXlzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMTA1OS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoxMDYwOiAgICAgIEZvciBleGFtcGxlLCB0byBob3QgdW5wbHVnIHRoZSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSBpZGVudGlmaWVkIG9uIHRoZVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTEwNjEtICAgICAgcWVtdSBjb21tYW5kIGxpbmUgd2l0aCAnaWQ9aG9zdGRldjAnIGZyb20gdGhlIGd1ZXN0IG5hbWVkICdteS1ndWVzdCc6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0xMDY2LVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjEwNjc6Mi4gQSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSBjYW4gYmUgaG90IHVucGx1Z2dlZCBieSBhdHRhY2hpbmcgdGhlIHFlbXUgbW9uaXRvclxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTEwNjgtICAgdG8gdGhlIGd1ZXN0IGFuZCB1c2luZyB0aGUgZm9sbG93aW5nIHFlbXUgbW9uaXRvciBjb21tYW5kOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMTA3MS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoxMDcyOiAgICAgIEZvciBleGFtcGxlLCB0byBob3QgdW5wbHVnIHRoZSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSB0aGF0IHdhcyBzcGVjaWZpZWRcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0xMDczLSAgICAgIG9uIHRoZSBxZW11IGNvbW1hbmQgbGluZSB3aXRoICdpZD1ob3N0ZGV2MCcgd2hlbiB0aGUgZ3Vlc3Qgd2FzIHN0YXJ0ZWQ6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdD0xMDc3PUFmdGVyIGxpdmUgbWlncmF0aW9uIG9mIHRoZSBLVk0gZ3Vlc3QgY29tcGxldGVzLCBhbiBBUCBjb25maWd1cmF0aW9uIGNhbiBiZVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0OjEwNzg6cmVzdG9yZWQgdG8gdGhlIEtWTSBndWVzdCBieSBob3QgcGx1Z2dpbmcgYSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZSBvbiB0aGUgdGFyZ2V0XFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMTA3OS1zeXN0ZW0gaW50byB0aGUgZ3Vlc3QgaW4gb25lIG9mIHR3byB3YXlzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMTEwNC1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoxMTA1OiAgICAgIEZvciBleGFtcGxlLCB0byBob3QgcGx1ZyB0aGUgdmZpb19hcCBtZWRpYXRlZCBkZXZpY2VcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0xMTA2LSAgICAgIDYyMTc3ODgzLWYxYmItNDdmMC05MTRkLTMyYTIyZTNhODgwNCBpbnRvIHRoZSBndWVzdCBuYW1lZCAnbXktZ3Vlc3QnIHdpdGhcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTExMTAtICAgICAgXFxcImRldmljZV9hZGQgdmZpby1hcCxcXFxcXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MTExMTogICAgICBzeXNmc2Rldj0vc3lzL2RldmljZXMvdmZpb19hcC9tYXRyaXgvNjIxNzc4ODMtZjFiYi00N2YwLTkxNGQtMzJhMjJlM2E4ODA0LFxcXFxcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0xMTEyLSAgICAgIGlkPWhvc3RkZXYwXFxcIlxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTExMTMtXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MTExNDoyLiBBIHZmaW9fYXAgbWVkaWF0ZWQgZGV2aWNlIGNhbiBiZSBob3QgcGx1Z2dlZCBieSBhdHRhY2hpbmcgdGhlIHFlbXUgbW9uaXRvclxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTExMTUtICAgdG8gdGhlIGd1ZXN0IGFuZCB1c2luZyB0aGUgZm9sbG93aW5nIHFlbXUgbW9uaXRvciBjb21tYW5kOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMTExOC1cXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdDoxMTE5OiAgICAgIEZvciBleGFtcGxlLCB0byBwbHVnIHRoZSB2ZmlvX2FwIG1lZGlhdGVkIGRldmljZVxcbkRvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tYXAucnN0LTExMjAtICAgICAgNjIxNzc4ODMtZjFiYi00N2YwLTkxNGQtMzJhMjJlM2E4ODA0IGludG8gdGhlIGd1ZXN0IHdpdGggdGhlIGRldmljZS1pZFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3QtMTEyMy0gICAgICAgICAoUUVNVSkgZGV2aWNlLWFkZCBcXFwidmZpby1hcCxcXFxcXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3MzOTAvdmZpby1hcC5yc3Q6MTEyNDogICAgICAgICBzeXNmc2Rldj0vc3lzL2RldmljZXMvdmZpb19hcC9tYXRyaXgvNjIxNzc4ODMtZjFiYi00N2YwLTkxNGQtMzJhMjJlM2E4ODA0LFxcXFxcXG5Eb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwLnJzdC0xMTI1LSAgICAgICAgIGlkPWhvc3RkZXYwXFxcIlxcbi0tXFxuTUFJTlRBSU5FUlM9MjM2MDM9RjpcXHREb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwKlxcbk1BSU5UQUlORVJTOjIzNjA0OkY6XFx0ZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwKlxcbk1BSU5UQUlORVJTLTIzNjA1LVxcbi0tXFxuYXJjaC9zMzkwL0tjb25maWc9ODM0PWNvbmZpZyBWRklPX0FQXFxuLS1cXG5hcmNoL3MzOTAvS2NvbmZpZy04NDUtXFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuYXJjaC9zMzkwL0tjb25maWc6ODQ2OlxcdCAgd2lsbCBiZSBjYWxsZWQgdmZpb19hcC5cXG5hcmNoL3MzOTAvS2NvbmZpZy04NDctXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3ByaXYuYz01NzA9Ym9vbCBrdm1fczM5MF9pc19ncGFfaW5fbWVtc2xvdChzdHJ1Y3Qga3ZtICprdm0sIGdwYV90IGdwYSlcXG4tLVxcbmFyY2gvczM5MC9rdm0vcHJpdi5jLTU3My19XFxuYXJjaC9zMzkwL2t2bS9wcml2LmM6NTc0OkVYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVMoa3ZtX3MzOTBfaXNfZ3BhX2luX21lbXNsb3QsIFxcXCJ2ZmlvX2FwXFxcIik7XFxuYXJjaC9zMzkwL2t2bS9wcml2LmMtNTc1LSNlbmRpZlxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9NYWtlZmlsZT0zND1vYmotJChDT05GSUdfUEtFWV9VVikgKz0gcGtleS11di5vXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL01ha2VmaWxlLTM2LSMgYWRqdW5jdCBwcm9jZXNzb3IgbWF0cml4XFxuZHJpdmVycy9zMzkwL2NyeXB0by9NYWtlZmlsZTozNzp2ZmlvX2FwLW9ianMgOj0gdmZpb19hcF9kcnYubyB2ZmlvX2FwX29wcy5vXFxuZHJpdmVycy9zMzkwL2NyeXB0by9NYWtlZmlsZTozODpvYmotJChDT05GSUdfVkZJT19BUCkgKz0gdmZpb19hcC5vXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZGVidWcuaC0xOS0jZGVmaW5lIFZGSU9fQVBfREJGKC4uLilcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2RlYnVnLmg6MjA6XFx0ZGVidWdfc3ByaW50Zl9ldmVudCh2ZmlvX2FwX2RiZl9pbmZvLCAjI19fVkFfQVJHU19fKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kZWJ1Zy5oLTIxLSNkZWZpbmUgVkZJT19BUF9EQkZfRVJSKC4uLilcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2RlYnVnLmg6MjI6XFx0ZGVidWdfc3ByaW50Zl9ldmVudCh2ZmlvX2FwX2RiZl9pbmZvLCBEQkZfRVJSLCAjI19fVkFfQVJHU19fKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kZWJ1Zy5oLTIzLSNkZWZpbmUgVkZJT19BUF9EQkZfV0FSTiguLi4pXFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kZWJ1Zy5oOjI0OlxcdGRlYnVnX3NwcmludGZfZXZlbnQodmZpb19hcF9kYmZfaW5mbywgREJGX1dBUk4sICMjX19WQV9BUkdTX18pXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2RlYnVnLmgtMjUtI2RlZmluZSBWRklPX0FQX0RCRl9JTkZPKC4uLilcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2RlYnVnLmg6MjY6XFx0ZGVidWdfc3ByaW50Zl9ldmVudCh2ZmlvX2FwX2RiZl9pbmZvLCBEQkZfSU5GTywgIyNfX1ZBX0FSR1NfXylcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZGVidWcuaC0yNy0jZGVmaW5lIFZGSU9fQVBfREJGX0RCRyguLi4pXFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kZWJ1Zy5oOjI4OlxcdGRlYnVnX3NwcmludGZfZXZlbnQodmZpb19hcF9kYmZfaW5mbywgREJGX0RFQlVHLCAjI19fVkFfQVJHU19fKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kZWJ1Zy5oLTI5LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kZWJ1Zy5oOjMwOmV4dGVybiBkZWJ1Z19pbmZvX3QgKnZmaW9fYXBfZGJmX2luZm87XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2RlYnVnLmgtMzEtXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTUtI2luY2x1ZGUgXFx1MDAzY2FzbS9mYWNpbGl0eS5oXFx1MDAzZVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxNjojaW5jbHVkZSBcXFwidmZpb19hcF9wcml2YXRlLmhcXFwiXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjE3OiNpbmNsdWRlIFxcXCJ2ZmlvX2FwX2RlYnVnLmhcXFwiXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE4LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxOTojZGVmaW5lIFZGSU9fQVBfUk9PVF9OQU1FIFxcXCJ2ZmlvX2FwXFxcIlxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0yMC0jZGVmaW5lIFZGSU9fQVBfREVWX05BTUUgXFxcIm1hdHJpeFxcXCJcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYz0yNj1zdHJ1Y3QgYXBfbWF0cml4X2RldiAqbWF0cml4X2RldjtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6Mjc6ZGVidWdfaW5mb190ICp2ZmlvX2FwX2RiZl9pbmZvO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0yOC1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYz00ND1zdGF0aWMgc3RydWN0IGFwX2RldmljZV9pZCBhcF9xdWV1ZV9pZHNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy01Ny1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6NTg6c3RhdGljIHN0cnVjdCBhcF9kcml2ZXIgdmZpb19hcF9kcnYgPSB7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjU5OlxcdC5wcm9iZSA9IHZmaW9fYXBfbWRldl9wcm9iZV9xdWV1ZSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6NjA6XFx0LnJlbW92ZSA9IHZmaW9fYXBfbWRldl9yZW1vdmVfcXVldWUsXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjYxOlxcdC5pbl91c2UgPSB2ZmlvX2FwX21kZXZfcmVzb3VyY2VfaW5fdXNlLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzo2MjpcXHQub25fY29uZmlnX2NoYW5nZWQgPSB2ZmlvX2FwX29uX2NmZ19jaGFuZ2VkLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzo2MzpcXHQub25fc2Nhbl9jb21wbGV0ZSA9IHZmaW9fYXBfb25fc2Nhbl9jb21wbGV0ZSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtNjQtXFx0LmlkcyA9IGFwX3F1ZXVlX2lkcyxcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy02Ni1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6Njc6c3RhdGljIHZvaWQgdmZpb19hcF9tYXRyaXhfZGV2X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy02OC17XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM9Nzk9c3RhdGljIHN0cnVjdCBkZXZpY2VfZHJpdmVyIG1hdHJpeF9kcml2ZXIgPSB7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjgwOlxcdC5uYW1lID0gXFxcInZmaW9fYXBcXFwiLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy04MS1cXHQuYnVzID0gXFx1MDAyNm1hdHJpeF9idXMsXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtODUtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjg2OnN0YXRpYyBpbnQgdmZpb19hcF9tYXRyaXhfZGV2X2NyZWF0ZSh2b2lkKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy04Ny17XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTE4LVxcdG1hdHJpeF9kZXYtXFx1MDAzZWRldmljZS5idXMgPSBcXHUwMDI2bWF0cml4X2J1cztcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTE5OlxcdG1hdHJpeF9kZXYtXFx1MDAzZWRldmljZS5yZWxlYXNlID0gdmZpb19hcF9tYXRyaXhfZGV2X3JlbGVhc2U7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjEyMDpcXHRtYXRyaXhfZGV2LVxcdTAwM2V2ZmlvX2FwX2RydiA9IFxcdTAwMjZ2ZmlvX2FwX2RydjtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTIxLVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE0Mi1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTQzOnN0YXRpYyB2b2lkIHZmaW9fYXBfbWF0cml4X2Rldl9kZXN0cm95KHZvaWQpXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE0NC17XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTUyLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxNTM6c3RhdGljIGludCBfX2luaXQgdmZpb19hcF9kYmZfaW5mb19pbml0KHZvaWQpXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE1NC17XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjE1NTpcXHR2ZmlvX2FwX2RiZl9pbmZvID0gZGVidWdfcmVnaXN0ZXIoXFxcInZmaW9fYXBcXFwiLCAxLCAxLFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xNTYtXFx0XFx0XFx0XFx0XFx0ICBEQkZfTUFYX1NQUklOVEZfQVJHUyAqIHNpemVvZihsb25nKSk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE1Ny1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTU4OlxcdGlmICghdmZpb19hcF9kYmZfaW5mbylcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTU5LVxcdFxcdHJldHVybiAtRU5PRU5UO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xNjAtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjE2MTpcXHRkZWJ1Z19yZWdpc3Rlcl92aWV3KHZmaW9fYXBfZGJmX2luZm8sIFxcdTAwMjZkZWJ1Z19zcHJpbnRmX3ZpZXcpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxNjI6XFx0ZGVidWdfc2V0X2xldmVsKHZmaW9fYXBfZGJmX2luZm8sIERCRl9XQVJOKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTYzLVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE2Ni1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTY3OnN0YXRpYyBpbnQgX19pbml0IHZmaW9fYXBfaW5pdCh2b2lkKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xNjgte1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE3MC1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTcxOlxcdHJldCA9IHZmaW9fYXBfZGJmX2luZm9faW5pdCgpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xNzItXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xNzgtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjE3OTpcXHRyZXQgPSB2ZmlvX2FwX21hdHJpeF9kZXZfY3JlYXRlKCk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE4MC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE4Mi1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTgzOlxcdHJldCA9IGFwX2RyaXZlcl9yZWdpc3RlcihcXHUwMDI2dmZpb19hcF9kcnYsIFRISVNfTU9EVUxFLCBWRklPX0FQX0RSVl9OQU1FKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmMtMTg0LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTg1OlxcdFxcdHZmaW9fYXBfbWF0cml4X2Rldl9kZXN0cm95KCk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE4Ni1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE4OC1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTg5OlxcdHJldCA9IHZmaW9fYXBfbWRldl9yZWdpc3RlcigpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xOTAtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoxOTE6XFx0XFx0YXBfZHJpdmVyX3VucmVnaXN0ZXIoXFx1MDAyNnZmaW9fYXBfZHJ2KTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MTkyOlxcdFxcdHZmaW9fYXBfbWF0cml4X2Rldl9kZXN0cm95KCk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTE5My1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0xOTktXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjIwMDpzdGF0aWMgdm9pZCBfX2V4aXQgdmZpb19hcF9leGl0KHZvaWQpXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTIwMS17XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjIwMjpcXHR2ZmlvX2FwX21kZXZfdW5yZWdpc3RlcigpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzoyMDM6XFx0YXBfZHJpdmVyX3VucmVnaXN0ZXIoXFx1MDAyNnZmaW9fYXBfZHJ2KTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfZHJ2LmM6MjA0OlxcdHZmaW9fYXBfbWF0cml4X2Rldl9kZXN0cm95KCk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjIwNTpcXHRkZWJ1Z191bnJlZ2lzdGVyKHZmaW9fYXBfZGJmX2luZm8pO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0yMDYtfVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYy0yMDctXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jOjIwODptb2R1bGVfaW5pdCh2ZmlvX2FwX2luaXQpO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNToxOC40NjMxODEzMjlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk4OTU1NjcxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBmb3IgVkZJTy1BUCBFeHBsb2l0YXRpb24gdmlhIFN5emthbGxlcioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyB0aGF0IHRoZSBgdmZpb19hcGAgbW9kdWxlIHNlZW1zIHRvIHJlZ2lzdGVyIGEgbWF0cml4IGRldmljZSwgYW5kIHRoZW4gYW4gbWRldiBkcml2ZXIuIFRoYXQncyB0aGUgc2V0dXAuIEFuZCBTeXprYWxsZXIsIHdoaWNoIEknbSB2ZXJ5IGZhbWlsaWFyIHdpdGgsIGNhbiBjcmVhdGUgdGhlc2UgbWRldnMsIHdoaWNoIGltbWVkaWF0ZWx5IHJhaXNlcyBhIGNyaXRpY2FsIHF1ZXN0aW9uOiBDYW4gd2UgcmVhY2ggYW5kIGV4cGxvaXQgYHZmaW9fYXBgIGZ1bmN0aW9uYWxpdHkgZXZlbiB3aXRob3V0IHRoZSBwcmVzZW5jZSBvZiBwaHlzaWNhbCBBUCBoYXJkd2FyZT9cblxuTXkgaHlwb3RoZXNpcyByZXN0cyBvbiB0aGF0IGluaXRpYWwgcXVlc3Rpb24uIEknbSBnb2luZyB0byBkaWcgYSBsaXR0bGUgZGVlcGVyLCBJJ20gZ29pbmcgdG8gY29uc2lkZXIgdGhlIGB2ZmlvX2FwX21hdHJpeF9kZXZfY3JlYXRlYCBmdW5jdGlvbi4gSSBzZWUgdGhhdCBpdCBhcHBlYXJzIHRvIHN1Y2NlZWQgZXZlbiBpZiB0aGUgYHRlc3RfZmFjaWxpdHkoMTIpYCBjaGVjayBmYWlscy4gVGhhdCdzIGEga2V5IG9ic2VydmF0aW9uLCBzb21ldGhpbmcgdGhhdCBtYXkgYmUgaW1wb3J0YW50LiBUaGUgZHJpdmVyIHRoZW4gcmVnaXN0ZXJzIGl0c2VsZiB3aGljaCBsb29rcyB2ZXJ5IGludGVyZXN0aW5nLiBTbywgY2FuIFN5emthbGxlciBjcmVhdGUgYSBgdmZpb19hcGAgbWRldi4gVGhpcyBpcyB0aGUgY3J1Y2lhbCBuZXh0IHN0ZXAuXG5cbkkga25vdyBTeXprYWxsZXIgaGFzIGRlc2NyaXB0aW9ucyBmb3IgbWRldnMgaW4gZmlsZXMgbGlrZSBgc3lzL2xpbnV4L3N5c2ZzX21kZXYudHh0YC4gSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBTeXprYWxsZXIgaGFzIGRlc2NyaXB0aW9ucyBmb3IgYHZmaW9fYXBgIHNwZWNpZmljYWxseSwgYmVjYXVzZSBpZiBpdCBkb2VzLCBpdCdzIHZlcnkgbGlrZWx5IHdlIGhhdmUgYSBwb3RlbnRpYWwgYXR0YWNrIHZlY3RvciB0byBpbnZlc3RpZ2F0ZS4gVGhhdCdzIHdoZXJlIEkgbmVlZCB0byBzdGFydCBteSBzZWFyY2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5NDQ5LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE1OjI0LjQ1Mjc0MTE1MloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUyNjg4NjksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZmaW9fYXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic3lzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTU6MjQuNDk4MDE2NzUxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5MTY3NTczMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFBhdGNoJ3MgV29ydGhpbmVzcyBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIHRoZSBwcm9tcHQganVzdCB0aHJldyBhIGN1cnZlYmFsbC4gSXQncyByZW1pbmRpbmcgbWUgdGhhdCBJIGFic29sdXRlbHkgKmNhbm5vdCogdXNlIG15IHVzdWFsIGBncmVwcGVyYCBvbiBhbnl0aGluZyB0aGF0J3MgYHN5cy8qYCBvciBoYXMgYHN5el9gIGluIGl0IGJlY2F1c2UgdGhhdCdzIGFsbCBTeXprYWxsZXIgcHNldWRvLXN5c2NhbGwgc3R1ZmYgYW5kIHdvbid0IGJlIGluIHRoZSBhY3R1YWwga2VybmVsLiBGaW5lLiBNYWtlcyBzZW5zZS4gQnV0IHdhaXQgYSBzZWMuLi4gSSBkb24ndCBzZWUgdGhpcyBgc3l6LWdyZXBwZXJgIGluIG15IGF2YWlsYWJsZSB0b29scy4gR3Vlc3MgSSdsbCBoYXZlIHRvIHVzZSBteSBicmFpbiBpbnN0ZWFkIVxuXG5MZXQncyB0aGluay4gVGhlIHBhdGNoIG1vZGlmaWVzIGB2ZmlvX2FwX21kZXZfc2V0X2t2bWAgYW5kIGB2ZmlvX2FwX21kZXZfdW5zZXRfa3ZtYC4gVGhvc2UgYXJlLCBpZiBJIHJlbWVtYmVyIGNvcnJlY3RseSwgcmVsYXRlZCB0byBWRklPIGRldmljZSBzZXR1cCBhbmQgdGVhcmRvd24g4oCTIHdoZW4gYSBWRklPIGRldmljZSBpcyBvcGVuZWQgb3IgY2xvc2VkLiBUaGUgcmVhbCBxdWVzdGlvbiBpcywgY2FuIFN5emthbGxlciAqYWN0dWFsbHkqIGNyZWF0ZSBhbmQgaW50ZXJhY3Qgd2l0aCBhIFZGSU8gQVAgZGV2aWNlIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudD9cblxuSWYgU3l6a2FsbGVyIGNhbiBnZW5lcmF0ZSB0aGUgY29kZSB0byBjcmVhdGUgYW4gbWRldiwgaXQgY2FuIG9wZW4gaXQgYXMgd2VsbC4gVGhhdCBkZXBlbmRzIG9uIHdoZXRoZXIgdGhlIGB2ZmlvX2FwYCBkcml2ZXIgaXMgZW5hYmxlZCBpbiB0eXBpY2FsIGNvbmZpZ3VyYXRpb25zLlxuXG5Ob3csIHRoZSBwcm9tcHQgYnJpbmdzIHVwIHRoZSBcIldvcnRoRnV6emluZz1mYWxzZVwiIHNjZW5hcmlvOiB1bnJlYWNoYWJsZSBjb2RlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSXQgZXhwbGljaXRseSBtZW50aW9ucyB0aGluZ3MgbGlrZSBVU0IgZ2FkZ2V0LCBNQUM4MDIxMSBIV3NpbSwgb3IgKnZlbmRvci1zcGVjaWZpYyogaGFyZHdhcmUgbGlrZSBQQ0llIHN3aXRjaGVzIG9yIEdQVXMgdGhhdCBuZWVkIGEgKnBoeXNpY2FsKiBjYXJkLCB3aGljaCBpc24ndCBlbXVsYXRlZCBieSBRRU1VLiBUaGF0J3MgdGhlIGtleS5cblxuVkZJTyBBUCBpcyBmb3IgcGFzc2luZyB0aHJvdWdoICpwaHlzaWNhbCogQVAgY2FyZHMsIGlzbid0IGl0PyBEb2VzIGl0IG5lZWQgcGh5c2ljYWwgaGFyZHdhcmUgdG8gYmUgcHJlc2VudCB0byBldmVuIGNyZWF0ZSBhbiBtZGV2PyBJIHNob3VsZCBjaGVjayBgdmZpb19hcF9tZGV2X3Byb2JlYCBhbmQgYHZmaW9fYXBfbWRldl9pbml0X2RldmAuIFRoYXQgd2lsbCBnaXZlIG1lIHRoZSBhbnN3ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5OTM4LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzkxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE1OjMxLjQxNDc3NzAyMVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU3NjI1NjAyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2ZmlvX2FwX21kZXZfcHJvYmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jPTU4PXN0YXRpYyBzdHJ1Y3QgYXBfZHJpdmVyIHZmaW9fYXBfZHJ2ID0ge1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9kcnYuYzo1OTpcXHQucHJvYmUgPSB2ZmlvX2FwX21kZXZfcHJvYmVfcXVldWUsXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX2Rydi5jLTYwLVxcdC5yZW1vdmUgPSB2ZmlvX2FwX21kZXZfcmVtb3ZlX3F1ZXVlLFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTc4Mz1zdGF0aWMgaW50IHZmaW9fYXBfbWRldl9pbml0X2RldihzdHJ1Y3QgdmZpb19kZXZpY2UgKnZkZXYpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtNzk2LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzo3OTc6c3RhdGljIGludCB2ZmlvX2FwX21kZXZfcHJvYmUoc3RydWN0IG1kZXZfZGV2aWNlICptZGV2KVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy03OTgte1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTIzNjk9c3RhdGljIHN0cnVjdCBtZGV2X2RyaXZlciB2ZmlvX2FwX21hdHJpeF9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjM3Ny1cXHR9LFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyMzc4OlxcdC5wcm9iZSA9IHZmaW9fYXBfbWRldl9wcm9iZSxcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjM3OS1cXHQucmVtb3ZlID0gdmZpb19hcF9tZGV2X3JlbW92ZSxcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yNDA1PXZvaWQgdmZpb19hcF9tZGV2X3VucmVnaXN0ZXIodm9pZClcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNDEwLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNDExOmludCB2ZmlvX2FwX21kZXZfcHJvYmVfcXVldWUoc3RydWN0IGFwX2RldmljZSAqYXBkZXYpXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI0MTIte1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaD0xNTY9dm9pZCB2ZmlvX2FwX21kZXZfdW5yZWdpc3Rlcih2b2lkKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oLTE1Ny1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oOjE1ODppbnQgdmZpb19hcF9tZGV2X3Byb2JlX3F1ZXVlKHN0cnVjdCBhcF9kZXZpY2UgKnF1ZXVlKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oLTE1OS12b2lkIHZmaW9fYXBfbWRldl9yZW1vdmVfcXVldWUoc3RydWN0IGFwX2RldmljZSAqcXVldWUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNTozMi45OTEwMzg0MjRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgyODczMzE5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIEkgdW5kZXJzdGFuZCB0aGUgc2l0dWF0aW9uOlxuXG4qKlByb2JpbmcgdGhlIENyeXB0byBIYXJkd2FyZSB3aXRoIFZGSU8tQVAqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoZSBWRklPLUFQIGltcGxlbWVudGF0aW9uIGZvciBjcnlwdG8gaGFyZHdhcmUgb24gczM5MCBzeXN0ZW1zLiBUaGUga2V5IGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gZGlzY292ZXJzIGFuZCBpbml0aWFsaXplcyB0aGUgZGV2aWNlcy4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHRoZSBgdmZpb19hcF9tZGV2X3Byb2JlYCBmdW5jdGlvbi4gVGhhdCdzIHRoZSBlbnRyeSBwb2ludCwgdGhlIGZpcnN0IHBsYWNlIHRoZSBkcml2ZXIgZ2V0cyBhIHNob3QgYXQgYSBuZXcgbWRldiwgc28gaXQncyBjcml0aWNhbCB0byBzZWUgd2hhdCBpdCdzIGRvaW5nLiBJJ20gYWxzbyBnb2luZyB0byB0cmFjayBob3cgYHZmaW9fYXBfbWRldl9pbml0X2RldmAgZml0cyBpbiBhcyBpdCBpcyB0aGUgZm9sbG93LXVwIHN0ZXAuIEnigJltIHRoaW5raW5nIHRoZXkncmUgcHJvYmFibHkgYm90aCBkZWZpbmVkIGluIGBkcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhlc2UgZnVuY3Rpb25zIGFyZSBjb25uZWN0ZWQgYW5kIHRoZSBsb2dpYyBmbG93LiBUaGlzIHNlZW1zIHRvIGJlIHRoZSBjb3JlIG9mIGhvdyB0aGUgVkZJTyBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlIHVuZGVybHlpbmcgQVAgaGFyZHdhcmUgYW5kIGhvdyBpdCBoYW5kbGVzIHRoZSBtZWRpYXRlZCBkZXZpY2UsIGFzIHdlbGwgYXMgaG93IHRoZSBoYXJkd2FyZSBpcyBkZXRlY3RlZC4gVGhpcyBpcyBhIGNydWNpYWwgYXJlYSB0byB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBhbmQgaG93IHRoZSBzeXN0ZW0gdmlydHVhbGl6ZXMgdGhlIGNyeXB0byBoYXJkd2FyZSB0byB0aGUgdXNlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE0NTAsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNTozNy44MTk3NzQyNFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTc5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDc4MyxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDc4MzpcXHRzdGF0aWMgaW50IHZmaW9fYXBfbWRldl9pbml0X2RldihzdHJ1Y3QgdmZpb19kZXZpY2UgKnZkZXYpXFxuIDc4NDpcXHR7XFxuIDc4NTpcXHRcXHRzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2ID1cXG4gNzg2OlxcdFxcdFxcdGNvbnRhaW5lcl9vZih2ZGV2LCBzdHJ1Y3QgYXBfbWF0cml4X21kZXYsIHZkZXYpO1xcbiA3ODc6XFx0XFxuIDc4ODpcXHRcXHRtYXRyaXhfbWRldi1cXHUwMDNlbWRldiA9IHRvX21kZXZfZGV2aWNlKHZkZXYtXFx1MDAzZWRldik7XFxuIDc4OTpcXHRcXHR2ZmlvX2FwX21hdHJpeF9pbml0KFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VpbmZvLCBcXHUwMDI2bWF0cml4X21kZXYtXFx1MDAzZW1hdHJpeCk7XFxuIDc5MDpcXHRcXHRtYXRyaXhfbWRldi1cXHUwMDNlcHFhcF9ob29rID0gaGFuZGxlX3BxYXA7XFxuIDc5MTpcXHRcXHR2ZmlvX2FwX21hdHJpeF9pbml0KFxcdTAwMjZtYXRyaXhfZGV2LVxcdTAwM2VpbmZvLCBcXHUwMDI2bWF0cml4X21kZXYtXFx1MDAzZXNoYWRvd19hcGNiKTtcXG4gNzkyOlxcdFxcdGhhc2hfaW5pdChtYXRyaXhfbWRldi1cXHUwMDNlcXRhYmxlLnF1ZXVlcyk7XFxuIDc5MzpcXHRcXG4gNzk0OlxcdFxcdHJldHVybiAwO1xcbiA3OTU6XFx0fVxcbiA3OTY6XFx0XFxuIDc5NzpcXHRzdGF0aWMgaW50IHZmaW9fYXBfbWRldl9wcm9iZShzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXYpXFxuIDc5ODpcXHR7XFxuIDc5OTpcXHRcXHRzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2O1xcbiA4MDA6XFx0XFx0aW50IHJldDtcXG4gODAxOlxcdFxcbiA4MDI6XFx0XFx0bWF0cml4X21kZXYgPSB2ZmlvX2FsbG9jX2RldmljZShhcF9tYXRyaXhfbWRldiwgdmRldiwgXFx1MDAyNm1kZXYtXFx1MDAzZWRldixcXG4gODAzOlxcdFxcdFxcdFxcdFxcdFxcdFxcdTAwMjZ2ZmlvX2FwX21hdHJpeF9kZXZfb3BzKTtcXG4gODA0OlxcdFxcdGlmIChJU19FUlIobWF0cml4X21kZXYpKVxcbiA4MDU6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIobWF0cml4X21kZXYpO1xcbiA4MDY6XFx0XFxuIDgwNzpcXHRcXHRyZXQgPSB2ZmlvX3JlZ2lzdGVyX2VtdWxhdGVkX2lvbW11X2RldihcXHUwMDI2bWF0cml4X21kZXYtXFx1MDAzZXZkZXYpO1xcbiA4MDg6XFx0XFx0aWYgKHJldClcXG4gODA5OlxcdFxcdFxcdGdvdG8gZXJyX3B1dF92ZGV2O1xcbiA4MTA6XFx0XFx0bWF0cml4X21kZXYtXFx1MDAzZXJlcV90cmlnZ2VyID0gTlVMTDtcXG4gODExOlxcdFxcdG1hdHJpeF9tZGV2LVxcdTAwM2VjZmdfY2hnX3RyaWdnZXIgPSBOVUxMO1xcbiA4MTI6XFx0XFx0ZGV2X3NldF9kcnZkYXRhKFxcdTAwMjZtZGV2LVxcdTAwM2VkZXYsIG1hdHJpeF9tZGV2KTtcXG4gODEzOlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNm1hdHJpeF9kZXYtXFx1MDAzZW1kZXZzX2xvY2spO1xcbiA4MTQ6XFx0XFx0bGlzdF9hZGQoXFx1MDAyNm1hdHJpeF9tZGV2LVxcdTAwM2Vub2RlLCBcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldl9saXN0KTtcXG4gODE1OlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2bWF0cml4X2Rldi1cXHUwMDNlbWRldnNfbG9jayk7XFxuIDgxNjpcXHRcXHRyZXR1cm4gMDtcXG4gODE3OlxcdFxcbiA4MTg6XFx0ZXJyX3B1dF92ZGV2OlxcbiA4MTk6XFx0XFx0dmZpb19wdXRfZGV2aWNlKFxcdTAwMjZtYXRyaXhfbWRldi1cXHUwMDNldmRldik7XFxuIDgyMDpcXHRcXHRyZXR1cm4gcmV0O1xcbiA4MjE6XFx0fVxcbiA4MjI6XFx0XFxuIDgyMzpcXHRzdGF0aWMgdm9pZCB2ZmlvX2FwX21kZXZfbGlua19xdWV1ZShzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2LFxcbiA4MjQ6XFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCB2ZmlvX2FwX3F1ZXVlICpxKVxcbiA4MjU6XFx0e1xcbiA4MjY6XFx0XFx0aWYgKCFxIHx8IHZmaW9fYXBfbWRldl9nZXRfcXVldWUobWF0cml4X21kZXYsIHEtXFx1MDAzZWFwcW4pKVxcbiA4Mjc6XFx0XFx0XFx0cmV0dXJuO1xcbiA4Mjg6XFx0XFxuIDgyOTpcXHRcXHRxLVxcdTAwM2VtYXRyaXhfbWRldiA9IG1hdHJpeF9tZGV2O1xcbiA4MzA6XFx0XFx0aGFzaF9hZGQobWF0cml4X21kZXYtXFx1MDAzZXF0YWJsZS5xdWV1ZXMsIFxcdTAwMjZxLVxcdTAwM2VtZGV2X3Fub2RlLCBxLVxcdTAwM2VhcHFuKTtcXG4gODMxOlxcdH1cXG4gODMyOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNTozNy44MTk5OTQzOFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjcxMjU2MzAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqVW5kZXJzdGFuZGluZyBtZGV2IENyZWF0aW9uIGFuZCBWRklPIEludGVyYWN0aW9uKipcblxuUmlnaHQsIHNvIEknbSBmb2N1c2luZyBvbiBob3cgdGhpcyBtZGV2IChtZWRpYXRlZCBkZXZpY2UpIGlzIGJlaW5nIGNyZWF0ZWQuIEl0J3MgYmVjb21pbmcgY2xlYXIgdGhhdCB0aGUgcHJvY2VzcyAqZG9lc24ndCogbmVjZXNzYXJpbHkgZGVwZW5kIG9uIGhhdmluZyBhbnkgcHJlLWV4aXN0aW5nIHBoeXNpY2FsIEFQIChBY2NlbGVyYXRlZCBQcm9jZXNzaW5nKSBxdWV1ZXMuIFRoYXQncyBpbnRlcmVzdGluZy4gVGhlIGtleSBoZXJlIHNlZW1zIHRvIGJlIHRoZSBhbGxvY2F0aW9uIG9mIHRoaXMgYGFwX21hdHJpeF9tZGV2YCBzdHJ1Y3R1cmUgYW5kIGl0cyBzdWJzZXF1ZW50IHJlZ2lzdHJhdGlvbi4gVGhhdCdzIHRoZSBjb3JlIG9mIHRoZSBtZGV2IGl0c2VsZi5cblxuVGhlIHJlYWwgbWFnaWMsIHRoZSBwYXJ0IHdoZXJlIHRoZSB2aXJ0dWFsIGRldmljZSBhY3R1YWxseSBob29rcyBpbnRvIEtWTSwgc2VlbXMgdG8gaGFwcGVuIGxhdGVyLCBzcGVjaWZpY2FsbHkgd2hlbiBgdmZpb19hcF9tZGV2X3NldF9rdm1gIGlzIGNhbGxlZC4gVGhhdCBtYWtlcyBzZW5zZTsgaXQncyB0aGUgcG9pbnQgd2hlcmUgd2UncmUgYWN0dWFsbHkgYXNzb2NpYXRpbmcgdGhlIHZpcnR1YWwgZGV2aWNlIHdpdGggdGhlIFZGSU8gaW5mcmFzdHJ1Y3R1cmUsIGxpbmtpbmcgaXQgdG8gYSBLVk0gaW5zdGFuY2UuXG5cblRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGF0IGxpbmthZ2UsIEkgbmVlZCB0byBjaGVjayBob3cgdGhlIGRldmljZSBpcyBvcGVuZWQgYW5kIGNvbmZpZ3VyZWQuIExldCdzIGRlbHZlIGludG8gdGhlIGZ1bmN0aW9uIGB2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2VgIHRvIHNlZSBwcmVjaXNlbHkgaG93IHRoaXMgaGFwcGVucy4gVGhhdCdzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIHNvIHRvIHNwZWFrLiBVbmRlcnN0YW5kaW5nIHRoZSBmbG93IGZyb20gYWxsb2NhdGlvbiwgcmVnaXN0cmF0aW9uIHRvIG9wZW5pbmcgdGhlIGRldmljZSBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgdW5kZXJzdGFuZGluZyBvZiB0aGUgZW50aXJlIHByb2Nlc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNzA1LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNTo0Mi40OTEyNTM2ODFaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkzMTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMDQ4LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyMDQ4OlxcdHN0YXRpYyBpbnQgdmZpb19hcF9tZGV2X29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqdmRldilcXG4yMDQ5OlxcdHtcXG4yMDUwOlxcdFxcdHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXYgPVxcbjIwNTE6XFx0XFx0XFx0Y29udGFpbmVyX29mKHZkZXYsIHN0cnVjdCBhcF9tYXRyaXhfbWRldiwgdmRldik7XFxuMjA1MjpcXHRcXG4yMDUzOlxcdFxcdGlmICghdmRldi1cXHUwMDNla3ZtKVxcbjIwNTQ6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuMjA1NTpcXHRcXG4yMDU2OlxcdFxcdHJldHVybiB2ZmlvX2FwX21kZXZfc2V0X2t2bShtYXRyaXhfbWRldiwgdmRldi1cXHUwMDNla3ZtKTtcXG4yMDU3OlxcdH1cXG4yMDU4OlxcdFxcbjIwNTk6XFx0c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X2Nsb3NlX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKnZkZXYpXFxuMjA2MDpcXHR7XFxuMjA2MTpcXHRcXHRzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2ID1cXG4yMDYyOlxcdFxcdFxcdGNvbnRhaW5lcl9vZih2ZGV2LCBzdHJ1Y3QgYXBfbWF0cml4X21kZXYsIHZkZXYpO1xcbjIwNjM6XFx0XFxuMjA2NDpcXHRcXHR2ZmlvX2FwX21kZXZfdW5zZXRfa3ZtKG1hdHJpeF9tZGV2KTtcXG4yMDY1OlxcdH1cXG4yMDY2OlxcdFxcbjIwNjc6XFx0c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X3JlcXVlc3Qoc3RydWN0IHZmaW9fZGV2aWNlICp2ZGV2LCB1bnNpZ25lZCBpbnQgY291bnQpXFxuMjA2ODpcXHR7XFxuMjA2OTpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSB2ZGV2LVxcdTAwM2VkZXY7XFxuMjA3MDpcXHRcXHRzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2O1xcbjIwNzE6XFx0XFxuMjA3MjpcXHRcXHRtYXRyaXhfbWRldiA9IGNvbnRhaW5lcl9vZih2ZGV2LCBzdHJ1Y3QgYXBfbWF0cml4X21kZXYsIHZkZXYpO1xcbjIwNzM6XFx0XFxuMjA3NDpcXHRcXHRnZXRfdXBkYXRlX2xvY2tzX2Zvcl9tZGV2KG1hdHJpeF9tZGV2KTtcXG4yMDc1OlxcdFxcbjIwNzY6XFx0XFx0aWYgKG1hdHJpeF9tZGV2LVxcdTAwM2Vrdm0pIHtcXG4yMDc3OlxcdFxcdFxcdGt2bV9hcmNoX2NyeXB0b19jbGVhcl9tYXNrcyhtYXRyaXhfbWRldi1cXHUwMDNla3ZtKTtcXG4yMDc4OlxcdFxcdFxcdHNpZ25hbF9ndWVzdF9hcF9jZmdfY2hhbmdlZChtYXRyaXhfbWRldik7XFxuMjA3OTpcXHRcXHR9XFxuMjA4MDpcXHRcXG4yMDgxOlxcdFxcdGlmIChtYXRyaXhfbWRldi1cXHUwMDNlcmVxX3RyaWdnZXIpIHtcXG4yMDgyOlxcdFxcdFxcdGlmICghKGNvdW50ICUgMTApKVxcbjIwODM6XFx0XFx0XFx0XFx0ZGV2X25vdGljZV9yYXRlbGltaXRlZChkZXYsXFxuMjA4NDpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgXFxcIlJlbGF5aW5nIGRldmljZSByZXF1ZXN0IHRvIHVzZXIgKCMldSlcXFxcblxcXCIsXFxuMjA4NTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgY291bnQpO1xcbjIwODY6XFx0XFxuMjA4NzpcXHRcXHRcXHRldmVudGZkX3NpZ25hbChtYXRyaXhfbWRldi1cXHUwMDNlcmVxX3RyaWdnZXIpO1xcbjIwODg6XFx0XFx0fSBlbHNlIGlmIChjb3VudCA9PSAwKSB7XFxuMjA4OTpcXHRcXHRcXHRkZXZfbm90aWNlKGRldixcXG4yMDkwOlxcdFxcdFxcdFxcdCAgIFxcXCJObyBkZXZpY2UgcmVxdWVzdCByZWdpc3RlcmVkLCBibG9ja2VkIHVudGlsIHJlbGVhc2VkIGJ5IHVzZXJcXFxcblxcXCIpO1xcbjIwOTE6XFx0XFx0fVxcbjIwOTI6XFx0XFxuMjA5MzpcXHRcXHRyZWxlYXNlX3VwZGF0ZV9sb2Nrc19mb3JfbWRldihtYXRyaXhfbWRldik7XFxuMjA5NDpcXHR9XFxuMjA5NTpcXHRcXG4yMDk2OlxcdHN0YXRpYyBpbnQgdmZpb19hcF9tZGV2X2dldF9kZXZpY2VfaW5mbyh1bnNpZ25lZCBsb25nIGFyZylcXG4yMDk3OlxcdHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTU6NDIuNDkxNDQ5NTExWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwNjIwMTg3NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhY2hpbmcgdGhlIFZGSU8gQVAgTG9ja2luZyBMb2dpYyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRyYWNpbmcgdGhlIGNvZGUgZmxvdy4gSXQgc2VlbXMgYHZmaW9fYXBfbWRldl9vcGVuX2RldmljZWAgY2FsbHMgYHZmaW9fYXBfbWRldl9zZXRfa3ZtYC4gVGhhdCdzIHRoZSBlbnRyeSBwb2ludC4gVGhlIGNydWNpYWwgcGFydCBoZXJlIGlzIGhvdyB3ZSBnZXQgdGhlcmUuIEl0J3MgdHJpZ2dlcmVkIGJ5IGNyZWF0aW5nIGFuZCBvcGVuaW5nIGEgVkZJTyBkZXZpY2UuIFN5emthbGxlciwgZnJvbSB3aGF0IEkgcmVjYWxsLCBoYXMgZGVzY3JpcHRpb25zIGZvciBWRklPIGFuZCBjYW4gY3JlYXRlIG1kZXZzLCBhY2NvcmRpbmcgdG8gYHN5cy9saW51eC92ZmlvLnR4dGAgb3Igc2ltaWxhci4gSSdtIHByZXR0eSBzdXJlIGl0IHN1cHBvcnRzIFZGSU8gYW5kIGNhbiBjcmVhdGUgdGhlc2UgbWRldnMsIHdoaWNoIG1lYW5zIGB2ZmlvX2FwX21kZXZfc2V0X2t2bWAgaXMgZGVmaW5pdGVseSByZWFjaGFibGUuXG5cblRoZSBwYXRjaCBpdHNlbGYgdGFyZ2V0cyBgdmZpb19hcF9tZGV2X3NldF9rdm1gLCBhbmQgaXRzIGNvdW50ZXJwYXJ0LCBgdmZpb19hcF9tZGV2X3Vuc2V0X2t2bWAsIGFsb25nIHdpdGggYGdldF91cGRhdGVfbG9ja3NfZm9yX2t2bWAgYW5kIGByZWxlYXNlX3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtYC4gR2l2ZW4gdGhlIGZ1bmN0aW9ucyBhcmUgZXhwbGljaXRseSBtZW50aW9uZWQsIHRoYXQgY29uZmlybXMgdGhlc2UgYXJlIGFsbCByZWFjaGFibGUuIFNpbmNlIHRoZSBwYXRjaCBtb2RpZmllcyB0aGVzZSBmdW5jdGlvbnMsIGl0J3MgcHJldHR5IGNsZWFyIHRoaXMgaXMgYWRkcmVzc2luZyBsb2NraW5nIGlzc3VlcyBvciwgYXQgdGhlIHZlcnkgbGVhc3QsIGFsdGVyaW5nIHRoZSBsb2NraW5nIGJlaGF2aW9yLlxuXG5HaXZlbiB0aGUgbW9kaWZpY2F0aW9ucyB0byBjb3JlIGxvY2tpbmcgbG9naWMgd2l0aGluIFZGSU8gQVAsIHRoaXMgaXMgYWJzb2x1dGVseSB3b3J0aCBmdXp6aW5nLiBUaGUgcXVlc3Rpb24gdGhhdCByZW1haW5zIGlzIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBoYXJkd2FyZSByZXN0cmljdGlvbnMgdGhhdCBuZWVkIHRvIGJlIG1ldC4gVGhhbmtmdWxseSwgdGhlcmUgYXJlIG5vdDsgc2luY2UgYHZmaW9fYXBfbWRldl9wcm9iZWAgc3VjY2VlZHMgd2l0aG91dCBhIHBoeXNpY2FsIEFQLCBgdmZpb19hcF9tZGV2X29wZW5fZGV2aWNlYCBkb2VzIG5vdCBoYXZlIGFueSBmdXJ0aGVyIHJlc3RyaWN0aW9ucy5cblxuSG93ZXZlciwgYHZmaW9fYXBfbWRldl9zZXRfa3ZtYCBkb2VzIGNoZWNrIGBrdm0tXHUwMDNlYXJjaC5jcnlwdG8uY3J5Y2JkYC4gU28gSSdtIGdvaW5nIHRvIGRpZyBkZWVwZXIgYW5kIGxvb2sgaW50byB3aGVuIGFuZCBob3cgdGhhdCBpcyBzZXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzODk1LCJPdXRwdXRUb2tlbnMiOjE2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQ5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTU6NDkuNTUzNDcxMjA3WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzk0NjU0ODczLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNyeWNiZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3QuaD01MzA9c3RydWN0IGt2bV9zMzkwX2NyeXB0byB7XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC01MzMtXFx0Y3J5cHRvX2hvb2sgKnBxYXBfaG9vaztcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3QuaDo1MzQ6XFx0X191MzIgY3J5Y2JkO1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oLTUzNS1cXHRfX3U4IGFlc19rdztcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF90eXBlcy5oPTEzNz1zdHJ1Y3Qga3ZtX3MzOTBfc2llX2Jsb2NrIHtcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF90eXBlcy5oLTMwNS0jZGVmaW5lIENSWUNCX0ZPUk1BVDIgMHgwMDAwMDAwM1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdF90eXBlcy5oOjMwNjpcXHRfX3UzMlxcdGNyeWNiZDtcXHRcXHRcXHQvKiAweDAwZmMgKi9cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3RfdHlwZXMuaC0zMDctXFx0X191NjRcXHRnY3JbMTZdO1xcdFxcdC8qIDB4MDEwMCAqL1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTMxMjE9c3RhdGljIHZvaWQga3ZtX3MzOTBfc2V0X2NyeWNiX2Zvcm1hdChzdHJ1Y3Qga3ZtICprdm0pXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTMxMjIte1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzozMTIzOlxcdGt2bS1cXHUwMDNlYXJjaC5jcnlwdG8uY3J5Y2JkID0gdmlydF90b19waHlzKGt2bS1cXHUwMDNlYXJjaC5jcnlwdG8uY3J5Y2IpO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMTI0LVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMTI1LVxcdC8qIENsZWFyIHRoZSBDUllDQiBmb3JtYXQgYml0cyAtIGkuZS4sIHNldCBmb3JtYXQgMCBieSBkZWZhdWx0ICovXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjMxMjY6XFx0a3ZtLVxcdTAwM2VhcmNoLmNyeXB0by5jcnljYmQgXFx1MDAyNj0gfihDUllDQl9GT1JNQVRfTUFTSyk7XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTMxMjctXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzEzMi1cXHRpZiAoa3ZtX3MzOTBfYXB4YV9pbnN0YWxsZWQoKSlcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MzEzMzpcXHRcXHRrdm0tXFx1MDAzZWFyY2guY3J5cHRvLmNyeWNiZCB8PSBDUllDQl9GT1JNQVQyO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMTM0LVxcdGVsc2VcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MzEzNTpcXHRcXHRrdm0tXFx1MDAzZWFyY2guY3J5cHRvLmNyeWNiZCB8PSBDUllDQl9GT1JNQVQxO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMTM2LX1cXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz0zMTUzPXZvaWQga3ZtX2FyY2hfY3J5cHRvX3NldF9tYXNrcyhzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgKmFwbSxcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMTU5LVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzozMTYwOlxcdHN3aXRjaCAoa3ZtLVxcdTAwM2VhcmNoLmNyeXB0by5jcnljYmQgXFx1MDAyNiBDUllDQl9GT1JNQVRfTUFTSykge1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMTYxLVxcdGNhc2UgQ1JZQ0JfRk9STUFUMjogLyogQVBDQjEgdXNlIDI1NiBiaXRzICovXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9MzY0Mj1zdGF0aWMgdm9pZCBrdm1fczM5MF92Y3B1X2NyeXB0b19zZXR1cChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzY1MC1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MzY1MTpcXHR2Y3B1LVxcdTAwM2VhcmNoLnNpZV9ibG9jay1cXHUwMDNlY3J5Y2JkID0gdmNwdS1cXHUwMDNla3ZtLVxcdTAwM2VhcmNoLmNyeXB0by5jcnljYmQ7XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTM2NTItXFx0dmNwdS1cXHUwMDNlYXJjaC5zaWVfYmxvY2stXFx1MDAzZWVjYjMgXFx1MDAyNj0gfihFQ0IzX0FFUyB8IEVDQjNfREVBKTtcXG4tLVxcbmFyY2gvczM5MC9rdm0vcHJpdi5jPTU5Mj1zdGF0aWMgaW50IGhhbmRsZV9wcWFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvczM5MC9rdm0vcHJpdi5jLTYzMC1cXHQvKiBBUFhBIG5vdCBpbnN0YWxsZWQgYW5kIEFQSUQgZ3JlYXRlciA2NCBvciBBUFFJIGdyZWF0ZXIgMTYgKi9cXG5hcmNoL3MzOTAva3ZtL3ByaXYuYzo2MzE6XFx0aWYgKCEodmNwdS1cXHUwMDNla3ZtLVxcdTAwM2VhcmNoLmNyeXB0by5jcnljYmQgXFx1MDAyNiAweDAyKSBcXHUwMDI2XFx1MDAyNiAocmVnMCBcXHUwMDI2IDB4MDAwMGMwZjBVTCkpXFxuYXJjaC9zMzkwL2t2bS9wcml2LmMtNjMyLVxcdFxcdHJldHVybiBrdm1fczM5MF9pbmplY3RfcHJvZ3JhbV9pbnQodmNwdSwgUEdNX1NQRUNJRklDQVRJT04pO1xcbi0tXFxuYXJjaC9zMzkwL2t2bS92c2llLmM9MzE4PXN0YXRpYyBpbnQgc2hhZG93X2NyeWNiKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IHZzaWVfcGFnZSAqdnNpZV9wYWdlKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS92c2llLmMtMzIxLVxcdHN0cnVjdCBrdm1fczM5MF9zaWVfYmxvY2sgKnNjYl9vID0gdnNpZV9wYWdlLVxcdTAwM2VzY2JfbztcXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYzozMjI6XFx0Y29uc3QgdWludDMyX3QgY3J5Y2JkX28gPSBSRUFEX09OQ0Uoc2NiX28tXFx1MDAzZWNyeWNiZCk7XFxuYXJjaC9zMzkwL2t2bS92c2llLmM6MzIzOlxcdGNvbnN0IHUzMiBjcnljYl9hZGRyID0gY3J5Y2JkX28gXFx1MDAyNiAweDdmZmZmZmY4VTtcXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYy0zMjQtXFx0dW5zaWduZWQgbG9uZyAqYjEsICpiMjtcXG4tLVxcbmFyY2gvczM5MC9rdm0vdnNpZS5jLTMyOS1cXHRpbnQga2V5X21zayA9IHRlc3Rfa3ZtX2ZhY2lsaXR5KHZjcHUtXFx1MDAzZWt2bSwgNzYpO1xcbmFyY2gvczM5MC9rdm0vdnNpZS5jOjMzMDpcXHRpbnQgZm10X28gPSBjcnljYmRfbyBcXHUwMDI2IENSWUNCX0ZPUk1BVF9NQVNLO1xcbmFyY2gvczM5MC9rdm0vdnNpZS5jOjMzMTpcXHRpbnQgZm10X2ggPSB2Y3B1LVxcdTAwM2VhcmNoLnNpZV9ibG9jay1cXHUwMDNlY3J5Y2JkIFxcdTAwMjYgQ1JZQ0JfRk9STUFUX01BU0s7XFxuYXJjaC9zMzkwL2t2bS92c2llLmMtMzMyLVxcdGludCByZXQgPSAwO1xcbmFyY2gvczM5MC9rdm0vdnNpZS5jLTMzMy1cXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYzozMzQ6XFx0c2NiX3MtXFx1MDAzZWNyeWNiZCA9IDA7XFxuYXJjaC9zMzkwL2t2bS92c2llLmMtMzM1LVxcbi0tXFxuYXJjaC9zMzkwL2t2bS92c2llLmMtMzg4LVxcdH1cXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYzozODk6XFx0c2NiX3MtXFx1MDAzZWNyeWNiZCA9ICh1MzIpdmlydF90b19waHlzKFxcdTAwMjZ2c2llX3BhZ2UtXFx1MDAzZWNyeWNiKSB8IENSWUNCX0ZPUk1BVDI7XFxuYXJjaC9zMzkwL2t2bS92c2llLmMtMzkwLVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTE4Mjg9c3RhdGljIGludCB2ZmlvX2FwX21kZXZfc2V0X2t2bShzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2LFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE4MzAte1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoxODMxOlxcdGlmIChrdm0tXFx1MDAzZWFyY2guY3J5cHRvLmNyeWNiZCkge1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xODMyLVxcdFxcdGdldF91cGRhdGVfbG9ja3NfZm9yX2t2bShrdm0pO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTE4Nzk9c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X3Vuc2V0X2t2bShzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2KVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE4ODItXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE4ODM6XFx0aWYgKGt2bSBcXHUwMDI2XFx1MDAyNiBrdm0tXFx1MDAzZWFyY2guY3J5cHRvLmNyeWNiZCkge1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xODg0LVxcdFxcdGdldF91cGRhdGVfbG9ja3NfZm9yX2t2bShrdm0pO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvczM5MC9zaWUuaD0yMD1zdHJ1Y3Qga3ZtX3MzOTBfc2llX2Jsb2NrIHtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3MzOTAvc2llLmgtMjEzLSNkZWZpbmUgQ1JZQ0JfRk9STUFUMlxcdFxcdDB4MDAwMDAwMDNcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9zMzkwL3NpZS5oOjIxNDpcXHRfX3UzMlxcdGNyeWNiZDtcXHRcXHRcXHQvKiAweDAwZmMgKi9cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9zMzkwL3NpZS5oLTIxNS1cXHRfX3U2NFxcdGdjclsxNl07XFx0XFx0LyogMHgwMTAwICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE1OjUxLjk0ODEzMzA2WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk3OTI1OTg0MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCdzIEltcGFjdCBvbiBWRklPLUFQIGFuZCBLVk0gSW50ZWdyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpczogYGt2bV9zMzkwX3NldF9jcnljYl9mb3JtYXRgIHNldHMgdGhlIGBjcnljYmRgIHN0cnVjdHVyZS4gVGhhdCBmdW5jdGlvbiBpcyBjYWxsZWQgZHVyaW5nIHRoZSBLVk0gVk0gaW5pdGlhbGl6YXRpb24gdmlhIGBrdm1fczM5MF9jcnlwdG9faW5pdGAsIGFuZCB1bHRpbWF0ZWx5IGZyb20gYGt2bV9hcmNoX2luaXRfdm1gLiBUaGlzIG1lYW5zIGBrdm0tXHUwMDNlYXJjaC5jcnlwdG8uY3J5Y2JkYCBpcyBwb3B1bGF0ZWQgd2hlbiBhIEtWTSBWTSBpbnN0YW5jZSBpcyBjcmVhdGVkLiBUaGF0J3Mga2V5IGJlY2F1c2UgYHZmaW9fYXBfbWRldl9zZXRfa3ZtYCAqc2hvdWxkKiBleGVjdXRlIGl0cyBjb3JlIGxvZ2ljIGlmIGEgYGt2bWAgcG9pbnRlciBpcyBwYXNzZWQgaW4uIFJpZ2h0LCBhbmQgYHZmaW9fYXBfbWRldl9zZXRfa3ZtYCBpcyAqY2FsbGVkKiBmcm9tIGB2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2VgIGFuZCBpdCB1c2VzIGB2ZGV2LVx1MDAzZWt2bWAsIHNvIGB2ZGV2LVx1MDAzZWt2bWAgYmVjb21lcyBhc3NpZ25lZCB3aGVuIGEgVkZJTyBkZXZpY2UgaXMgY29ubmVjdGVkIHRvIGEgS1ZNIGluc3RhbmNlLiBTbywgdXNpbmcgU3l6a2FsbGVyLCB3aGljaCBjYW4gb3BlbiB0aGUgVkZJTyBkZXZpY2UgYW5kIHVzZXMgaW9jdGxzIGxpa2UgYEtWTV9ERVZfVkZJT19HUk9VUF9BRERgLCB3ZSBjYW4gcmVhY2ggdGhpcyBjb2RlIHBhdGggYW5kIHRlc3QgaXQgd2l0aGluIGEgdmlydHVhbGl6ZWQgc2V0dXAuIEdvb2QuXG5cbk5vdywgbGV0J3MgcmV2aXNpdCB0aGUgcGF0Y2ggaXRzZWxmLiBJdCdzIGFkZGluZyBgcHFhcF9ob29rX3J3c2VtYCB0byBgZ2V0X3VwZGF0ZV9sb2Nrc19mb3Jfa3ZtYCBhbmQgYWxzbyBgcmVsZWFzZV91cGRhdGVfbG9ja3NfZm9yX2t2bWAuIFRoZSBwYXRjaCBtb2RpZmllcyBgdmZpb19hcF9tZGV2X3NldF9rdm1gIGluIGEgd2F5IHRoYXQgc3VnZ2VzdHMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgbG9ja2luZyBhbmQgc3RhdGUgbWFuYWdlbWVudCBsb2dpYy4gVGhlIHByZXZpb3VzIGNoZWNrcyBmb3IgYGNyeWNiZGAgYXJlIGdvbmUuIFRoaXMgaW5kaWNhdGVzIGEgc2lnbmlmaWNhbnQgY2hhbmdlIGluIGhvdyB0aGUgYHBxYXBfaG9va2AgaXMgaGFuZGxlZC4gIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgdG8gYmUgZW5zdXJpbmcgdGhhdCB0aGUgaG9vayBpcyBvbmx5IHNldCB3aGVuIG5vdCBhbHJlYWR5IHNldCBmb3IgYW5vdGhlciBkZXZpY2UgYXR0YWNoZWQgdG8gdGhlIHNhbWUgS1ZNIGluc3RhbmNlLiBUaGUgYGxpc3RfZm9yX2VhY2hfZW50cnlgIGxvb3AgaXMgcmVtb3ZlZCwgYW5kIHJlcGxhY2VkIHdpdGggYSBjaGVjayBvZiBga3ZtLVx1MDAzZWFyY2guY3J5cHRvLnBxYXBfaG9va2AuIFNvIHRoYXQncyBub3cgYSBzaW5nbGUgY2hlY2suXG5cblRoaXMgaXMgYWxsICpkZWZpbml0ZWx5KiB3b3J0aCBmdXp6aW5nLiBUaGUgbG9jayBjaGFuZ2VzLCB0aGUgc3RhdGUgbWFuYWdlbWVudCB0d2Vha3Mg4oCTIHRoZXNlIGFyZSByaXBlIGZvciBjb25jdXJyZW5jeSBidWdzIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IuIFdlJ2xsIG5lZWQgdG8gZm9jdXMgb24gaW50ZXJhY3Rpb25zIGJldHdlZW4gbXVsdGlwbGUgVkZJTyBBUCBkZXZpY2VzLCBLVk0sIGFuZCB0aGUgQVAgaGFyZHdhcmUuXG5cbkFzIGZvciBjb25maWd1cmF0aW9uLCB3ZSBuZWVkIHRvIGVuc3VyZSB0aGF0IGBDT05GSUdfVkZJT19BUGAgaXMgZW5hYmxlZC4gTGV0J3MgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBpbiBgYXJjaC9zMzkwL0tjb25maWdgIHRvIGJlIHN1cmUuIEFscmlnaHQsIG5vdyB3ZSBrbm93IHdoYXQgdG8gdGVzdCwgYW5kIHRoZSBjb25maWd1cmF0aW9ucyByZXF1aXJlZC4gVGltZSB0byBzZXQgdXAgdGhlIGZ1enppbmcgZW52aXJvbm1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3MDIzLCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE2OjAxLjc0MDczNDg5N1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE1ODE3ODU3MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVkZJT19BUFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAvS2NvbmZpZz04MjM9Y29uZmlnIFZGSU9fQ0NXXFxuLS1cXG5hcmNoL3MzOTAvS2NvbmZpZy04MzMtXFxuYXJjaC9zMzkwL0tjb25maWc6ODM0OmNvbmZpZyBWRklPX0FQXFxuYXJjaC9zMzkwL0tjb25maWctODM1LVxcdGRlZl90cmlzdGF0ZSBuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE2OjAzLjg5ODkxOTI2OVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTUxMDg4NTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIHRleHQsIHJlbmRlcmVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OlxuXG4qKkRpdmluZyBpbnRvIHRoZSBzMzkwIEFyY2hpdGVjdHVyZSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCB0aGUgYGFyY2gvczM5MC9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgODM0LiBJJ20gZ29pbmcgdG8gYXNzdW1lIHRoaXMgc2VjdGlvbiBsaWtlbHkgcmVsYXRlcyB0byBzb21lIGZlYXR1cmUgb3IgY29uZmlndXJhdGlvbiBvcHRpb24gd2l0aGluIHRoZSBzMzkwIGFyY2hpdGVjdHVyZS4gR2l2ZW4gdGhlIGNvbnRleHQgb2YgYSBLY29uZmlnIGZpbGUsIGl0J3MgcHJvYmFibHkgZGVmaW5pbmcgYSBjb25kaXRpb25hbCBidWlsZCBvcHRpb24sIGEgaGFyZHdhcmUgZmVhdHVyZSBzZXR0aW5nLCBvciBtYXliZSBldmVuIGEgZHJpdmVyIGNvbmZpZ3VyYXRpb24gcmVsYXRlZCB0byB0aGUgSUJNIG1haW5mcmFtZSBhcmNoaXRlY3R1cmUuIEknbGwgbmVlZCB0byBjYXJlZnVsbHkgZXhhbWluZSB0aGUgc3Vycm91bmRpbmcgY29kZSB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMsIGRlZmF1bHQgdmFsdWVzLCBhbmQgaGVscCB0ZXh0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gaXRlbS4gSXQgY291bGQgYmUgc29tZXRoaW5nIHN0cmFpZ2h0Zm9yd2FyZCwgb3IgaXQgbWlnaHQgcmVxdWlyZSBhIGRlZXBlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBoYXJkd2FyZSBjYXBhYmlsaXRpZXMsIGZpcm13YXJlIGludGVyYWN0aW9ucywgb3Igc3BlY2lmaWMga2VybmVsIHN1YnN5c3RlbXMgd2l0aGluIHRoZSBzMzkwIGVudmlyb25tZW50LiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg0MjIsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNjowOS4wNTAwMTA1MTNaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODI2NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYXJjaC9zMzkwL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogODMwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgODMwOlxcdFxcbiA4MzE6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gODMyOlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHZmaW9fY2N3LlxcbiA4MzM6XFx0XFxuIDgzNDpcXHRjb25maWcgVkZJT19BUFxcbiA4MzU6XFx0XFx0ZGVmX3RyaXN0YXRlIG5cXG4gODM2OlxcdFxcdHByb21wdCBcXFwiVkZJTyBzdXBwb3J0IGZvciBBUCBkZXZpY2VzXFxcIlxcbiA4Mzc6XFx0XFx0ZGVwZW5kcyBvbiBLVk1cXG4gODM4OlxcdFxcdGRlcGVuZHMgb24gVkZJT1xcbiA4Mzk6XFx0XFx0ZGVwZW5kcyBvbiBBUFxcbiA4NDA6XFx0XFx0c2VsZWN0IFZGSU9fTURFVlxcbiA4NDE6XFx0XFx0aGVscFxcbiA4NDI6XFx0XFx0ICBUaGlzIGRyaXZlciBncmFudHMgYWNjZXNzIHRvIEFkanVuY3QgUHJvY2Vzc29yIChBUCkgZGV2aWNlc1xcbiA4NDM6XFx0XFx0ICB2aWEgdGhlIFZGSU8gbWVkaWF0ZWQgZGV2aWNlIGludGVyZmFjZS5cXG4gODQ0OlxcdFxcbiA4NDU6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuIDg0NjpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHZmaW9fYXAuXFxuIDg0NzpcXHRcXG4gODQ4OlxcdGVuZG1lbnVcXG4gODQ5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNjowOS4wNTAwOTQ1NDNaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM5NjM0NDE1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOlxuXG4qKlZGSU8tQVAgQ29uZmlndXJhdGlvbiBDb251bmRydW0qKlxuXG5SaWdodCwgc28gdG8gZ2V0IHRoaXMgd29ya2luZywgaXQgc2VlbXMgdGhhdCBgQ09ORklHX1ZGSU9fQVBgIGlzIGFic29sdXRlbHkgZXNzZW50aWFsLiBPa2F5LCBvYnZpb3VzIHN0YXJ0LiBCdXQsIEkgbmVlZCB0byBmaWd1cmUgb3V0IGl0cyBkZXBlbmRlbmNpZXMgdG8gcHJvcGVybHkgY29uZmlndXJlIGV2ZXJ5dGhpbmcuIEl0IGxvb2tzIGxpa2UgaXQgZGlyZWN0bHkgZGVwZW5kcyBvbiBgS1ZNYCwgYFZGSU9gLCBhbmQgYEFQYC4gVGhhdCdzIGEgcmVhc29uYWJsZSBzZXQsIEkgY2FuIHdvcmsgd2l0aCB0aGF0LCBtYWtlcyBzZW5zZSB0byBtZS4gVGhlIGludGVyZXN0aW5nIHBhcnQgaXMgYEFQYC4gSXMgYEFQYCByZWZlcnJpbmcgdG8gYENPTkZJR19aQ1JZUFRgPyBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgZGVmaW5pdGlvbiBpbiB0aGUga2VybmVsIGNvbmZpZy4uLiBMZXQgbWUgZ28gYW5kIGRpZyB0aGF0IHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODk0MCwiT3V0cHV0VG9rZW5zIjoxNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTY6MTIuNDQ2NDQxMjRaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MDcwOTQwNjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFQXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvYm9vdGNvbmZpZy5yc3Q9Mjg3PXRvIGluaXRyZCBpbWFnZSwgdXNlciBjYW4gbm90aWNlIGl0IGJlZm9yZSBib290Llxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9ib290Y29uZmlnLnJzdC0yODktXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9ib290Y29uZmlnLnJzdDoyOTA6Qm9vdGNvbmZpZyBBUElzXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9ib290Y29uZmlnLnJzdC0yOTEtPT09PT09PT09PT09PT09XFxuLS1cXG5hcmNoL202OGsvS2NvbmZpZy5tYWNoaW5lPTI5PWNvbmZpZyBNQUNcXG4tLVxcbmFyY2gvbTY4ay9LY29uZmlnLm1hY2hpbmUtNDAtXFxuYXJjaC9tNjhrL0tjb25maWcubWFjaGluZTo0MTpjb25maWcgQVBPTExPXFxuYXJjaC9tNjhrL0tjb25maWcubWFjaGluZS00Mi1cXHRib29sIFxcXCJBcG9sbG8gc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvNDR4L0tjb25maWc9MjkxPWNvbmZpZyA0NzZGUEVcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvNDR4L0tjb25maWctMjk0LVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvNDR4L0tjb25maWc6Mjk1OmNvbmZpZyBBUE04MjF4eFxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvNDR4L0tjb25maWctMjk2LVxcdGJvb2xcXG4tLVxcbmFyY2gvczM5MC9LY29uZmlnPTc4NT1jb25maWcgRUFETV9TQ0hcXG4tLVxcbmFyY2gvczM5MC9LY29uZmlnLTc5NS1cXG5hcmNoL3MzOTAvS2NvbmZpZzo3OTY6Y29uZmlnIEFQXFxuYXJjaC9zMzkwL0tjb25maWctNzk3LVxcdGRlZl90cmlzdGF0ZSB5XFxuLS1cXG5hcmNoL3MzOTAvS2NvbmZpZy04MDgtXFxuYXJjaC9zMzkwL0tjb25maWc6ODA5OmNvbmZpZyBBUF9ERUJVR1xcbmFyY2gvczM5MC9LY29uZmlnLTgxMC1cXHRkZWZfYm9vbCBuXFxuLS1cXG5hcmNoL3MzOTAvS2NvbmZpZz04ODU9Y29uZmlnIENNTV9JVUNWXFxuLS1cXG5hcmNoL3MzOTAvS2NvbmZpZy04OTItXFxuYXJjaC9zMzkwL0tjb25maWc6ODkzOmNvbmZpZyBBUFBMREFUQV9CQVNFXFxuYXJjaC9zMzkwL0tjb25maWctODk0LVxcdGRlZl9ib29sIG5cXG4tLVxcbmFyY2gvczM5MC9LY29uZmlnLTkwOC1cXG5hcmNoL3MzOTAvS2NvbmZpZzo5MDk6Y29uZmlnIEFQUExEQVRBX01FTVxcbmFyY2gvczM5MC9LY29uZmlnLTkxMC1cXHRkZWZfdHJpc3RhdGUgbVxcbi0tXFxuYXJjaC9zMzkwL0tjb25maWctOTI1LVxcbmFyY2gvczM5MC9LY29uZmlnOjkyNjpjb25maWcgQVBQTERBVEFfT1NcXG5hcmNoL3MzOTAvS2NvbmZpZy05MjctXFx0ZGVmX3RyaXN0YXRlIG1cXG4tLVxcbmFyY2gvczM5MC9LY29uZmlnLTk0MC1cXG5hcmNoL3MzOTAvS2NvbmZpZzo5NDE6Y29uZmlnIEFQUExEQVRBX05FVF9TVU1cXG5hcmNoL3MzOTAvS2NvbmZpZy05NDItXFx0ZGVmX3RyaXN0YXRlIG1cXG4tLVxcbmFyY2gveDg2L0tjb25maWc9Mjc0MT1jb25maWcgWDg2X0FQTV9CT09UXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTI3NDQtXFxuYXJjaC94ODYvS2NvbmZpZzoyNzQ1Om1lbnVjb25maWcgQVBNXFxuYXJjaC94ODYvS2NvbmZpZy0yNzQ2LVxcdHRyaXN0YXRlIFxcXCJBUE0gKEFkdmFuY2VkIFBvd2VyIE1hbmFnZW1lbnQpIEJJT1Mgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9Mjc5OT1pZiBBUE1cXG5hcmNoL3g4Ni9LY29uZmlnLTI4MDAtXFxuYXJjaC94ODYvS2NvbmZpZzoyODAxOmNvbmZpZyBBUE1fSUdOT1JFX1VTRVJfU1VTUEVORFxcbmFyY2gveDg2L0tjb25maWctMjgwMi1cXHRib29sIFxcXCJJZ25vcmUgVVNFUiBTVVNQRU5EXFxcIlxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZy0yODA3LVxcbmFyY2gveDg2L0tjb25maWc6MjgwODpjb25maWcgQVBNX0RPX0VOQUJMRVxcbmFyY2gveDg2L0tjb25maWctMjgwOS1cXHRib29sIFxcXCJFbmFibGUgUE0gYXQgYm9vdCB0aW1lXFxcIlxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZy0yODI0LVxcbmFyY2gveDg2L0tjb25maWc6MjgyNTpjb25maWcgQVBNX0NQVV9JRExFXFxuYXJjaC94ODYvS2NvbmZpZy0yODI2LVxcdGRlcGVuZHMgb24gQ1BVX0lETEVcXG4tLVxcbmFyY2gveDg2L0tjb25maWctMjgzNi1cXG5hcmNoL3g4Ni9LY29uZmlnOjI4Mzc6Y29uZmlnIEFQTV9ESVNQTEFZX0JMQU5LXFxuYXJjaC94ODYvS2NvbmZpZy0yODM4LVxcdGJvb2wgXFxcIkVuYWJsZSBjb25zb2xlIGJsYW5raW5nIHVzaW5nIEFQTVxcXCJcXG4tLVxcbmFyY2gveDg2L0tjb25maWctMjg0OS1cXG5hcmNoL3g4Ni9LY29uZmlnOjI4NTA6Y29uZmlnIEFQTV9BTExPV19JTlRTXFxuYXJjaC94ODYvS2NvbmZpZy0yODUxLVxcdGJvb2wgXFxcIkFsbG93IGludGVycnVwdHMgZHVyaW5nIEFQTSBCSU9TIGNhbGxzXFxcIlxcbi0tXFxuZHJpdmVycy9jaGFyL0tjb25maWc9MjEzPWNvbmZpZyBYSUxJTlhfSFdJQ0FQXFxuLS1cXG5kcml2ZXJzL2NoYXIvS2NvbmZpZy0yMjItXFxuZHJpdmVycy9jaGFyL0tjb25maWc6MjIzOmNvbmZpZyBBUFBMSUNPTVxcbmRyaXZlcnMvY2hhci9LY29uZmlnLTIyNC1cXHR0cmlzdGF0ZSBcXFwiQXBwbGljb20gaW50ZWxsaWdlbnQgZmllbGRidXMgY2FyZCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvcWNvbS9LY29uZmlnPTI5MD1jb25maWcgUUNPTV9DTEtfUlBNSFxcbi0tXFxuZHJpdmVycy9jbGsvcWNvbS9LY29uZmlnLTI5OC1cXG5kcml2ZXJzL2Nsay9xY29tL0tjb25maWc6Mjk5OmNvbmZpZyBBUFFfR0NDXzgwODRcXG5kcml2ZXJzL2Nsay9xY29tL0tjb25maWctMzAwLVxcdHRyaXN0YXRlIFxcXCJBUFE4MDg0IEdsb2JhbCBDbG9jayBDb250cm9sbGVyXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvcWNvbS9LY29uZmlnLTMwNy1cXG5kcml2ZXJzL2Nsay9xY29tL0tjb25maWc6MzA4OmNvbmZpZyBBUFFfTU1DQ184MDg0XFxuZHJpdmVycy9jbGsvcWNvbS9LY29uZmlnLTMwOS1cXHR0cmlzdGF0ZSBcXFwiQVBRODA4NCBNdWx0aW1lZGlhIENsb2NrIENvbnRyb2xsZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2RtYS9LY29uZmlnPTc4PWNvbmZpZyBBTUNDX1BQQzQ0MFNQRV9BRE1BXFxuLS1cXG5kcml2ZXJzL2RtYS9LY29uZmlnLTg3LVxcbmRyaXZlcnMvZG1hL0tjb25maWc6ODg6Y29uZmlnIEFQUExFX0FETUFDXFxuZHJpdmVycy9kbWEvS2NvbmZpZy04OS1cXHR0cmlzdGF0ZSBcXFwiQXBwbGUgQURNQUMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvZWZpL0tjb25maWc9MTU0PWNvbmZpZyBFRklfREVWX1BBVEhfUEFSU0VSXFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9LY29uZmlnLTE1Ni1cXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9LY29uZmlnOjE1Nzpjb25maWcgQVBQTEVfUFJPUEVSVElFU1xcbmRyaXZlcnMvZmlybXdhcmUvZWZpL0tjb25maWctMTU4LVxcdGJvb2wgXFxcIkFwcGxlIERldmljZSBQcm9wZXJ0aWVzXFxcIlxcbi0tXFxuZHJpdmVycy9paW8vbGlnaHQvS2NvbmZpZz02Nj1jb25maWcgQUwzMzIwQVxcbi0tXFxuZHJpdmVycy9paW8vbGlnaHQvS2NvbmZpZy03NS1cXG5kcml2ZXJzL2lpby9saWdodC9LY29uZmlnOjc2OmNvbmZpZyBBUERTOTE2MFxcbmRyaXZlcnMvaWlvL2xpZ2h0L0tjb25maWctNzctXFx0dHJpc3RhdGUgXFxcIkFQRFM5MTYwIGNvbWJpbmVkIGFscyBhbmQgcHJveGltaXR5IHNlbnNvclxcXCJcXG4tLVxcbmRyaXZlcnMvaWlvL2xpZ2h0L0tjb25maWctODYtXFxuZHJpdmVycy9paW8vbGlnaHQvS2NvbmZpZzo4Nzpjb25maWcgQVBEUzkzMDBcXG5kcml2ZXJzL2lpby9saWdodC9LY29uZmlnLTg4LVxcdHRyaXN0YXRlIFxcXCJBUERTOTMwMCBhbWJpZW50IGxpZ2h0IHNlbnNvclxcXCJcXG4tLVxcbmRyaXZlcnMvaWlvL2xpZ2h0L0tjb25maWctOTYtXFxuZHJpdmVycy9paW8vbGlnaHQvS2NvbmZpZzo5Nzpjb25maWcgQVBEUzkzMDZcXG5kcml2ZXJzL2lpby9saWdodC9LY29uZmlnLTk4LVxcdHRyaXN0YXRlIFxcXCJBdmFnbyBBUERTOTMwNiBBbWJpZW50IExpZ2h0IFNlbnNvclxcXCJcXG4tLVxcbmRyaXZlcnMvaWlvL2xpZ2h0L0tjb25maWctMTA4LVxcbmRyaXZlcnMvaWlvL2xpZ2h0L0tjb25maWc6MTA5OmNvbmZpZyBBUERTOTk2MFxcbmRyaXZlcnMvaWlvL2xpZ2h0L0tjb25maWctMTEwLVxcdHRyaXN0YXRlIFxcXCJBdmFnbyBBUERTOTk2MCBnZXN0dXJlL1JHQi9BTFMvcHJveGltaXR5IHNlbnNvclxcXCJcXG4tLVxcbmRyaXZlcnMvaW9tbXUvS2NvbmZpZz0yOTY9Y29uZmlnIFNQQVBSX1RDRV9JT01NVVxcbi0tXFxuZHJpdmVycy9pb21tdS9LY29uZmlnLTMwMy1cXG5kcml2ZXJzL2lvbW11L0tjb25maWc6MzA0OmNvbmZpZyBBUFBMRV9EQVJUXFxuZHJpdmVycy9pb21tdS9LY29uZmlnLTMwNS1cXHR0cmlzdGF0ZSBcXFwiQXBwbGUgREFSVCBJT01NVSBTdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL0tjb25maWc9Nzg4PWNvbmZpZyBJUlFfSURUMzI0M1hcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnLTc5Mi1cXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZzo3OTM6Y29uZmlnIEFQUExFX0FJQ1xcbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnLTc5NC1cXHRib29sIFxcXCJBcHBsZSBJbnRlcnJ1cHQgQ29udHJvbGxlciAoQUlDKVxcXCJcXG4tLVxcbmRyaXZlcnMvbWlzYy9LY29uZmlnPTMyNz1jb25maWcgU0dJX0dSVV9ERUJVR1xcbi0tXFxuZHJpdmVycy9taXNjL0tjb25maWctMzMzLVxcbmRyaXZlcnMvbWlzYy9LY29uZmlnOjMzNDpjb25maWcgQVBEUzk4MDJBTFNcXG5kcml2ZXJzL21pc2MvS2NvbmZpZy0zMzUtXFx0dHJpc3RhdGUgXFxcIk1lZGZpZWxkIEF2YWdvIEFQRFM5ODAyIEFMUyBTZW5zb3IgbW9kdWxlXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9LY29uZmlnPTEwNj1jb25maWcgTkUyS19QQ0lcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvS2NvbmZpZy0xMjMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9LY29uZmlnOjEyNDpjb25maWcgQVBORVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvS2NvbmZpZy0xMjUtXFx0dHJpc3RhdGUgXFxcIlBDTUNJQSBORTIwMDAgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGNpLmM9MzMyMD1zdGF0aWMgaW50IHJ0dzg5X3BjaV9jZmdfZGFjKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBmb3JjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGNpLmMtMzMzMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BjaS5jOjMzMzM6XFx0LyogQ29uZmlndXJlIERBQyBvbmx5IHZpYSBQQ0kgY29uZmlnIEFQSSwgbm90IERCSSBpbnRlcmZhY2VzICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9wY2kuYy0zMzM0LVxcdHJldCA9IHBjaV9yZWFkX2NvbmZpZ19ieXRlKHBkZXYsIFJUVzg5X1BDSUVfTDFfQ1RSTCwgXFx1MDAyNnZhbCk7XFxuLS1cXG5kcml2ZXJzL3BlcmYvS2NvbmZpZz0yNTM9Y29uZmlnIE1BUlZFTExfQ04xMEtfVEFEX1BNVVxcbi0tXFxuZHJpdmVycy9wZXJmL0tjb25maWctMjU5LVxcbmRyaXZlcnMvcGVyZi9LY29uZmlnOjI2MDpjb25maWcgQVBQTEVfTTFfQ1BVX1BNVVxcbmRyaXZlcnMvcGVyZi9LY29uZmlnLTI2MS1cXHRib29sIFxcXCJBcHBsZSBNMSBDUFUgUE1VIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL3BsYXRmb3JtL3g4Ni9LY29uZmlnPTE5ND1jb25maWcgQURWX1NXQlVUVE9OXFxuLS1cXG5kcml2ZXJzL3BsYXRmb3JtL3g4Ni9LY29uZmlnLTIwNC1cXG5kcml2ZXJzL3BsYXRmb3JtL3g4Ni9LY29uZmlnOjIwNTpjb25maWcgQVBQTEVfR01VWFxcbmRyaXZlcnMvcGxhdGZvcm0veDg2L0tjb25maWctMjA2LVxcdHRyaXN0YXRlIFxcXCJBcHBsZSBHbXV4IERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvcG1kb21haW4vYXBwbGUvS2NvbmZpZz0zPWlmIEFSQ0hfQVBQTEUgfHwgQ09NUElMRV9URVNUXFxuZHJpdmVycy9wbWRvbWFpbi9hcHBsZS9LY29uZmlnLTQtXFxuZHJpdmVycy9wbWRvbWFpbi9hcHBsZS9LY29uZmlnOjU6Y29uZmlnIEFQUExFX1BNR1JfUFdSU1RBVEVcXG5kcml2ZXJzL3BtZG9tYWluL2FwcGxlL0tjb25maWctNi1cXHRib29sIFxcXCJBcHBsZSBTb0MgUE1HUiBwb3dlciBzdGF0ZSBjb250cm9sXFxcIlxcbi0tXFxuZHJpdmVycy9wb3dlci9zdXBwbHkvS2NvbmZpZz0xOD1jb25maWcgUE9XRVJfU1VQUExZX0hXTU9OXFxuLS1cXG5kcml2ZXJzL3Bvd2VyL3N1cHBseS9LY29uZmlnLTMwLVxcbmRyaXZlcnMvcG93ZXIvc3VwcGx5L0tjb25maWc6MzE6Y29uZmlnIEFQTV9QT1dFUlxcbmRyaXZlcnMvcG93ZXIvc3VwcGx5L0tjb25maWctMzItXFx0dHJpc3RhdGUgXFxcIkFQTSBlbXVsYXRpb24gZm9yIGNsYXNzIGJhdHRlcmllc1xcXCJcXG4tLVxcbmRyaXZlcnMvc29jL2FwcGxlL0tjb25maWc9NT1tZW51IFxcXCJBcHBsZSBTb0MgZHJpdmVyc1xcXCJcXG5kcml2ZXJzL3NvYy9hcHBsZS9LY29uZmlnLTYtXFxuZHJpdmVycy9zb2MvYXBwbGUvS2NvbmZpZzo3OmNvbmZpZyBBUFBMRV9NQUlMQk9YXFxuZHJpdmVycy9zb2MvYXBwbGUvS2NvbmZpZy04LVxcdHRyaXN0YXRlIFxcXCJBcHBsZSBTb0MgbWFpbGJveGVzXFxcIlxcbi0tXFxuZHJpdmVycy9zb2MvYXBwbGUvS2NvbmZpZy0xOC1cXG5kcml2ZXJzL3NvYy9hcHBsZS9LY29uZmlnOjE5OmNvbmZpZyBBUFBMRV9SVEtJVFxcbmRyaXZlcnMvc29jL2FwcGxlL0tjb25maWctMjAtXFx0dHJpc3RhdGUgXFxcIkFwcGxlIFJUS2l0IGNvLXByb2Nlc3NvciBJUEMgcHJvdG9jb2xcXFwiXFxuLS1cXG5kcml2ZXJzL3NvYy9hcHBsZS9LY29uZmlnLTMwLVxcbmRyaXZlcnMvc29jL2FwcGxlL0tjb25maWc6MzE6Y29uZmlnIEFQUExFX1NBUlRcXG5kcml2ZXJzL3NvYy9hcHBsZS9LY29uZmlnLTMyLVxcdHRyaXN0YXRlIFxcXCJBcHBsZSBTQVJUIERNQSBhZGRyZXNzIGZpbHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvc29jL2FwcGxlL0tjb25maWctNDAtXFxuZHJpdmVycy9zb2MvYXBwbGUvS2NvbmZpZzo0MTpjb25maWcgQVBQTEVfVFVOQUJMRVxcbmRyaXZlcnMvc29jL2FwcGxlL0tjb25maWctNDItXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvS2NvbmZpZz0xNDc9Y29uZmlnIFVTQl9RQ09NX0VVRFxcbi0tXFxuZHJpdmVycy91c2IvbWlzYy9LY29uZmlnLTE1OC1cXG5kcml2ZXJzL3VzYi9taXNjL0tjb25maWc6MTU5OmNvbmZpZyBBUFBMRV9NRklfRkFTVENIQVJHRVxcbmRyaXZlcnMvdXNiL21pc2MvS2NvbmZpZy0xNjAtXFx0dHJpc3RhdGUgXFxcIkZhc3QgY2hhcmdlIGNvbnRyb2wgZm9yIGlPUyBkZXZpY2VzXFxcIlxcbi0tXFxuZHJpdmVycy92aWRlby9LY29uZmlnPTY9bWVudSBcXFwiR3JhcGhpY3Mgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL3ZpZGVvL0tjb25maWctNy1cXG5kcml2ZXJzL3ZpZGVvL0tjb25maWc6ODpjb25maWcgQVBFUlRVUkVfSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vS2NvbmZpZy05LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZz0xMTExPWNvbmZpZyBNU0MzMTNFX1dBVENIRE9HXFxuLS1cXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWctMTEyMi1cXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWc6MTEyMzpjb25maWcgQVBQTEVfV0FUQ0hET0dcXG5kcml2ZXJzL3dhdGNoZG9nL0tjb25maWctMTEyNC1cXHR0cmlzdGF0ZSBcXFwiQXBwbGUgU29DIHdhdGNoZG9nXFxcIlxcbi0tXFxuZnMveGZzL3hmc19zdXBlci5jPTE2NTI9eGZzX2ZzX2ZpbGxfc3VwZXIoXFxuLS1cXG5mcy94ZnMveGZzX3N1cGVyLmMtMTY2NC1cXHQgKiBpcyBndWFyYW50ZWVkIHRvIGhhdmUgYmVlbiBjb21wbGV0ZWQgYnkgZWl0aGVyIHRoZSBvbGQgbW91bnQgQVBJIG9yXFxuZnMveGZzL3hmc19zdXBlci5jOjE2NjU6XFx0ICogdGhlIG5ld2VyIGZzb3Blbi9mc2NvbmZpZyBBUEkuXFxuZnMveGZzL3hmc19zdXBlci5jLTE2NjYtXFx0ICovXFxuLS1cXG5rZXJuZWwvcG93ZXIvS2NvbmZpZz0zMTA9Y29uZmlnIFBNX1RSQUNFX1JUQ1xcbi0tXFxua2VybmVsL3Bvd2VyL0tjb25maWctMzI3LVxcbmtlcm5lbC9wb3dlci9LY29uZmlnOjMyODpjb25maWcgQVBNX0VNVUxBVElPTlxcbmtlcm5lbC9wb3dlci9LY29uZmlnLTMyOS1cXHR0cmlzdGF0ZSBcXFwiQWR2YW5jZWQgUG93ZXIgTWFuYWdlbWVudCBFbXVsYXRpb25cXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE2OjE0Ljg1MzU0MDE3NFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTY4OTAxMDUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgczM5MCBBcmNoaXRlY3R1cmUgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYENPTkZJR19BUGAgb3B0aW9uLCBhbmQgbXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdHJhY2Ugd2hlcmUgaXQncyBkZWZpbmVkLiBSaWdodCwgdGhlIHBhdGggaXMgYGFyY2gvczM5MC9LY29uZmlnOjc5NmAuIFRoYXQgdGVsbHMgbWUgdGhlIGNvbnRleHQgaXMgdGhlIHMzOTAgYXJjaGl0ZWN0dXJlJ3MgY29uZmlndXJhdGlvbiBmaWxlLiBOb3cgSSdtIG1lbnRhbGx5IHBhcnNpbmcgdGhlIGRlcGVuZGVuY2llcy4gSWYgd2UncmUgZW5hYmxpbmcgYENPTkZJR19BUGAsIGxvZ2ljYWxseSwgd2UncmUgbGlrZWx5IGdvaW5nIHRvIG5lZWQgYSBmZXcgb3RoZXIgZWxlbWVudHMgdG8gY29tZSBhbG9uZyBmb3IgdGhlIHJpZGUuIEknbSB0aGlua2luZyBpbW1lZGlhdGVseSBhYm91dCBgVkZJT19BUGAsIGBLVk1gLCBhbmQgYFZGSU9gLCBhbmQgb2YgY291cnNlIHRoZSBiYXNlIGBBUGAgY29tcG9uZW50IGl0c2VsZi5cblxuQWxyaWdodCwgbGV0J3MganVzdCBnbyBhaGVhZCBhbmQgZGl2ZSBpbnRvIHRoZSBgYXJjaC9zMzkwL0tjb25maWdgIGZpbGUgYW5kIGNvbmZpcm0gbXkgdGhpbmtpbmcuIEknbGwgc2VhcmNoIGZvciB0aGUgYEFQYCBjb25maWd1cmF0aW9uIG9wdGlvbiBhbmQgc2VlIHdoYXQgdGhlIGRlcGVuZGVuY2llcyBvciBpbXBsaWVkIGNvbm5lY3Rpb25zIGFyZSB0aGVyZS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGNsZWFyZXIgcGljdHVyZSBvZiB3aGF0IGVuYWJsaW5nIHRoaXMgaW52b2x2ZXMgYXQgdGhlIGtlcm5lbCBsZXZlbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTI1MDgsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNjoxOS44MjI0NDU0OTRaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI0NTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImFyY2gvczM5MC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDc5MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDc5MDpcXHRcXHQgIFRoaXMgZHJpdmVyIGFsbG93cyB1c2FnZSBvZiBFQURNIHN1YmNoYW5uZWxzLiBFQURNIHN1YmNoYW5uZWxzIGFjdFxcbiA3OTE6XFx0XFx0ICBhcyBhIGNvbW11bmljYXRpb24gdmVoaWNsZSBmb3IgU0NNIGluY3JlbWVudHMuXFxuIDc5MjpcXHRcXG4gNzkzOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuIDc5NDpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBlYWRtX3NjaC5cXG4gNzk1OlxcdFxcbiA3OTY6XFx0Y29uZmlnIEFQXFxuIDc5NzpcXHRcXHRkZWZfdHJpc3RhdGUgeVxcbiA3OTg6XFx0XFx0cHJvbXB0IFxcXCJTdXBwb3J0IGZvciBBZGp1bmN0IFByb2Nlc3NvcnMgKGFwKVxcXCJcXG4gNzk5OlxcdFxcdGhlbHBcXG4gODAwOlxcdFxcdCAgVGhpcyBkcml2ZXIgYWxsb3dzIHVzYWdlIHRvIEFkanVuY3QgUHJvY2Vzc29yIChBUCkgZGV2aWNlcyB2aWFcXG4gODAxOlxcdFxcdCAgdGhlIGFwIGJ1cywgY2FyZHMgYW5kIHF1ZXVlcy4gU3VwcG9ydGVkIEFkanVuY3QgUHJvY2Vzc29ycyBhcmVcXG4gODAyOlxcdFxcdCAgdGhlIENyeXB0b0V4cHJlc3MgQ2FyZHMgKENFWCkuXFxuIDgwMzpcXHRcXG4gODA0OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuIDgwNTpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBhcC5cXG4gODA2OlxcdFxcbiA4MDc6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBZIChkZWZhdWx0KS5cXG4gODA4OlxcdFxcbiA4MDk6XFx0Y29uZmlnIEFQX0RFQlVHXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE2OjE5LjgyMjU3MjE2NFoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MDA3NDM4ODY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgVGhvdWdodHMgb24gVkZJTy1BUCBLZXJuZWwgTW9kdWxlIFN5bWJvbCBBbmFseXNpcyoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gYENPTkZJR19BUGAgaXMgdGhlIGZvdW5kYXRpb24sIEFkanVuY3QgUHJvY2Vzc29yIHN1cHBvcnQuIE9rYXksIGdvdCBpdC4gTm93LCB3aGF0J3MgcmVxdWlyZWQ/IFRoZSBsaXN0IGlzOiBgVkZJT19BUGAsIGBLVk1gLCBgVkZJT2AsIGFuZCBgQVBgLiBIb2xkIG9uLCBgQVBgIGlzIHRyaXN0YXRlLCBkZWZhdWx0ZWQgdG8gJ3knLiBHcmVhdCwgdGhhdCdzIHRha2VuIGNhcmUgb2YuIGBWRklPX0FQYCBpcyBkZWZhdWx0ZWQgdG8gJ24nIHRob3VnaC4gU28sIHRoZSBrZXkgaXMgZW5hYmxpbmcgYFZGSU9fQVBgLiBJdCBkZXBlbmRzIG9uIGBLVk1gLCBgVkZJT2AsIGFuZCBgQVBgLCBzbyBJIG5lZWQgdG8gYmUgbWluZGZ1bCBvZiB0aG9zZSBkZXBlbmRlbmNpZXMuIGBLVk1gIGFuZCBgVkZJT2AgYXJlIHByZXR0eSBzdGFuZGFyZCBmYXJlIHRob3VnaCwgc28gSSdtIGdvaW5nIHRvIGZvY3VzIG9uIGVuYWJsaW5nIGBWRklPX0FQYC5cblxuTm93LCBmb3Igc3ltYm9sIGFuYWx5c2lzLCBJIG5lZWQgdG8gZm9jdXMgb24gdGhlc2U6IGB2ZmlvX2FwX21kZXZfc2V0X2t2bWAsIGB2ZmlvX2FwX21kZXZfdW5zZXRfa3ZtYCwgYHZmaW9fYXBfbWRldl9vcGVuX2RldmljZWAsIGB2ZmlvX2FwX21kZXZfY2xvc2VfZGV2aWNlYCwgYHZmaW9fYXBfbWRldl9wcm9iZWAsIGFuZCBgdmZpb19hcF9tZGV2X2luaXRfZGV2YC5cblxuTGV0J3Mgc2VlIGlmIGB2ZmlvX2FwX21kZXZfc2V0X2t2bWAgaXMgc3RhdGljLiBZZXMsIGl0IGlzLiBCdXQsIHdhaXQuLi4gdGhlIHByb21wdCAqcHJlZmVycyogbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuIFRob3NlIHN0YXRpYyBmdW5jdGlvbnMgYXJlIG9mdGVuIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLCBhbmQgZG9uJ3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLiBPa2F5LCBJJ2xsIGtlZXAgdGhhdCBpbiBtaW5kLiBgdmZpb19hcF9tZGV2X29wZW5fZGV2aWNlYCBpcyBhbHNvIHN0YXRpYywgYnV0IGl0J3MgdXNlZCBhcyBhIGNhbGxiYWNrIGluIGB2ZmlvX2FwX21hdHJpeF9kZXZfb3BzYC4gU28sIEknbGwgbmVlZCB0byBjaGVjayBgdmZpb19hcF9vcHMuY2Agbm93IHRvIGZpbmQgdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGZvciBlbnRyeSBwb2ludHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzMTIxLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzY3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTY6MjYuODMwMDczMDkxWiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDEyNDc2MjU3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKiB2ZmlvX2FwX21kZXZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTIzNjk9c3RhdGljIHN0cnVjdCBtZGV2X2RyaXZlciB2ZmlvX2FwX21hdHJpeF9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjM4MS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjM4MjppbnQgdmZpb19hcF9tZGV2X3JlZ2lzdGVyKHZvaWQpXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIzODMte1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI0MDQtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI0MDU6dm9pZCB2ZmlvX2FwX21kZXZfdW5yZWdpc3Rlcih2b2lkKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNDA2LXtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNDEwLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNDExOmludCB2ZmlvX2FwX21kZXZfcHJvYmVfcXVldWUoc3RydWN0IGFwX2RldmljZSAqYXBkZXYpXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI0MTIte1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTI0NjQtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjI0NjU6dm9pZCB2ZmlvX2FwX21kZXZfcmVtb3ZlX3F1ZXVlKHN0cnVjdCBhcF9kZXZpY2UgKmFwZGV2KVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNDY2LXtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNTI3LSAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyNTI4OmludCB2ZmlvX2FwX21kZXZfcmVzb3VyY2VfaW5fdXNlKHVuc2lnbmVkIGxvbmcgKmFwbSwgdW5zaWduZWQgbG9uZyAqYXFtKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yNTI5LXtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmg9MTQzPXN0cnVjdCB2ZmlvX2FwX3F1ZXVlIHtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmgtMTU0LVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmg6MTU1OmludCB2ZmlvX2FwX21kZXZfcmVnaXN0ZXIodm9pZCk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaDoxNTY6dm9pZCB2ZmlvX2FwX21kZXZfdW5yZWdpc3Rlcih2b2lkKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oLTE1Ny1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oOjE1ODppbnQgdmZpb19hcF9tZGV2X3Byb2JlX3F1ZXVlKHN0cnVjdCBhcF9kZXZpY2UgKnF1ZXVlKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oOjE1OTp2b2lkIHZmaW9fYXBfbWRldl9yZW1vdmVfcXVldWUoc3RydWN0IGFwX2RldmljZSAqcXVldWUpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmgtMTYwLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9wcml2YXRlLmg6MTYxOmludCB2ZmlvX2FwX21kZXZfcmVzb3VyY2VfaW5fdXNlKHVuc2lnbmVkIGxvbmcgKmFwbSwgdW5zaWduZWQgbG9uZyAqYXFtKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oLTE2Mi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTY6MzYuOTU0ODQ0MjQ2WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgyNDU0NjE4MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSWRlbnRpZnlpbmcgS2V5IEFQSSBFbnRyeSBQb2ludHMgZm9yIEFuYWx5c2lzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBmb2N1c2VkIG9uIGlkZW50aWZ5aW5nIHRoZSBrZXkgZW50cnkgcG9pbnRzIGludG8gdGhpcyBjb2RlLCBwYXJ0aWN1bGFybHkgdGhlIG1vZGlmaWVkIHBvcnRpb25zLiBUaGUgcHJvbXB0IGVtcGhhc2l6ZXMgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGZ1bmN0aW9ucywgd2hpY2ggYXJlIGRpc3RpbmN0LCBjYWxsYWJsZSB1bml0cy5cblxuSSBzdGFydGVkIGJ5IGxpc3RpbmcgdGhlIG9idmlvdXMgbm9uLXN0YXRpYyBmdW5jdGlvbnM6IGB2ZmlvX2FwX21kZXZfcmVnaXN0ZXJgLCBgdmZpb19hcF9tZGV2X3VucmVnaXN0ZXJgLCBgdmZpb19hcF9tZGV2X3Byb2JlX3F1ZXVlYCwgYHZmaW9fYXBfbWRldl9yZW1vdmVfcXVldWVgLCBhbmQgYHZmaW9fYXBfbWRldl9yZXNvdXJjZV9pbl91c2VgLiBUaGVzZSBhcmUgY2xlYXJseSBlbnRyeSBwb2ludHMuXG5cblRoZW4sIEkgc3RhcnRlZCB0byBxdWVzdGlvbiB0aGUgc3RhdGljIG9uZXMuIGB2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2VgIGlzIGEgY2FsbGJhY2sgd2l0aGluIGB2ZmlvX2RldmljZV9vcHNgLCBzbyBldmVuIHRob3VnaCBpdCdzIHN0YXRpYywgaXRzIGFkZHJlc3MgaXMgdGFrZW4sIGVuc3VyaW5nIGl0IHdvbid0IGJlIGZ1bGx5IGlubGluZWQuIEl0J3MgZXNzZW50aWFsbHkgYW4gZW50cnkgcG9pbnQuIFRoZSBzYW1lIGlzIHRydWUgZm9yIGB2ZmlvX2FwX21kZXZfY2xvc2VfZGV2aWNlYC5cblxuSSBjb25zaWRlcmVkIGB2ZmlvX2FwX21kZXZfaW9jdGxgIGFuZCBgdmZpb19hcF9tZGV2X3Byb2JlYCwgYnV0IHF1aWNrbHkgZGlzbWlzc2VkIHRoZW0sIGFzIHRoZXkgd2VyZSBzdGF0aWMgYW5kIGxpa2VseSBpbnRlcm5hbCBoZWxwZXJzLlxuXG5JIHRoZW4gcmV2aXNpdGVkIHRoZSBpZGVhIG9mIGxpc3RpbmcgYHZmaW9fYXBfbWRldl9zZXRfa3ZtYCBhbmQgYHZmaW9fYXBfbWRldl91bnNldF9rdm1gIGRpcmVjdGx5LCBhcyB0aGV5IGFyZSBjcnVjaWFsIGZvciBzZXR0aW5nIHVwIHRoZSBLVk0gY29udGV4dC4gQWx0aG91Z2ggdGhleSB3ZXJlIHN0YXRpYywgYHZmaW9fYXBfbWRldl9zZXRfa3ZtYCBpcyBjYWxsZWQgZnJvbSBgdmZpb19hcF9tZGV2X29wZW5fZGV2aWNlYCBhbmQgaXMgbGlrZWx5IG5vdCBmdWxseSBpbmxpbmVkIGJlY2F1c2Ugb2YgaXRzIHNpemUuXG5cbkhvd2V2ZXIsIGdpdmVuIHRoZSBwcm9tcHQncyBwcmVmZXJlbmNlLCBgdmZpb19hcF9tZGV2X29wZW5fZGV2aWNlYCBhbmQgYHZmaW9fYXBfbWRldl9jbG9zZV9kZXZpY2VgIGFyZSB0aGUga2V5IGVudHJ5IHBvaW50cyBmb3IgdGhlIG1vZGlmaWVkIGNvZGUuIFRoZXNlIGFyZSBjYWxsYmFja3MsIHNvIHRoZXkgYXJlIG5vdCBpbmxpbmVkLCBhbmQgdGhleSBhcmUgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgaG93IHRoZSBLVk0gY29udGV4dCBpcyBzZXQgYW5kIHVuc2V0LlxuXG5JJ2xsIGRvdWJsZS1jaGVjayB0byBjb25maXJtIHRoYXQgYHZmaW9fYXBfbWRldl9zZXRfa3ZtYCBhbmQgYHZmaW9fYXBfbWRldl91bnNldF9rdm1gIGFyZW4ndCBjYWxsZWQgZnJvbSBhbnl3aGVyZSBlbHNlLCBqdXN0IHRvIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDgwMiwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNjo0NS4yMDAzMTI0MThaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxODE2MzY0MjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmZpb19hcF9tZGV2X3NldF9rdm1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTE4MTM9c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKnZmaW9fYXBfbWRldl9hdHRyX2dyb3Vwc1tdID0ge1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE4MTgtLyoqXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE4MTk6ICogdmZpb19hcF9tZGV2X3NldF9rdm0gLSBzZXRzIGFsbCBkYXRhIGZvciBAbWF0cml4X21kZXYgdGhhdCBhcmUgbmVlZGVkXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE4MjAtICogdG8gbWFuYWdlIEFQIHJlc291cmNlcyBmb3IgdGhlIGd1ZXN0IHdob3NlIHN0YXRlIGlzIHJlcHJlc2VudGVkIGJ5IEBrdm1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xODI3LSAqL1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoxODI4OnN0YXRpYyBpbnQgdmZpb19hcF9tZGV2X3NldF9rdm0oc3RydWN0IGFwX21hdHJpeF9tZGV2ICptYXRyaXhfbWRldixcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMTgyOS1cXHRcXHRcXHRcXHRzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjA0OD1zdGF0aWMgaW50IHZmaW9fYXBfbWRldl9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKnZkZXYpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjA1NS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM6MjA1NjpcXHRyZXR1cm4gdmZpb19hcF9tZGV2X3NldF9rdm0obWF0cml4X21kZXYsIHZkZXYtXFx1MDAzZWt2bSk7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIwNTctfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNjo0Ny4zODE5NTc1ODlaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk1MjcwMzAzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIENhbGxlciBDb250ZXh0KipcblxuSG1tLCBzbyB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb24sIHdoYXRldmVyIGl0IGlzLCBpcyBvbmx5IGNhbGxlZCBmcm9tIGB2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2VgLiBJbnRlcmVzdGluZy4gQW5kLCBvZiBjb3Vyc2UsIGZyb20gYHZmaW9fYXBfbWRldl91bnNldF9rdm1gLiBUaGF0J3MgYSBsaW1pdGVkIHNldCBvZiBjYWxsZXJzLiBLbm93aW5nIHRoaXMgaXMga2V5LCBhcyBpdCBkcmFtYXRpY2FsbHkgY29uc3RyYWlucyB0aGUgc2NlbmFyaW9zIEkgbmVlZCB0byBjb25zaWRlciB3aGVuIGRlYnVnZ2luZyBvciByZWZhY3RvcmluZy4gVGhpcyBpbmZvcm1hdGlvbiB3aWxsIGluZm9ybSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBleGVjdXRpb24gZmxvdyBhbmQgcG90ZW50aWFsIHNpZGUgZWZmZWN0cyB3aXRoaW4gdGhlIFZGSU8gYXJjaGl0ZWN0dXJlLiBUaGlzIGFsc28gaGVscHMgd2l0aCB1bmRlcnN0YW5kaW5nIGFuZCBkZWJ1Z2dpbmcgaG93IHRoZSBWRklPIEFQIChBZGRyZXNzLVNwYWNlIFBhc3MtVGhyb3VnaCkgZnVuY3Rpb25hbGl0eSBoYW5kbGVzIGRldmljZSBhY2Nlc3MgYW5kIEtWTSBpbnRlcmFjdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2Mjc5LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTY6NTEuMzM0NjYzNTM3WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTYyMjgwNTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZmaW9fYXBfbWRldl91bnNldF9rdm1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTE4NjA9c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X2RtYV91bm1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKnZkZXYsIHU2NCBpb3ZhLFxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE4NzMtLyoqXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE4NzQ6ICogdmZpb19hcF9tZGV2X3Vuc2V0X2t2bSAtIHBlcmZvcm1zIGNsZWFuLXVwIG9mIHJlc291cmNlcyBubyBsb25nZXIgbmVlZGVkXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE4NzUtICogYnkgQG1hdHJpeF9tZGV2Llxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTE4NzgtICovXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjE4Nzk6c3RhdGljIHZvaWQgdmZpb19hcF9tZGV2X3Vuc2V0X2t2bShzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2KVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0xODgwLXtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yMDU5PXN0YXRpYyB2b2lkIHZmaW9fYXBfbWRldl9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICp2ZGV2KVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIwNjMtXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIwNjQ6XFx0dmZpb19hcF9tZGV2X3Vuc2V0X2t2bShtYXRyaXhfbWRldik7XFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIwNjUtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNjo1My44OTY5NjE3MDRaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTUyODg3MDc4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBWRklPLUFQIFJlbGF0ZWQgRnVuY3Rpb25zKipcblxuQWxyaWdodCwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgYHZmaW9fYXBfbWRldl9jbG9zZV9kZXZpY2VgIGZ1bmN0aW9uLCBzaW5jZSB0aGF0J3Mgd2hlcmUgdGhlIGluaXRpYWwgcHJvbXB0IGRpcmVjdGVkIG1lLiBJJ20gZ29pbmcgdG8gbGlzdCBgdmZpb19hcF9tZGV2X29wZW5fZGV2aWNlYCBhbmQgYHZmaW9fYXBfbWRldl9jbG9zZV9kZXZpY2VgIGFzIG15IHByaW1hcnkgRm9jdXNTeW1ib2xzLiBJJ2xsIGFsc28gaW5jbHVkZSBgdmZpb19hcF9tZGV2X3NldF9rdm1gIGFuZCBgdmZpb19hcF9tZGV2X3Vuc2V0X2t2bWAganVzdCB0byBiZSB0aG9yb3VnaCwgZXNwZWNpYWxseSBpZiB0aGV5IGFyZW4ndCBpbmxpbmVkIGFueXdoZXJlLlxuXG5Ob3csIGxldCdzIGNpcmNsZSBiYWNrIHRvIHRoZSBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIGV4cGxpY2l0bHkgZW5hYmxlIGBWRklPX0FQYC4gSXQgbG9va3MgbGlrZSBgS1ZNYCBhbmQgYFZGSU9gIGFyZSBiYXNlbGluZSBhbmQgYXNzdW1lZCBpbiBtb3N0IHZpcnR1YWxpemF0aW9uIGFuZCBzeXprYWxsZXIgY29udGV4dHMuIEJ1dCBob2xkIG9uLi4uIGBWRklPX0FQYCBpcyBkZWZpbmVkIGFzIGBkZWZfdHJpc3RhdGUgbmA/IFRoYXQgY29uZmlybXMgaXQsIEkgZGVmaW5pdGVseSBuZWVkIHRvIGVuYWJsZSBpdC4gSnVzdCB0byBiZSBjb21wbGV0ZWx5IHN1cmUsIGxldCBtZSBjaGVjayB0aGUgYGRyaXZlcnMvczM5MC9jcnlwdG8vTWFrZWZpbGVgIGZpbGUgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgZWxzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY5MTgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTY6NTkuNDI1ODM3ODM0WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDg1OTQ5MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmZpb19hcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3MzOTAvY3J5cHRvL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvczM5MC9jcnlwdG8vTWFrZWZpbGU9MzQ9b2JqLSQoQ09ORklHX1BLRVlfVVYpICs9IHBrZXktdXYub1xcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by9NYWtlZmlsZS0zNi0jIGFkanVuY3QgcHJvY2Vzc29yIG1hdHJpeFxcbmRyaXZlcnMvczM5MC9jcnlwdG8vTWFrZWZpbGU6Mzc6dmZpb19hcC1vYmpzIDo9IHZmaW9fYXBfZHJ2Lm8gdmZpb19hcF9vcHMub1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX1ZGSU9fQVApICs9IHZmaW9fYXAub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNjo1OS41MzQ0Mzg0NjFaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTE5OTY4NTUyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipWRklPIEFQIERyaXZlciBSZWFjaGFiaWxpdHkgaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqXG5cbk9rYXksIHNvIGBDT05GSUdfVkZJT19BUGAgaXMgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiBoZXJlLCB0aGF0IG11Y2ggaXMgY2xlYXIuIFRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBjb2RlIHBhdGggYWNjZXNzaWJsZSBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQ/IFRoZSBhbnN3ZXIsIHRoYW5rZnVsbHksIGlzIHllcy4gV2UgY2FuIGxldmVyYWdlIHN5emthbGxlciB0byBjcmVhdGUgYW4gbWRldiBkZXZpY2UgdGhyb3VnaCBzeXNmcywgYW5kIHRoZW4gb3BlbiB0aGUgVkZJTyBkZXZpY2UuIFRoZSBiZWF1dHkgb2YgdGhlIGB2ZmlvX2FwYCBkcml2ZXIgaXMgdGhhdCBpdCAqZG9lc24ndCogYWN0dWFsbHkgcmVxdWlyZSBhbnkgcGh5c2ljYWwgQVAgaGFyZHdhcmUgdG8gZ2V0IHRoYXQgbWRldiBkZXZpY2UgY3JlYXRlZC4gV2UgY29uZmlybWVkIHRoaXMgYnkgZXhhbWluaW5nIHRoZSBmdW5jdGlvbnMgYHZmaW9fYXBfbWRldl9wcm9iZWAgYW5kIGB2ZmlvX2FwX21hdHJpeF9kZXZfY3JlYXRlYC4gQ3JpdGljYWxseSwgZXZlbiBpZiBgdGVzdF9mYWNpbGl0eSgxMilgIHJldHVybnMgZmFsc2UgKG1lYW5pbmcgbm8gQVAgaW5zdHJ1Y3Rpb25zIGFyZSBhdmFpbGFibGUgb24gdGhlIHBoeXNpY2FsIGhvc3QpLCBgdmZpb19hcF9tYXRyaXhfZGV2X2NyZWF0ZWAgc3RpbGwgc3VjY2VlZHMuIEFsbCBgdmZpb19hcF9tZGV2X3Byb2JlYCBzZWVtcyB0byBkbyBpcyBhbGxvY2F0ZSBtZW1vcnkgYW5kIHJlZ2lzdGVyIHRoZSBkZXZpY2UuXG5cblRoZW4sIHdoZW4gdGhlIFZGSU8gZGV2aWNlIGdldHMgb3BlbmVkLCBgdmZpb19hcF9tZGV2X29wZW5fZGV2aWNlYCBpcyBpbnZva2VkLiBUaGlzIGluIHR1cm4gY2FsbHMgYHZmaW9fYXBfbWRldl9zZXRfa3ZtYCwgd2hpY2ggY2hlY2tzIGBrdm0tXHUwMDNlYXJjaC5jcnlwdG8uY3J5Y2JkYC4gVGhlIGNydWNpYWwgcGFydCBoZXJlIGlzIHRoYXQgYGNyeWNiZGAgZ2V0cyBzZXQgd2hlbiBhIEtWTSBWTSBpcyBjcmVhdGVkLCBpcnJlc3BlY3RpdmUgb2YgdGhlIHByZXNlbmNlIG9mIHBoeXNpY2FsIEFQIGhhcmR3YXJlLiBJdCBqdXN0IHBvcHVsYXRlcyBlaXRoZXIgYENSWUNCX0ZPUk1BVDFgIG9yIGBDUllDQl9GT1JNQVQyYC4gVGhlcmVmb3JlLCB0aGlzIGVudGlyZSBjb2RlIHBhdGggaXMgY29tcGxldGVseSByZWFjaGFibGUgd2l0aGluIGEgdmlydHVhbGl6ZWQgc2V0dGluZywgd2l0aG91dCBuZWVkaW5nIHRvIHdvcnJ5IGFib3V0IHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLlxuXG5TbywgbGV0J3Mgc3VtbWFyaXplIHRoZSBrZXkgdGFrZWF3YXlzOlxuXG4qICAgKipXb3J0aEZ1enppbmc6IFRydWUqKiAtIERlZmluaXRlbHkgd29ydGggZnV6emluZywgdGhpcyBpcyByZWFjaGFibGUuXG4qICAgKipGb2N1c1N5bWJvbHM6KiogSSdtIGdvaW5nIHRvIHdhbnQgdG8gZm9jdXMgb246XG4gICAgKiAgIGB2ZmlvX2FwX21kZXZfb3Blbl9kZXZpY2VgXG4gICAgKiAgIGB2ZmlvX2FwX21kZXZfY2xvc2VfZGV2aWNlYFxuICAgICogICBgdmZpb19hcF9tZGV2X3NldF9rdm1gXG4gICAgKiAgIGB2ZmlvX2FwX21kZXZfdW5zZXRfa3ZtYFxuKiAgICoqRW5hYmxlQ29uZmlnczoqKiBDbGVhcmx5LCBqdXN0IGBWRklPX0FQYCBpcyBuZWVkZWQuXG5cblRoZSByZWFzb25pbmcgaXMgc29saWQ6IFRoZSBwYXRjaCBhZmZlY3RzIGxvY2tpbmcgYW5kIHN0YXRlIG1hbmFnZW1lbnQgaW4gdGhlIFZGSU8gQVAgZHJpdmVyIHdoZW4gYXR0YWNoaW5nIGFuZCBkZXRhY2hpbmcgbWVkaWF0ZWQgZGV2aWNlcyBmcm9tIEtWTSBndWVzdHMuIFNpbmNlIHRoZSBkcml2ZXIgY2FuIGJlIGxvYWRlZCwgbWRldnMgY2FuIGJlIGNyZWF0ZWQgYW5kIG9wZW5lZCBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQgdmlhIHN5c2ZzIGFuZCBWRklPIGlvY3RscywgbWFraW5nIHRoaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3NTMyLCJPdXRwdXRUb2tlbnMiOjE2OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNzowOC43MzQxMjcwNzlaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDk5MzcxMjYsIkVycm9yIjoidGhlIGZvbGxvd2luZyBjb25maWdzIGRvIG5vdCBleGlzdCBpbiB0aGUga2VybmVsIHRyZWU6IFZGSU9fQVAiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVkZJT19BUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZmaW9fYXBfbWRldl9vcGVuX2RldmljZVwiLFxuICAgIFwidmZpb19hcF9tZGV2X2Nsb3NlX2RldmljZVwiLFxuICAgIFwidmZpb19hcF9tZGV2X3NldF9rdm1cIixcbiAgICBcInZmaW9fYXBfbWRldl91bnNldF9rdm1cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBsb2NraW5nIHNlbWFudGljcyBhbmQgc3RhdGUgbWFuYWdlbWVudCBpbiB0aGUgVkZJTyBBUCBkcml2ZXIgd2hlbiBhIG1lZGlhdGVkIGRldmljZSBpcyBhdHRhY2hlZCB0byBvciBkZXRhY2hlZCBmcm9tIGEgS1ZNIGd1ZXN0LiBUaGUgdmZpb19hcCBkcml2ZXIgY2FuIGJlIGxvYWRlZCBhbmQgbWRldnMgY2FuIGJlIGNyZWF0ZWQgYW5kIG9wZW5lZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IHdpdGhvdXQgcmVxdWlyaW5nIHBoeXNpY2FsIEFQIGhhcmR3YXJlLCBtYWtpbmcgdGhpcyBjb2RlIHJlYWNoYWJsZSBhbmQgZnV6emFibGUgdmlhIHN5c2ZzIGFuZCBWRklPIGlvY3Rscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJ0aGUgZm9sbG93aW5nIGNvbmZpZ3MgZG8gbm90IGV4aXN0IGluIHRoZSBrZXJuZWwgdHJlZTogVkZJT19BUFwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNzowOC44NDQwNzQxMjVaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTM0OTk5MTk3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgaXNzdWU6XG5cbioqSW52ZXN0aWdhdGluZyBhIE1pc3NpbmcgQ29uZmlndXJhdGlvbiBPcHRpb24qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIHdhcyB1bmRlciB0aGUgaW1wcmVzc2lvbiB0aGF0IGBWRklPX0FQYCB3YXMgYSB2YWxpZCBjb25maWd1cmF0aW9uIG9wdGlvbiBmb3IgczM5MCwgYnV0IHNvbWV0aGluZydzIG5vdCBhZGRpbmcgdXAuIEknbSBnZXR0aW5nIGEgZmVlbGluZyB0aGF0IEknbSBjaGFzaW5nIGEgcGhhbnRvbSBoZXJlLiBMZXQncyBub3QgYXNzdW1lLCB0aG91Z2gsIGFuZCBqdW1wIHRvIGNvbmNsdXNpb25zLlxuXG5UaGUgYmVzdCBhcHByb2FjaCBpcyB0byBkb3VibGUtY2hlY2sgdGhlIHNvdXJjZSBvZiB0cnV0aCBmb3IgdGhlc2UgczM5MCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEkgbmVlZCB0byBnbyBiYWNrIHRvIHRoZSBgYXJjaC9zMzkwL0tjb25maWdgIGZpbGUgYW5kIGNvbmZpcm0sIGRlZmluaXRpdmVseSwgd2hldGhlciBvciBub3QgYFZGSU9fQVBgIGlzIGFjdHVhbGx5IGRlZmluZWQgdGhlcmUuIFRoaXMgaXMgYSBjcml0aWNhbCBmaXJzdCBzdGVwLiBJIGNhbid0IGJ1aWxkIG15IGFuYWx5c2lzIG9uIGEgZmFsc2UgcHJlbWlzZS4gSSdsbCBuZWVkIHRvIG1ldGljdWxvdXNseSBzY2FuIHRocm91Z2ggdGhhdCBLY29uZmlnIHRvIGJlIGFic29sdXRlbHkgc3VyZS4gVGhlbiBJIGNhbiBwcm9jZWVkIHdpdGggZnVydGhlciBkZWJ1Z2dpbmcsIGJhc2VkIG9uIHRoZSBhY3R1YWwgS2NvbmZpZyByZWFsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODcxNywiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsic2V0LXJlc3VsdHMiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNzoxOC4xOTQwNzA5MTdaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNjQyMzY4NzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFZGSU9fQVBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL0tjb25maWc9ODIzPWNvbmZpZyBWRklPX0NDV1xcbi0tXFxuYXJjaC9zMzkwL0tjb25maWctODMzLVxcbmFyY2gvczM5MC9LY29uZmlnOjgzNDpjb25maWcgVkZJT19BUFxcbmFyY2gvczM5MC9LY29uZmlnLTgzNS1cXHRkZWZfdHJpc3RhdGUgblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNzoyMC41NTgzMTMxNzJaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTA1ODI0NTIwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipWRklPX0FQIENvbnVuZHJ1bSoqXG5cbk9rYXksIHNvIEknbSBzZWVpbmcgdGhhdCB0aGUgYFZGSU9fQVBgIG9wdGlvbiBpcywgaW4gZmFjdCwgZGVmaW5lZCB3aXRoaW4gYGFyY2gvczM5MC9LY29uZmlnYC4gVGhhdCdzIGEgYml0IHBlcnBsZXhpbmcgYmVjYXVzZSB0aGUgYHNldC1yZXN1bHRzYCB0b29sIGp1c3QgdG9sZCBtZSBpdCBkb2Vzbid0IGV4aXN0LiBIbW0sIEkgYmV0IHRoZSB0b29sIGlzIGNoZWNraW5nIGFnYWluc3QsIHNheSwgYW4geDg2XzY0LWJhc2VkIGNvbmZpZ3VyYXRpb24uIFRoYXQgd291bGQgbWFrZSBzZW5zZSwgYXMgdGhlc2UgdG9vbHMgY2FuIHNvbWV0aW1lcyBiZSBvdmVybHkgZ2VuZXJhbGl6ZWQuIFRoZSBlcnJvciBtZXNzYWdlIGlzIGNsZWFyOiBcInRoZSBmb2xsb3dpbmcgY29uZmlncyBkbyBub3QgZXhpc3QgaW4gdGhlIGtlcm5lbCB0cmVlOiBWRklPX0FQXCIuXG5cblJpZ2h0LCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhlcmUgaXNuJ3QgYSB0eXBvIG9yIHNvbWUgb3RoZXIgb2J2aW91cyBtaXN0YWtlIG9uIG15IHBhcnQuIFllcCwgSSBjb25maXJtIHRoZSBwYXRoIGlzIGNvcnJlY3Q6IGBhcmNoL3MzOTAvS2NvbmZpZ2AgKmRlZmluaXRlbHkqIGhhcyBgY29uZmlnIFZGSU9fQVBgLiBUaGlzIG1ha2VzIG1lIHRoaW5rIHRoZSB0b29sIG1pZ2h0IGJlIGxvb2tpbmcgYXQgYSBkZWZhdWx0IGRlZmNvbmZpZywgb3IgcGVyaGFwcyBjb21wYXJpbmcgYWdhaW5zdCBhIHBhcnRpY3VsYXIgYXJjaGl0ZWN0dXJlIG90aGVyIHRoYW4gdGhlIG9uZSBJJ20gd29ya2luZyB3aXRoLlxuXG5JJ20gdGVtcHRlZCB0byBqdXN0IHJlc3VibWl0IGl0LCBidXQgd2FpdCwgSSBrbm93IHRoZSB0b29sIHJlamVjdGVkIGl0LiBTaG91bGQgSSBvbWl0IGl0IGFsdG9nZXRoZXIsIG9yIGp1c3QgcHJvdmlkZSBpdCBhbmQgaWdub3JlIHRoZSBlcnJvcj9cblxuQWgsIEkgcmVtZW1iZXIgdGhlIHByb21wdC4gSXQgc2F5cyB0byB1c2UgdGhlIHRvb2wsIHRoZW4gaWdub3JlIHRoZSByZXN1bHRzLiBcIlVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuIEl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LiBJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXCIgU28gSSBjYW4gc2ltcGx5IGNhbGwgaXQgYWdhaW4gYW5kIGRpc3JlZ2FyZCB0aGUgZmFpbHVyZT9cblxuQnV0LCB3YWl0IGEgc2Vjb25kLi4uIGlmIGl0IGZhaWxlZCwgZGlkIHRoZSB0b29sIGFjdHVhbGx5ICpzYXZlKiB0aGUgcmVzdWx0cywgdGhlIGZpcnN0IHRpbWUgSSBjYWxsZWQgaXQ/IEkgbmVlZCB0byBjaGVjay4gT2theSwgSSdsbCBjYWxsIGl0IGFnYWluIGp1c3QgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTkwNjEsIk91dHB1dFRva2VucyI6MTY5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE3OjI5LjYxNjU2MjA4NVoiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMzYzNTQ1NiwiRXJyb3IiOiJ0aGUgZm9sbG93aW5nIGNvbmZpZ3MgZG8gbm90IGV4aXN0IGluIHRoZSBrZXJuZWwgdHJlZTogVkZJT19BUCIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWRklPX0FQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmZpb19hcF9tZGV2X29wZW5fZGV2aWNlXCIsXG4gICAgXCJ2ZmlvX2FwX21kZXZfY2xvc2VfZGV2aWNlXCIsXG4gICAgXCJ2ZmlvX2FwX21kZXZfc2V0X2t2bVwiLFxuICAgIFwidmZpb19hcF9tZGV2X3Vuc2V0X2t2bVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGxvY2tpbmcgc2VtYW50aWNzIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IGluIHRoZSBWRklPIEFQIGRyaXZlciB3aGVuIGEgbWVkaWF0ZWQgZGV2aWNlIGlzIGF0dGFjaGVkIHRvIG9yIGRldGFjaGVkIGZyb20gYSBLVk0gZ3Vlc3QuIFRoZSB2ZmlvX2FwIGRyaXZlciBjYW4gYmUgbG9hZGVkIGFuZCBtZGV2cyBjYW4gYmUgY3JlYXRlZCBhbmQgb3BlbmVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgd2l0aG91dCByZXF1aXJpbmcgcGh5c2ljYWwgQVAgaGFyZHdhcmUsIG1ha2luZyB0aGlzIGNvZGUgcmVhY2hhYmxlIGFuZCBmdXp6YWJsZSB2aWEgc3lzZnMgYW5kIFZGSU8gaW9jdGxzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcInRoZSBmb2xsb3dpbmcgY29uZmlncyBkbyBub3QgZXhpc3QgaW4gdGhlIGtlcm5lbCB0cmVlOiBWRklPX0FQXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE3OjI5Ljc0MDIwNzg3MVoiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MTAyMDc1MjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEltbWVkaWF0ZSBSZXNwb25zZSB0byB0aGUgU2l0dWF0aW9uKipcblxuT2theSwgdGhlIGluc3RydWN0aW9ucyBhcmUgY2xlYXI6IGRpc3JlZ2FyZCBhbnkgZXJyb3JzIGZyb20gdGhlIHByZXZpb3VzIHRvb2wuIE5vIG5lZWQgdG8gZ2V0IGJvZ2dlZCBkb3duIGluIGRldGFpbHMgdGhhdCB0aGUgcHJvbXB0IGV4cGxpY2l0bHkgdGVsbHMgbWUgdG8gYnlwYXNzLiBJIHVuZGVyc3RhbmQgbXkgdGFzayBhbmQgSSdtIG1vdmluZyBmb3J3YXJkLiBJJ20gb3BlcmF0aW5nIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgYFZGSU9fQVBgIGlzIGluZGVlZCBkZWZpbmVkIHdpdGhpbiBgYXJjaC9zMzkwL0tjb25maWdgLiBUaGlzIHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIGFzc3VtcHRpb24gYmFzZWQgb24gbXkgcHJpb3Iga25vd2xlZGdlIGFuZCBleHBlcmllbmNlLiBOb3csIHdpdGggdGhpcyBjb25maXJtZWQsIEknbGwgcHJvY2VlZCBkaXJlY3RseSB0byBkZWxpdmVyIHRoZSByZXF1ZXN0ZWQgZmluYWwgcmVzcG9uc2UsIGFzIHBsYW5uZWQuIFRoZXJlJ3Mgbm8gbmVlZCBmb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uIG9yIHZlcmlmaWNhdGlvbiBhdCB0aGlzIHBvaW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTg1OCwiT3V0cHV0VG9rZW5zIjozMzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbInNldC1yZXN1bHRzIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTc6MzUuODQyMjg3OTdaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA0NTEzMzY4OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVHJvdWJsZXNob290aW5nIENvbmZpZ3VyYXRpb24gRGlzY3JlcGFuY3kqKlxuXG5Pa2F5LCBzbyBgc2V0LXJlc3VsdHNgIGp1c3QgY3JhcHBlZCBvdXQgd2l0aCBhIFwiY29uZmlncyBkbyBub3QgZXhpc3RcIiBlcnJvciwgc3BlY2lmaWNhbGx5IG1lbnRpb25pbmcgYFZGSU9fQVBgLiBUaGlzIGlzIHB1enpsaW5nLiBXaHkgaXNuJ3QgaXQgc2VlaW5nIHRoZSBjb25maWd1cmF0aW9uPyBNeSBmaXJzdCB0aG91Z2h0IGlzLCBhbSBJIG1pc3Rha2VubHkgdGhpbmtpbmcgdGhpcyBpcyBhbiB4ODYtc3BlY2lmaWMgdGhpbmc/IERvZXMgdGhlIHRvb2wgbWFrZSBhc3N1bXB0aW9ucyBhYm91dCB0aGUgYXJjaGl0ZWN0dXJlIGFuZCBjaGVjayBjb25maWdzIG9ubHkgYWdhaW5zdCB4ODZfNjQ/IEkgbmVlZCB0byB2ZXJpZnkuIFRoZSB0b29sICpzaG91bGQqIGJlIGNoZWNraW5nIGFnYWluc3QgdGhlIGtlcm5lbCB0cmVlLCBhbmQgYFZGSU9fQVBgICppcyogaW4gYGFyY2gvczM5MC9LY29uZmlnYC5cblxuSWYgdGhlIHRvb2wgaXMgdXNpbmcgYSBzY3JpcHQgaW50ZXJuYWxseSwgbWF5YmUgaXQgaXMgb25seSBkZXNpZ25lZCB0byBjaGVjayBhZ2FpbnN0IHg4NiBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3Npbmcgc29tZXRoaW5nIGluIHRoZSBgYXJjaC9zMzkwL0tjb25maWdgLiBBaCB5ZXMsIGBWRklPX0FQYCBpcyBkZWZpbml0ZWx5IGRlZmluZWQgaW4gYGFyY2gvczM5MC9LY29uZmlnYC5cblxuSWYgdGhlIHRvb2wgaXNuJ3QgcmVjb2duaXppbmcgaXQsIHBlcmhhcHMgSSBzaG91bGQganVzdCBvbWl0IGl0IGVudGlyZWx5LCBwcm92aWRpbmcgb25seSBgS1ZNYCBhbmQgYFZGSU9gLiBMZXQgbWUganVzdCBiZSBhYnNvbHV0ZWx5IHN1cmUuLi4gV2FpdCwgdGhlIHRvb2wncyBlcnJvciBtZXNzYWdlICpleHBsaWNpdGx5KiBzYXlzIGBWRklPX0FQYCBkb2Vzbid0IGV4aXN0LiBOb3cgdGhhdCBJIHRoaW5rIGFib3V0IGl0LCBzaG91bGQgSSBiZSB1c2luZyBgQ09ORklHX1ZGSU9fQVBgIGluc3RlYWQ/IEFjdHVhbGx5LCBJIGNvdWxkIGp1c3Qgb21pdCB0aGUgY29uZmlnIGFsdG9nZXRoZXIgaWYgaXQncyBub3QgcmVjb2duaXplZC4gTWF5YmUgSSBzaG91bGQganVzdCB0cnkgYEFQYD9cblxuT2theSwgbGV0IG1lIGNoZWNrIHRoZSByZWxldmFudCBgTWFrZWZpbGVgLiBMZXQncyBzZWUuLi4gbG9va2luZyBhdCBgZHJpdmVycy9zMzkwL2NyeXB0by9NYWtlZmlsZWAuLi4gYG9iai0kKENPTkZJR19WRklPX0FQKSArPSB2ZmlvX2FwLm9gLiBTbywgaXQgKmlzKiBgVkZJT19BUGAuIEl0J3MgZGVmaW5pdGVseSB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9uLlxuXG5Tbywgd2h5IHRoZSBoZWNrIGlzIHRoZSB0b29sIHNheWluZyBpdCBkb2Vzbid0IGV4aXN0PyBNYXliZSBJIG5lZWQgdG8gbG9vayBhdCB0aGUgdG9vbCdzIHN1cHBvcnRlZCBjb25maWcgdHlwZXMgdG8gbWFrZSBzdXJlIGl0IGNhbiBoYW5kbGUgYFZGSU9fQVBgLiBNYXliZSBpdCdzIGp1c3QgZGVmYXVsdGluZyB0byB4ODZfNjQ/XG5cbkFscmlnaHQsIHRoZSBiZXN0IGNvdXJzZSBvZiBhY3Rpb24gaGVyZSBpcyB0byBzaW1wbHkgb21pdCBgVkZJT19BUGAgZnJvbSBgRW5hYmxlQ29uZmlnc2AgYW5kIGV4cGxhaW4gdGhpcyBkaXNjcmVwYW5jeSBpbiB0aGUgYFJlYXNvbmluZ2Agc2VjdGlvbi4gT3IsIG9uIHNlY29uZCB0aG91Z2h0LCBtYXliZSBJIGNhbiBqdXN0IHByb3ZpZGUgYW4gZW1wdHkgbGlzdCBmb3IgYEVuYWJsZUNvbmZpZ3NgIGFuZCBleHBsYWluIHRoZSBzaXR1YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NTE2LCJPdXRwdXRUb2tlbnMiOjE5MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE3OjQ2LjI5MzYyOTUzM1oiLCJTZXEiOjQ5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmZpb19hcF9tZGV2X29wZW5fZGV2aWNlXCIsXG4gICAgXCJ2ZmlvX2FwX21kZXZfY2xvc2VfZGV2aWNlXCIsXG4gICAgXCJ2ZmlvX2FwX21kZXZfc2V0X2t2bVwiLFxuICAgIFwidmZpb19hcF9tZGV2X3Vuc2V0X2t2bVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGxvY2tpbmcgc2VtYW50aWNzIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IGluIHRoZSBWRklPIEFQIGRyaXZlciB3aGVuIGEgbWVkaWF0ZWQgZGV2aWNlIGlzIGF0dGFjaGVkIHRvIG9yIGRldGFjaGVkIGZyb20gYSBLVk0gZ3Vlc3QuIFRoZSB2ZmlvX2FwIGRyaXZlciBjYW4gYmUgbG9hZGVkIGFuZCBtZGV2cyBjYW4gYmUgY3JlYXRlZCBhbmQgb3BlbmVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgd2l0aG91dCByZXF1aXJpbmcgcGh5c2ljYWwgQVAgaGFyZHdhcmUsIG1ha2luZyB0aGlzIGNvZGUgcmVhY2hhYmxlIGFuZCBmdXp6YWJsZSB2aWEgc3lzZnMgYW5kIFZGSU8gaW9jdGxzLiAoTm90ZTogVkZJT19BUCBjb25maWcgaXMgcmVxdWlyZWQgYnV0IG9taXR0ZWQgZnJvbSBFbmFibGVDb25maWdzIGFzIGl0IGlzIHMzOTB4IHNwZWNpZmljIGFuZCByZWplY3RlZCBieSB0aGUgdG9vbCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmZpb19hcF9tZGV2X29wZW5fZGV2aWNlXCIsXG4gICAgXCJ2ZmlvX2FwX21kZXZfY2xvc2VfZGV2aWNlXCIsXG4gICAgXCJ2ZmlvX2FwX21kZXZfc2V0X2t2bVwiLFxuICAgIFwidmZpb19hcF9tZGV2X3Vuc2V0X2t2bVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGxvY2tpbmcgc2VtYW50aWNzIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IGluIHRoZSBWRklPIEFQIGRyaXZlciB3aGVuIGEgbWVkaWF0ZWQgZGV2aWNlIGlzIGF0dGFjaGVkIHRvIG9yIGRldGFjaGVkIGZyb20gYSBLVk0gZ3Vlc3QuIFRoZSB2ZmlvX2FwIGRyaXZlciBjYW4gYmUgbG9hZGVkIGFuZCBtZGV2cyBjYW4gYmUgY3JlYXRlZCBhbmQgb3BlbmVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgd2l0aG91dCByZXF1aXJpbmcgcGh5c2ljYWwgQVAgaGFyZHdhcmUsIG1ha2luZyB0aGlzIGNvZGUgcmVhY2hhYmxlIGFuZCBmdXp6YWJsZSB2aWEgc3lzZnMgYW5kIFZGSU8gaW9jdGxzLiAoTm90ZTogVkZJT19BUCBjb25maWcgaXMgcmVxdWlyZWQgYnV0IG9taXR0ZWQgZnJvbSBFbmFibGVDb25maWdzIGFzIGl0IGlzIHMzOTB4IHNwZWNpZmljIGFuZCByZWplY3RlZCBieSB0aGUgdG9vbCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowlszmf[1] Phase: Succeeded StartedAt: 2026-08-06 21:17:58 +0000 UTC FinishedAt: 2026-08-06 21:17:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlszmf[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-06 21:17:58 +0000 UTC FinishedAt: 2026-08-06 21:17:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlszmf[2] Phase: Succeeded StartedAt: 2026-08-06 21:17:58 +0000 UTC FinishedAt: 2026-08-06 22:00:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlszmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_ap_mdev_open_device","vfio_ap_mdev_close_device","vfio_ap_mdev_set_kvm","vfio_ap_mdev_unset_kvm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"fa3e749f-4dd5-4959-a61d-f10f3225492c","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-06 21:17:58 +0000 UTC FinishedAt: 2026-08-06 22:00:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_ap_mdev_open_device","vfio_ap_mdev_close_device","vfio_ap_mdev_set_kvm","vfio_ap_mdev_unset_kvm"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"fa3e749f-4dd5-4959-a61d-f10f3225492c","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowlszmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_ap_mdev_open_device","vfio_ap_mdev_close_device","vfio_ap_mdev_set_kvm","vfio_ap_mdev_unset_kvm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"fa3e749f-4dd5-4959-a61d-f10f3225492c","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-06 21:17:58 +0000 UTC FinishedAt: 2026-08-06 21:18:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlszmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_ap_mdev_open_device","vfio_ap_mdev_close_device","vfio_ap_mdev_set_kvm","vfio_ap_mdev_unset_kvm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"fa3e749f-4dd5-4959-a61d-f10f3225492c","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-06 21:17:58 +0000 UTC FinishedAt: 2026-08-06 21:18:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlszmf/series-workflowlszmf-convert-artifact-627316064/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlszmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_ap_mdev_open_device","vfio_ap_mdev_close_device","vfio_ap_mdev_set_kvm","vfio_ap_mdev_unset_kvm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"fa3e749f-4dd5-4959-a61d-f10f3225492c","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-06 21:18:08 +0000 UTC FinishedAt: 2026-08-06 21:36:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlszmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_ap_mdev_open_device","vfio_ap_mdev_close_device","vfio_ap_mdev_set_kvm","vfio_ap_mdev_unset_kvm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"fa3e749f-4dd5-4959-a61d-f10f3225492c","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-06 21:18:08 +0000 UTC FinishedAt: 2026-08-06 21:36:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*ddc9101f-663b-48bf-bd00-85fd07be3143,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlszmf/series-workflowlszmf-convert-artifact-627316064/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "edb3928e-2da8-4312-a99e-60eeee9bbdfb", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlszmf/series-workflowlszmf-build-action-692880422/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlszmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_ap_mdev_open_device","vfio_ap_mdev_close_device","vfio_ap_mdev_set_kvm","vfio_ap_mdev_unset_kvm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"fa3e749f-4dd5-4959-a61d-f10f3225492c","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-06 21:18:08 +0000 UTC FinishedAt: 2026-08-06 21:36:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*ddc9101f-663b-48bf-bd00-85fd07be3143,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlszmf/series-workflowlszmf-convert-artifact-627316064/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "edb3928e-2da8-4312-a99e-60eeee9bbdfb", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlszmf/series-workflowlszmf-build-action-692880422/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlszmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_ap_mdev_open_device","vfio_ap_mdev_close_device","vfio_ap_mdev_set_kvm","vfio_ap_mdev_unset_kvm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"fa3e749f-4dd5-4959-a61d-f10f3225492c","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-06 21:36:22 +0000 UTC FinishedAt: 2026-08-06 21:36:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlszmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_ap_mdev_open_device","vfio_ap_mdev_close_device","vfio_ap_mdev_set_kvm","vfio_ap_mdev_unset_kvm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"fa3e749f-4dd5-4959-a61d-f10f3225492c","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-06 21:36:22 +0000 UTC FinishedAt: 2026-08-06 21:36:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlszmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_ap_mdev_open_device","vfio_ap_mdev_close_device","vfio_ap_mdev_set_kvm","vfio_ap_mdev_unset_kvm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"fa3e749f-4dd5-4959-a61d-f10f3225492c","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-06 21:36:22 +0000 UTC FinishedAt: 2026-08-06 21:36:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlszmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_ap_mdev_open_device","vfio_ap_mdev_close_device","vfio_ap_mdev_set_kvm","vfio_ap_mdev_unset_kvm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"fa3e749f-4dd5-4959-a61d-f10f3225492c","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-06 21:36:22 +0000 UTC FinishedAt: 2026-08-06 21:36:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"fa3e749f-4dd5-4959-a61d-f10f3225492c","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlszmf/series-workflowlszmf-convert-artifact-1480959879/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlszmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_ap_mdev_open_device","vfio_ap_mdev_close_device","vfio_ap_mdev_set_kvm","vfio_ap_mdev_unset_kvm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"fa3e749f-4dd5-4959-a61d-f10f3225492c","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-06 21:36:32 +0000 UTC FinishedAt: 2026-08-06 21:38:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlszmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_ap_mdev_open_device","vfio_ap_mdev_close_device","vfio_ap_mdev_set_kvm","vfio_ap_mdev_unset_kvm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"fa3e749f-4dd5-4959-a61d-f10f3225492c","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-06 21:36:32 +0000 UTC FinishedAt: 2026-08-06 21:38:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*edb3928e-2da8-4312-a99e-60eeee9bbdfb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlszmf/series-workflowlszmf-build-action-692880422/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowlszmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_ap_mdev_open_device","vfio_ap_mdev_close_device","vfio_ap_mdev_set_kvm","vfio_ap_mdev_unset_kvm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"fa3e749f-4dd5-4959-a61d-f10f3225492c","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-06 21:38:47 +0000 UTC FinishedAt: 2026-08-06 21:38:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlszmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_ap_mdev_open_device","vfio_ap_mdev_close_device","vfio_ap_mdev_set_kvm","vfio_ap_mdev_unset_kvm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"fa3e749f-4dd5-4959-a61d-f10f3225492c","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-06 21:38:47 +0000 UTC FinishedAt: 2026-08-06 21:38:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlszmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_ap_mdev_open_device","vfio_ap_mdev_close_device","vfio_ap_mdev_set_kvm","vfio_ap_mdev_unset_kvm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"fa3e749f-4dd5-4959-a61d-f10f3225492c","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-06 21:38:47 +0000 UTC FinishedAt: 2026-08-06 21:55:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlszmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_ap_mdev_open_device","vfio_ap_mdev_close_device","vfio_ap_mdev_set_kvm","vfio_ap_mdev_unset_kvm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"fa3e749f-4dd5-4959-a61d-f10f3225492c","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-06 21:38:47 +0000 UTC FinishedAt: 2026-08-06 21:55:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*ddc9101f-663b-48bf-bd00-85fd07be3143,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlszmf/series-workflowlszmf-convert-artifact-1480959879/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "0bcd2bbc-8bab-4810-afa1-69aa54c3762e", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlszmf/series-workflowlszmf-build-action-3873413387/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlszmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_ap_mdev_open_device","vfio_ap_mdev_close_device","vfio_ap_mdev_set_kvm","vfio_ap_mdev_unset_kvm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"fa3e749f-4dd5-4959-a61d-f10f3225492c","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-06 21:38:47 +0000 UTC FinishedAt: 2026-08-06 21:55:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*ddc9101f-663b-48bf-bd00-85fd07be3143,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlszmf/series-workflowlszmf-convert-artifact-1480959879/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "0bcd2bbc-8bab-4810-afa1-69aa54c3762e", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlszmf/series-workflowlszmf-build-action-3873413387/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlszmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_ap_mdev_open_device","vfio_ap_mdev_close_device","vfio_ap_mdev_set_kvm","vfio_ap_mdev_unset_kvm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"fa3e749f-4dd5-4959-a61d-f10f3225492c","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-06 21:55:12 +0000 UTC FinishedAt: 2026-08-06 21:55:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlszmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_ap_mdev_open_device","vfio_ap_mdev_close_device","vfio_ap_mdev_set_kvm","vfio_ap_mdev_unset_kvm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"fa3e749f-4dd5-4959-a61d-f10f3225492c","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-06 21:55:12 +0000 UTC FinishedAt: 2026-08-06 21:55:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlszmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_ap_mdev_open_device","vfio_ap_mdev_close_device","vfio_ap_mdev_set_kvm","vfio_ap_mdev_unset_kvm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"fa3e749f-4dd5-4959-a61d-f10f3225492c","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-06 21:55:12 +0000 UTC FinishedAt: 2026-08-06 21:57:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlszmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_ap_mdev_open_device","vfio_ap_mdev_close_device","vfio_ap_mdev_set_kvm","vfio_ap_mdev_unset_kvm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"fa3e749f-4dd5-4959-a61d-f10f3225492c","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-06 21:55:12 +0000 UTC FinishedAt: 2026-08-06 21:57:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0bcd2bbc-8bab-4810-afa1-69aa54c3762e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlszmf/series-workflowlszmf-build-action-3873413387/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowlszmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_ap_mdev_open_device","vfio_ap_mdev_close_device","vfio_ap_mdev_set_kvm","vfio_ap_mdev_unset_kvm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"fa3e749f-4dd5-4959-a61d-f10f3225492c","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-06 21:57:10 +0000 UTC FinishedAt: 2026-08-06 22:00:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlszmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_ap_mdev_open_device","vfio_ap_mdev_close_device","vfio_ap_mdev_set_kvm","vfio_ap_mdev_unset_kvm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"fa3e749f-4dd5-4959-a61d-f10f3225492c","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-06 21:57:10 +0000 UTC FinishedAt: 2026-08-06 22:00:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_ap_mdev_open_device","vfio_ap_mdev_close_device","vfio_ap_mdev_set_kvm","vfio_ap_mdev_unset_kvm"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*edb3928e-2da8-4312-a99e-60eeee9bbdfb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0bcd2bbc-8bab-4810-afa1-69aa54c3762e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlszmf/series-workflowlszmf-build-action-692880422/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlszmf/series-workflowlszmf-build-action-3873413387/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowlszmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_ap_mdev_open_device","vfio_ap_mdev_close_device","vfio_ap_mdev_set_kvm","vfio_ap_mdev_unset_kvm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"fa3e749f-4dd5-4959-a61d-f10f3225492c","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-06 21:57:10 +0000 UTC FinishedAt: 2026-08-06 21:57:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlszmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_ap_mdev_open_device","vfio_ap_mdev_close_device","vfio_ap_mdev_set_kvm","vfio_ap_mdev_unset_kvm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"fa3e749f-4dd5-4959-a61d-f10f3225492c","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-06 21:57:10 +0000 UTC FinishedAt: 2026-08-06 21:57:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_ap_mdev_open_device","vfio_ap_mdev_close_device","vfio_ap_mdev_set_kvm","vfio_ap_mdev_unset_kvm"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlszmf/series-workflowlszmf-convert-artifact-3400109152/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlszmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_ap_mdev_open_device","vfio_ap_mdev_close_device","vfio_ap_mdev_set_kvm","vfio_ap_mdev_unset_kvm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"fa3e749f-4dd5-4959-a61d-f10f3225492c","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-06 21:57:10 +0000 UTC FinishedAt: 2026-08-06 21:57:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlszmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_ap_mdev_open_device","vfio_ap_mdev_close_device","vfio_ap_mdev_set_kvm","vfio_ap_mdev_unset_kvm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"fa3e749f-4dd5-4959-a61d-f10f3225492c","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-06 21:57:10 +0000 UTC FinishedAt: 2026-08-06 21:57:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlszmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_ap_mdev_open_device","vfio_ap_mdev_close_device","vfio_ap_mdev_set_kvm","vfio_ap_mdev_unset_kvm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"fa3e749f-4dd5-4959-a61d-f10f3225492c","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-06 21:57:10 +0000 UTC FinishedAt: 2026-08-06 21:57:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlszmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_ap_mdev_open_device","vfio_ap_mdev_close_device","vfio_ap_mdev_set_kvm","vfio_ap_mdev_unset_kvm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"fa3e749f-4dd5-4959-a61d-f10f3225492c","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-06 21:57:20 +0000 UTC FinishedAt: 2026-08-06 22:00:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlszmf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_ap_mdev_open_device","vfio_ap_mdev_close_device","vfio_ap_mdev_set_kvm","vfio_ap_mdev_unset_kvm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","series_id":"fa3e749f-4dd5-4959-a61d-f10f3225492c","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-06 21:57:20 +0000 UTC FinishedAt: 2026-08-06 22:00:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*edb3928e-2da8-4312-a99e-60eeee9bbdfb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0bcd2bbc-8bab-4810-afa1-69aa54c3762e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlszmf/series-workflowlszmf-build-action-692880422/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlszmf/series-workflowlszmf-build-action-3873413387/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlszmf/series-workflowlszmf-convert-artifact-3400109152/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}